aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vvp/app/main/activation/addVendorContact/addVendorContact.html2
-rw-r--r--vvp/app/main/activation/register/register.controller.js2
-rw-r--r--vvp/app/main/activation/register/register.html2
-rw-r--r--vvp/dist/index.html4
-rw-r--r--vvp/dist/scripts/scripts.184c30c3.js (renamed from vvp/dist/scripts/scripts.d8a9fb59.js)10
-rw-r--r--vvp/dist/scripts/vendor.30972ab5.js (renamed from vvp/dist/scripts/vendor.79ec8dc5.js)2
6 files changed, 12 insertions, 10 deletions
diff --git a/vvp/app/main/activation/addVendorContact/addVendorContact.html b/vvp/app/main/activation/addVendorContact/addVendorContact.html
index ff9bd6e6..922028f6 100644
--- a/vvp/app/main/activation/addVendorContact/addVendorContact.html
+++ b/vvp/app/main/activation/addVendorContact/addVendorContact.html
@@ -94,8 +94,10 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property.-->
<label class="frm_primary_label">reCAPTCHA
<span class="frm_required"></span>
</label>
+ <!--
<div id="field-7lj3ma" class="g-recaptcha" data-sitekey="6LeMMwYTAAAAACSY-OLibN7rdFHSnY9karY3VXW2"></div>
<div id="divre-captcha-err" class="frm_error_hide">reCAPTCHA is invalid.</div>
+ -->
</div>
<input type="hidden" name="item_key" value="xxx" />
diff --git a/vvp/app/main/activation/register/register.controller.js b/vvp/app/main/activation/register/register.controller.js
index e4e525a7..1e146905 100644
--- a/vvp/app/main/activation/register/register.controller.js
+++ b/vvp/app/main/activation/register/register.controller.js
@@ -86,7 +86,7 @@
};
vm.submitForm = function () {
- if(grecaptcha.getResponse().length != 0)
+ if(true)
{
$rootScope.ice.loader.show = true;
if (vm.data.regular_email_updates != true) {
diff --git a/vvp/app/main/activation/register/register.html b/vvp/app/main/activation/register/register.html
index b6af8ce4..c6cdbce6 100644
--- a/vvp/app/main/activation/register/register.html
+++ b/vvp/app/main/activation/register/register.html
@@ -112,7 +112,7 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property.-->
<span class="frm_required"></span>
</label>
-->
- <div id="field-7lj3ma" class="g-recaptcha" data-sitekey="6LeMMwYTAAAAACSY-OLibN7rdFHSnY9karY3VXW2"></div>
+ <!-- v1 api no longer works <div id="field-7lj3ma" class="g-recaptcha" data-sitekey="6LeMMwYTAAAAACSY-OLibN7rdFHSnY9karY3VXW2"></div> -->
</div>
<input type="hidden" name="item_key" value="xxx" />
<span>{{PleaseFill}} </span>
diff --git a/vvp/dist/index.html b/vvp/dist/index.html
index 6d02fd92..9dc71d4e 100644
--- a/vvp/dist/index.html
+++ b/vvp/dist/index.html
@@ -79,8 +79,8 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property.-->
</div>
</div>
-<script src="scripts/vendor.79ec8dc5.js"></script>
+<script src="scripts/vendor.30972ab5.js"></script>
-<script src="scripts/scripts.d8a9fb59.js"></script>
+<script src="scripts/scripts.184c30c3.js"></script>
</body>
</html>
diff --git a/vvp/dist/scripts/scripts.d8a9fb59.js b/vvp/dist/scripts/scripts.184c30c3.js
index 5c5887db..d541cc34 100644
--- a/vvp/dist/scripts/scripts.d8a9fb59.js
+++ b/vvp/dist/scripts/scripts.184c30c3.js
@@ -1,12 +1,12 @@
!function(){"use strict";angular.module("ice",["ngSanitize","ngAnimate","wysiwyg.module","ui.router","ice.env","ice.modals","angularUtils.directives.dirPagination","ui.select","ui.multiselect","ui.bootstrap","ui.bootstrap.datetimepicker","ngMaterial","ngMessages","angular-toArrayFilter","ngIntlTelInput","ui.sortable","jm.i18next","ice.toolbar","ice.navigation","ice.main","ice.contactUs","ice.dashboard.main","ice.dashboard.overview","ice.dashboard.dashboard","ice.activation.login","ice.activation.register","ice.activation.addVf","ice.activation.addVendorContact","ice.activation.resendActivation","ice.activation.terms","ice.activation.activateUser","ice.dashboard.account","ice.documentation","ice.activation.resetPassword","ice.activation.updatePassword","ice.dashboard.checklist","ice.welcome","ice.main.admin","ice.services.cacheService","ice.services.users","ice.services.localStorage","ice.services.vf","ice.services.steps","ice.services.vfc","ice.services.dtsite","ice.services.checklist","ice.services.status","ice.services.feedback","ice.services.toast","ice.services.cms","ice.services.sessionStorage","ice.directives","ice.filters","ice.interceptors.http"])}(),angular.module("ice.env",[]).constant("ENV",{name:"production",apiBase:"/vvp/v1/engmgr/"}),function(){"use strict";angular.module("ice").constant("_",window._).constant("iceConstants",{states:{incomplete:"Incomplete",completed:"Completed"},stages:{intake:"Intake",active:"Active",validated:"Validated",completed:"Completed"},roles:{standard:"standard_user",el:"el",admin:"admin",admin_ro:"admin_ro"},checklist_states:["automation","review","peer review","approval","handoff","closed"]})}(),function(){"use strict";function a(a){a.defaults.useXDomain=!0,delete a.defaults.headers.common["X-Requested-With"],a.interceptors.push("httpRequestInterceptor"),a.interceptors.push("httpResponseInterceptor"),a.interceptors.push("httpRequestErrorInterceptor"),a.interceptors.push("httpResponseErrorInterceptor")}angular.module("ice").config(a).config(["ngIntlTelInputProvider",function(a){a.set({initialCountry:"us"})}]),a.$inject=["$httpProvider"]}(),function(){"use strict";function a(a,b,c){c.hashPrefix(""),b.otherwise("/login"),b.when("/dashboard","/dashbaord/overview");var d="horizontalNavigation",e={horizontalNavigation:{main:"core/layouts/dashboard/dashboard.html",toolbar:"core/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"core/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"core/layouts/content-with-toolbar.html",toolbar:"toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};a.state("app",{"abstract":!0,views:{"main@":{templateUrl:e[d].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:e[d].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:e[d].navigation,controller:"NavigationController as vm"}}})}angular.module("ice").config(a),a.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"]}(),function(){"use strict";function a(a,b,c,d){var e=!1;if(-1!=navigator.userAgent.indexOf("Safari")&&-1==navigator.userAgent.indexOf("Chrome"))d.debug("Smooth Scroll Off (Safari).");else try{e=$("#content-israel").niceScroll({zindex:2e4,scrollspeed:60,mousescrollstep:60,cursorborderradius:"10px",cursorborder:"1px solid rgba(255, 255, 255, 0.4)",cursorcolor:"rgba(0, 0, 0, 0.6)",cursorwidth:"10px"})}catch(f){d.debug("Smooth Scroll Off.")}}angular.module("ice").controller("AppController",["$state","$timeout","$rootScope","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g,h){var i="LastDocumentationPageId",j=function(){a.user={},a.ice={},a.ice.loader={},a.state=d,a.baseURL=f.apiBase,m();var b=a.$on("$stateChangeStart",function(a,b,c,d,e){k(),l(b)}),c=a.$on("$stateChangeSuccess",function(){});a.$on("$destroy",function(){b(),c()}),e.set("configuration",{urls:{auth:{login:a.baseURL+"login/@t",register:a.baseURL+"signup",addVfs:a.baseURL+"vf/",getCompanies:a.baseURL+"vendors",resendActivationMail:a.baseURL+"users/activation-mail/@user_uuid",addVendorContact:a.baseURL+"add-contact",single_engagement:a.baseURL+"single-engagement/@engagementUuid",engagements:a.baseURL+"engagement",inviteMembers:a.baseURL+"invite-team-members",activities:a.baseURL+"engagement/@engagementUuid/activities/",updateDaysLeft:a.baseURL+"engagements/@engagementUuid/target_date",updateLabEntryDaysLeft:a.baseURL+"engagements/@engagementUuid/target_lab_date",setSSHKey:a.baseURL+"users/ssh",getIceUser:a.baseURL+"users",getRGWASecret:a.baseURL+"users/account/rgwa/",account:a.baseURL+"users/account",updatePassword:a.baseURL+"users/pwd/",sendResetPwdInstructions:a.baseURL+"users/pwd/reset-instructions/"},notifications:{getNotifications:a.baseURL+"notifications/num",resetNotificationNum:a.baseURL+"notifications/reset",notificationsDelete:a.baseURL+"notifications/@uuid",getNotificationsDescription:a.baseURL+"notifications/@userUuid/@offset/@limit"},steps:{get:a.baseURL+"engagements/@engagement/nextsteps/@progress",add:a.baseURL+"engagements/@engagement/nextsteps",edit:a.baseURL+"nextsteps/@stepUuid/engagement/@engUuid",order_next_steps:a.baseURL+"engagements/@engUuid/nextsteps/order_next_steps",update:a.baseURL+"nextsteps/@stepUuid/state","delete":a.baseURL+"nextsteps/@stepUuid",createChecklistNextStep:a.baseURL+"engagement/@engUuid/checklist/@checkListUuid/nextstep/",createNextStep:a.baseURL+"eng/@engUuid/nextstep/",getByUser:a.baseURL+"engagements/user/nextsteps/"},vf:{updateVfs:{put:a.baseURL+"vf/@vf_uuid/validation-details/"},deployment_target:{getDeployTargets:a.baseURL+"deployment-targets",updateDeployTargets:a.baseURL+"engagement/@engagementUuid//deployment-targets/@deployment_target_uuid"},ecomp:{getECOMPReleases:a.baseURL+"ecomp-releases",updateECOMPReleases:a.baseURL+"engagement/@engagementUuid/ecomp-releases/@ecomp_uuid"},version:{getVFVersion:a.baseURL+"vf/@vfUuid/vf-version/"}},vfcs:{add:a.baseURL+"vfcs/",get:a.baseURL+"vf/@vfUuid/vfcs/","delete":a.baseURL+"vf/@vfUuid/vfcs/@vfcUuid"},status:{get:a.baseURL+"engagements/@engagement/status",add:a.baseURL+"engagements/@engagement/status",update:a.baseURL+"engagements/@engagement/status"},feedback:{add:a.baseURL+"add-feedback"},dtsite:{get:a.baseURL+"dtsites/",getVFSites:a.baseURL+"vf/@vfUuid/dtsites/",add:a.baseURL+"dtsites/","delete":a.baseURL+"vf/@vfUuid/dtsites/@dtsUuid"},checklist:{state:{put:a.baseURL+"checklist/@cl_uuid/state/"},createChecklist:a.baseURL+"engagement/@engUuid/checklist/new/",getDataForChecklist:a.baseURL+"engagement/@engUuid/checklist/new/",getChecklist:a.baseURL+"checklist/@checklistUuid",putDataForChecklist:a.baseURL+"checklist/@checklist_uuid",checklistDecision:a.baseURL+"checklist/decision/@decisionUuid",createAuditlogChecklist:a.baseURL+"checklist/@checklist_uuid/auditlog/",createAuditlogDecisionChecklist:a.baseURL+"checklist/decision/@decision_uuid/auditlog/",getChecklistTemplates:a.baseURL+"checklist/templates/",getChecklistTemplate:a.baseURL+"checklist/template/@templateUuid",saveChecklistTemplate:a.baseURL+"checklist/template/"},engagement:{put:a.baseURL+"engagements/@engagementUuid/",updateProgress:a.baseURL+"engagements/@engagementUuid/progress",setStage:a.baseURL+"single-engagement/@engagementUuid/stage/@stage",starred_engagement:{put:a.baseURL+"engagements/starred_eng/",get:a.baseURL+"engagements/starred_eng/"},recent_engagement:{get:a.baseURL+"engagements/recent_eng/"},engagement_team:{put:a.baseURL+"engagements/engagement-team/"},engagementsExpanded:a.baseURL+"engagement/expanded/",exportEngagementsCSV:a.baseURL+"engagement/export/?stage=@stage&keyword=@keyword",reviewer:{put:a.baseURL+"engagements/@engagementUuid/reviewer/"},peerreviewer:{put:a.baseURL+"engagements/@engagementUuid/peerreviewer/"},switchReviewers:{put:a.baseURL+"engagements/@engagementUuid/switch-reviewers/"},archive:{put:a.baseURL+"engagements/@engagementUuid/archive/"}},welcome:{welcome:a.baseURL+"welcome/"},cms:{posts:{get:a.baseURL+"cms/posts/?limit=@limit&offset=@offset&fromLastDays=@fromLastDays&category=@category"},pages:{get:a.baseURL+"cms/pages/?title=@title",getById:a.baseURL+"cms/pages/@id/",search:a.baseURL+"cms/pages/search/?keyword=@keyword"}},users:{engagementleads:{get:a.baseURL+"users/engagementleads/"},activate:a.baseURL+"users/activate/@userid/@token"}}})},k=function(){var a=b.getToast();a&&!a.sticky&&b.clearToast()},l=function(a){a&&a.name&&"app.documentation.page"!==a.name&&"app.documentation"!==a.name&&c["delete"](i)},m=function(){g.i18next&&(g.i18next.use(g.i18nextXHRBackend),g.i18next.init({debug:!1,lng:"en",fallbackLng:"en",backend:{loadPath:"locales/{{lng}}/{{ns}}.json"},useCookie:!1,useLocalStorage:!1},function(a,b){a&&h.error(a)}))};j()}angular.module("ice").run(a),a.$inject=["$rootScope","toastService","sessionStorageService","$state","cacheService","ENV","$window","$log"]}(),angular.module("ice.interceptors.http",[]).factory("httpRequestInterceptor",["$injector","$rootScope",function(a,b){return{request:function(c){if(-1!==c.url.indexOf(b.baseURL)){c.headers=c.headers||{};var d=a.get("usersService").getUserData(function(){});d&&!c.skipAuth&&(c.headers.Authorization="token "+d.jwtToken)}return c}}}]).factory("httpResponseInterceptor",["$rootScope",function(a){return{response:function(a){return a}}}]).factory("httpRequestErrorInterceptor",["$q",function(a){return{requestError:function(a){return a}}}]).factory("httpResponseErrorInterceptor",["$q","$rootScope","$injector","toastService",function(a,b,c,d){return{responseError:function(b){var e=c.get("$state"),f=b.status;switch(f){case 401:d.setToast(b.statusText,"danger");break;case 403:e.go("app.login");break;case 404:}return a.reject(b)}}}]),function(){"use strict";angular.module("ice.services.cacheService",[]).service("cacheService",function(){var a={};this.get=function(b){return a[b]},this["delete"]=function(b){return a[b]=void 0},this.deleteAll=function(){return a={}},this.set=function(b,c){void 0===a[b]?a[b]=c:a[b]=$.extend({},c,a[b])},this.toString=function(){return a}}).factory("pageService",function(){var a="";return{getPage:function(){return a},setPage:function(b){a=b}}})}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i){var j=c.get("configuration").urls,k="user",l=g.getJson(k);this.isEngagementEL=function(a){var b=h.find(a,{uuid:l.uuid});return void 0==b?!1:l&&l.role.name===d.roles.el?!0:!1},this.isUserInRole=function(a){return l&&l.role&&l.role.name===a},this.isReviewer=function(a,b){return a&&b&&a.uuid==b},this.isPeerReviewer=function(a,b){return a&&b&&a.uuid==b},this.isAdmin=function(a){return a&&a.role&&a.role.name===d.roles.admin},this.updatePassword=function(c,d){var e=b.defer();return a.put(j.auth.updatePassword,d).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.sendResetPwdInstructions=function(c){var d=b.defer();return a.post(j.auth.sendResetPwdInstructions,c).success(function(a,b,c,e){d.resolve({data:a,status:b})}).error(function(a,b,c,e){d.reject({message:a,status:b})}),d.promise},this.login=function(c,d){var e=b.defer();return a.post(j.auth.login.replace("/@t",d),c).success(function(a,b,c,d){l=a,delete l.password,l.jwtToken=a.token,g.setJson(k,l),e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.register=function(c){var d=b.defer();return a.post(j.auth.register,c).success(function(a,b,c,e){l=a,l.jwtToken=a.token,g.setJson(k,l),d.resolve({data:a,status:b})}).error(function(a,b,c,e){d.reject({message:a,status:b})}),d.promise},this.addVendorContact=function(c){var d=b.defer();return a.post(j.auth.addVendorContact,c).success(function(a,b,c,e){d.resolve({data:a,status:b})}).error(function(a,b,c,e){d.reject({message:a,status:b})}),d.promise},this.resendActivationMail=function(c){var d=b.defer();return a.get(j.auth.resendActivationMail.replace("@user_uuid",c),{skipAuth:!0}).success(function(a,b,c,e){d.resolve({data:a,status:b})}).error(function(a,b,c,e){d.reject({message:a,status:b})}),d.promise},this.getNotifications=function(c){var d=b.defer();return a.get(j.notifications.getNotifications).success(function(a,b,c,e){d.resolve({data:a,status:b})}).error(function(a,b,c,e){d.reject({message:a,status:b})}),d.promise},this.resetNotificationNum=function(c){var d=b.defer();return a.put(j.notifications.resetNotificationNum).success(function(a,b,c,e){d.resolve({data:a,status:b})}).error(function(a,b,c,e){d.reject({message:a,status:b})}),d.promise},this.notificationsDelete=function(c){var d=b.defer();return a["delete"](j.notifications.notificationsDelete.replace("@uuid",c)).success(function(a,b,c,e){d.resolve({data:a,status:b})}).error(function(a,b,c,e){d.reject({message:a,status:b})}),d.promise},this.getNotificationsDescription=function(c,d,e){var f=b.defer();return a.get(j.notifications.getNotificationsDescription.replace("@userUuid",c).replace("@offset",d).replace("@limit",e)).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.getIceUser=function(){var c=b.defer();return a.get(j.auth.getIceUser).success(function(a,b,d,e){c.resolve({data:a,status:b})}).error(function(a,b,d,e){c.reject({message:a,status:b})}),c.promise},this.updateAccount=function(c,d){var e=b.defer();return a.put(j.auth.account,d).success(function(a,b,c,d){var f=l.jwtToken;l=a,l.jwtToken=f,g.setJson(k,l),e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.setSSHKey=function(c,d){var e=b.defer();return a.post(j.auth.setSSHKey,d).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.getUserData=function(a){return l||(a?(i.debug("There is no user data, will invoke callback pass as argument."),a()):(i.debug("There is no user data, will be redirected into /login page."),f.go("app.login"))),l},this.resetUserData=function(){i.debug("Clearing user from cache..."),l=void 0,g["delete"](k),e.setJson("ice.settings.view_type",void 0),e.setJson("ice.settings.eng_uuid",void 0),e.setJson("ice.settings.sub_id",void 0)},this.setUserActivationSuccess=function(a){l&&(l.activationSuccess=a,g.setJson(k,l))},this.getEngagementLeads=function(){var c=b.defer(),d=this.getUserData();return this.isAdmin(d)?a.get(j.users.engagementleads.get).success(function(a,b,d,e){c.resolve({data:a,status:b})}).error(function(a,b,d,e){c.reject({message:a,status:b})}):c.reject("Just admin allowed to get engagement leads list."),c.promise},this.activateUser=function(c,d){var e=b.defer();return a.get(j.users.activate.replace("@userid",c).replace("@token",d),{skipAuth:!0}).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.getRGWASecret=function(){var c=b.defer();return a.get(j.auth.getRGWASecret).success(function(a,b,d,e){c.resolve({data:a,status:b})}).error(function(a,b,d,e){c.reject({message:a,status:b})}),c.promise}}angular.module("ice.services.users",[]).service("usersService",["$http","$q","cacheService","iceConstants","localStorageService","$state","sessionStorageService","_","$log",a])}(),function(){"use strict";angular.module("ice.services.vf",[]).service("vfService",["$http","$q","cacheService",function(a,b,c){var d=c.get("configuration").urls;this.addVfs=function(c){var e=b.defer();return a.post(d.auth.addVfs,c).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.updateVfs=function(c,e){var f=b.defer();return a.put(d.vf.updateVfs.put.replace("@vf_uuid",e),c).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.inviteMembers=function(c){var e=b.defer();return a.post(d.auth.inviteMembers,c).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.getCompanies=function(){var c=b.defer();return a.get(d.auth.getCompanies).success(function(a,b,d,e){c.resolve({data:a,status:b})}).error(function(a,b,d,e){c.reject({message:a,status:b})}),c.promise},this.getDeployTargets=function(){var c=b.defer();return a.get(d.vf.deployment_target.getDeployTargets).success(function(a,b,d,e){c.resolve({data:a,status:b})}).error(function(a,b,d,e){c.reject({message:a,status:b})}),c.promise},this.getECOMPReleases=function(){var c=b.defer();return a.get(d.vf.ecomp.getECOMPReleases).success(function(a,b,d,e){c.resolve({data:a,status:b})}).error(function(a,b,d,e){c.reject({message:a,status:b})}),c.promise},this.getVFVersion=function(c){var e=b.defer();return a.get(d.vf.version.getVFVersion.replace("@vfUuid",c)).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.getEngagements=function(c){var e=b.defer();return a.get(d.auth.engagements).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.getExpandedEngagements=function(c){var e=b.defer();return a.post(d.engagement.engagementsExpanded,c).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.getSingleEngagement=function(c,e){var f=b.defer();return a.get(d.auth.single_engagement.replace("@engagementUuid",e)).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.getStarredEngagements=function(){var c=b.defer();return a.get(d.engagement.starred_engagement.get).success(function(a,b,d,e){c.resolve({data:a,status:b})}).error(function(a,b,d,e){c.reject({message:a,status:b})}),c.promise},this.putStarredEngagements=function(c){var e=b.defer(),f={};return f.engagement_uuid=c,a.put(d.engagement.starred_engagement.put,f).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.getRecentEngagements=function(){var c=b.defer();return a.get(d.engagement.recent_engagement.get).success(function(a,b,d,e){c.resolve({data:a,status:b})}).error(function(a,b,d,e){c.reject({message:a,status:b})}),c.promise},this.getActivities=function(c){var e=b.defer();return a.get(d.auth.activities.replace("@engagementUuid",c)).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.updateProgress=function(c,e){var f=b.defer();return a.put(d.engagement.updateProgress.replace("@engagementUuid",c),e).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.updateDeployTargets=function(c,e){var f=b.defer();return a.put(d.vf.deployment_target.updateDeployTargets.replace("@engagementUuid",c).replace("@deployment_target_uuid",e)).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.updateECOMPReleases=function(c,e){var f=b.defer();return a.put(d.vf.ecomp.updateECOMPReleases.replace("@engagementUuid",c).replace("@ecomp_uuid",e)).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.updateDaysLeft=function(c,e){var f=b.defer();return a.post(d.auth.updateDaysLeft.replace("@engagementUuid",c),e).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.updateLabEntryDaysLeft=function(c,e){var f=b.defer();return a.post(d.auth.updateLabEntryDaysLeft.replace("@engagementUuid",c),e).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.set_engagement_stage=function(c,e){var f=b.defer();return a.put(d.engagement.setStage.replace("@engagementUuid",c).replace("@stage",e)).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.exportEngagementsCSV=function(c,e){var f=b.defer();return null==c||null==e?f.reject("Invalid arguments on engagements export csv."):a({method:"GET",url:d.engagement.exportEngagementsCSV.replace("@stage",c).replace("@keyword",e),headers:{"Content-Type":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},responseType:"arraybuffer"}).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.archiveEngagement=function(c,e){var f=b.defer(),g={reason:e};return a.put(d.engagement.archive.put.replace("@engagementUuid",c),g).success(function(a,b,c,d){f.resolve()}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.updateEngagementReviewer=function(c,e){var f=b.defer(),g={reviewer:e};return a.put(d.engagement.reviewer.put.replace("@engagementUuid",c),g).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.updateEngagementPeerReviewer=function(c,e){var f=b.defer(),g={peerreviewer:e};return a.put(d.engagement.peerreviewer.put.replace("@engagementUuid",c),g).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.switchEngagementReviewers=function(c,e,f){var g=b.defer(),h={reviewer:e,peerreviewer:f};return a.put(d.engagement.switchReviewers.put.replace("@engagementUuid",c),h).success(function(a,b,c,d){g.resolve({data:a,status:b})}).error(function(a,b,c,d){g.reject({message:a,status:b})}),g.promise},this.updateEngagement=function(c,e){var f=b.defer(),g={engagement:c,status:e};return a.put(d.engagement.put.replace("@engagementUuid",c.uuid),g).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.remove_user_from_eng=function(c){var e=b.defer();return null==c?e.reject("Invalid arguments on remove_user_from_eng."):a.put(d.engagement.engagement_team.put,c).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise}}])}(),function(){"use strict";angular.module("ice.services.vfc",[]).service("vfcService",["$http","$q","cacheService",function(a,b,c){var d=c.get("configuration").urls;this.get=function(c){var e=b.defer();return a.get(d.vfcs.get.replace("@vfUuid",c)).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this["delete"]=function(c,e){var f=b.defer();return a["delete"](d.vfcs["delete"].replace("@vfUuid",e).replace("@vfcUuid",c)).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.add=function(c){var e=b.defer();return a.post(d.vfcs.add,c).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.getCompanies=function(){var c=b.defer();return a.get(d.auth.getCompanies).success(function(a,b,d,e){c.resolve({data:a,status:b})}).error(function(a,b,d,e){c.reject({message:a,status:b})}),c.promise}}])}(),angular.module("ice.services.localStorage",[]).service("localStorageService",["$window",function(a){this.setJson=function(b,c){return a.localStorage&&a.localStorage.setItem(b,JSON.stringify(c)),this},this.getJson=function(b){var c,d=a.localStorage&&a.localStorage.getItem(b);try{c=d?JSON.parse(d):void 0}catch(e){}return c},this["delete"]=function(b){return a.localStorage&&a.localStorage.removeItem(b)}}]),function(){"use strict";angular.module("ice.services.steps",[]).service("stepsService",["$http","$q","cacheService",function(a,b,c){var d=c.get("configuration").urls;this.getByUser=function(){var c=b.defer();return a.get(d.steps.getByUser).success(function(a,b,d,e){c.resolve({data:a,status:b})}).error(function(a,b,d,e){c.reject({message:a,status:b})}),c.promise},this.get=function(c,e){var f=b.defer();return a.get(d.steps.get.replace("@engagement",c).replace("@progress",e)).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.update=function(c,e){var f=b.defer();return a.put(d.steps.update.replace("@stepUuid",c),e).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this["delete"]=function(c){var e=b.defer();return a["delete"](d.steps["delete"].replace("@stepUuid",c)).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.add=function(c,e){var f=b.defer();return a.post(d.steps.add.replace("@engagement",c),e).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.edit=function(c,e,f){var g=b.defer();return a.put(d.steps.edit.replace("@stepUuid",e).replace("@engUuid",c),f).success(function(a,b,c,d){g.resolve({data:a,status:b})}).error(function(a,b,c,d){g.reject({message:a,status:b})}),g.promise},this.order_next_steps=function(c,e){var f=b.defer();return a.put(d.steps.order_next_steps.replace("@engUuid",c),e).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.createNextStep=function(c,e,f){var g=b.defer();return a.post(d.steps.createNextStep.replace("@engUuid",e),f).success(function(a,b,c,d){g.resolve({data:a,status:b})}).error(function(a,b,c,d){g.reject({message:a,status:b})}),g.promise},this.createChecklistNextStep=function(c,e,f){var g=b.defer();return a.post(d.steps.createChecklistNextStep.replace("@checkListUuid",c).replace("@engUuid",e),f).success(function(a,b,c,d){g.resolve({data:a,status:b})}).error(function(a,b,c,d){g.reject({message:a,status:b})}),g.promise}}])}(),function(){"use strict";angular.module("ice.services.dtsite",[]).service("dtsiteService",["$http","$q","cacheService",function(a,b,c){var d=c.get("configuration").urls;this.getVFSites=function(c){var e=b.defer();return a.get(d.dtsite.getVFSites.replace("@vfUuid",c)).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.get=function(){var c=b.defer();return a.get(d.dtsite.get).success(function(a,b,d,e){c.resolve({data:a,status:b})}).error(function(a,b,d,e){c.reject({message:a,status:b})}),c.promise},this["delete"]=function(c,e){var f=b.defer();return a["delete"](d.dtsite["delete"].replace("@vfUuid",c).replace("@dtsUuid",e)).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.add=function(c){var e=b.defer();return a.post(d.dtsite.add,c).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise}}])}(),function(){"use strict";var a;angular.module("ice.services.checklist",[]).factory("checklistService",["$rootScope","$http","$q","cacheService","$log",function(b,c,d,e,f){var g=e.get("configuration").urls;return this.setState=function(a,b){var e=d.defer();return c.put(g.checklist.state.put.replace("@cl_uuid",a),b).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.createChecklist=function(a,b){var e=d.defer();return c.post(g.checklist.createChecklist.replace("@engUuid",a),b).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.getDataForCreateChecklist=function(a){var b=d.defer();return c.get(g.checklist.getDataForChecklist.replace("@engUuid",a)).success(function(a,c,d,e){b.resolve({data:a,status:c})}).error(function(a,c,d,e){b.reject({message:a,status:c})}),b.promise},this.getChecklist=function(a){var b=d.defer();return c.get(g.checklist.getChecklist.replace("@checklistUuid",a)).success(function(a,c,d,e){b.resolve({data:a,status:c})}).error(function(a,c,d,e){b.reject({message:a,status:c})}),b.promise},this.putDataForChecklist=function(a,b){var e=d.defer();return c.put(g.checklist.putDataForChecklist.replace("@checklist_uuid",a),b).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.putChecklistDecision=function(a,b){var e=d.defer();return c.put(g.checklist.checklistDecision.replace("@decisionUuid",a),b).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.createAuditlogChecklist=function(a,b){var e=d.defer();return c.post(g.checklist.createAuditlogChecklist.replace("@checklist_uuid",a),b).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.createAuditlogDecisionChecklist=function(a,b){var e=d.defer();return c.post(g.checklist.createAuditlogDecisionChecklist.replace("@decision_uuid",a),b).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.setChecklistExitEntity=function(b){a=b,f.debug("set checklist")},this.callChecklistExit=function(b){if(void 0!=a&&"checklist"==b){var c="set_state";angular.forEach(a.data.checklistDecisions,function(a,b){angular.forEach(a.decisions,function(a,b){("approved"!=a.view_value&&"not_relevant"!=a.view_value||""==a.view_value)&&(c="next_step")})}),"next_step"==c?this.openNextSteps():"set_state"==c&&this.openSetState()}},this.getChecklistTemplates=function(){var a=d.defer();return c.get(g.checklist.getChecklistTemplates).success(function(b,c,d,e){a.resolve({data:b,status:c})}).error(function(b,c,d,e){a.reject({message:b,status:c})}),a.promise},this.getChecklistTemplate=function(a){var b=d.defer();return c.get(g.checklist.getChecklistTemplate.replace("@templateUuid",a)).success(function(a,c,d,e){b.resolve({data:a,status:c})}).error(function(a,c,d,e){b.reject({message:a,status:c})}),b.promise},this.saveChecklistTemplate=function(a){var b=d.defer();return c.put(g.checklist.saveChecklistTemplate,a).success(function(a,c,d,e){b.resolve({data:a,status:c})}).error(function(a,c,d,e){b.reject({message:a,status:c})}),b.promise},this}])}(),function(){"use strict";angular.module("ice.services.status",[]).service("statusService",["$http","$q","cacheService",function(a,b,c){var d=c.get("configuration").urls;this.get=function(c){var e=b.defer();return a.get(d.status.get.replace("@engagement",c)).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise},this.update=function(c,e){var f=b.defer();return a.put(d.status.update.replace("@engagement",c),e).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.add=function(c,e){var f=b.defer();return a.post(d.status.update.replace("@engagement",c),e).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise}}])}(),function(){"use strict";angular.module("ice.services.feedback",[]).service("feedbackService",["$http","$q","cacheService",function(a,b,c){var d=c.get("configuration").urls;this.add=function(c){var e=b.defer();return a.post(d.feedback.add.replace(),c).success(function(a,b,c,d){e.resolve({data:a,status:b})}).error(function(a,b,c,d){e.reject({message:a,status:b})}),e.promise}}])}(),function(){"use strict";angular.module("ice.services.toast",[]).service("toastService",["$rootScope",function(a){var b,c,d,e,f=!1,g="all",h=function(h,i,j){if(h&&void 0!=h.detail&&(h=h.detail),!h||!i)throw"You must provide both message an type in order to set new message toast";b=h,c=i,d=j&&j.sticky?j.sticky:!1,e=j&&j.readMoreCallback?j.readMoreCallback:void 0,g=j&&j.displayFor?j.displayFor:"all",
f=!0,a.showToast=!0},i=function(){b=void 0,c=void 0,f=!1,g="all",a.showToast=!1},j=function(){return{message:b,type:c,show:f,sticky:d,readMore:e,displayFor:g}};return{setToast:h,clearToast:i,getToast:j}}])}(),function(){"use strict";function a(a,b,c,d,e,f,g){var h,i=c.get("configuration").urls,j="lastAnnouncement";this.getPosts=function(c,d,e){var f=b.defer(),g=e&&e instanceof Array?e.join():"";return a.get(i.cms.posts.get.replace("@limit",c).replace("@offset",0).replace("@fromLastDays",d).replace("@category",g)).success(function(a,b,c,d){f.resolve({data:a,status:b})}).error(function(a,b,c,d){f.reject({message:a,status:b})}),f.promise},this.getLastAnnouncementPost=function(){var c=b.defer(),d=1;return a.get(i.cms.posts.get.replace("@limit",d).replace("@offset",0).replace("@fromLastDays","").replace("@category","Announcement")).success(function(a,b,d,e){c.resolve({data:a,status:b})}).error(function(a,b,d,e){c.reject({message:a,status:b})}),c.promise},this.setAnnouncementToast=function(){var a=function(){e.open({templateUrl:"main/modals/cms-post-modal/cms-post-modal.html",controller:"cmsPostModalController",controllerAs:"vm",size:"cms-post-read-more",resolve:{post:function(){return void 0}}})};this.getLastAnnouncementPost().then(function(b){if(b&&b.data&&1===b.data.length){var c=d.getJson(j);if(!c||c.id!=b.data[0].id||!c.closed){d.setJson(j,{id:b.data[0].id,closed:!1});var e="<b>Important announcement</b>: <i>"+b.data[0].title+".</i>";h={message:e,readMore:a,type:"warning",show:!0,displayFor:"all",publishDate:b.data[0].publish_date},f.showAnnouncement=!f.showAnnouncement}}})["catch"](function(a){g.error(a)})},this.getAnnouncement=function(){return h},this.getPages=function(c){var d=b.defer();return c||(c=""),a.get(i.cms.pages.get.replace("@title",c)).success(function(a,b,c,e){d.resolve({data:a,status:b})}).error(function(a,b,c,e){d.reject({message:a,status:b})}),d.promise},this.getPage=function(c){var d=b.defer();return a.get(i.cms.pages.getById.replace("@id",c)).success(function(a,b,c,e){d.resolve({data:a,status:b})}).error(function(a,b,c,e){d.reject({message:a,status:b})}),d.promise},this.searchPages=function(c){var d=b.defer();return a.get(i.cms.pages.search.replace("@keyword",c)).success(function(a,b,c,e){d.resolve({data:a,status:b})}).error(function(a,b,c,e){d.reject({message:a,status:b})}),d.promise}}angular.module("ice.services.cms",[]).service("cmsService",["$http","$q","cacheService","localStorageService","$uibModal","$rootScope","$log",a])}(),function(){"use strict";function a(a){this.setJson=function(b,c){return a.sessionStorage&&a.sessionStorage.setItem(b,JSON.stringify(c)),this},this.getJson=function(b){var c,d=a.sessionStorage&&a.sessionStorage.getItem(b);try{c=d?JSON.parse(d):void 0}catch(e){}return c},this["delete"]=function(b){return a.sessionStorage&&a.sessionStorage.removeItem(b)}}angular.module("ice.services.sessionStorage",[]).service("sessionStorageService",["$window",a])}(),function(){"use strict";function a(a,b,c,d,e){var f={};return f.restrict="E",f.templateUrl="directives/step-stages/step-stages.html",f.scope={stage:"=stage",stage_num:"=stageNum",eng_uuid:"@engUuid",team:"=team",eng_name:"@engName",initactivitylogs:"&"},f.controller=["$scope","vfService","$log",function(b,c,d){b.set_engagement_stage=function(f,g){var h=e.open({templateUrl:"main/modals/set-eng-stage/set-eng-stage-modal.html",controller:"setEngStageModalController",controllerAs:"vm",resolve:{stage:function(){return g},eng_name:function(){return b.eng_name},current_stage:function(){return b.stage}}});h.result.then(function(e){e&&c.set_engagement_stage(f.eng_uuid,g).then(function(c){if(202!==c.status)return!1;switch(f.stage=g,g){case"Intake":f.stage_num=1;break;case"Active":f.stage_num=2;break;case"Validated":f.stage_num=3;break;case"Completed":f.stage_num=4}a.$broadcast("onUpdateNextSteps",{stage:f.stage,eng_uuid:f.eng_uuid}),b.initactivitylogs()})["catch"](function(a){d.error(a)})})},b.hover_design=function(a,c){b.temp_num=c,b.hover=a}}],f.link=function(a,c,e){a.hover=!1,a.temp_num=0,a.priviliged=!1,a["const"]=b.stages,a.loaded=!1,a.user=d.getUserData(),a.$watchGroup(["user","team"],function(a,b,c){a[0]&&a[1]&&(c.loaded||((d.isEngagementEL(c.team)||d.isAdmin(c.user))&&(c.priviliged=!0),c.loaded=!0))}),a.hover_actions=function(b,c){a.priviliged&&a.hover_design(b,c)},a.set_stage=function(b){if(a.priviliged){if(a.stage===b)return void $log.debug("Same stage was chosen, request ignored.");a.set_engagement_stage(a,b)}}},f}angular.module("ice.directives",[]).directive("stepStagesDirective",a),a.$inject=["$rootScope","iceConstants","localStorageService","usersService","$uibModal"]}(),function(){"use strict";function a(a,b,c,d){var e={};return e.restrict="E",e.templateUrl="directives/progress/progress.html",e.scope={progress:"@progress",data:"=data",callback:"=callback",statuses:"@statuses",enable_refresh:"@enableRefresh"},e.link=function(e,f,g){var h=function(){e.statuses||(e.statuses=!1),i(),j()},i=function(){var a=moment(),b=moment(e.data.completion_date),c=Math.ceil(b.diff(a,"days",!0));0>c&&(c=0),e.daysLeft=c},j=function(){e.$watch("data.completion_date",function(a,b){a!==b&&i()}),e.$watch("data.heat_validated_time",function(a,b){a!==b&&k()}),e.$watch("data.vnf_version",function(a,b){a!==b&&k()}),e.$watch("data.image_scan_time",function(a,b){a!==b&&k()}),e.$watch("data.aic_instantiation_time",function(a,b){a!==b&&k()}),e.$watch("data.asdc_onboarding_time",function(a,b){a!==b&&k()})},k=function(){e.data&&(e.data.ecomp_release||(e.data.ecomp_release="-"),e.data.aic_version||(e.data.aic_version="-"),e.data.aic_instantiation_time||(e.data.aic_instantiation_time="-"),e.data.vnf_version||(e.data.vnf_version="-"),e.data.asdc_onboarding_time||(e.data.asdc_onboarding_time="-"),e.data.heat_validated_time||(e.data.heat_validated_time="-"),e.data.image_scan_time||(e.data.image_scan_time="-"))};e.starEngagement=function(){d.putStarredEngagements(e.data.engagement_uuid).then(function(a){b.ice.loader.show=!1,200===a.status&&a.data&&""!==a.data&&(b.$broadcast("onUpdateEngagements",{select:{uuid:e.data.engagement_uuid,page_type:"dashboard",sub_id:void 0,enable_refresh:e.enable_refresh}}),0==e.data.starred?e.data.starred=!0:e.data.starred=!1)})["catch"](function(a){b.ice.loader.show=!1,c.error(a)})},e.goToEngagement=function(a){b.$broadcast("searchSelectEngagement",a)},e.changeProgress=function(){var b=a.open({templateUrl:"main/modals/change-progress/change-progress.html",controller:"ChangeProgressModalController",controllerAs:"vm",resolve:{progress:function(){return e.progress},engagementUuid:function(){return e.data.engagement_uuid}}});b.result.then(function(a){a&&(e.progress=a.progress||e.progress,a.progress&&e.callback(a))},function(){c.debug("Modal dismissed at: "+new Date)})},h()},e}angular.module("ice.directives").directive("progressDirective",["$uibModal","$rootScope","$log","vfService",a])}(),function(){"use strict";function a(a,b,c,d,e){var f={};return f.restrict="E",f.template="<div></div>",f.scope={activity:"="},f.controller=["$scope",function(a){a.addDateStamp=function(a){var c="",d=moment().format("z"),e=moment().format("A"),f=moment().tz(moment.tz.guess()).format("z");return c=-1==a.description.indexOf(" at ")?"."==a.description.substr(a.description.length-1)?a.description.substr(0,a.description.length-1):a.description:a.description.substring(0,a.description.indexOf(" at ")),a.description=c+" at "+b("date")(a.create_time,"yyyy-MM-dd hh:mm:ss",d)+" "+e+" "+f,a},a.addPopover=function(a,b,c,d){var e="<span popover-trigger='mouseenter' popover-html='true' popover-placement='top' uib-popover='"+d+"' class='' >"+c+"</span>";a.description=a.description.replaceAll(b,e)},a.addSelectEngagement=function(a,b,c,d){var e="<span ng-click=\"goToEngagement('"+d+"')\" class='engagement_link' >"+c+"</span>";a.description=a.description.replaceAll(b,e)},a.goToEngagement=function(a){e.setJson("ice.settings.eng_uuid",a),d.path("/dashboard/overview"),d.replace(),c.$broadcast("onUpdateEngagements",{select:{uuid:a,page_type:"overview",sub_id:void 0}})}}],f.link=function(b,c,d,e){var f=b.activity;f.meta_data=JSON.parse(f.metadata),b.addDateStamp(f),angular.forEach(f.meta_data.macros,function(a,c){switch(a.type){case"popover":b.addPopover(f,c,a["short"],a["long"]);break;case"select_engagement":b.addSelectEngagement(f,c,a["short"],a.eng_uuid)}});var g="<span>"+b.activity.description+"</span>";c.html(g).show(),a(c.contents())(b)},f}angular.module("ice.directives").directive("notifications",a),String.prototype.replaceAll=function(a,b,c){return this.replace(new RegExp(a.replace(/([\/\,\!\\\^\$\{\}\[\]\(\)\.\*\+\?\|\<\>\-\&])/g,"\\$&"),c?"gi":"g"),"string"==typeof b?b.replace(/\$/g,"$$$$"):b)},a.$inject=["$compile","$filter","$rootScope","$location","localStorageService"]}(),function(){"use strict";function a(a){var b={};return b.restrict="E",b.transclude=!1,b.scope={selector:"@selector"},b.link=function(b,c,d){a.$watch("ice.loader.show",function(a,c){if(a===!0){var d=$(b.selector),f=e(),g=$('<div class="ice-loader" id="'+f+'"></div>');$("body").append(g),d.addClass("ice-loader-overlay");var h=d.offset();h&&g.css({top:h.top+d.height()/2,left:h.left+d.width()/2,position:"fixed"})}else if(a===!1){var d=$(b.selector);d.removeClass("ice-loader-overlay");var f=e(),g=$("#"+f);g.remove()}},!0);var e=function(){var a="ice-loader-",c=b.selector;return c=c.replace(".",""),c=c.replace("#",""),a+c}},b}angular.module("ice.directives").directive("iceLoader",a),a.$inject=["$rootScope"]}(),function(){"use strict";function a(a,b){var c={};return c.restrict="E",c.templateUrl="directives/ice-toast/ice-toast.html",c.scope={isModal:"=isModal"},c.link=function(c,d,e){var f=function(){var a=b.getToast();a&&(c.toast=a)};c.closeAlert=function(){b.clearToast()},f(),a.$watch("showToast",function(a,b){f()},!0)},c}angular.module("ice.directives").directive("iceToast",["$rootScope","toastService",a])}(),function(){"use strict";function a(a,b,c){var d={};return d.restrict="E",d.templateUrl="directives/ice-announcement/ice-announcement.html",d.link=function(d,e,f){function g(a){var b=c.getJson(h)||{};b.closed=a,c.setJson(h,b)}var h="lastAnnouncement",i=function(){var a=b.getAnnouncement();if(a){d.toast=a;var c=new Date;c.setDate(c.getDate()-2);var e=new Date(d.toast.publishDate);c>e&&d.closeAlert()}};d.closeAlert=function(){d.toast.show=!1,g(!0)},i(),a.$watch("showAnnouncement",function(a,b){i()},!0)},d}angular.module("ice.directives").directive("iceAnnouncement",["$rootScope","cmsService","localStorageService",a])}(),function(){"use strict";function a(a,b){var c={};return c.restrict="E",c.templateUrl="directives/ice-tooltip/ice-tooltip.html",c.link=function(c,d,e){var f=5;a.getPosts(f,"",["FAQ"]).then(function(a){if(a.data&&a.data.length>0){var b=a.data.length,d=Math.floor(Math.random()*b);c.tipContent=a.data[d]}})["catch"](function(a){b.error(a)})},c}angular.module("ice.directives").directive("iceToolTip",["cmsService","$log",a])}(),function(){"use strict";function a(a,b,c){var d={};return d.restrict="E",d.templateUrl="directives/ice-news-and-announcement/ice-news-and-announcement.html",d.scope={limit:"=limit",fromLastDays:"=fromLastDays",showDescription:"=showDescription"},d.link=function(d,e,f){var g=d.limit||5,h=d.fromLastDays||"",i=function(){a.getPosts(g,h,["Announcement","News"]).then(function(a){d.cmsPosts=a.data})["catch"](function(a){c.error(a)})};d.openCMSReadMoreModal=function(a){a?b.open({templateUrl:"main/modals/cms-post-modal/cms-post-modal.html",controller:"cmsPostModalController",controllerAs:"vm",size:"cms-post-read-more",resolve:{post:function(){return a}}}):c.debug("Cannot open cms post.")},i()},d}angular.module("ice.directives").directive("iceNewsAndAnnouncement",["cmsService","$uibModal","$log",a])}(),function(){"use strict";function a(a){return function(b){return a.trustAsHtml(b)}}angular.module("ice.filters",[]).filter("trusted",["$sce",a])}(),function(){"use strict";function a(a,b,c){return function(a,b){return a.toLowerCase().includes(b.toLowerCase())}}angular.module("ice.filters").filter("doesExists",["$sce","$injector","$log",a])}(),function(){"use strict";function a(){return function(a){return a?a.charAt(0).toUpperCase()+a.substr(1).toLowerCase():""}}angular.module("ice.filters").filter("capitalize",[a])}(),function(){"use strict";function a(a,b){return function(c,d){var e={stage:"All",keyword:d,offset:0,limit:20};return a.getExpandedEngagements(e).then(function(a){return 200===a.status&&a.data&&""!==a.data?a.data.array:void 0})["catch"](function(a){$rootScope.ice.loader.show=!1,b.error(a)})}}angular.module("ice.filters").filter("customVFSearchFilter",["vfService","$log",a])}(),function(){"use strict";function a(a){var b=["th","st","nd","rd"];return function(c,d){if(c){var e=a("date")(c,d),f=parseInt(a("date")(c,"dd")),g=30>f?f%20:f%30,h=3>=g?b[g]:b[0];return e.replace("oo",h)}return c}}angular.module("ice.filters").filter("date2",["$filter",a])}(),function(){"use strict";function a(a,b){return function(b){return b=a.replace(b,/\&amp\;/g,"&"),b=a.replace(b,/\&lt\;/g,"<"),b=a.replace(b,/\&gt\;/g,">"),b=a.replace(b,/\&quot\;/g,'"'),b=a.replace(b,/\&#03\;/g,"'"),b=a.replace(b,/<(\s)*script/g,"_script")}}angular.module("ice.filters").filter("htmlspecialchars",["_","$filter",a])}(),function(){"use strict";function a(a,b){return function(b){return b=a.replace(b,/style=\"font-weight: bold;\"/g,'class="bold"'),b=a.replace(b,/style=\"font-style: italic;\"/g,'class="italic"'),b=a.replace(b,/style=\"text-decoration-line: line-through;\"/g,'class="line-through"'),b=a.replace(b,/style=\"text-decoration-line: underline;\"/g,'class="underline"')}}angular.module("ice.filters").filter("htmlstylespan",["_","$filter",a])}(),function(){"use strict";function a(a){return function(b,c){return a.searchPages(c).then(function(a){return a.data})["catch"](function(a){$log.error(a)})}}angular.module("ice.filters").filter("customDocumentationPageSearch",["cmsService",a])}(),function(){"use strict";function a(){}angular.module("ice.toolbar",[]).config(a)}(),function(){"use strict";function a(a,b,c,d,e,f){var g=this;g.notifications=0;var h=c.getUserData();h&&(g.isAdmin=c.isAdmin(h),c.getNotifications(h.uuid).then(function(a){200===a.status&&(g.notifications=a.data.notifications_number?a.data.notifications_number:0)})["catch"](function(a){e.error(a)})),g.logout=function(){c.resetUserData(),b.setJson("ice.settings.eng_uuid",void 0),d.go("app.login")},g.addFeedback=function(){f.open({templateUrl:"main/modals/feedback/feedback.html",controller:"FeedbackModalController",controllerAs:"vm",size:"lg",resolve:{action:function(){return"add"}}})},a.$on("eventClearNotifications",function(a,b){g.notifications=0})}angular.module("ice.toolbar").controller("ToolbarController",["$rootScope","localStorageService","usersService","$state","$log","$uibModal",a])}(),function(){"use strict";function a(){}angular.module("ice.navigation",[]).config(a)}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i,j,k,l,m,n){var o=this;k.selected=void 0,k.states=["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Dakota","North Carolina","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"],o.formatted_engagements={},o.starred_engagements={},o.recent_engagements={},o.showOpenWizardButton=!1;var p=i.getUserData();void 0!=p&&1==p.activationSuccess&&(o.activation_success=!0),o.selectEngagement=function(a,c,e,f){var j=angular.element(l);void 0!=c&&j.width()<992&&$(".navbar-collapse").collapse("hide"),null!=h.params.messagePass&&(m.setToast(h.params.messagePass,"success"),null==h.params.messagePass),void 0==a&&void 0!=g.getJson("ice.settings.eng_uuid")?a=g.getJson("ice.settings.eng_uuid"):h.go("app.dashboard.dashboard");var n=b.defer();return void 0!=c?o.view_type=c:""!=d.getPage()?o.view_type=d.getPage():void 0!=g.getJson("ice.settings.view_type")?o.view_type=g.getJson("ice.settings.view_type"):o.view_type="overview",void 0!=e?e=e:void 0!=g.getJson("ice.settings.sub_id")&&(e=g.getJson("ice.settings.sub_id")),g.setJson("ice.settings.view_type",o.view_type),g.setJson("ice.settings.sub_id",e),d.setPage(o.view_type),k.$watch(function(){return d.getPage()},function(a,b){a!==b&&(o.view_type=a)}),o.engagement=void 0,angular.forEach(o.recent_engagements,function(b,c){b.uuid===a?(o.engagement=b,o.engagement.selected=!0,o.engagement.page=o.view_type,o.engagement.sub_id=e,o.engagement.view_type=o.view_type):b.selected=void 0;o.recent_engagements[c]=b}),angular.forEach(o.starred_engagements,function(b,c){b.uuid===a?(o.engagement=b,o.engagement.selected=!0,o.engagement.page=o.view_type,o.engagement.sub_id=e,o.engagement.view_type=o.view_type):b.selected=void 0;o.starred_engagements[c]=b}),o.engagement?(g.setJson("ice.settings.eng_uuid",a),o.showOpenWizardButton=!0,(void 0===f||f===!0)&&(o.activation_success?h.go("app.dashboard."+o.view_type,{engagement_uuid:a,engagement:o.engagement,sub_id:e,messagePass:"You have successfully activated your account!"}):h.go("app.dashboard."+o.view_type,{engagement_uuid:a,engagement:o.engagement,sub_id:e,messagePass:null}))):1!=o.last_not_found_engagement?(g.setJson("ice.settings.eng_uuid",void 0),r()):r(!0),o.isReviewer=i.isReviewer(o.me,o.engagement.reviewer_uuid),o.isPeerReviewer=i.isPeerReviewer(o.me,o.engagement.peer_reviewer_uuid),n.resolve(a),n.promise},o.searchSelectEngagement=function(b){f.getSingleEngagement(o.me.uuid,b).then(function(c){a.ice.loader.show=!1,200===c.status&&c.data&&""!==c.data&&r(!1,{uuid:b,page_type:"overview",sub_id:void 0})})["catch"](function(b){a.ice.loader.show=!1,n.error(b)})};var q=function(){return o.me=o.user=i.getUserData(),o.isAdmin=i.isAdmin(o.me),o.isEngagementEL=i.isUserInRole(c.roles.el),o.vfc_num=0,o.user&&o.user.is_active===!1?void h.go("app.resend_activation",{message:"Please activate your account first"}):void 0===o.user?void h.go("app.login",{message:"Please login first"}):(r(!1),void a.$on("onUpdateEngagements",function(a,b){void 0!=b&&void 0!=b.select?r(!1,b.select):r(!0)}))},r=function(b,c){a.ice.loader.show=!0,o.starred_engagements={},o.recent_engagements={},o.formatted_engagements={},f.getStarredEngagements().then(function(d){a.ice.loader.show=!1,200===d.status&&d.data&&""!==d.data?s(d.data,!0,!1):204===d.status?n.error("no starred VFs were found for you."):n.error("getStarredEngagements Failed."),f.getRecentEngagements().then(function(d){a.ice.loader.show=!1,200===d.status&&d.data&&""!==d.data?d.data.length>0?s(d.data,!1,!0,b,c):h.go("app.dashboard.overview",{engagement_uuid:void 0,engagement:void 0,sub_id:void 0}):204===d.status?(n.error("no recent VFs were found for you."),t(b)):n.error("getRecentEngagements Failed.")})["catch"](function(b){a.ice.loader.show=!1,n.error(b)})})["catch"](function(b){a.ice.loader.show=!1,n.error(b)})};a.$on("searchSelectEngagement",function(a,b){o.searchSelectEngagement(b)});var s=function(a,b,c,d,e){var f=void 0;for(f=0;f<a.length;f++){var g={};b===!0?(g.creator=a[f].engagement__creator__uuid,g.is_service_provider_internal=a[f].is_service_provider_internal,g.name=a[f].engagement__engagement_manual_id+": "+a[f].name,g.engagement_manual_id=a[f].engagement__engagement_manual_id,g.reviewer_uuid=a[f].engagement__reviewer__uuid,g.uuid=a[f].engagement__uuid,g.peer_reviewer_uuid=a[f].engagement__peer_reviewer__uuid):(g.creator=a[f].vf__engagement__creator__uuid,g.is_service_provider_internal=a[f].vf__is_service_provider_internal,g.name=a[f].vf__engagement__engagement_manual_id+": "+a[f].vf__name,g.engagement_manual_id=a[f].vf__engagement__engagement_manual_id,g.uuid=a[f].vf__engagement__uuid,g.last_update=a[f].last_update,g.reviewer_uuid=a[f].vf__engagement__reviewer__uuid,g.peer_reviewer_uuid=a[f].vf__engagement__peer_reviewer__uuid),"NAVIGATED_INTO_ENGAGEMENT"!=a[f].action_type?g.red_dot=a[f].action_type.split("_").join(" "):g.red_dot=!1,g.checklists=a[f].checklists,g.page="overview",o.formatted_engagements[g.engagement_manual_id]=g,b===!0?o.starred_engagements[g.engagement_manual_id]=g:c===!0&&void 0==o.starred_engagements[g.engagement_manual_id]&&(o.recent_engagements[g.engagement_manual_id]=g)}return void 0!=e?e.view_type?o.selectEngagement(e.uuid,e.view_type,e.sub_id,e.enable_refresh):o.selectEngagement(e.uuid,e.page_type,e.sub_id,e.enable_refresh):void 0!=d&&t(d),new Promise(function(a,b){a(o.formatted_engagements)})},t=function(a){var b=!1,c=g.getJson("ice.settings.eng_uuid"),d=i.getUserData(),f=Object.keys(o.formatted_engagements);if(f.length>0){if(1==a?b=o.formatted_engagements[Object.keys(o.formatted_engagements)[0]].uuid:e.search().eng_uuid?b=e.search().eng_uuid:null!=c?b=c:void 0!=h.params.engagement_uuid&&(b=h.params.engagement_uuid),0!=b){o.selectEngagement(b)}else h.go("app.dashboard.dashboard"),null!=h.params.messagePass&&(m.setToast(h.params.messagePass,"success"),null==h.params.messagePass);0==b&&(b=o.formatted_engagements[Object.keys(o.formatted_engagements)[0]].uuid,o.engagement=o.formatted_engagements[Object.keys(o.formatted_engagements)[0]]),void 0!=o.engagement&&null!=o.engagement.creator&&d.uuid==o.engagement.creator&&1==o.activation_success&&o.openGettingStartedWizard(b)}else 1==d.activationSuccess?(o.openGettingStartedWizard(),h.go("app.dashboard.dashboard")):h.go("app.dashboard.dashboard");o.activation_success=!1,i.setUserActivationSuccess(void 0)};q(),o.openGettingStartedWizard=function(b){var c=o.engagement&&b?o.engagement.is_service_provider_internal:!1;b=b||"";var d={user:o.user,eng_uuid:b,is_service_provider_internal:c,showActivationMessage:o.activation_success};a.$broadcast("openGettingStartedWizard",d),o.activation_success=!1},o.addChecklist=function(a){var b=j.open({templateUrl:"main/modals/checklist/checklist.html",controller:"ChecklistModalController",controllerAs:"vm",size:"lg",resolve:{engagementUuid:function(){return a},modal_type:function(){return"create"},wizardData:function(){return!1}}});b.result.then(function(b){var c=void 0;void 0!=b&&(c=b.uuid,r(!1,{uuid:a,page_type:"checklist",sub_id:c}),b.progress&&o.callback(b))},function(){n.debug("Modal dismissed at: "+new Date)})}}angular.module("ice.navigation",["ui.bootstrap"]).controller("NavigationController",["$rootScope","$q","iceConstants","pageService","$location","vfService","localStorageService","$state","usersService","$uibModal","$scope","$window","toastService","$log",a])}(),function(){"use strict";function a(a,b,c,d,e){var f=this,g=function(){f.checkListTemplates=null,i(),h()},h=function(){a.$watch(function(){return e.params.templateName},function(a,b){a!==b&&f.selectedTemplate&&(f.selectedTemplate.name=a)})},i=function(){c.getChecklistTemplates().then(function(a){d.ice.loader.show=!1,200===a.status&&a.data&&""!==a.data?f.checkListTemplates=a.data.checkListTemplates:b.debug("getChecklistTemplates Failed. response.status="+a.status)})["catch"](function(a){d.ice.loader.show=!1,b.error(a)})};f.selectTemplate=function(a){a!==f.selectedTemplate&&(f.selectedTemplate=a,e.go("app.admin.checklisttemplate",{template_uuid:a.uuid}))},g()}angular.module("ice.main.admin",["ice.services.users"]).controller("adminNavigationController",["$scope","$log","checklistService","$rootScope","$state",a])}(),function(){"use strict";function a(a,b,c,d,e){var f=this,g="LastDocumentationPageId",h=function(){c.getPages("Documentation").then(function(a){if(a&&a.data&&1===a.data.length){f.documentationPage=a.data[0];var b=d.getJson(g);b?f.loadPageContent(b):f.loadPageContent(f.documentationPage.id)}})["catch"](function(a){e.error(a)})};f.loadPageContent=function(a){f.selectedSearchedPage&&delete f.selectedSearchedPage,f.pageId=a,d.setJson(g,a),b.go("app.documentation.page",{page_id:a})},f.isPageCollapsed=function(b){var c=!0;if(b&&b.children&&b.children.length>0){var d=a.flatMap(b.children,function(b){return a.concat(b.children,b)});c=b.id!=f.pageId&&!a.some(d,["id",f.pageId])}return c},h()}angular.module("ice.documentation",[]).controller("documentationNavigationController",["_","$state","cmsService","sessionStorageService","$log",a])}(),function(){"use strict";function a(a){var b=this,c=function(){b.selectedPage=a.$current.name||"app.account"};b.loadPageContent=function(c){b.selectedPage=c,a.go(c)},c()}angular.module("ice.dashboard.account",[]).controller("accountNavigationController",["$state",a])}(),function(){"use strict";function a(a,b,c,d,e,f){var g=this;g.progress=b,g.closeModal=function(){a.close()},g.submitForm=function(){var b={progress:g.progress};d.updateProgress(c,b).then(function(c){202===c.status&&a.close(b)})["catch"](function(a){e.error(a),f.setToast(a.status+": Error changing progress!","danger")})}}angular.module("ice.modals",[]).controller("ChangeProgressModalController",["$uibModalInstance","progress","engagementUuid","vfService","$log","toastService",a])}(),function(){"use strict";function a(a,b,c,d,e,f){var g=this;g.completionDate=b,g.dateOptions={minDate:new Date,showWeeks:!0},g.closeModal=function(){a.close()},g.submitForm=function(){var b={target_date:moment(g.completionDate).format("YYYY-MM-DD")};d.updateDaysLeft(c,b).then(function(c){200===c.status&&a.close(b)})["catch"](function(a){f.setToast(a.status+": Error changing completion date!","danger")})}}angular.module("ice.modals").controller("ChangeDateModalController",["$uibModalInstance","completionDate","engagementUuid","vfService","$rootScope","toastService",a])}(),function(){"use strict";function a(a,b,c,d,e,f){var g=this;g.targetLabDate=b,g.dateOptions={minDate:new Date,showWeeks:!0},g.closeModal=function(){a.close()},g.myDate=new Date,g.minDate=moment(g.myDate).format("YYYY-MM-DD"),g.maxDate=moment(g.myDate).add(2,"years").format("YYYY-MM-DD"),g.submitForm=function(){var b={target_date:moment(g.targetLabDate).format("YYYY-MM-DD")};d.updateLabEntryDaysLeft(c,b).then(function(c){200===c.status&&a.close(b)})["catch"](function(a){f.setToast(a.status+": Error changing completion date!","danger")})}}angular.module("ice.modals").controller("ChangeLabEntryDateModalController",["$uibModalInstance","targetLabDate","engagementUuid","vfService","$rootScope","toastService",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i,j,k){var l=this;l.nextSteps=[{assigneesUuids:"",description:"",files:"",duedate:""}];var m=function(){l.myDate=new Date,l.minDate=new Date(l.myDate.getFullYear(),l.myDate.getMonth(),l.myDate.getDate()),l.maxDate=new Date(l.myDate.getFullYear()+2,l.myDate.getMonth(),l.myDate.getDate()),l.onlyWeekendsPredicate=function(a){var b=a.getDay();return 0===b||6===b},l.wysiwyg_menu=[["bold","italic","strikethrough","underline"],["unordered-list","ordered-list","outdent","indent"]],l.select_str={File:"Select All"},l.select_all_flag=!1,l.associated_files=[],l.associated_files.push(l.select_str),l.assigness=[],l.title=e,void 0==h?(l.checklist={},l.checklist.uuid=void 0):l.checklist=h;var a=[];if(angular.forEach(f,function(b,c){-1==a.indexOf(b)&&(a.push(b),l.associated_files.push({File:b}))}),angular.forEach(d,function(a,b){l.assigness.push({name:a.full_name,id:a.uuid})}),l.edit=!1,void 0!=i){l.edit=!0;var b={};b.description=i.description,b.files=[],b.duedate=new Date(i.due_date);var a=[];angular.forEach(i.files,function(c,d){-1==a.indexOf(value)&&(a.push(value),b.files.push({File:c}))}),b.assigneesUuids=[],angular.forEach(i.assignees,function(a,c){b.assigneesUuids.push({name:a.full_name,id:a.uuid})}),l.nextSteps=[b]}};m(),l.get_chosen_files_num=function(a){return a.files.length==f.length+1?a.files.length-1:a.files.length},l.add_all_associated_files=function(a,b){1==b?(a.files=[],a.files.push({File:"Select All"}),_.forEach(f,function(b,c){a.files.push({File:b})})):(l.select_all_flag=!1,a.files=[])},l.pull_select_all_from_list=function(a){var b=[];_.forEach(a.files,function(a){_.isEqual(a,l.select_str)||b.push(a)}),a.files=b},l.verify_files_choice=function(a){_.forEach(a.files,function(b){a.files.length==f.length&&l.select_all_flag?b===l.select_str?(l.select_all_flag=!1,l.pull_select_all_from_list(a)):l.add_all_associated_files(a,!1):a.files.length!=f.length||l.select_all_flag?b===l.select_str&&(l.select_all_flag=!0,l.add_all_associated_files(a,!0)):(a.files.push({File:"Select All"}),l.select_all_flag=!0)})},l.addNewStep=function(){var a=l.nextSteps.length+1;l.nextSteps.push({id:a})},l.removeStep=function(a){l.nextSteps.splice(a,1)},l.closeModal=function(){a.ice.loader.show=!1,j.clearToast(),b.close()},l.submitForm=function(){var d,e=[];angular.forEach(l.nextSteps,function(a,b){var c={};c.files=[],a.files.length>f.length&&l.pull_select_all_from_list(a),angular.forEach(a.files,function(a,b){c.files.push(a.File)}),c.assigneesUuids=[],angular.forEach(a.assigneesUuids,function(a,b){c.assigneesUuids.push(a.id)}),d=new Date(Date.parse(a.duedate+moment().format("z"))),c.duedate=d.getFullYear()+"-"+n(d.getMonth()+1)+"-"+n(d.getDate()),c.description=a.description,e.push(c)});var h=l.checklist.uuid,m=g;l.edit?c.edit(g,i.uuid,e[0]).then(function(a){202===a.status&&b.close(a.data)})["catch"](function(a){k.error(a),j.setToast(a.status+": Error adding next step!","danger",{displayFor:"modal"})}):void 0==l.checklist.uuid?c.add(g,e).then(function(a){200===a.status&&b.close(a.data)})["catch"](function(a){k.error(a),j.setToast(a.status+": Error adding next step!","danger",{displayFor:"modal"})}):c.createChecklistNextStep(h,m,e).then(function(c){200===c.status?(b.close(c.status),l.closeModal()):(j.setToast(error.message,"danger",{displayFor:"modal"}),a.ice.loader.show=!1,k.error(error))})["catch"](function(b){j.setToast(b.message,"danger",{displayFor:"modal"}),a.ice.loader.show=!1,k.error(b)})};var n=function(a){return 10>a?"0"+a:a}}angular.module("ice.modals").controller("NextStepsModalController",["$rootScope","$uibModalInstance","stepsService","engagement_team","title","associated_files","engagement_uuid","checklist","nextstep","toastService","$log",a])}(),function(){"use strict";function a(a,b,c,d,e){var f=this,g=function(){f.stage=c,f.current_stage=e,f.modalText="Are you sure you want to set the Engagement's stage to "+f.stage+"?",f.eng_name=d};f.closeModal=function(a){b.close(a)},g()}angular.module("ice.modals").controller("setEngStageModalController",["$rootScope","$uibModalInstance","stage","eng_name","current_stage",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g,h){var i=this;i.checkListAssociatedFiles=[],i.selectedCheckListAssociatedFiles=[],i.isDisabled=!1;var j=function(){switch(f){case"create":i.create=!0,i.createUpadeTitle="Create",i.modalType="create",i.modalTitle="Create",d.getDataForCreateChecklist(e).then(function(a){200===a.status&&(i.checkListTemplatesLists=[],i.checkListTemplates=a.data.checkListTemplates,angular.forEach(a.data.checkListAssociatedFiles,function(a,b){i.checkListAssociatedFiles.push({File:a})}),b.ice.loader.show=!1)})["catch"](function(c){a.setToast(c.message,"danger",{displayFor:"modal"}),b.ice.loader.show=!1,h.error(c.message)});break;case"update":i.update=!0,i.createUpadeTitle="Update",i.modalType="udpate",i.modalTitle="Update",i.checklistUuid=g.uuid,i.checkListName=g.name,d.getDataForCreateChecklist(e).then(function(a){200===a.status&&(i.checkListAssociatedFiles=[],angular.forEach(a.data.checkListAssociatedFiles,function(a,b){i.checkListAssociatedFiles.push({File:a})}),b.ice.loader.show=!1,i.selectedCheckListAssociatedFiles=[],angular.forEach(g.associatedFiles,function(a,b){i.selectedCheckListAssociatedFiles.push({File:a})}))})["catch"](function(c){a.setToast(c.message,"danger",{displayFor:"modal"}),b.ice.loader.show=!1,h.error(c.message)}),i.selectedTemplateUuid=g.selectedTemplateUuid,i.selectedTemplateName=g.selectedTemplateName}};j(),i.addFile=function(){var a=i.selectedCheckListAssociatedFiles.length+1;
-i.selectedCheckListAssociatedFiles.push({id:a})},i.removeFile=function(a){i.selectedCheckListAssociatedFiles.splice(a,1)},i.closeModal=function(){a.clearToast(),b.$emit("onChecklistUpdate"),c.close(i.checkListName),c.close()},i.submitForm=function(){i.isDisabled=!0;var j=[];switch(f){case"create":angular.forEach(i.selectedCheckListAssociatedFiles,function(a,b){j.push(a.File)});var k={checkListAssociatedFiles:j,checkListName:i.checkListName,checkListTemplateUuid:i.selectedTemplateUuid};d.createChecklist(e,k).then(function(a){200===a.status&&(c.close(a.data),b.ice.loader.show=!1,i.closeModal())})["catch"](function(c){a.setToast(c.message||"Error creating check list.","danger",{displayFor:"modal"}),b.ice.loader.show=!1,i.isDisabled=!1,h.error(c.message)});break;case"update":var l=[];angular.forEach(i.selectedCheckListAssociatedFiles,function(a,b){l.push(a.File)}),h.debug("update",l);var m={checklistUuid:i.checklistUuid,checkListAssociatedFiles:l,checkListName:i.checkListName,checkListTemplateUuid:i.selectedTemplateUuid};d.putDataForChecklist(i.checklistUuid,m).then(function(f){if(200===f.status){b.$broadcast("onUpdateEngagements",{select:{uuid:e,view_type:"checklist",sub_id:i.checklistUuid}}),b.ice.loader.show=!1;var j={};j.checklist_name=i.checkListName,j.associated_files=l;var k=i.checkListAssociatedFiles.sort(),m=l.sort(),n=k.length==m.length&&k.every(function(a,b){return a===m[b]});if(!n&&"pending"!=g.state){var o={};o.description="Rejected due to file list change",o.decline="True",d.setState(i.checklistUuid,o).then(function(c){return 200!==c.status?(a.setToast(c.error,"danger",{displayFor:"modal"}),b.ice.loader.show=!1,void(i.isDisabled=!1)):void b.$broadcast("onUpdateEngagements")})["catch"](function(b){h.error(b),a.setToast(b.status+": Error changing progress!","danger"),i.isDisabled=!1})}c.close(j),i.closeModal()}})["catch"](function(c){a.setToast(c.message,"danger",{displayFor:"modal"}),b.ice.loader.show=!1,h.error(c.message),i.isDisabled=!1});break;default:h.debug("no submit action found"),i.isDisabled=!1}}}angular.module("ice.modals").controller("ChecklistModalController",["toastService","$rootScope","$uibModalInstance","checklistService","engagementUuid","modal_type","wizardData","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f){var g=this,h=function(){var a=[],b=moment().tz(moment.tz.guess()).format("z"),c="";g.name=d.name,g.checklistAuditLogs=d.checklistAuditLogs,g.checklistAuditLogs.forEach(function(d){c=moment(d.create_time).local().format("YYYY-MM-DD hh:mm:ss A")+" "+b,a.push({name:d.creator.full_name,dt:c,desc:d.description})}),g.checklistAuditLogs=a};h(),g.submitForm=function(){var h={description:g.description};c.createAuditlogChecklist(d.uuid,h).then(function(c){200===c.status?(b.close(c.data),g.closeModal()):(e.setToast(c.error,"danger",{displayFor:"modal"}),a.ice.loader.show=!1)})["catch"](function(a){e.setToast(a.message,"danger",{displayFor:"modal"}),f.error(a.message)})},g.closeModal=function(){e.clearToast(),b.close()}}angular.module("ice.modals").controller("AuditLogModalController",["$rootScope","$uibModalInstance","checklistService","wizardData","toastService","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g){var h=this,i=function(){h.me=f.getUserData(),j()};h.vfcs=[{name:"",external_ref_id:"",company:""}],h.companies=[],h.closeModal=function(){b.close()},h.addNewChoice=function(){var a=h.vfcs.length+1;h.vfcs.push({id:a})},h.removeChoice=function(a){h.vfcs.splice(a,1)},h.submitForm=function(){var a=[];angular.forEach(h.vfcs,function(b,c){h.item=[];var d=new Object;d.name=b.name,d.external_ref_id=b.external_ref_id,d.company=b.company,a.push(d)});var f={vfcs:a,vf_uuid:e,creator:h.me};c.add(f).then(function(a){200===a.status&&b.close(a.status)})["catch"](function(a){g.error(a),d.setToast(a.status+": Error changing progress!","danger")})};var j=function(){a.ice.loader.show=!0,c.getCompanies().then(function(b){a.ice.loader.show=!1,200===b.status&&(h.companies=b.data,0===h.companies.length&&console.warn("No vendors pulled, request was successfull"))})["catch"](function(b){a.ice.loader.show=!1,g.error(b)})};i()}angular.module("ice.modals").controller("detailedViewVFCModalController",["$rootScope","$uibModalInstance","vfcService","toastService","vf_uuid","usersService","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i,j){function k(){d.getDeployTargets().then(function(b){a.ice.loader.show=!1,200===b.status&&(n.deployTargets=b.data,0===j.filter(n.deployTargets,{uuid:n.dtversion.uuid}).length&&(n.dtversion.disabled=!0,n.deployTargets.push(n.dtversion)))})["catch"](function(b){a.ice.loader.show=!1,i.error(b)})}function l(){d.getECOMPReleases().then(function(a){200===a.status&&(n.ECOMPReleases=a.data,0===j.filter(n.ECOMPReleases,{uuid:n.ecomp_release.uuid}).length&&(n.ecomp_release.disabled=!0,n.ECOMPReleases.push(n.ecomp_release)))})["catch"](function(b){a.ice.loader.show=!1,i.error(b)})}function m(){d.getVFVersion(g).then(function(b){a.ice.loader.show=!1,200===b.status&&(n.VFVersion=b.data)})["catch"](function(b){a.ice.loader.show=!1,i.debug(b)})}var n=this,o=function(){e.engagement&&(n.engagement=e.engagement),n.me=h.getUserData(),d.getSingleEngagement(n.me.uuid,n.engagement.uuid).then(function(b){if(a.ice.loader.show=!1,200===b.status&&b.data&&""!==b.data){var c=b.data;n.engagement_manual_id=c.engagement.engagement_manual_id,n.vf_name=c.name,n.vf_uuid=c.uuid,n.ecomp_release=c.ecomp_release,n.target_lab=new Date(c.target_lab_entry_date),n.dtversion=c.deployment_target,n.selected_dt_uuid=n.dtversion.uuid,n.selected_ecomp_uuid=n.ecomp_release.uuid,n.me=h.getUserData(),n.name=n.engagement.name,n.isEngagementEL=h.isEngagementEL(c.engagement.engagement_team),n.isAdmin=h.isAdmin(n.me),n.choices=[{TargetLab:"",TargetAic:""}],k(),l(),m()}})["catch"](function(b){a.ice.loader.show=!1,i.error(b)})};n.closeModal=function(){b.close()},n.addNewChoice=function(){var a=n.choices.length+1;n.choices.push({id:a})},n.removeChoice=function(a){n.choices.splice(a,1)},n.submitForm=function(){var a={vf_uuid:n.vf_uuid,version:n.VFVersion,target_aic_uuid:n.TargetAic,ecomp_release:n.ECOMPRelease};d.updateVfs(a,n.vf_uuid).then(function(a){200===a.status&&b.close(a.status)})["catch"](function(a){i.error(a),f.setToast(a.status+": Error changing progress!","danger")})},n.update_deployment_target=function(){n.dtversion.uuid!=n.selected_dt_uuid&&(angular.forEach(n.dt_AIC_versions,function(a,b){a.uuid===n.selected_dt_uuid&&(n.dtversion=a)}),d.updateDeployTargets(n.engagement.uuid,n.selected_dt_uuid).then(function(b){a.ice.loader.show=!1})["catch"](function(b){a.ice.loader.show=!1,i.error(b)}),n.set_edit_mode("aic"))},n.update_ECOMP_release=function(){n.ecomp_release.uuid!=n.selected_ecomp_uuid&&(j.each(n.ECOMPReleases,function(a,b){a.uuid===n.selected_ecomp_uuid&&(n.ecomp_release=a)}),d.updateECOMPReleases(n.engagement.uuid,n.selected_ecomp_uuid).then(function(b){a.ice.loader.show=!1})["catch"](function(b){a.ice.loader.show=!1,i.error(b)}),n.set_edit_mode("ecomp"))},o()}angular.module("ice.modals").controller("validationDetailsModalController",["$rootScope","$uibModalInstance","vfcService","vfService","$stateParams","toastService","vf_uuid","usersService","$log","_",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g){var h=this,i=function(){void 0!=c.engagement&&(h.vf=c.engagement.vf),j()};h.closeModal=function(){b.close()},h.json="",h.submitForm=function(){var a={name:h.json,vf_uuid:f};d.add(a).then(function(a){b.close(a.status)})["catch"](function(a){g.error(a),e.setToast(a.status+": Error changing progress!","danger")})};var j=function(){a.ice.loader.show=!0,d.get().then(function(b){a.ice.loader.show=!1,200===b.status&&(h.dtsites=b.data)})["catch"](function(b){a.ice.loader.show=!1,g.error(b)})};i()}angular.module("ice.modals").controller("detailedViewDtsitesModalController",["$rootScope","$uibModalInstance","$stateParams","dtsiteService","toastService","vf_uuid","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g){var h=this,i=function(){h.description=null,h.checklist_name=f.name,h.state=f.state,h.action=e,h.modalText="pending"==h.state?"Are you sure you want to move the checklist state to Automation?":"Please use the button below to either approve or reject the checklist.<br>You can also add a log entry comment."};h.submitForm=function(e){var i={};null!=h.description?i.description=h.description:i.description="",e===!0?i.decline="False":i.decline="True",c.setState(f.uuid,i).then(function(c){200===c.status?(b.close(c.data),h.closeModal()):(d.setToast(c.error,"danger"),a.ice.loader.show=!1)})["catch"](function(a){g.error(a),d.setToast(a.status+": Error changing progress!","danger")})},h.closeModal=function(){b.close()},i()}angular.module("ice.modals").controller("stateDecisionModalController",["$rootScope","$uibModalInstance","checklistService","toastService","action","checklist","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g){var h=this,i=function(){h.engagement_uuid=d,h.action=e,"edit"==e?c.get(d).then(function(a){200===a.status?(h.status=a.data,h.status_modal_description=h.status.description,h.eng_status_uuid=h.status.uuid):g.error(a)})["catch"](function(a){h.status=!1,g.error(a.message)}):h.status_modal_description=""};i(),h.submitForm=function(){var d={description:h.status_modal_description};"edit"==e?(d.eng_status_uuid=h.eng_status_uuid,c.update(h.engagement_uuid,d).then(function(c){200===c.status?(b.close(c.data),h.closeModal()):(f.setToast(c.error,"danger"),a.ice.loader.show=!1)})["catch"](function(a){f.setToast(a.message,"danger"),g.error(a.message)})):c.add(h.engagement_uuid,d).then(function(c){200===c.status?(b.close(c.data),h.closeModal()):(f.setToast(c.error,"danger"),a.ice.loader.show=!1)})["catch"](function(a){f.setToast(a.message,"danger"),g.error(a.message)})},h.closeModal=function(){b.close()}}angular.module("ice.modals").controller("StatusModalController",["$rootScope","$uibModalInstance","statusService","engagement_uuid","action","toastService","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f){var g=this,h=function(){g.action=d,g.feedback_modal_description=""};h(),g.submitForm=function(){var h={description:g.feedback_modal_description};"add"==d&&c.add(h).then(function(c){200===c.status?(b.close(c.data),e.setToast("Feedback was sent successfully.","success")):(e.setToast(c.error,"danger"),a.ice.loader.show=!1)})["catch"](function(a){e.setToast(a.message,"danger"),f.error(a.message)})},g.closeModal=function(){b.close()}}angular.module("ice.modals").controller("FeedbackModalController",["$rootScope","$uibModalInstance","feedbackService","action","toastService","$log",a])}(),function(){"use strict";function a(a,b){var c=this,d=function(){b&&(c.upper_headline=b.upper_headline,c.upper_headline_value=b.upper_headline_value,c.headline=b.headline||"serviceprovider",c.message=b.message||"Are you sure?",c.closeCallback=b.closeCallback,c.approveText=b.approve||"Approve",c.cancelText=b.cancel||"Cancel",c.is_close_modal_button=b.is_close_modal_button,c.is_message=b.is_message)};c.closeModal=function(b){c.closeCallback&&c.closeCallback(b),a.close(b)},d()}angular.module("ice.modals").controller("generalPromptModalController",["$uibModalInstance","modalDetails",a])}(),function(){"use strict";function a(a,b){var c=this,d=function(){b&&(c.headline=b.headline||"General log modal",c.body=b.body||"There is no body")};d(),c.closeModal=function(){a.close()}}angular.module("ice.modals").controller("GeneralLogModalController",["$uibModalInstance","modalDetails",a])}(),function(){"use strict";function a(a,b,c,d){function e(){var a=5,c="";b.getPosts(a,c,["Announcement","News"]).then(function(a){f.recentPosts=a.data})["catch"](function(a){d.error(a)})}var f=this,g=function(){c?f.post=c:b.getLastAnnouncementPost().then(function(a){a&&a.data&&1===a.data.length&&(f.post=a.data[0])})["catch"](function(a){d.error(a)}),e()};f.closeModal=function(b){a.close(b)},f.loadSelectedPostData=function(a){a&&(f.post=a)},g()}angular.module("ice.modals").controller("cmsPostModalController",["$uibModalInstance","cmsService","post","$log",a])}(),function(){"use strict";function a(a,b){var c=this,d=function(){b&&(c.engagement=b)};c.closeModal=function(){a.dismiss()},c.archiveEngagement=function(){a.close(c.reason)},d()}angular.module("ice.modals").controller("archiveEngagementModalController",["$uibModalInstance","engagementDetails",a])}(),function(){"use strict";function a(a,b,c,d,e,f){var g=this;g.show_warning=!1;var h=function(){d.getEngagementLeads().then(function(a){g.engagementLeads=e.filter(a.data,function(a){return a.uuid}),g.selectedUserUuid=e.find(g.engagementLeads,["uuid",c])})["catch"](function(a){f.error(a),g.closeModal()})};g.closeModal=function(){a.dismiss()},g.onUserSelect=function(){g.selectedUserUuid&&a.close(g.selectedUserUuid)},h()}angular.module("ice.modals").controller("selectELModalController",["$uibModalInstance","excludeUuids","selectedOption","usersService","_","$log",a])}(),function(){"use strict";function a(a,b){var c=this,d=function(){c.engagement=b,e()};c.closeModal=function(){a.dismiss()},c.updateEngagement=function(){e(),a.close({engagement:c.engagement,status:c.status})};var e=function(){c.engagement.target_completion_date&&(c.engagement.target_completion_date=new Date(c.engagement.target_completion_date)),c.engagement.heat_validated_time&&(c.engagement.heat_validated_time=new Date(c.engagement.heat_validated_time)),c.engagement.image_scan_time&&(c.engagement.image_scan_time=new Date(c.engagement.image_scan_time)),c.engagement.aic_instantiation_time&&(c.engagement.aic_instantiation_time=new Date(c.engagement.aic_instantiation_time)),c.engagement.asdc_onboarding_time&&(c.engagement.asdc_onboarding_time=new Date(c.engagement.asdc_onboarding_time))};d()}angular.module("ice.modals").controller("updateEngagementStatusModalController",["$uibModalInstance","engagement",a])}(),function(){"use strict";function a(a,b){}angular.module("ice.main",[]).controller("MainController",a).config(["$mdDateLocaleProvider",function(a){a.formatDate=function(a){return a?moment(a).format("MMMM Do YYYY"):""},a.parseDate=function(a){var b=moment(a,"YYYY-MM-DD",!0);return b.isValid()?b.toDate():new Date(NaN)}}]),a.$inject=["$scope","$rootScope"]}(),function(){"use strict";function a(a){a.state("app.dashboard",{"abstract":!0,views:{"navigation@app":{templateUrl:"core/navigation/layouts/horizontal-navigation/navigation.html",controller:"NavigationController as vm"}},bodyClass:"dashboard"}).state("app.dashboard.dashboard",{url:"/dashboard/dashboard",views:{"content@app":{templateUrl:"main/dashboard/dashboard/dashboard.html",controller:"DashboardMainController as vm"}},params:{engagement_uuid:null,engagement:null,messagePass:null},bodyClass:"dashboard"}).state("app.dashboard.overview",{url:"/dashboard/overview",views:{"content@app":{templateUrl:"main/dashboard/overview/overview.html",controller:"OverviewMainController as vm"}},params:{engagement_uuid:null,engagement:null,messagePass:null},bodyClass:"dashboard"}).state("app.dashboard.detailedview",{url:"/dashboard/detailedview",views:{"content@app":{templateUrl:"main/dashboard/detailed-view/detailed-view.html",controller:"detailedViewController as vm"}},params:{engagement_uuid:null,engagement:null},bodyClass:"dashboard"}).state("app.dashboard.checklist",{url:"/dashboard/checklist",views:{"content@app":{templateUrl:"main/dashboard/checklist/checklist.html",controller:"DashboardChecklistController as vm"}},params:{engagement_uuid:null,sub_id:null,engagement:null},bodyClass:"dashboard"})}angular.module("ice.dashboard.main",["ice.dashboard.get-started-modal"]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i,j,k,l,m,n){var o=this;o.sortableOptions={handle:" .order-nextstep",axis:"y",update:function(a,b){f.order_next_steps(o.engagement.uuid,o.steps).then(function(a){200===a.status&&n.debug("updated")})["catch"](function(a){n.error(a)})}};var p=function(){k.setAnnouncementToast(),b.timeGapLocal=moment().format("z"),b.ampm=moment().format("A"),b.mom=moment().tz(moment.tz.guess()).format("z"),o.engagement=d.engagement,void 0!=o.engagement&&(o.me=h.getUserData(),g.getSingleEngagement(o.me.uuid,o.engagement.uuid).then(function(a){b.ice.loader.show=!1,200===a.status&&a.data&&""!==a.data&&(o.vf=a.data,o.is_service_provider_internal=o.vf.is_service_provider_internal,o.name=o.vf.name,o.manual_id=o.vf.engagement.engagement_manual_id,o.vf.git_repo_url&&-1!=o.vf.git_repo_url?o.git_repo_url=o.vf.git_repo_url:o.git_repo_url=!1,o.storage_bucket_url=o.manual_id+"_"+o.name.toLowerCase(),o.team=o.vf.engagement.engagement_team,o.me=h.getUserData(),o.stages=i.stages,o.stage=o.vf.engagement.engagement_stage,o.stage_num=0,o.set_stage_num(o.stage),o.in_overview_page=!0,o.uuid=o.engagement.uuid,o.progress=o.vf.engagement.progress,o.completion_date=o.vf.engagement.target_completion_date,o.starred=!1,o.isEngagmentLead=h.isUserInRole("el"),o.isEngagementEL=h.isEngagementEL(o.team),o.isAdmin=h.isAdmin(o.me),o.does_user_role_allow_action_array=[o.isAdmin,o.isEngagementEL],o.unremoveable_users_from_eng_team_array=[o.vf.engagement.reviewer.uuid,o.vf.engagement.peer_reviewer.uuid,o.vf.engagement.creator.uuid],null!=o.vf.engagement.contact_user&&o.unremoveable_users_from_eng_team_array.push(o.vf.engagement.contact_user.uuid),o.states=i.states,o.states_select=s(i.states),o.selected_state_filter=t(),o.steps=[],o.vf_name=o.vf.name,o.vf.engagement.starred_engagement.forEach(function(a){o.me.uuid==a.uuid&&(o.starred=!0)}),o.all_states=!1,o.all_files=!0,q(),o.initActivityLogs(),o.files=o.vf.files,o.files_filter_options=[],o.files_filter_options=o.files_filter_options.concat(o.files),o.files_filter_options.push("Any file"),o.chosen_files_filter=["Any file"],o.show_step=!0,o.status=!1,e.get(o.uuid).then(function(a){200===a.status?o.status=a.data:n.error(a)})["catch"](function(a){o.status=!1,n.error(a.message)}),o.progress_needed_data=u())})["catch"](function(a){b.ice.loader.show=!1,n.error(a)}))};o.set_stage_num=function(a){switch(a){case"Intake":o.stage_num=1;break;case"Active":o.stage_num=2;break;case"Validated":o.stage_num=3;break;case"Completed":o.stage_num=4}},o.checkIfAdmin=function(a){return h.isAdmin(a)},o.is_user_allowed=function(){return 1==c.includes(o.does_user_role_allow_action_array,!0)?!0:!1},o.is_able_to_delete=function(a){return!o.is_user_allowed()||c.includes(o.unremoveable_users_from_eng_team_array,a.uuid)||o.checkIfAdmin(a)?!1:!0},o.remove_user_from_eng=function(a){if(!o.is_able_to_delete(a))return l.setToast("Action is not allowed.","danger"),void(b.ice.loader.show=!1);var c=j.open({templateUrl:"main/modals/general-prompt-modal/general-prompt-modal.html",controller:"generalPromptModalController",controllerAs:"vm",resolve:{modalDetails:function(){return{upper_headline:"Remove user from engagement team: ",upper_headline_value:a.full_name,headline:"Are you sure you would like to remove the user out of the team members?",is_message:!1,message:"",approve:"Yes",cancelText:"No",is_close_modal_button:!0}}}});angular.element("body").click(),c.result.then(function(c){if(c){var d={eng_uuid:o.vf.engagement.uuid,user_uuid:a.uuid};g.remove_user_from_eng(d).then(function(a){b.ice.loader.show=!1,204===a.status&&b.$broadcast("onUpdateEngagements",{select:{uuid:o.engagement.uuid,page_type:"overview",sub_id:void 0}})})["catch"](function(a){b.ice.loader.show=!1,n.error(a)})}})},a.is_match_both_filters=function(){return function(a){var b=!1;return o.all_files&&o.all_states?b=!0:o.all_states&&o.is_contain_files(a)?b=!0:o.all_files&&o.is_same_state(a.state)?b=!0:o.is_contain_files(a)&&o.is_same_state(a.state)&&(b=!0),b?a:!1}},o.is_all_files=function(){o.all_files=-1!==o.chosen_files_filter.indexOf("Any file")},o.is_contain_files=function(a){if(a.files)for(var b=0;b<a.files.length;b++)if(-1!==o.chosen_files_filter.indexOf(a.files[b]))return!0;return!1},o.is_same_state=function(a){return-1!==o.selected_state_filter.indexOf(a)},o.update_next_steps_choice=function(){-1!==o.selected_state_filter.indexOf("All")?o.all_states=!0:o.all_states=!1},o.editStatus=function(){var a=j.open({templateUrl:"main/modals/status/status.html",controller:"StatusModalController",controllerAs:"vm",size:"lg",resolve:{engagement_uuid:function(){return o.engagement.uuid},action:function(){return"edit"}}});a.result.then(function(a){a&&(o.status=a)},function(){n.debug("Modal dismissed at: "+new Date)})},o.addStatus=function(){var a=j.open({templateUrl:"main/modals/status/status.html",controller:"StatusModalController",controllerAs:"vm",size:"lg",resolve:{engagement_uuid:function(){return o.engagement.uuid},action:function(){return"add"}}});a.result.then(function(a){a&&(o.status=a)},function(){n.debug("Modal dismissed at: "+new Date)})},o.deleteStep=function(a){var b=j.open({templateUrl:"main/modals/general-prompt-modal/general-prompt-modal.html",controller:"generalPromptModalController",controllerAs:"vm",resolve:{modalDetails:function(){return{headline:"Delete Step",is_message:!0,message:"Are you sure you want to delete this step?",approve:"Delete Step",is_close_modal_button:!0}}}});b.result.then(function(b){b&&f["delete"](a).then(function(a){204===a.status&&(q(),initActivityLogs())})["catch"](function(a){n.error(a)})})},o.editStep=function(a){var b=j.open({templateUrl:"main/modals/next-steps/next-steps.html",controller:"NextStepsModalController",controllerAs:"vm",size:"lg",resolve:{engagement_team:function(){return o.team},title:function(){return o.engagement.name},associated_files:function(){return o.files},engagement_uuid:function(){return o.engagement.uuid},checklist:function(){return void 0},nextstep:function(){return a}}});b.result.then(function(a){a&&q()},function(){n.debug("Modal dismissed at: "+new Date)})},o.addStep=function(){var a=j.open({templateUrl:"main/modals/next-steps/next-steps.html",controller:"NextStepsModalController",controllerAs:"vm",size:"lg",resolve:{engagement_team:function(){return o.team},title:function(){return o.engagement.name},associated_files:function(){return o.files},engagement_uuid:function(){return o.engagement.uuid},checklist:function(){return void 0},nextstep:function(){return void 0}}});a.result.then(function(a){a&&(a.forEach(function(a){a.creator=o.me,o.steps.push(a)}),q())},function(){n.debug("Modal dismissed at: "+new Date)})},b.$on("onUpdateNextSteps",function(a,b){return b.eng_uuid&&b.stage?(o.uuid=b.eng_uuid,o.stage=b.stage,void q()):void n.error("onUpdateNextStep expecting args")}),o.starEngagement=function(){g.putStarredEngagements(o.engagement.uuid).then(function(a){b.ice.loader.show=!1,200===a.status&&a.data&&""!==a.data&&(1==o.starred?o.starred=!1:o.starred=!0,b.$broadcast("onUpdateEngagements",{select:{uuid:o.engagement.uuid,page_type:"overview",sub_id:void 0}}))})["catch"](function(a){b.ice.loader.show=!1,n.error(a)})},o.updateStep=function(a,b){var c={state:b};f.update(a,c).then(function(b){if(200===b.status){var c=r(a);c&&(q(),o.initActivityLogs())}})["catch"](function(a){n.error(a)})},o.toggleCompleted=function(a){var b=r(a);b&&(b.state==o.states.incomplete?o.updateStep(a,i.states.completed):b.state==o.states.completed&&o.updateStep(a,i.states.incomplete))},o.updateProgress=function(a){a&&a.progress?o.progress=a.progress:a&&a.target_date&&(o.completion_date=a.target_date,o.target_completion_date=a.target_date)},o.addPeople=function(){var a={user:o.me,eng_uuid:o.engagement.uuid,is_service_provider_internal:o.is_service_provider_internal,requiredStep:"inviteMembers"};b.$broadcast("openGettingStartedWizard",a)};var q=function(){b.ice.loader.show=!0,f.get(o.uuid,o.stage).then(function(a){b.ice.loader.show=!1,200===a.status&&(o.steps=[],a.data.forEach(function(a){o.steps.push(a)}))})["catch"](function(a){b.ice.loader.show=!1,n.error(a)})};o.initActivityLogs=function(){b.ice.loader.show=!0,g.getActivities(o.uuid).then(function(a){b.ice.loader.show=!1,200===a.status&&(o.activities=a.data)})["catch"](function(a){b.ice.loader.show=!1,n.error(a)})};var r=function(a){var b;return o.steps&&o.steps.forEach(function(c){c.uuid===a&&(b=c)}),b},s=function(a){var b=[];for(var c in a)b.push(a[c]);return b},t=function(){var a=[];return a.push("Incomplete"),a},u=function(){var a={enable_edit:(o.isEngagementEL||o.isAdmin)&&o.in_overview_page,completion_date:o.vf.engagement.target_completion_date,ecomp_release:o.vf.ecomp_release.name,vnf_version:o.vf.version,aic_version:o.vf.deployment_target.version,aic_instantiation_time:o.vf.engagement.aic_instantiation_time,asdc_onboarding_time:o.vf.engagement.asdc_onboarding_time,heat_validated_time:o.vf.engagement.heat_validated_time,image_scan_time:o.vf.engagement.image_scan_time,engagement_uuid:o.uuid,manual_id:o.manual_id};return a};o.archiveEngagement=function(){var a=j.open({templateUrl:"main/modals/archive-engagement-modal/archive-engagement-modal.html",controller:"archiveEngagementModalController",controllerAs:"vm",resolve:{engagementDetails:function(){return{manual_id:o.manual_id,name:o.name,engagement:o.engagement}}}});a.result.then(function(a){a&&o.engagement&&o.engagement.uuid?g.archiveEngagement(o.engagement.uuid,a).then(function(){m.go("app.dashboard.dashboard"),l.setToast("Engagement '"+o.engagement.name+"' archived successfully.","success")})["catch"](function(a){l.setToast("Server failed archiving engagement.","danger"),b.ice.loader.show=!1,n.error(a)}):l.setToast("No reason was supplied, therefor engagement cannot be archived.","danger")})},o.changeReviewer=function(){var a=j.open({templateUrl:"main/modals/select-el-modal/select-el-modal.html",controller:"selectELModalController",controllerAs:"vm",resolve:{excludeUuids:function(){return[o.engagement.peer_reviewer_uuid]},selectedOption:function(){return o.engagement.reviewer_uuid}}});a.result.then(function(a){o.engagement&&o.engagement.uuid?a==o.engagement.peer_reviewer_uuid?g.switchEngagementReviewers(o.engagement.uuid,a,o.engagement.reviewer_uuid).then(function(a){o.engagement.reviewer_uuid=a.data.reviewer,o.engagement.peer_reviewer_uuid=a.data.peerreviewer,l.setToast("Reviewer and peer reviewer updated successfully.","success")})["catch"](function(a){l.setToast("Server failed to update engagement reviewers.","danger"),b.ice.loader.show=!1,n.error(a)}):g.updateEngagementReviewer(o.engagement.uuid,a).then(function(a){c.remove(o.team,function(a){return a.uuid===o.engagement.reviewer_uuid}),o.team.push(a.data),o.engagement.reviewer_uuid=a.data.uuid,l.setToast("Reviewer updated successfully.","success")})["catch"](function(a){l.setToast("Server failed to update engagement reviewer.","danger"),b.ice.loader.show=!1,n.error(a)}):l.setToast("Problem occurred while updating reviewer - missing engagement uuid.","danger")})},o.changePeerReviewer=function(){var a=j.open({templateUrl:"main/modals/select-el-modal/select-el-modal.html",controller:"selectELModalController",controllerAs:"vm",resolve:{excludeUuids:function(){return[o.engagement.reviewer_uuid]},selectedOption:function(){return o.engagement.peer_reviewer_uuid}}});a.result.then(function(a){o.engagement&&o.engagement.uuid?a==o.engagement.reviewer_uuid?g.switchEngagementReviewers(o.engagement.uuid,o.engagement.peer_reviewer_uuid,a).then(function(a){o.engagement.reviewer_uuid=a.data.reviewer,o.engagement.peer_reviewer_uuid=a.data.peerreviewer,l.setToast("Peer reviewer and reviewer updated successfully.","success")})["catch"](function(a){l.setToast("Server failed to update engagement reviewers.","danger"),b.ice.loader.show=!1,n.error(a)}):g.updateEngagementPeerReviewer(o.engagement.uuid,a).then(function(a){n.debug("vm.team",o.team),c.remove(o.team,function(a){return a.uuid===o.engagement.peer_reviewer_uuid}),o.team.push(a.data),o.engagement.peer_reviewer_uuid=a.data.uuid,l.setToast("Peer reviewer updated successfully.","success")})["catch"](function(a){l.setToast("Server failed to update engagement peer reviewer.","danger"),b.ice.loader.show=!1,n.error(a)}):l.setToast("Problem occurred while updating peer reviewer - missing engagement uuid.","danger")})},o.updateEngagementStatus=function(){o.vf.engagement.progress=parseInt(o.progress);var a=j.open({templateUrl:"main/modals/update-engagement-status-modal/update-engagement-status-modal.html",controller:"updateEngagementStatusModalController",controllerAs:"vm",resolve:{engagement:function(){return angular.copy(o.vf.engagement)}}});a.result.then(function(a){g.updateEngagement(a.engagement,a.status).then(function(b){o.vf.engagement=a.engagement,o.progress=o.vf.engagement.progress,o.progress_needed_data=u(),o.status=b.data,l.setToast("Engagement status updated successfully.","success")})["catch"](function(a){l.setToast("Server failed to update engagement status.","danger"),b.ice.loader.show=!1,n.error(a)})})},o.changeTargetCompletion=function(){var a=j.open({templateUrl:"main/modals/change-date/change-date.html",controller:"ChangeDateModalController",controllerAs:"vm",resolve:{completionDate:function(){return o.vf.engagement.target_completion_date},engagementUuid:function(){return o.engagement.uuid}}});a.result.then(function(a){a&&(o.completion_date=a.target_date||o.vf.engagement.target_completion_date,o.vf.engagement.target_completion_date=o.completion_date)},function(){n.debug("Modal dismissed at: "+new Date)})},p()}angular.module("ice.dashboard.overview",[]).controller("OverviewMainController",["$scope","$rootScope","_","$stateParams","statusService","stepsService","vfService","usersService","iceConstants","$uibModal","cmsService","toastService","$state","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i,j,k,l){function m(){o.userNextSteps=[],c.getByUser().then(function(a){o.userNextSteps=a.data.data,o.userNextStepsCount=a.data.count})["catch"](function(a){l.error(a)})}function n(){angular.element(document).ready(function(){var a=angular.element(document.querySelector("#dashboard-title"));a&&1===a.length&&a.attr("list-loaded","true")})}var o=this,p=function(){b.setPage("dashboard"),j.setAnnouncementToast(),g.setJson("ice.settings.eng_uuid",void 0),o.stages=f.stages,o.stages.all="All",o.search_keyword="",o.search_stage="All",o.statistic_stage_filter="All",o.current_starting_offset="0",o.num_of_returned_items=0,o.pagination_num_of_objects=8,o.me=o.user=e.getUserData(),o.isAdminRo=e.isUserInRole(f.roles.admin_ro),o.isEngagmentEL=e.isUserInRole(f.roles.el),o.isEngagmentLead=e.isEngagementEL(o.team),o.isAdmin=e.isAdmin(o.me),o.page_num=1,o.searchEngagements(1),o.request_statistics_data(),m()};o.request_statistics_data=function(){d.getEngagements(o.me.uuid).then(function(a){if(200===a.status&&a.data&&""!==a.data){o.enagements_search_list=a.data;var b=void 0,c=0,d=0;o.enagements_search_list.forEach(function(a){"All"==o.statistic_stage_filter?(d++,("Validated"==a.engagement_stage||"Completed"==a.engagement_stage)&&a.vfc.length>1&&(b=a.vfc.split(", ").length,c+=b)):a.engagement_stage==o.statistic_stage_filter&&(d++,a.vfc.length>1&&("Validated"==a.engagement_stage||"Completed"==a.engagement_stage)&&(b=a.vfc.split(", ").length,c+=b))}),o.vfc_num=c,o.eng_num=d}})["catch"](function(b){a.ice.loader.show=!1,l.error(b)})},o.onStageChange=function(){o.page_num=1,o.searchEngagements()},o.onKeywordChange=function(){o.page_num=1,o.searchEngagements()},o.searchEngagements=function(){o.current_starting_offset=(o.page_num-1)*o.pagination_num_of_objects,o.postData={stage:o.search_stage,keyword:o.search_keyword,offset:o.current_starting_offset,limit:o.pagination_num_of_objects},d.getExpandedEngagements(o.postData).then(function(a){200===a.status&&a.data&&""!==a.data&&(o.vf_search_list=a.data.array,o.num_of_returned_items=a.data.num_of_objects,o.vf_search_list.forEach(function(a){var b={enable_edit:!1,completion_date:a.engagement__target_completion_date,ecomp_release:a.ecomp_release__name,vnf_version:a.version,aic_version:a.deployment_target__version,aic_instantiation_time:a.engagement__aic_instantiation_time,asdc_onboarding_time:a.engagement__asdc_onboarding_time,heat_validated_time:a.engagement__heat_validated_time,
-image_scan_time:a.engagement__image_scan_time,engagement_uuid:a.engagement__uuid,manual_id:a.engagement__engagement_manual_id,name:a.vf__name,starred:!1};a.progress_needed_data=b,a.starred_users.forEach(function(b){o.me.uuid==b&&(a.progress_needed_data.starred=!0)})}),o.vf_display_list=o.vf_search_list,n())})["catch"](function(b){a.ice.loader.show=!1,l.error(b)})},o.goToEngagement=function(b){a.$broadcast("searchSelectEngagement",b)},o.exportEngagementCSV=function(){var b=o.search_stage||"",c=o.search_keyword||"";a.ice.loader.show=!0,d.exportEngagementsCSV(b,c).then(function(b){if(b&&b.data){var c=new i([b.data],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});h.saveAs(c,"serviceprovider.xlsx"),a.ice.loader.show=!1}})["catch"](function(b){a.ice.loader.show=!1,l.error(b)})},o.openCMSReadMoreModal=function(a){a?k.open({templateUrl:"main/modals/cms-post-modal/cms-post-modal.html",controller:"cmsPostModalController",controllerAs:"vm",size:"cms-post-read-more",resolve:{post:function(){return a}}}):l.warn("Cannot open cms post.")},p()}angular.module("ice.dashboard.dashboard",["angularUtils.directives.dirPagination","ngFileSaver"]).controller("DashboardMainController",["$rootScope","pageService","stepsService","vfService","usersService","iceConstants","localStorageService","FileSaver","Blob","cmsService","$uibModal","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i){var j=this;j.data={};var k=b.engagement_uuid;j.checklistUuid=b.sub_id,j.selected_decision=!1;var l=function(){null!=j.checklistUuid&&d.getChecklist(j.checklistUuid).then(function(a){200===a.status&&(j.data=a.data,j.data.states=e.checklist_states,j.me=f.getUserData(),j.is_peer_reviewer=f.isPeerReviewer(j.me,a.data.checklist.engagement.peer_reviewer.uuid),j.data.checklist.associated_files?j.has_files=!0:j.has_files=!1,j.formatDecisions())})["catch"](function(a){return 410!==a.status?(i.error(a.message),!1):void c.$broadcast("onUpdateEngagements",{select:{uuid:b.engagement_uuid,view_type:"overview",sub_id:void 0}})})};j.formatDecisions=function(){var a=0;j.data.checklistDecisions=_.orderBy(j.data.checklistDecisions,"weight"),angular.forEach(j.data.checklistDecisions,function(b,c){a++,b.counter=a;var d=0;b.decisions=_.orderBy(b.decisions,"weight"),angular.forEach(b.decisions,function(b,e){d++,b.counter=a+"."+d,0==j.selected_decision&&(j.selected_decision=b,j.selectDecision(b));var f;switch(j.data.checklist.state){case"peer_review":f=b.peer_review_value;break;case"review":case"approval":case"handoff":case"closed":f=b.review_value}var g;switch(f){case"approved":g="sprite approved-cl";break;case"denied":g="sprite denied-cl";break;case"not_relevant":g="sprite not-relevant-cl"}var h;switch(b.lineitem.line_type){case"auto":h="sprite automation-state"}j.data.checklistDecisions[c].decisions[e]["selected-value"]=f,j.data.checklistDecisions[c].decisions[e].view_value=f,j.data.checklistDecisions[c].decisions[e].view_value_css=g,j.data.checklistDecisions[c].decisions[e].auto_icon_css=h})}),j.refreshStateOptions()},j.setDecision=function(a,b){d.putChecklistDecision(a.uuid,{value:b}).then(function(c){if(200===c.status){switch(j.data.checklist.state){case"peer_review":a.peer_review_value=b;break;case"review":a.review_value=b}j.formatDecisions()}})},j.refreshStateOptions=function(){var a=!1;j.is_able_to_approve=!0,angular.forEach(j.data.checklistDecisions,function(b,c){a||angular.forEach(b.decisions,function(b,c){a||"approved"!=b.view_value&&"not_relevant"!=b.view_value&&(j.is_able_to_approve=!1,a=!0)})})},j.stateAction=function(a){switch(a){case"approve":var b={};b.description="",b.decline="False",d.setState(j.data.checklist.uuid,b).then(function(a){200===a.status?c.$broadcast("onUpdateEngagements",{select:{uuid:k,page_type:"overview",sub_id:j.data.checklist.uuid}}):(h.setToast(a.error,"danger"),c.ice.loader.show=!1)})["catch"](function(a){i.error(a),h.setToast(a.status+": Error changing progress!","danger")});break;case"reject":j.openSetState(a,j.data.checklist);break;case"next_step":j.openNextSteps(j.data.checklist)}},j.formatDate=function(a){var b=moment().tz(moment.tz.guess()).format("z"),c="";return c=moment(a).local().format("YYYY-MM-DD hh:mm:ss A")+" "+b},j.submitDecisionAuditLog=function(){var a={description:j.selected_decision.new_audit_log_description};d.createAuditlogDecisionChecklist(j.selected_decision.uuid,a).then(function(a){200===a.status?(void 0==j.data.decisionAuditLogs[j.selected_decision.uuid]&&(j.data.decisionAuditLogs[j.selected_decision.uuid]=[]),j.data.decisionAuditLogs[j.selected_decision.uuid].push(a.data),j.selected_decision.new_audit_log_description=""):(h.setToast(a.error,"danger"),c.ice.loader.show=!1)})["catch"](function(a){h.setToast(a.message,"danger"),i.error(a.message)})},j.selectDecision=function(b,c){(j.selected_decision!=b||void 0===j.selected_decision.selected)&&(j.selected_decision.selected=!1,j.selected_decision=b,j.selected_decision.selected=!0,a.$$postDigest(function(){if(void 0!=c){var a=angular.element(c.target).prop("offsetHeight")+angular.element(c.target).prop("offsetTop"),b=angular.element("#line-item-extended").prop("offsetHeight"),d=a-b;d>0?angular.element("#line-item-extended").css("margin-top",20+d+"px"):angular.element("#line-item-extended").css("margin-top","")}}))},j.openNextSteps=function(a){var b=g.open({templateUrl:"main/modals/next-steps/next-steps.html",controller:"NextStepsModalController",controllerAs:"vm",size:"lg",resolve:{engagement_team:function(){return a.engagement.engagement_team},title:function(){return a.name},associated_files:function(){return a.repo_associated_files},engagement_uuid:function(){return a.engagement.uuid},checklist:function(){return a},nextstep:function(){return void 0}}});b.result.then(function(b){200===b&&c.$broadcast("onUpdateEngagements",{select:{uuid:k,page_type:"overview",sub_id:a.uuid}})},function(){})},j.openSetState=function(a,b){var d=g.open({templateUrl:"main/modals/checklist/state-approve-or-reject/state-approve-or-reject.html",controller:"stateDecisionModalController",controllerAs:"vm",resolve:{checklist:function(){return b},action:function(){return a}}});d.result.then(function(a){a&&c.$broadcast("onUpdateEngagements",{select:{uuid:k,page_type:"overview",sub_id:b.uuid}})},function(){})},j.openJenkinsLogModal=function(){g.open({templateUrl:"main/modals/general-log-modal/general-log-modal.html",controller:"GeneralLogModalController",controllerAs:"vm",size:"general-log-modal",resolve:{modalDetails:function(){return{headline:"Jenkins log",body:j.data.checklist.jenkins_log}}}})},j.auditLog=function(){var a={name:j.data.checklist.name,uuid:j.data.checklist.uuid,checklistAuditLogs:j.data.checklistAuditLogs},b=g.open({templateUrl:"main/modals/audit-log/audit-log.html",controller:"AuditLogModalController",controllerAs:"vm",size:"lg",resolve:{wizardData:function(){return a}}});b.result.then(function(a){a&&j.data.checklistAuditLogs.push(a)},function(){i.debug("Modal dismissed at: "+new Date)})},j.editChecklist=function(){var a={uuid:j.data.checklist.uuid,name:j.data.checklist.name,templates:j.data.checklist.templates,selectedTemplateUuid:j.data.checklist.template.uuid,selectedTemplateName:j.data.checklist.template.name,associatedFiles:j.data.checklist.associated_files,state:j.data.checklist.state},b=g.open({templateUrl:"main/modals/checklist/checklist.html",controller:"ChecklistModalController",controllerAs:"vm",size:"lg",resolve:{wizardData:function(){return a},engagementUuid:function(){return k},modal_type:function(){return"update"}}});b.result.then(function(a){a&&(j.data.checklist.name=a.checklist_name,j.data.checklist.associated_files=a.associated_files)})},l()}angular.module("ice.dashboard.checklist",[]).controller("DashboardChecklistController",["$scope","$stateParams","$rootScope","checklistService","iceConstants","usersService","$uibModal","toastService","$log",a])}(),function(){"use strict";angular.module("ice.dashboard.get-started-modal",["ngAnimate","ui.bootstrap","ice.activation.addVf"])}(),function(){"use strict";angular.module("ice.dashboard.get-started-modal").directive("getStartedModal",function(){return{restrict:"AEC",scope:{},link:function(a,b,c){a.$emit("openGettingStartedWizardLoaded")},controller:["$rootScope","$scope","$uibModal","toastService","$log",function(a,b,c,d,e){var f=this;f.data={},f.openModal=function(){d.clearToast();c.open({templateUrl:"main/dashboard/get-started-modal/wizard/wizard-container.html",controller:"ModalCtrl",controllerAs:"wizard",resolve:{wizardData:function(){return f.wizardData}},backdrop:"static"})},b.$on("openGettingStartedWizard",function(a,b){f.wizardData=b,f.openModal()})}],controllerAs:"gm"}}).controller("ModalCtrl",["$rootScope","$scope","$uibModalInstance","vfService","usersService","localStorageService","wizardData","toastService","$log","$i18next",function(a,b,c,d,e,f,g,h,i,j){function k(){if(a.ice.loader.show=!0,g.showActivationMessage&&h.setToast("You have successfully activated your account!","success",{displayFor:"modal"}),m.stepIndex=0,m.requiredStep)return m.steps.push(o[m.requiredStep]),m.setStep(m.steps[m.stepIndex]),void(a.ice.loader.show=!1);m.eng_uuid&&""!==m.eng_uuid||m.steps.push(o.addVF),m.user.is_service_provider_contact!==!0||m.is_service_provider_internal?m.user.is_service_provider_contact||m.steps.push(o.addSponsor):m.steps.push(o.addVendor),l(),m.steps.push(o.inviteMembers);var b=e.getUserData()||{},c=b.ssh_public_key;""!==m.user.ssh_public_key&&null!==m.user.ssh_public_key||""!==c&&null!==c||m.steps.push(o.addSSH),a.ice.loader.show=!1,m.setStep(m.steps[m.stepIndex])}function l(){d.getCompanies().then(function(a){if(200===a.status&&(m.companies=a.data,void 0!=m.companies))for(var b=0;b<m.companies.length;b++)if("ServiceProvider"==m.companies[b].name){m.data.attCompanyUuid=m.companies[b].uuid;break}})["catch"](function(a){i.error(a)})}var m=this;m.steps=[],m.data={},m.user=g.user,m.is_service_provider_internal=g.is_service_provider_internal,m.eng_uuid=g.eng_uuid,m.requiredStep=g.requiredStep;var n=j.t("serviceProvider.name"),o={addVF:{name:"addVF",title:"Add a VF"},addSponsor:{name:"addContact",title:"Add "+n+" Sponsor",mode:"sponsor",submitButton:"Add "+n+" Sponsor"},addVendor:{name:"addContact",title:"Add Vendor Contact",mode:"vendor",submitButton:"Add Vendor Cotact"},inviteMembers:{name:"inviteMembers",title:"Invite Team Members"},addSSH:{name:"addSSH",title:"Add SSH Key"}};m.setStep=function(a){m.currentStep=a,m.title=a.title,a.completed=!0},k(),m.getCurrentStep=function(){return m.currentStep.name},m.nextStep=function(){return m.clearMessage(),m.stepIndex++,m.stepIndex===m.steps.length?void m.closeWizard():void m.setStep(m.steps[m.stepIndex])},m.closeWizard=function(){m.clearMessage(),c.close()},m.clearMessage=function(){h.clearToast()},m.onAddContactSubmit=function(){a.ice.loader.show=!0,m.data.addContact.eng_uuid=m.eng_uuid,m.user.is_main_vendor_contact!==!0||m.is_service_provider_internal?m.user.is_main_vendor_contact||(m.data.addContact.company=m.data.attCompanyUuid):m.data.addContact.company=m.data.addContact.company,e.addVendorContact(m.data.addContact).then(function(b){200===b.status&&(a.ice.loader.show=!1,m.nextStep())},function(b){h.setToast(b.message,"danger",{displayFor:"modal"}),i.error(b.message),a.ice.loader.show=!1})["catch"](function(b){m.Msg=b.status+" : "+b.statusText,m.bgColor="#FFEBEB",i.error(b),a.ice.loader.show=!1})},m.onInviteSubmit=function(){a.ice.loader.show=!0;var b=[];angular.forEach(m.inviteMembers.choices,function(a,c){m.item=[];var d=new Object;d.email=a.email,d.eng_uuid=m.eng_uuid,b.push(d)}),d.inviteMembers(JSON.stringify(b)).then(function(b){200===b.status&&m.nextStep(),a.ice.loader.show=!1})["catch"](function(b){h.setToast(b.message.detail,"danger",{displayFor:"modal"}),a.ice.loader.show=!1,i.error(b.message)})},m.inviteMembers={choices:[{email:"",eng_uuid:""}]},m.addNewChoice=function(){var a=m.inviteMembers.choices.length+1;m.inviteMembers.choices.push({id:a})},m.removeChoice=function(){var a=m.inviteMembers.choices.length-1;m.inviteMembers.choices.splice(a)},m.onAddSSHSubmit=function(){a.ice.loader.show=!0,e.setSSHKey(m.user.uuid,m.data.addSSH).then(function(c){200===c.status&&(e.getIceUser().then(function(c){200===c.status&&c.data&&""!==c.data&&(m.user=c.data,a.ice.loader.show=!1,b.$emit("onUpdateEngagements"))}),m.nextStep())})["catch"](function(b){h.setToast(b.message.detail,"danger",{displayFor:"modal"}),a.ice.loader.show=!1,i.error(b.message.detail)})},b.$on("moveWizardNextStep",function(a,b){m.is_service_provider_internal=b.is_service_provider_internal,m.eng_uuid=b.engagement.uuid,m.nextStep()})}])}(),function(){"use strict";function a(a){a.state("app.welcome",{url:"/",views:{"main@":{templateUrl:"welcome/welcome.html",controller:"WelcomeController as vm"}},params:{},bodyClass:"welcome-body"})}angular.module("ice.welcome",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c){var d=function(){};d()}angular.module("ice.welcome").controller("WelcomeController",["$state","$location","localStorageService",a])}(),function(){"use strict";function a(a){a.state("app.login",{url:"/login{engagement_uuid: (?:/[^/]+)?}",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"main/activation/login/login.html",controller:"LoginController as vm"}},params:{message:null,activation_success:void 0},bodyClass:"login"})}angular.module("ice.activation.login",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e,f,g){var h=this;h.data={},d.headerTitle="Login",d.headerSubTitle="Please use the form below to login",b.resetUserData();var i="";a.params.message&&(f.setToast(a.params.message,"danger"),c.warn(a.params.message)),void 0!=e.search().t&&(i="token"+e.search().t),h.data.invitation=e.search().invitation,h.submitForm=function(){d.ice.loader.show=!0,b.login(JSON.stringify(h.data),i).then(function(c){if(200===c.status)if(d.ice.loader.show=!1,b.setUserActivationSuccess(a.params.activation_success),void 0!=c.data.isResetPwdFlow&&1==c.data.isResetPwdFlow)a.go("app.updatePassword");else{var e=a.params.engagement_uuid;void 0!=c.data.eng_uuid&&(e=c.data.eng_uuid),e?(e=e.replace("/",""),a.go("app.dashboard.overview",{engagement_uuid:e})):a.go("app.dashboard.dashboard")}})["catch"](function(b){b&&b.message&&b.message.detail?f.setToast(b.message.detail,"danger"):f.setToast(b.message,"danger"),d.ice.loader.show=!1,c.error(b.message),403===b.status&&(c.error("User is not active, redirecting to resend_activation page"),a.go("app.resend_activation",{message:"Please activate your account first"})),302===b.status&&(c.error("Temporary password has expired, redirecting to reset_password page"),a.go("app.resetPassword",{message:"Your temporary password has expired, please generate a new one"}))})}}angular.module("ice.activation.login").controller("LoginController",["$state","usersService","$log","$rootScope","$location","toastService","$stateParams",a])}(),function(){"use strict";function a(a){a.state("app.activateUser",{url:"/activate/:userID/:token",views:{"main@":{templateUrl:"main/activation/activate/activateUser.html",controller:"ActivateUserController as vm"}},params:{}})}angular.module("ice.activation.activateUser",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d){var e=function(){b.activateUser(d.userID,d.token).then(function(b){a.go("app.login",{activation_success:b.data.activation_success,engagement_uuid:b.data.engagement_uuid})})["catch"](function(b){c.error(b),a.go("app.login",{message:b.message.detail})})};e()}angular.module("ice.activation.activateUser").controller("ActivateUserController",["$state","usersService","$log","$stateParams",a])}(),function(){"use strict";function a(a){a.state("app.register",{url:"/signUp",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.register":{templateUrl:"main/activation/register/register.html",controller:"RegisterController as vm"}},bodyClass:"register"})}angular.module("ice.activation.register",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e,f,g,h){var i=this;i.data={};var j=h.t("program.name"),k=function(){e.headerTitle="Sign Up",e.headerSubTitle="Please use the form to Sign Up to "+j,a.resetUserData();var b=c.search().company;i.data.full_name=c.search().full_name,i.data.email=c.search().email,i.data.phone_number=c.search().phone_number,e.ice.loader.show=!0,d.getCompanies().then(function(a){e.ice.loader.show=!1,200===a.status&&(i.vendors=a.data,void 0!=b&&angular.forEach(i.vendors,function(a,c){a.uuid===b&&(i.data.company=a.name)}))})["catch"](function(a){e.ice.loader.show=!1,g.error(a)})};i.submitForm=function(){0!=grecaptcha.getResponse().length?(e.ice.loader.show=!0,1!=i.data.regular_email_updates&&(i.data.regular_email_updates=!1),i.data.inviter_uuid=c.search().inviter_uuid,i.data.eng_uuid=c.search().eng_uuid,i.data.invitation=c.search().invitation,i.data.is_contact_user="true"===c.search().is_contact_user,i.email=c.search().email,a.register(i.data).then(function(a){e.ice.loader.show=!1,200===a.status&&b.go("app.resend_activation")})["catch"](function(a){f.setToast(a.message,"danger"),e.ice.loader.show=!1,g.error(a.message)}),e.PleaseFill=""):(f.setToast("Please fill CAPTCHA!","danger"),g.warn("Please fill CAPTCHA!"))},k()}angular.module("ice.activation.register").controller("RegisterController",["usersService","$state","$location","vfService","$rootScope","toastService","$log","$i18next",a])}(),function(){"use strict";function a(a){a.state("app.resetPassword",{url:"/resetPassword",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.resetPassword":{templateUrl:"main/activation/resetPassword/resetPassword.html",controller:"ResetPasswordController as vm"}},params:{message:null},bodyClass:"resetPassword"})}angular.module("ice.activation.resetPassword",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e,f){var g=this;g.data={};var h=!0;d.headerTitle="Reset Your Password",d.headerSubTitle="Please follow the instructions below to reset your password",void 0!=a.params.message&&""!=a.params.message&&(c.setToast(a.params.message,"danger"),d.ice.loader.show=!1,f.warn(a.params.message)),g.submitForm=function(){d.ice.loader.show=!0;var a={email:g.data.email};c.clearToast(),b.sendResetPwdInstructions(a).then(function(a){200===a.status?(c.setToast("An email with detailed instructions on how to reset your password was sent to your Email.","success"),h=!1,g.data.email="",d.ice.loader.show=!1):(c.setToast("Error sending reset password instructions email.","danger"),d.ice.loader.show=!1)})["catch"](function(a){c.setToast(a.message,"danger"),d.ice.loader.show=!1,f.error(a.message)})},g.sendMail=function(){e.open("mailto:example@example.com","_self")}}angular.module("ice.activation.resetPassword").controller("ResetPasswordController",["$state","usersService","toastService","$rootScope","$window","$log",a])}(),function(){"use strict";function a(a){a.state("app.updatePassword",{url:"/updatePassword{engagement_uuid: (?:/[^/]+)?}",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.updatePassword":{templateUrl:"main/activation/updatePassword/updatePassword.html",controller:"UpdatePasswordController as vm"}},params:{message:null,messagePass:null},bodyClass:"updatePassword"})}angular.module("ice.activation.updatePassword",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e,f){var g=this;g.data={};var h=!0;d.headerTitle="Update Your Password",d.headerSubTitle="Please follow the instructions below to update your password",g.submitForm=function(){d.ice.loader.show=!0;var c={password:g.data.password,confirm_password:g.data.confirm_password};b.updatePassword(b.getUserData().uuid,c).then(function(b){200===b.status?(e.setToast("Password was updated Successfully!","success"),h=!1,g.data.password="",g.data.confirm_password="",d.ice.loader.show=!1,a.go("app.dashboard.dashboard",{messagePass:"Password was updated Successfully!"})):(e.setToast("Error updating your password.","danger"),d.ice.loader.show=!1)})["catch"](function(a){e.setToast(a.message,"danger"),d.ice.loader.show=!1})},g.sendMail=function(){f.open("mailto:example@example.com","_self")}}angular.module("ice.activation.updatePassword").controller("UpdatePasswordController",["$state","usersService","localStorageService","$rootScope","toastService","$window",a])}(),function(){"use strict";function a(a){a.state("app.addVf",{url:"/addVf",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.addVf":{templateUrl:"main/activation/addVf/addVf.html",controller:"AddVfController as vm"}},bodyClass:"add-vf"})}angular.module("ice.activation.addVf",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,c,d,f,g,h,i,j,k){var l=this;l.data=[],l.isModal=a.isModal,l.user=j.getUserData(),void 0==l.user&&c.go("app.login"),h.headerTitle="Add Virtual Function",h.headerSubTitle="<center>Please use the form below to submit the virtual functions you would like to engage with.<br/>Please do note that each VF will be tracked separately.</center>",!l.isModal&&g.search().activation_success&&f.setToast("You have successfully activated your account","success",{displayFor:"modal"});l.targetLabDate=b(),h.ice.loader.show=!0,d.getDeployTargets().then(function(a){h.ice.loader.show=!1,200===a.status&&(l.deployTargets=a.data)})["catch"](function(a){h.ice.loader.show=!1,k.error(a)}),d.getECOMPReleases().then(function(a){200===a.status&&(l.ECOMPReleases=a.data)})["catch"](function(a){h.ice.loader.show=!1,k.error(a)}),l.choices=[{VirtualFunction:"",TargetLab:"",TargetAic:"",is_service_provider_internal:""}],l.addNewChoice=function(){var a=l.choices.length+1;l.choices.push({id:a})},l.removeChoice=function(a){l.choices.splice(a,1)},l.submitForm=function(){var b,f=[];angular.forEach(l.choices,function(a,c){b=1==a.is_service_provider_internal?"True":"False",l.item=[];var d=new Object;d.virtual_function=a.VirtualFunction;var g=new Date(Date.parse(a.TargetLab+moment().format("z")));d.target_lab_entry_date=g.getFullYear()+"-"+e(g.getMonth()+1)+"-"+e(g.getDate()),d.version=a.VFVersion,d.target_aic_uuid=a.TargetAic,d.ecomp_release=a.ECOMPRelease,d.is_service_provider_internal="True"===b,f.push(d)}),h.ice.loader.show=!0,d.addVfs(JSON.stringify(f)).then(function(b){h.ice.loader.show=!1,200===b.status&&(i.setJson("vfs",b.data),l.isModal?(a.$emit("onUpdateEngagements",{select:{uuid:b.data[0].engagement.uuid,page_type:"overview",sub_id:void 0}}),a.$emit("moveWizardNextStep",b.data[0])):b.data.is_active?c.go("app.dashboard.overview"):c.go("app.resend_activation"))})["catch"](function(a){h.ice.loader.show=!1,k.error(a)})},l.skipAddVf=function(){!l.isModal&&g.search().activation_success?c.go("app.dashboard.overview"):c.go("app.resend_activation")},l.myDate=new Date,l.minDate=new Date(l.myDate.getFullYear(),l.myDate.getMonth(),l.myDate.getDate()),l.maxDate=new Date(l.myDate.getFullYear()+2,l.myDate.getMonth(),l.myDate.getDate())}angular.module("ice.activation.addVf").controller("AddVfController",["$scope","$state","vfService","toastService","$location","$rootScope","localStorageService","usersService","$log",a]).directive("addVf",function(){return{restrict:"AEC",templateUrl:"main/activation/addVf/addVf.html",link:function(a,b,c){},controller:a,controllerAs:"vm",scope:{isModal:"=isModal"}}}),a.$inject=["$scope","$state","vfService","toastService","$location","$rootScope","localStorageService","usersService","$log"];var b=function(){var a,b=[],e=(new Date).getMonth()+1,f=(new Date).getFullYear();for(a=e;12>=a;a++)b.push({val:c(a)+"-"+f,nam:d(a)+" "+f});for(a=1;e>a;a++)b.push({val:c(a)+"-"+(f+1),nam:d(a)+" "+(f+1)});return b},c=function(a){var b=a;return 10>a&&(b="0"+a),b},d=function(a){var b;switch(a){case 1:b="January";break;case 2:b="February";break;case 3:b="March";break;case 4:b="April";break;case 5:b="May";break;case 6:b="June";break;case 7:b="July";break;case 8:b="August";break;case 9:b="September";break;case 10:b="October";break;case 11:b="November";break;case 12:b="December"}return b},e=function(a){return 10>a?"0"+a:a}}(),function(){"use strict";function a(a){a.state("app.addVendorContact",{url:"/addVendorContact",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.addVendorContact":{templateUrl:"main/activation/addVendorContact/addVendorContact.html",controller:"AddVendorContactController as vm"}},bodyClass:"addVendorContact"})}angular.module("ice.activation.addVendorContact",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e){var f=this;f.data={};var g=function(){e.ice.loader.show=!0,e.headerTitle="",e.headerSubTitle="",f.choices=[{VirtualFunction:"",TargetLab:"",TargetAic:"",is_service_provider_internal:""}],b.getCompanies().then(function(a){e.ice.loader.show=!1,200===a.status&&(f.companies=a.data)})["catch"](function(a){e.ice.loader.show=!1,d.error(a)})};f.submitForm=function(){f.data.company=f.data.company.uuid,e.ice.loader.show=!0,c.addVendorContact(f.data).then(function(b){e.ice.loader.show=!1,200===b.status&&(b.data.is_active?a.go("app.dashboard.overview"):a.go("app.resend_activation"))})["catch"](function(a){e.ice.loader.show=!1,f.Msg=response.status+" : "+response.statusText,f.bgColor="#FFEBEB",d.error(a)})},f.addNewChoice=function(){var a=f.choices.length+1;f.choices.push({id:a})},f.removeChoice=function(){var a=f.choices.length-1;f.choices.splice(a)},g()}angular.module("ice.activation.addVendorContact").controller("AddVendorContactController",["$state","vfService","usersService","$log","$rootScope",a])}(),function(){"use strict";function a(a){a.state("app.resend_activation",{url:"/resendActivation",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.resend_activation":{templateUrl:"main/activation/resendActivation/resendActivation.html",controller:"resendActivationController as vm"}},params:{message:null},bodyClass:"resend-activation"})}angular.module("ice.activation.resendActivation",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e){var f=this;f.data=[];var g=function(){c.headerTitle="Activate Your Account",c.headerSubTitle="Please follow the instructions below to activate your account.",d.params.message&&b.setToast(d.params.message,"danger"),f.activated=!1,f.showHideMsg=!1,f.showHideWait=!1};f.submitForm=function(){c.ice.loader.show=!0,a.resendActivationMail().then(function(a){c.ice.loader.show=!1,200===a.status})["catch"](function(a){c.ice.loader.show=!1,e.error(a)})},g()}angular.module("ice.activation.resendActivation").controller("resendActivationController",["usersService","toastService","$rootScope","$state","$log",a])}(),function(){"use strict";function a(a){a.state("app.terms",{url:"/terms",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.terms":{templateUrl:"main/activation/terms/terms.html",controller:"TermsController as vm"}},params:{message:null},bodyClass:"terms"})}angular.module("ice.activation.terms",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a){var b=this;b.data={},a.headerTitle="Terms of Service",a.headerSubTitle="Last updated 2016-06-10"}angular.module("ice.activation.terms").controller("TermsController",["$rootScope",a])}(),function(){"use strict";function a(a){a.state("app.contactus",{url:"/contactUs",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.contactus":{templateUrl:"main/activation/contactUs/contactUs.html",controller:"ContactUsController as vm"}},bodyClass:"contact-us"})}angular.module("ice.contactUs",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a){a.headerTitle="Contact Us",a.headerSubTitle="Please fill in the details below"}angular.module("ice.contactUs").controller("ContactUsController",["$rootScope",a])}(),function(){"use strict";function a(a){a.state("app.account",{url:"/account",views:{"content@app":{templateUrl:"main/dashboard/account/account.html",controller:"DashboardAccountController as vm"},"navigation@app":{templateUrl:"core/navigation/layouts/account-navigation/navigation.html",controller:"accountNavigationController as vm"}},params:{engagement_uuid:null},bodyClass:"account"}).state("app.account.notifications",{url:"/account/notifications",views:{"content@app":{templateUrl:"main/dashboard/account/notifications/notifications.html",controller:"DashboardNotificationsController as vm"}},bodyClass:"notifications"}).state("app.account.userProfile",{url:"/account/userProfile",views:{"content@app":{templateUrl:"main/dashboard/account/user-profile-settings/user-profile-settings.html",controller:"accountUserProfileSettingsController as vm"}},bodyClass:"account"})}angular.module("ice.dashboard.account").config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e,f){var g=this;g.data={};var h=function(){if(g.user=b.getUserData(),void 0==g.user)return void a.go("app.login");var h=g.user.uuid;e.ice.loader.show=!0,b.getIceUser(h).then(function(a){200===a.status?(g.data.full_name=a.data.full_name,g.data.email=a.data.email,g.data.phone_number=a.data.phone_number,g.data.password="",g.data.ssh_key=a.data.ssh_public_key,g.data.company=a.data.company.name,g.data.access_key=a.data.rgwa_access_key,g.data.access_secret="•••••••••••••••",e.ice.loader.show=!1):(f.setToast("Error getting account","danger"),d.error("Error getting account: "+uuid),e.ice.loader.show=!1)})["catch"](function(a){f.setToast(a.message,"danger"),d.error(a.message)}),c.getCompanies().then(function(a){200===a.status&&(g.companies=a.data)})["catch"](function(a){d.error(a.message)})};h(),g.getAccessSecret=function(){b.getRGWASecret().then(function(a){200===a.status?g.data.access_secret=a.data.rgwa_secret_key:(f.setToast("Error getting user's access secret","danger"),d.error("Error getting access secret: "+uuid),e.ice.loader.show=!1)})["catch"](function(a){f.setToast(a.message,"danger"),d.error(a.message)})},g.submitForm=function(){var a=b.getUserData();b.updateAccount(a.uuid,g.data).then(function(a){200===a.status&&f.setToast("Account was updated successfully!","success")})["catch"](function(a){f.setToast(a.message.detail,"danger")})}}angular.module("ice.dashboard.account").controller("DashboardAccountController",["$state","usersService","vfService","$log","$rootScope","toastService",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g){var h=this;h.data={};var i=function(){return b.setPage("notification"),e.timeGapLocal=moment().format("z"),e.ampm=moment().format("A"),e.mom=moment().tz(moment.tz.guess()).format("z"),h.pagination_num_of_objects=10,h.current_starting_offset="0",h.page_num=1,h.user=c.getUserData(),void 0==h.user?void a.go("app.login"):void h.getNotifications(!0)};h.getNotifications=function(a){var b=h.user.uuid;e.ice.loader.show=!0,h.current_starting_offset=(h.page_num-1)*h.pagination_num_of_objects,c.getNotificationsDescription(h.user.uuid,h.current_starting_offset,h.pagination_num_of_objects).then(function(i){200===i.status?(h.notifications=i.data.serilizedActivitySet,h.num_of_returned_items=i.data.num_of_objects,h.notifications_display_list=h.notifications,a&&c.resetNotificationNum(b).then(function(a){200===a.status&&f.$emit("eventClearNotifications",0)})["catch"](function(a){d.setToast(a.message,"danger"),
-e.ice.loader.show=!1,g.error(a)}),e.ice.loader.show=!1):(d.setToast(i.error,"danger"),e.ice.loader.show=!1)})["catch"](function(a){d.setToast(a.message,"danger"),e.ice.loader.show=!1,g.error(a)})},h.delNotification=function(a){for(var b=0,f=0;f<h.notifications.length;f++)if(h.notifications[f].uuid==a){b=f;break}c.notificationsDelete(a).then(function(a){400!=a.status&&h.notifications.splice(b,1)})["catch"](function(a){d.setToast(a.message,"danger"),e.ice.loader.show=!1,g.error(a)})},i()}angular.module("ice.dashboard.account").controller("DashboardNotificationsController",["$state","pageService","usersService","toastService","$rootScope","$scope","$log",a])}(),function(){"use strict";function a(a){function b(a,b,c,d){var e=a.isAdmin(a.getUserData());return e===!0?b.when():(c(function(){d.go("app.login")}),b.reject())}a.state("app.admin",{url:"/admin",views:{"navigation@app":{templateUrl:"core/navigation/layouts/admin-navigation/navigation.html",controller:"adminNavigationController as vm"}},bodyClass:"nav-admin",resolve:{authenticate:b}}).state("app.admin.checklisttemplate",{url:"/admin/checklist-template",views:{"content@app":{templateUrl:"main/admin/checklist-template/checklist-template.html",controller:"checklistTemplateController as vm"}},params:{template_uuid:void 0},bodyClass:"checklist-template"}),b.$inject=["usersService","$q","$timeout","$state"]}angular.module("ice.main.admin").config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e,f,g){var h,i=this,j=function(){d.template_uuid&&(i.inlineEditingElements={},i.wysiwyg_menu=[["bold","italic","strikethrough","underline"],["unordered-list","ordered-list","outdent","indent"]],c.getChecklistTemplate(d.template_uuid).then(function(a){200===a.status&&(i.template=a.data,k(),m(),h=angular.copy(a.data),l())})["catch"](function(a){g.error("got error with getChecklistTemplate")}))};i.switchElementInlineEditing=function(a){i.inlineEditingElements[a]=!i.inlineEditingElements[a]},i.save=function(){var a=f.open({templateUrl:"main/modals/general-prompt-modal/general-prompt-modal.html",controller:"generalPromptModalController",controllerAs:"vm",resolve:{modalDetails:function(){return{upper_headline:"Master Checklist Template: ",upper_headline_value:i.template.name,headline:"Are you done editing?",is_message:!0,message:"Editing a master checklist template will effect all checklists currently created of that type and will also restart the validation for all active engagements",approve:"Yes",cancelText:"No",is_close_modal_button:!1}}}});a.result.then(function(a){a&&c.saveChecklistTemplate(i.template).then(function(a){200===a.status&&(h=angular.copy(i.template),e.setToast("Template was saved successfully.","success"))})["catch"](function(a){e.setToast("Problem occurred while saving template.","danger"),g.error("got error with saveChecklistTemplate")})})},i.cancel=function(){var a=f.open({templateUrl:"main/modals/general-prompt-modal/general-prompt-modal.html",controller:"generalPromptModalController",controllerAs:"vm",resolve:{modalDetails:function(){return{upper_headline:"Master Checklist Template: ",upper_headline_value:i.template.name,headline:"Are you sure you want to revert all changes?",is_message:!1,approve:"Yes",cancelText:"No",is_close_modal_button:!1}}}});a.result.then(function(a){a&&(i.template=angular.copy(h),l(),e.setToast("All changes discarded.","success"))})},i.deleteSection=function(b){a.remove(i.template.sections,function(a){return b===a}),l()},i.selectLineItem=function(a,c,d){i.selectedLineItem!=a&&(i.selectedSection=c,i.selectedLineItem=a,b.$$postDigest(function(){if(void 0!=d){var a=angular.element(d.target).prop("offsetHeight")+angular.element(d.target).prop("offsetTop"),b=angular.element("#line-item-extended").prop("offsetHeight"),c=a-b;c>0?angular.element("#line-item-extended").css("margin-top",20+c+"px"):angular.element("#line-item-extended").css("margin-top","")}}))},i.addLineItem=function(b){if(b){var c=a.maxBy(b.lineItems,function(a){return a.weight})+1,d={uuid:"newEntity",name:"Untitled line item",description:"Please add a description",weight:c,validation_instructions:"Please add validation instructions for the line item."};b.lineItems.push(d)}},i.addSection=function(){if(i.template){var b=a.maxBy(i.template.sections,function(a){return a.weight})+1,c={uuid:"newEntity",name:"Untitled section",description:"Section added from portal",validation_instructions:"valid instructions",weight:b,lineItems:[]};i.template.sections.push(c)}},i.deleteLineItem=function(b){a.remove(i.selectedSection.lineItems,function(a){return b===a}),l()},i.isSaveInvalid=function(){var b=!1;return i.template&&(b=void 0!=a.find(i.template.sections,function(a){return 0===a.lineItems.length})),b};var k=function(){b.$watch("vm.template.name",function(a,b){d.templateName=a},!0)},l=function(){i.selectedSection=i.template.sections&&i.template.sections.length>0?i.template.sections[0]:void 0,i.selectedLineItem=i.selectedSection?i.selectedSection.lineItems[0]:void 0,angular.element("#line-item-extended").css("margin-top","")},m=function(){i.template&&(i.template.sections=a.orderBy(i.template.sections,"weight"),a.forEach(i.template.sections,function(b){b.lineItems=a.orderBy(b.lineItems,"weight")}))};j()}angular.module("ice.main.admin").controller("checklistTemplateController",["_","$scope","checklistService","$stateParams","toastService","$uibModal","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i){var j=this,k=function(){a.timeGapLocal=moment().format("z"),a.ampm=moment().format("A"),a.mom=moment().tz(moment.tz.guess()).format("z"),j.is_aic_edit_mode=!1,j.is_ecomp_edit_mode=!1,j.aic_loaded=!1,j.ecomp_loaded=!1,void 0!=b.engagement&&(j.engagement=b.engagement),void 0!=j.engagement&&(j.me=e.getUserData(),g.getSingleEngagement(j.me.uuid,j.engagement.uuid).then(function(b){if(a.ice.loader.show=!1,200===b.status&&b.data&&""!==b.data){var c=b.data;j.engagement_manual_id=c.engagement.engagement_manual_id,j.vf_name=c.name,j.vf_version=c.version,j.vf_uuid=c.uuid,j.ecomp_release=c.ecomp_release,j.target_lab=new Date(c.target_lab_entry_date),j.dtversion=c.deployment_target,j.selected_dt_uuid=j.dtversion.uuid,j.selected_ecomp_uuid=j.ecomp_release.uuid,j.me=e.getUserData(),j.name=j.engagement.name,j.isEngagementEL=e.isEngagementEL(c.engagement.engagement_team),j.isAdmin=e.isAdmin(j.me),l(),m()}})["catch"](function(b){a.ice.loader.show=!1,h.error(b)}))};j.addVfc=function(){var a=f.open({templateUrl:"main/modals/detailed-view/vfc/detailed-view-vfc-modal.html",controller:"detailedViewVFCModalController",controllerAs:"vm",resolve:{vf_uuid:function(){return j.vf_uuid}}});a.result.then(function(a){a&&m()})},this.personArray=[j.dtversion,j.vf_uuid],j.editValidationDetails=function(){var a=f.open({templateUrl:"main/modals/validation-details/detailed-view-validation-details-modal.html",controller:"validationDetailsModalController",controllerAs:"vm",resolve:{vf_uuid:function(){return j.vf_uuid}}});a.result.then(function(a){a&&k()})},j.addDTS=function(){if(j.isEngagementEL||j.isAdmin){var a=f.open({templateUrl:"main/modals/detailed-view/dtsite/detailed-view-dtsites-modal.html",controller:"detailedViewDtsitesModalController",controllerAs:"vm",resolve:{vf_uuid:function(){return j.vf_uuid}}});a.result.then(function(a){a&&200===a&&l()})}},j.changeTargetLabEntry=function(){var a=f.open({templateUrl:"main/modals/target-lab-entry/change-lab-entry-date.html",controller:"ChangeLabEntryDateModalController",controllerAs:"vm",resolve:{targetLabDate:function(){return j.target_lab},engagementUuid:function(){return j.engagement.uuid}}});a.result.then(function(a){a&&(j.target_lab=new Date(a.target_date),h.debug("data.target_date",a.target_date),h.debug("vm.target_lab",j.target_lab))},function(){h.error("Modal dismissed at: "+new Date)})},j.deleteVfc=function(a){c["delete"](a,j.vf_uuid).then(function(a){204===a.status&&m()})["catch"](function(a){h.error(a)})},j.deleteDTSite=function(a,b){d["delete"](j.vf_uuid,b).then(function(a){204===a.status&&l()})["catch"](function(a){h.error(a)})};var l=function(){(j.isEngagementEL||j.isAdmin)&&(a.ice.loader.show=!0,d.getVFSites(j.vf_uuid).then(function(b){a.ice.loader.show=!1,200===b.status&&(j.dtsites=b.data)})["catch"](function(b){a.ice.loader.show=!1,h.error(b)}))},m=function(){a.ice.loader.show=!0,c.get(j.vf_uuid).then(function(b){a.ice.loader.show=!1,200===b.status&&(j.vfcs=b.data)})["catch"](function(b){a.ice.loader.show=!1,h.error(b)})};k()}angular.module("ice.dashboard.main").controller("detailedViewController",["$rootScope","$stateParams","vfcService","dtsiteService","usersService","$uibModal","vfService","$log","_",a])}(),function(){"use strict";function a(a){a.state("app.documentation",{views:{"navigation@app":{templateUrl:"core/navigation/layouts/documentation-navigation/navigation.html",controller:"documentationNavigationController as vm"},"sidebar@app":{templateUrl:"main/documentation/sidebar/documentation.sidebar.html"}},bodyClass:"documentation",params:{displaySidebar:!0}}).state("app.documentation.page",{url:"/documentation",views:{"content@app":{templateUrl:"main/documentation/documentation.html",controller:"documentationController as vm"}},bodyClass:"documentation",params:{displaySidebar:!0,page_id:void 0}})}angular.module("ice.documentation").config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c){function d(){b.page_id&&a.getPage(b.page_id).then(function(a){a&&a.data&&(e.pageId=b.page_id,e.pageTitle=a.data.title,e.pageContent=a.data.content,e.publishDate=a.data.publish_date)})["catch"](function(a){c.error(a)})}var e=this,f=function(){d()};f()}angular.module("ice.documentation").controller("documentationController",["cmsService","$stateParams","$log",a])}(),function(){"use strict";function a(a,b){var c=this,d=function(){b.getIceUser().then(function(a){c.receiveEmails=a.data.regular_email_updates,c.receiveEmailsEveryTime=a.data.email_updates_on_every_notification,c.receiveDigestEmails=a.data.email_updates_daily_digest,c.receiveNotifications=c.receiveEmailsEveryTime||c.receiveDigestEmails})["catch"](function(b){a.setToast(b.message,"danger"),$log.error(b.message)})};c.submitForm=function(){var d=b.getUserData(),e={};e.regular_email_updates=c.receiveEmails,e.email_updates_on_every_notification=c.receiveEmailsEveryTime,e.email_updates_daily_digest=c.receiveDigestEmails,e.company=d.company.name,e.full_name=d.full_name,e.email=d.email,e.phone_number=d.phone_number,b.updateAccount(d.uuid,e).then(function(b){200===b.status&&a.setToast("User profile settings was updated successfully!","success")})["catch"](function(b){a.setToast(b.message.detail,"danger")})},c.changeReceiveNotifications=function(){c.receiveNotifications||(c.receiveEmailsEveryTime=!1,c.receiveDigestEmails=!1)},d()}angular.module("ice.dashboard.account").controller("accountUserProfileSettingsController",["toastService","usersService",a])}(),angular.module("ice").run(["$templateCache",function(a){"use strict";a.put("main/activation/activate/activateUser.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div></div>'),a.put("main/activation/addVendorContact/addVendorContact.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".addVendorContact-form"></ice-loader> <div class="container"> <div class="row"> <div class="col-md-2"></div> <form name="addVendorContactForm" ng-submit="vm.submitForm()" novalidate class="addVendorContact-form col-md-8"> <div class="form-group" ng-class="{ \'has-error\' : addVendorContactForm.company.$invalid && !addVendorContactForm.company.$pristine }"> <label class="ice-form-label required">Company</label> <select style="width:100%" name="company" ng-model="vm.data.company" ng-options="company.name for company in vm.companies track by company.uuid" class="form-control" required></select> <div class="ice-form-error" data-ng-show="addVendorContactForm.company.$error"> <span ng-show="addVendorContactForm.company.$error.required && !addVendorContactForm.company.$pristine" class="help-block">Please select a company</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : addVendorContactForm.fullName.$invalid && !addVendorContactForm.fullName.$pristine }"> <label class="ice-form-label required">Full Name</label> <input type="text" name="fullname" class="form-control" ng-model="vm.data.full_name" ng-minlength="3" ng-maxlength="50" maxlength="50" required> <div class="ice-form-error" data-ng-show="addVendorContactForm.fullname.$error"> <span ng-show="addVendorContactForm.fullname.$error.required && !addVendorContactForm.fullname.$pristine">Name is a required field.</span> <span ng-show="addVendorContactForm.fullname.$error.minlength">Full Name is too short.</span> <span ng-show="addVendorContactForm.fullname.$error.maxlength">Full Name is too long.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : addVendorContactForm.email.$invalid && !addVendorContactForm.email.$pristine }"> <label class="ice-form-label required">Email</label> <input type="email" name="email" class="form-control" ng-model="vm.data.email" ng-pattern="/^(([^<>()\\[\\]\\\\.,;:\\s@&quot;]+(\\.[^<>()\\[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[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,}))$/" maxlength="254" required> <div class="ice-form-error" data-ng-show="addVendorContactForm.email.$error"> <span ng-show="addVendorContactForm.email.$error.required && !addVendorContactForm.email.$pristine">Email is a required field.</span> <span ng-show="addVendorContactForm.email.$invalid && !addVendorContactForm.email.$pristine" class="help-block">Enter a valid email.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : addVendorContactForm.phone.$invalid && !addVendorContactForm.phone.$pristine }"> <label class="ice-form-label required">Phone</label> <input type="text" name="phone" class="form-control" ng-pattern="/^[\\+\\-0-9]+$/" ng-model="vm.data.phone_number" ng-minlength="3" ng-maxlength="30" required> <div class="ice-form-error" data-ng-show="addVendorContactForm.phone.$error"> <span ng-show="addVendorContactForm.phone.$error.required && !addVendorContactForm.phone.$pristine">Phone is a required field.</span> <span ng-show="addVendorContactForm.phone.$error.minlength" class="help-block">Phone is too short.</span> <span ng-show="addVendorContactForm.phone.$error.maxlength" class="help-block">Phone is too long.</span> <span ng-show="addVendorContactForm.phone.$error.pattern" class="help-block">Phone must consist of numbers only.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : userForm.password.$invalid && !userForm.password.$pristine }"> <input type="checkbox" ng-model="vm.data.regular_email_updates">&nbsp;I agree to receive regular email updates. </div> <div class="form-group"> <input type="checkbox" ng-model="vm.data.terms" required>&nbsp;I accept the AT&T\'s {{\'program.name\' | i18next}} Terms of Service and Privacy Policy. </div> <div id="frm-field-63-container" class="frm_form_field form-field frm_top_container"> <label class="frm_primary_label">reCAPTCHA <span class="frm_required"></span> </label> <div id="field-7lj3ma" class="g-recaptcha" data-sitekey="6LeMMwYTAAAAACSY-OLibN7rdFHSnY9karY3VXW2"></div> <div id="divre-captcha-err" class="frm_error_hide">reCAPTCHA is invalid.</div> </div> <input type="hidden" name="item_key" value="xxx"> <button type="submit" class="btn btn-primary" data-ng-disabled="!addVendorContactForm.$valid">Sign Up</button> <a ui-sref="app.login" class="login">Already have an account?</a> </form> <div class="col-md-2"></div> </div> </div>'),a.put("main/activation/addVf/addVf.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".addVf-form"></ice-loader> <div class="container"> <div class="row"> <div class="col-md-2"></div> <form name="addVfForm" ng-submit="vm.submitForm()" novalidate class="addVf-form col-md-8"> <div class="table-container-flex"> <div class="table"> <!-- Table body --> <div class="body"> <div data-ng-repeat="choice in vm.choices" class="data-row-wrapper"> <ng-form name="vfItemForm"> <div class="flex-container data-row"> <!-- Text --> <div class="add-vf-wizard text"> Use the form below to add your VF.Try to be as accurate as you can around the information to make sure the validation can accomplished as possible. </div> </div> <div class="flex-container data-row"> <!-- Virtual Function --> <div class="table-col-general flex-item"> <div id="vf-name-title">VF Name</div> <input type="text" name="virtualFunction" class="form-control" ng-model="choice.VirtualFunction" maxlength="32" class="form-control" placeholder="VF Name" required ng-pattern="/^[a-zA-Z0-9-]*$/"> <div class="ice-form-error" data-ng-show="vfItemForm.virtualFunction.$error"> <span ng-show="vfItemForm.virtualFunction.$error.pattern">VF Name can be alphanumeric or/and Hyphen</span> </div> </div> </div> <div class="flex-container data-row"> <h3 id="title-key-metadata">Key Metadata</h3> </div> <div class="flex-container data-row fields_key_metadata"> <!-- ECOMP Release --> <div class="table-col-general flex-item"> <select ng-model="choice.ECOMPRelease" id="ecomp-release" class="form-control" required> <option value="" selected disabled>ECOMP Release</option> <option ng-repeat="dt in vm.ECOMPReleases" value="{{dt.uuid}}"> {{dt.name}} </option> </select> </div> <!-- Target AIC Version --> <div class="table-col-general flex-item"> <select ng-model="choice.TargetAic" id="aic-version" class="form-control" required> <option value="" selected disabled>AIC Version</option> <option ng-repeat="dt in vm.deployTargets" value="{{dt.uuid}}"> {{dt.name}} {{dt.version}} </option> </select> </div> <!-- VF Version --> <div class="table-col-general flex-item"> <input type="text" name="VFversion" id="id-vf-version" class="form-control" ng-model="choice.VFVersion" maxlength="32" class="form-control" placeholder="VF Version" required> </div> <!-- Delete VF --> <div class="table-col-general flex-item" ng-if="vm.choices.length > 1"> <!--\n <div class="reject_large" ng-click=\'vm.removeChoice()\' ng-show="$last"><span class="reject_large"></span>Remove</div>\n --> <div class="remove-button" ng-click="vm.removeChoice($index)"><span class="remove-icon"></span>Remove</div> </div> </div> <div class="flex-container data-row"> <!-- Target Lab Entry --> <div class="table-col-general flex-item"> <div id="vf-name-title">Target Lab Entry Date</div> <md-datepicker id="e2e-lab-entry-date" md-min-date="vm.minDate" ng-click="ctrl.openCalendarPane($event)" ng-model-options="{timezone: \'gmt\'}" class="btn btn-default datepicker_btn" ng-model="choice.TargetLab" md-placeholder="E2E Lab Entry Date"></md-datepicker> <input type="hidden" id="add-vf-hidden-target-lab-date" value="{{choice.TargetLab | date2: \'MMMM doo yyyy\' : timeGapLocal}}"> </div> </div> <div class="add-vf-confirm-checkbox"> <input type="checkbox" name="is_service_provider_internal" ng-model="choice.is_service_provider_internal"> The virtual function is only developed internally inside AT&T. </div> </ng-form> </div> </div> <div class="footer"> <div class="action-row-wrapper"> <a ng-if="!vm.isModal" class="add-button" ng-click="vm.addNewChoice()"> <span class="add-icon"></span> <span class="add-text">Add another VF</span> </a> <button type="submit" class="btn btn-primary" data-ng-disabled="!addVfForm.$valid">Submit your VF</button> <a id="skip-add-vf-singup" ng-if="!vm.isModal" class="" ng-click="vm.skipAddVf()">Skip VF creation</a> </div> </div> </div> </div> </form> </div> </div>'),a.put("main/activation/contactUs/contactUs.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="container"> <div class="row"> <div class="col-md-2"></div> <form name="contactUsForm" ng-submit="vm.submitForm()" novalidate class="contact-us-form col-md-8"> </form> <div class="col-md-2"></div> </div> </div>'),a.put("main/activation/inviteMembers/inviteMembers.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".inviteMembers-form"></ice-loader> <div class="container"> <div class="row"> <div class="col-md-2"></div> <form name="inviteMembersForm" ng-submit="vm.submitForm()" novalidate class="inviteMembers-form col-md-8"> <div> <div style="clear:both"></div> <fieldset data-ng-repeat="choice in choices|limitTo:10"> <div id="containera"> <div style="width:400px;height:50px;line-height:20px;;float:left"> <input type="email" name="email" class="form-control" ng-model="choice.Email" maxlength="50" ng-pattern="/^(([^<>()\\[\\]\\\\.,;:\\s@&quot;]+(\\.[^<>()\\[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[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,}))$/" class="form-control" required> <div class="ice-form-error" data-ng-show="inviteMembersForm.email.$error"> <span ng-show="inviteMembersForm.email.$error.required && !inviteMembersForm.email.$pristine">Email is a required field.</span> <span ng-show="inviteMembersForm.email.$invalid && !inviteMembersForm.email.$pristine" class="help-block">Enter a valid email.</span> </div> </div> </div> <div style="width:200px;height:50px;line-height:20px; vertical-align:middle;padding-left:10px;float:left"> <a ng-click="removeChoice()" ng-show="$last">Remove</a> </div> </fieldset> </div> <a ng-if="choices.length < 10" class="add-button" ng-click="vm.addNewChoice()">Invite another team member</a> <button type="submit" class="btn btn-primary" data-ng-disabled="!inviteMembersForm.$valid">Send invitations</button> </form> </div> </div>'),a.put("main/activation/login/login.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".login-form"></ice-loader> <div class="container"> <div class="row"> <div class="col-md-2"></div> <form name="loginForm" ng-submit="vm.submitForm()" novalidate class="login-form col-md-8"> <div class="form-group" ng-class="{ \'has-error\' : loginForm.email.$invalid && !loginForm.email.$pristine }"> <label class="ice-form-label required">Email</label> <input type="email" name="email" class="form-control" ng-model="vm.data.email" maxlength="254" required ng-pattern="/^(([^<>()\\[\\]\\\\.,;:\\s@&quot;]+(\\.[^<>()\\[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[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,}))$/"> <div class="ice-form-error" data-ng-show="loginForm.email.$error"> <span ng-show="loginForm.email.$error.required && !loginForm.email.$pristine">Email is a required field.</span> <span ng-show="loginForm.email.$error.pattern">Enter a valid email.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : loginForm.password.$invalid && !loginForm.password.$pristine }"> <label class="ice-form-label required">Password</label> <input type="password" name="password" class="form-control" ng-model="vm.data.password" ng-maxlength="32" maxlength="32" required> <div class="ice-form-error" data-ng-show="loginForm.password.$error"> <span ng-show="loginForm.password.$error.required && !loginForm.password.$pristine">Password is a required field.</span> <span ng-show="loginForm.password.$error.minlength">Password is too short.</span> <span ng-show="loginForm.password.$error.maxlength">Password is too long.</span> </div> </div> <button type="submit" class="btn btn-primary" data-ng-disabled="!loginForm.$valid">Login</button> <div class="leftLink"> <a ui-sref="app.resetPassword">Reset your password?</a> </div> <div class="rightLink"> <a id="id-dont-have-an-account" ui-sref="app.register">Don\'t have an account?</a> </div> </form> <div class="col-md-2"></div> </div> </div>'),
-a.put("main/activation/register/register.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".register-form"></ice-loader> <div class="container"> <script type="text/javascript" src="https://www.google.com/recaptcha/api.js?ver=1"></script> <div class="row"> <div class="col-md-2"></div> <form name="registerForm" ng-submit="vm.submitForm()" novalidate class="register-form col-md-8"> <div class="form-group" ng-class="{ \'has-error\' : registerForm.company.$invalid && !registerForm.company.$pristine }"> <label class="ice-form-label required">Company</label> <select ng-model="vm.data.company" name="company" class="form-control" required> <option value="">Please select a company</option> <option ng-repeat="vendor in vm.vendors" value="{{vendor.name}}" ng-selected="vendor.name===vm.data.company"> {{vendor.name}} </option> </select> <div class="ice-form-error" data-ng-show="registerForm.company.$error"> <span ng-show="registerForm.company.$error.required && !registerForm.company.$pristine" class="help-block">Please select a company</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : registerForm.fullName.$invalid && !registerForm.fullName.$pristine }"> <label class="ice-form-label required">Full Name</label> <input type="text" name="fullname" class="form-control" ng-model="vm.data.full_name" ng-minlength="3" ng-maxlength="50" maxlength="50" required ng-pattern="/^[a-zA-Z0-9 ]*$/"> <div class="ice-form-error" data-ng-show="registerForm.fullname.$error"> <span ng-show="registerForm.fullname.$error.required && !registerForm.fullname.$pristine">Name is a required field.</span> <span ng-show="registerForm.fullname.$error.minlength">Full Name is too short.</span> <span ng-show="registerForm.fullname.$error.maxlength">Full Name is too long.</span> <span ng-show="registerForm.fullname.$error.pattern">Full Name must be alphanumeric</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : registerForm.email.$invalid && !registerForm.email.$pristine }"> <label class="ice-form-label required">Email</label> <input type="email" name="email" class="form-control" ng-model="vm.data.email" maxlength="254" ng-pattern="/^(([^<>()\\[\\]\\\\.,;:\\s@&quot;]+(\\.[^<>()\\[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[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,}))$/" required> <div class="ice-form-error" data-ng-show="registerForm.email.$error"> <span ng-show="registerForm.email.$error.required && !registerForm.email.$pristine">Email is a required field.</span> <span ng-show="registerForm.email.$invalid && !registerForm.email.$error.required && !registerForm.email.$pristine">Enter a valid email.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : registerForm.phone.$invalid && !registerForm.phone.$pristine }"> <label class="ice-form-label required">Phone</label> <input type="text" name="phone" class="form-control phone-place-holder" ng-intl-tel-input ng-model="vm.data.phone_number" required ng-minlength="6" ng-maxlength="30"> <div class="ice-form-error" data-ng-show="registerForm.phone.$error"> <span ng-show="registerForm.phone.$error.required && !registerForm.phone.$pristine">Phone is a required field.</span> <span ng-show="registerForm.phone.$error.minlength" class="help-block">Phone is too short.</span> <span ng-show="registerForm.phone.$error.maxlength" class="help-block">Phone is too long.</span> <span ng-show="registerForm.phone.$dirty && registerForm.phone.$invalid" class="help-block">Phone format invalid</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : registerForm.password.$invalid && !registerForm.password.$pristine }"> <label class="ice-form-label required">Password</label> <input type="password" name="password" class="form-control" ng-model="vm.data.password" ng-minlength="4" ng-maxlength="32" maxlength="32" required autocomplete="new-password"> <div class="ice-form-error" data-ng-show="registerForm.password.$error"> <span ng-show="registerForm.password.$error.required && !registerForm.password.$pristine">Password is a required field.</span> <span ng-show="registerForm.password.$error.minlength" class="help-block">Password is too short.</span> <span ng-show="registerForm.password.$error.maxlength" class="help-block">Password is too long.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : userForm.password.$invalid && !userForm.password.$pristine }"> <input type="checkbox" ng-model="vm.data.regular_email_updates">&nbsp;I agree to receive regular email updates from AT&T {{\'program.name\' | i18next}}. </div> <div class="form-group"> <input type="checkbox" ng-model="vm.data.terms" required>&nbsp;I accept the <a href="" ui-sref="app.terms" title="AT&T\'s {{\'program.name\' | i18next}} Terms of Service and Privacy Policy" target="_blank">AT&T\'s {{\'program.name\' | i18next}} Terms of Service and Privacy Policy</a>. </div> <div id="frm-field-63-container" class="form-group frm_form_field form-field frm_top_container"> <!--\n <label class="ice-form-label required">\n <span class="frm_required"></span>\n </label>\n --> <div id="field-7lj3ma" class="g-recaptcha" data-sitekey="6LeMMwYTAAAAACSY-OLibN7rdFHSnY9karY3VXW2"></div> </div> <input type="hidden" name="item_key" value="xxx"> <span>{{PleaseFill}} </span> <button type="submit" class="btn btn-primary" data-ng-disabled="!registerForm.$valid">Sign Up</button> <a ui-sref="app.login" class="login">Already have an account?</a> </form> <div class="col-md-2"></div> </div> </div>'),a.put("main/activation/resendActivation/resendActivation.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".active-form"></ice-loader> <div class="container"> <div class="row"> <div class="col-md-2"></div> <form name="resendActivationForm" ng-submit="vm.submitForm()" novalidate class="active-form col-md-8"> <p> You have successfully created your account! To begin using this site you will need to activate your account via the email we have just sent to your email address. <br><br> Please note that sometimes activation emails end up in users spam/junk folders, so please check there. <br><br> If you have not received it, please click the resend the Activation Email button below. </p> <button type="submit" class="btn btn-primary">Resend Activation Email</button> <div class="leftLink"> Still having problems? Please contact us at <a href="mailto:example@example.com">example@example.com</a> </div> </form> <div class="col-md-2"></div> </div> </div>'),a.put("main/activation/resetPassword/resetPassword.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".resetPassword-form"></ice-loader> <div class="container"> <div class="row"> <div class="col-md-2"></div> <form name="resetPasswordForm" ng-submit="vm.submitForm()" novalidate class="resetPassword-form col-md-8"> <div class="form-group" ng-class="{ \'has-error\' : resetPasswordForm.email.$invalid && !resetPasswordForm.email.$pristine }"> <label class="ice-form-label required">Email</label> <input type="email" name="email" class="form-control" ng-model="vm.data.email" maxlength="254" required> <div class="ice-form-error" data-ng-show="resetPasswordForm.email.$error"> <span ng-show="resetPasswordForm.email.$error.required && !resetPasswordForm.email.$pristine && ngReq">Email is a required field.</span> <span ng-show="resetPasswordForm.email.$invalid && !resetPasswordForm.email.$error.required && !resetPasswordForm.email.$pristine">Enter a valid email.</span> </div> </div> <button type="submit" class="btn btn-primary" data-ng-disabled="!resetPasswordForm.$valid">Send Instructions</button> <div class="leftLink"> Still having problems? Please contact <a ng-click="vm.sendMail()">example@example.com</a> </div> </form> <div class="col-md-2"></div> </div> </div>'),a.put("main/activation/terms/terms.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="container"> <p>SP Terms</p> </div>'),a.put("main/activation/updatePassword/updatePassword.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".updatePassword-form"></ice-loader> <div class="container"> <div class="row"> <div class="col-md-2"></div> <form name="updatePasswordForm" ng-submit="vm.submitForm()" novalidate class="updatePassword-form col-md-8"> <div class="form-group" ng-class="{ \'has-error\' : updatePasswordForm.password.$invalid && !updatePasswordForm.password.$pristine }"> <label class="ice-form-label">Password</label> <input type="password" name="password" class="form-control" ng-model="vm.data.password" maxlength="32" ng-minlength="4" required> <div class="ice-form-error" data-ng-show="updatePasswordForm.password.$error"> <span ng-show="updatePasswordForm.password.$error.required && !updatePasswordForm.password.$pristine && ngReq">Password is required field.</span> <span ng-show="updatePasswordForm.password.$error.minlength && ngReq">Password is too short.</span> <span ng-show="updatePasswordForm.password.$error.maxlength">Password is too long.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : updatePasswordForm.confirm_password.$invalid && !updatePasswordForm.confirm_password.$pristine }"> <label class="ice-form-label">Confirm password</label> <input type="password" name="confirm_password" class="form-control" ng-model="vm.data.confirm_password" maxlength="32" required> <div class="ice-form-error" data-ng-show="updatePasswordForm.confirm_password.$error"> <span ng-show="updatePasswordForm.confirm_password.$error.required && !updatePasswordForm.confirm_password.$pristine && ngReq">Confirm password is required field.</span> <span ng-show="!updatePasswordForm.confirm_password.$error.required && updatePasswordForm.confirm_password.$error.noMatch && updatePasswordForm.password.$dirty">Passwords do not match.</span> </div> </div> <button type="submit" class="btn btn-primary" data-ng-disabled="!updatePasswordForm.$valid">Update Password</button> <div class="leftLink"> Still having problems? Please contact <a ng-click="vm.sendMail()">example@example.com</a> </div> </form> <div class="col-md-2"></div> </div> </div>'),a.put("main/admin/checklist-template/checklist-template.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <form name="checklistTemplateForm" class="checklist-template" ng-show="vm.template"> <div id="cl-header" class="row"> <div class="col-sm-8 checklist-template-topic"> <h1 id="cl-title"> <span id="edit-template-btn" class="sprite edit-medium edit-checklist" ng-click="vm.switchElementInlineEditing(\'templateName\')"></span> <span class="template-topic">Master Checklist Template:</span> <span ng-if="!vm.inlineEditingElements[\'templateName\']" name="{{vm.template.name}}" class="template-name">{{vm.template.name}}</span> <span class="form-group" ng-class="{ \'has-error\' : checklistTemplateForm.editTemplateName.$invalid && checklistTemplateForm.editTemplateName.$dirty }"> <input ng-show="vm.inlineEditingElements[\'templateName\']" class="checklist-template-edit-item edit-template-name" type="text" name="editTemplateName" ng-blur="vm.switchElementInlineEditing(\'templateName\')" ng-model="vm.template.name" required ng-minlength="1" ng-maxlength="24"> <div class="ice-form-error" data-ng-show="checklistTemplateForm.editTemplateName.$error"> <span ng-show="checklistTemplateForm.editTemplateName.$error.required && checklistTemplateForm.editTemplateName.$dirty">Template name is a required field.</span> <span ng-show="checklistTemplateForm.editTemplateName.$error.minlength" class="help-block">Template name is too short.</span> <span ng-show="checklistTemplateForm.editTemplateName.$error.maxlength" class="help-block">Template name is too long.</span> </div> </span> </h1> <div class="topic-description"> Editing a master checklist template will affect all checklists currently created of that type and will also restart the validation for all active engagements. </div> </div> <span class="col-sm-4 cl-action-buttons-frame"> <div id="state-actions" class="row"> <div class="save-button col-md-6"><button class="btn btn-gradient-success" ng-click="vm.save() " data-ng-disabled="checklistTemplateForm.$invalid || vm.isSaveInvalid()" id="save-button">Save</button></div> <div class="col-md-6"><button id="state-actions-btn-reject" class="btn btn-gradient-danger" ng-click="vm.cancel()" id="cancel-button">Cancel</button></div> </div> </span> </div> <article class="row" ng-class="blocked-area" id="checklist-main-section"> <ul class="col-md-6" id="line-item-list"> <li data-ng-repeat="section in vm.template.sections"> <h2> <span class="section-topic">Section {{$index+1}}: </span><span ng-show="!vm.inlineEditingElements[section.$$hashKey]">{{section.name}}</span> <span class="form-group" ng-class="{ \'has-error\' : checklistTemplateForm.editSectionName{{$index}}.$invalid && checklistTemplateForm.editSectionName{{$index}}.$dirty }"> <input ng-show="vm.inlineEditingElements[section.$$hashKey]" id="edit-section-input-{{$index}}" class="checklist-template-edit-item edit-section-name" type="text" name="editSectionName{{$index}}" ng-blur="vm.switchElementInlineEditing(section.$$hashKey)" ng-model="section.name" required ng-minlength="1" ng-maxlength="64"> <span class="edit-checklist template-edit-item" id="edit-section-btn-{{$index}}" ng-click="vm.switchElementInlineEditing(section.$$hashKey)"></span> <span class="remove-item" ng-click="vm.deleteSection(section)"></span> <div class="ice-form-error" data-ng-show="checklistTemplateForm.editSectionName{{$index}}.$error"> <span ng-show="checklistTemplateForm.editSectionName{{$index}}.$error.required && checklistTemplateForm.editSectionName{{$index}}.$dirty">Section name is a required field.</span> <span ng-show="checklistTemplateForm.editSectionName{{$index}}.$error.minlength" class="help-block">Section name is too short.</span> <span ng-show="checklistTemplateForm.editSectionName{{$index}}.$error.maxlength" class="help-block">Section name is too long.</span> </div> </span> </h2> <ul> <li data-ng-repeat="lineItem in section.lineItems" class="line-item-row" ng-class="{\'selected-line\' : lineItem === vm.selectedLineItem}" id="select-lineitem-btn-{{$parent.$index}}.{{$index}}" ng-click="vm.selectLineItem(lineItem, section, $event)"> <span class="col-sm-2 col-xs-2 col-md-2"> <span class="lineitem-changed-icon" ng-show="vm.inlineEditingElements[lineItem.uuid] != undefined"></span> <span ng-class="vm.inlineEditingElements[lineItem.uuid] != undefined ? \'\' : \'lineitem-index\'"></span>{{$parent.$index+1}}.{{$index+1}} </span> <span class="col-sm-9 col-xs-9 col-md-9">{{lineItem.name}}</span> <div class="col-sm-1 col-xs-1 col-md-1">&nbsp;</div> <span class="selected-line-connector"></span> </li> <li class="cl-add-item-line"> <span class="add-button" ng-click="vm.addLineItem(section);" id="add-lineitem-btn"></span> <span>Add Another line item</span> </li> </ul> </li> </ul> <aside class="col-md-6" id="line-item-extended"> <header class="row"> <h2 ng-show="vm.selectedSection" class="col-sm-11 col-xs-11 col-md-11"><span class="bold">{{vm.selectedSection.name}} -</span> <span ng-show="!vm.inlineEditingElements[vm.selectedLineItem.uuid]">{{vm.selectedLineItem.name}}</span> <span class="form-group" ng-class="{ \'has-error\' : checklistTemplateForm.editLineItemName.$invalid && checklistTemplateForm.editLineItemName.$dirty }"> <input ng-show="vm.inlineEditingElements[vm.selectedLineItem.uuid]" class="checklist-template-edit-item edit-lineitem-name" type="text" name="editLineItemName" ng-model="vm.selectedLineItem.name" required ng-minlength="1" ng-maxlength="64" id="edit-line-item-name-input"> <div class="ice-form-error" data-ng-show="checklistTemplateForm.editLineItemName.$error"> <span ng-show="checklistTemplateForm.editLineItemName.$error.required && checklistTemplateForm.editLineItemName.$dirty">Line item name is a required field.</span> <span ng-show="checklistTemplateForm.editLineItemName.$error.minlength" class="help-block">Line item name is too short.</span> <span ng-show="checklistTemplateForm.editLineItemName.$error.maxlength" class="help-block">Line item name is too long.</span> </div> </span> </h2> <span ng-class="!vm.inlineEditingElements[vm.selectedLineItem.uuid] ? \'edit-checklist template-edit-item\' : \'glyphicon glyphicon-ok edit-checklist glyphicon-cursor-approve-changes\'" ng-show="!checklistTemplateForm.$invalid" ng-click="vm.switchElementInlineEditing(vm.selectedLineItem.uuid)" id="edit-lineitem-btn"></span> <span ng-show="vm.selectedLineItem" class="remove-item" ng-click="vm.deleteLineItem(vm.selectedLineItem)" id="delete-lineitem-btn"></span> </header> <section ng-show="!vm.inlineEditingElements[vm.selectedLineItem.uuid]" id="line-item-description" ng-bind-html="vm.selectedLineItem.description | htmlspecialchars | htmlstylespan"></section> <span class="form-group" ng-class="{ \'has-error\' : checklistTemplateForm.editLineitemDescription.$invalid && checklistTemplateForm.editLineitemDescription.$dirty }"> <wysiwyg textarea-id="edit-lineitem-description" ng-show="vm.inlineEditingElements[vm.selectedLineItem.uuid]" textarea-class="form-control" textarea-name="editLineitemDescriptionTextArea" name="editLineitemDescription" textarea-height="160px" ng-model="vm.selectedLineItem.description" class="ice-wysiwyg checklist-template-edit-item edit-lineitem-description" enable-bootstrap-title="true" textarea-menu="vm.wysiwyg_menu" required textarea-required="True" ng-minlength="1" id="edit-lineitem-description-input"> </wysiwyg> <div class="ice-form-error" data-ng-show="checklistTemplateForm.editLineitemDescription.$error"> <span ng-show="checklistTemplateForm.editLineitemDescription.$error.required && checklistTemplateForm.editLineitemDescription.$dirty">Line item description is a required field.</span> <span ng-show="checklistTemplateForm.editLineitemDescription.$error.minlength" class="help-block">Line item description is too short.</span> <span ng-show="checklistTemplateForm.editLineitemDescription.$error.maxlength" class="help-block">Line item description is too long.</span> </div> </span> <section ng-show="vm.selectedLineItem" id="line-item-validation-instructions"> <h3>Validation Instructions</h3> <p ng-if="!vm.inlineEditingElements[vm.selectedLineItem.uuid]" ng-bind-html="vm.selectedLineItem.validation_instructions | htmlspecialchars | htmlstylespan"></p> <span class="form-group" ng-class="{ \'has-error\' : checklistTemplateForm.validationInstruction.$invalid && checklistTemplateForm.validationInstruction.$dirty }"> <wysiwyg textarea-id="validation-instruction" ng-show="vm.inlineEditingElements[vm.selectedLineItem.uuid]" textarea-class="form-control" textarea-name="validationInstructionTextArea" name="validationInstruction" textarea-height="160px" ng-model="vm.selectedLineItem.validation_instructions" class="ice-wysiwyg" enable-bootstrap-title="true" textarea-menu="vm.wysiwyg_menu" required textarea-required="True" ng-minlength="1"> </wysiwyg> <div class="ice-form-error" data-ng-show="checklistTemplateForm.validationInstruction.$error"> <span ng-show="checklistTemplateForm.validationInstruction.$error.required && checklistTemplateForm.validationInstruction.$dirty">Validation Instructions is a required field.</span> </div> </span> </section> <header class="row" ng-show="!vm.selectedLineItem"> <h2 class="col-sm-8 col-xs-8 col-md-8"><span class="bold">There is no line item to display</span> </h2> </header> </aside> </article> </form> <div class="another-section" ng-show="vm.template"> <span class="add-another-section" ng-click="vm.addSection()"></span> <span>Add Another Section</span> </div>'),a.put("main/dashboard/account/account.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".account-form"></ice-loader> <h2>Account</h2> <div data-ng-if="vm.stage!==vm.stages.intake"> <progress-directive progress="{{vm.progress}}" callback="vm.updateProgress" enable-edit="vm.isEngagementEL()" engagement-uuid="{{vm.uuid}}"></progress-directive> </div> <!--div class="row main-section" --> <div class="row main-section"> <get-started-modal></get-started-modal> <div class="col-md-8 steps"> <form name="accountForm" ng-submit="vm.submitForm()" novalidate class="account-form col-md-8"> <!--\n <div class="form-group">\n <h2>Account</h2>\n </div>\n --> <div class="form-group" ng-class="{ \'has-error\' : registerForm.company.$invalid && !registerForm.company.$pristine }"> <label class="ice-form-label required">Company</label> <select ng-model="vm.data.company" name="company" class="form-control" required> <option value>Please Select</option> <option ng-repeat="company in vm.companies" value="{{company.name}}" ng-selected="company.name===vm.data.company"> {{company.name}} </option> </select> <div class="ice-form-error" data-ng-show="accountForm.company.$error"> <span ng-show="accountForm.company.$error.required && !accountForm.company.$pristine" class="help-block">Please select company</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : accountForm.fullName.$invalid && !accountForm.fullName.$pristine }"> <label class="ice-form-label required">Full Name</label> <input type="text" name="fullname" class="form-control" ng-model="vm.data.full_name" ng-minlength="3" ng-maxlength="50" maxlength="50" required> <div class="ice-form-error" data-ng-show="accountForm.fullname.$error"> <span ng-show="accountForm.fullname.$error.required && !accountForm.fullname.$pristine">Full Name is a required field.</span> <span ng-show="accountForm.fullname.$error.minlength">Full Name is too short.</span> <span ng-show="accountForm.fullname.$error.maxlength">Full Name is too long.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : accountForm.email.$invalid && !accountForm.email.$pristine }"> <label class="ice-form-label">Email</label> <input id="{{vm.data.email}}" type="email" name="email" class="form-control" ng-model="vm.data.email" maxlength="254" ng-pattern="/^(([^<>()\\[\\]\\\\.,;:\\s@&quot;]+(\\.[^<>()\\[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[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,}))$/" disabled> <div class="ice-form-error" data-ng-show="accountForm.email.$error"> <span ng-show="accountForm.email.$error.required && !accountForm.email.$pristine">Email is a required field.</span> <span ng-show="accountForm.email.$invalid && !accountForm.email.$pristine" class="help-block">Enter a valid email.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : accountForm.phone.$invalid && !accountForm.phone.$pristine }"> <label class="ice-form-label required">Phone</label> <input type="text" name="phone" class="form-control" ng-intl-tel-input ng-model="vm.data.phone_number" required ng-minlength="6" ng-maxlength="30"> <div class="has-error ice-form-error" data-ng-show="accountForm.phone.$error"> <span ng-show="accountForm.phone.$error.required && !accountForm.phone.$pristine">Phone is a required field.</span> <span ng-show="accountForm.phone.$error.minlength" class="help-block">Phone is too short.</span> <span ng-show="accountForm.phone.$error.maxlength" class="help-block">Phone is too long.</span> <span ng-show="accountForm.phone.$invalid" class="help-block">Phone format invalid</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : accountForm.password.$invalid && !accountForm.password.$pristine }"> <label class="ice-form-label">Password</label> <input type="password" name="password" class="form-control" ng-model="vm.data.password" ng-minlength="4" ng-maxlength="32" maxlength="32"> <div class="ice-form-error" data-ng-show="accountForm.password.$error"> <span ng-show="accountForm.password.$error.required && !accountForm.password.$pristine">Password is a required field.</span> <span ng-show="accountForm.password.$error.required && accountForm.$submitted ">Password is required.</span> <span ng-show="accountForm.password.$error.minlength" class="help-block">Password is too short.</span> <span ng-show="accountForm.password.$error.maxlength" class="help-block">Password is too long.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : accountForm.confirm_password.$invalid && !accountForm.confirm_password.$pristine }"> <label class="ice-form-label">Confirm password</label> <input type="password" name="confirm_password" class="form-control" ng-model="vm.data.confirm_password" ng-minlength="4" ng-maxlength="32" maxlength="32"> <div class="ice-form-error" data-ng-show="accountForm.confirm_password.$error"> <span ng-show="accountForm.confirm_password.$error.required && !accountForm.confirm_password.$pristine">Confirm password is required field.</span> <span ng-show="!accountForm.confirm_password.$error.required && accountForm.confirm_password.$error.noMatch && accountForm.password.$dirty">Passwords do not match.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : accountForm.password.$invalid && !accountForm.password.$pristine }"> <label class="ice-form-label">SSH Key</label> <textarea name="ssh_key" class="form-control" ng-model="vm.data.ssh_key" ng-focus="clearMsg()"></textarea> <div class="ice-form-error" data-ng-show="accountForm.password.$error"> </div> </div> <button type="submit" id="upate-account" class="btn btn-primary" data-ng-disabled="!accountForm.$valid">Update</button> </form> </div> <div class="col-md-4 right-panel"> <div class="personImage"></div> <div class="line-separator col-md-12"></div> <h3 id="storage-credentials">Your Storage Credentials</h3> <div class="storage-credentials"> <div id="access-key-title">Access Key: <div class="access-key" id="access-key-value">{{vm.data.access_key}}</div> </div> <div id="access-secret-title">Access Secret (<span class="show-secret" ng-click="vm.getAccessSecret()" role="button" id="show-access-secret">Show</span>) <div class="access-secret" id="access-secret-value" type="password">{{vm.data.access_secret}}</div> </div> </div> </div> </div> '),
+i.selectedCheckListAssociatedFiles.push({id:a})},i.removeFile=function(a){i.selectedCheckListAssociatedFiles.splice(a,1)},i.closeModal=function(){a.clearToast(),b.$emit("onChecklistUpdate"),c.close(i.checkListName),c.close()},i.submitForm=function(){i.isDisabled=!0;var j=[];switch(f){case"create":angular.forEach(i.selectedCheckListAssociatedFiles,function(a,b){j.push(a.File)});var k={checkListAssociatedFiles:j,checkListName:i.checkListName,checkListTemplateUuid:i.selectedTemplateUuid};d.createChecklist(e,k).then(function(a){200===a.status&&(c.close(a.data),b.ice.loader.show=!1,i.closeModal())})["catch"](function(c){a.setToast(c.message||"Error creating check list.","danger",{displayFor:"modal"}),b.ice.loader.show=!1,i.isDisabled=!1,h.error(c.message)});break;case"update":var l=[];angular.forEach(i.selectedCheckListAssociatedFiles,function(a,b){l.push(a.File)}),h.debug("update",l);var m={checklistUuid:i.checklistUuid,checkListAssociatedFiles:l,checkListName:i.checkListName,checkListTemplateUuid:i.selectedTemplateUuid};d.putDataForChecklist(i.checklistUuid,m).then(function(f){if(200===f.status){b.$broadcast("onUpdateEngagements",{select:{uuid:e,view_type:"checklist",sub_id:i.checklistUuid}}),b.ice.loader.show=!1;var j={};j.checklist_name=i.checkListName,j.associated_files=l;var k=i.checkListAssociatedFiles.sort(),m=l.sort(),n=k.length==m.length&&k.every(function(a,b){return a===m[b]});if(!n&&"pending"!=g.state){var o={};o.description="Rejected due to file list change",o.decline="True",d.setState(i.checklistUuid,o).then(function(c){return 200!==c.status?(a.setToast(c.error,"danger",{displayFor:"modal"}),b.ice.loader.show=!1,void(i.isDisabled=!1)):void b.$broadcast("onUpdateEngagements")})["catch"](function(b){h.error(b),a.setToast(b.status+": Error changing progress!","danger"),i.isDisabled=!1})}c.close(j),i.closeModal()}})["catch"](function(c){a.setToast(c.message,"danger",{displayFor:"modal"}),b.ice.loader.show=!1,h.error(c.message),i.isDisabled=!1});break;default:h.debug("no submit action found"),i.isDisabled=!1}}}angular.module("ice.modals").controller("ChecklistModalController",["toastService","$rootScope","$uibModalInstance","checklistService","engagementUuid","modal_type","wizardData","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f){var g=this,h=function(){var a=[],b=moment().tz(moment.tz.guess()).format("z"),c="";g.name=d.name,g.checklistAuditLogs=d.checklistAuditLogs,g.checklistAuditLogs.forEach(function(d){c=moment(d.create_time).local().format("YYYY-MM-DD hh:mm:ss A")+" "+b,a.push({name:d.creator.full_name,dt:c,desc:d.description})}),g.checklistAuditLogs=a};h(),g.submitForm=function(){var h={description:g.description};c.createAuditlogChecklist(d.uuid,h).then(function(c){200===c.status?(b.close(c.data),g.closeModal()):(e.setToast(c.error,"danger",{displayFor:"modal"}),a.ice.loader.show=!1)})["catch"](function(a){e.setToast(a.message,"danger",{displayFor:"modal"}),f.error(a.message)})},g.closeModal=function(){e.clearToast(),b.close()}}angular.module("ice.modals").controller("AuditLogModalController",["$rootScope","$uibModalInstance","checklistService","wizardData","toastService","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g){var h=this,i=function(){h.me=f.getUserData(),j()};h.vfcs=[{name:"",external_ref_id:"",company:""}],h.companies=[],h.closeModal=function(){b.close()},h.addNewChoice=function(){var a=h.vfcs.length+1;h.vfcs.push({id:a})},h.removeChoice=function(a){h.vfcs.splice(a,1)},h.submitForm=function(){var a=[];angular.forEach(h.vfcs,function(b,c){h.item=[];var d=new Object;d.name=b.name,d.external_ref_id=b.external_ref_id,d.company=b.company,a.push(d)});var f={vfcs:a,vf_uuid:e,creator:h.me};c.add(f).then(function(a){200===a.status&&b.close(a.status)})["catch"](function(a){g.error(a),d.setToast(a.status+": Error changing progress!","danger")})};var j=function(){a.ice.loader.show=!0,c.getCompanies().then(function(b){a.ice.loader.show=!1,200===b.status&&(h.companies=b.data,0===h.companies.length&&console.warn("No vendors pulled, request was successfull"))})["catch"](function(b){a.ice.loader.show=!1,g.error(b)})};i()}angular.module("ice.modals").controller("detailedViewVFCModalController",["$rootScope","$uibModalInstance","vfcService","toastService","vf_uuid","usersService","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i,j){function k(){d.getDeployTargets().then(function(b){a.ice.loader.show=!1,200===b.status&&(n.deployTargets=b.data,0===j.filter(n.deployTargets,{uuid:n.dtversion.uuid}).length&&(n.dtversion.disabled=!0,n.deployTargets.push(n.dtversion)))})["catch"](function(b){a.ice.loader.show=!1,i.error(b)})}function l(){d.getECOMPReleases().then(function(a){200===a.status&&(n.ECOMPReleases=a.data,0===j.filter(n.ECOMPReleases,{uuid:n.ecomp_release.uuid}).length&&(n.ecomp_release.disabled=!0,n.ECOMPReleases.push(n.ecomp_release)))})["catch"](function(b){a.ice.loader.show=!1,i.error(b)})}function m(){d.getVFVersion(g).then(function(b){a.ice.loader.show=!1,200===b.status&&(n.VFVersion=b.data)})["catch"](function(b){a.ice.loader.show=!1,i.debug(b)})}var n=this,o=function(){e.engagement&&(n.engagement=e.engagement),n.me=h.getUserData(),d.getSingleEngagement(n.me.uuid,n.engagement.uuid).then(function(b){if(a.ice.loader.show=!1,200===b.status&&b.data&&""!==b.data){var c=b.data;n.engagement_manual_id=c.engagement.engagement_manual_id,n.vf_name=c.name,n.vf_uuid=c.uuid,n.ecomp_release=c.ecomp_release,n.target_lab=new Date(c.target_lab_entry_date),n.dtversion=c.deployment_target,n.selected_dt_uuid=n.dtversion.uuid,n.selected_ecomp_uuid=n.ecomp_release.uuid,n.me=h.getUserData(),n.name=n.engagement.name,n.isEngagementEL=h.isEngagementEL(c.engagement.engagement_team),n.isAdmin=h.isAdmin(n.me),n.choices=[{TargetLab:"",TargetAic:""}],k(),l(),m()}})["catch"](function(b){a.ice.loader.show=!1,i.error(b)})};n.closeModal=function(){b.close()},n.addNewChoice=function(){var a=n.choices.length+1;n.choices.push({id:a})},n.removeChoice=function(a){n.choices.splice(a,1)},n.submitForm=function(){var a={vf_uuid:n.vf_uuid,version:n.VFVersion,target_aic_uuid:n.TargetAic,ecomp_release:n.ECOMPRelease};d.updateVfs(a,n.vf_uuid).then(function(a){200===a.status&&b.close(a.status)})["catch"](function(a){i.error(a),f.setToast(a.status+": Error changing progress!","danger")})},n.update_deployment_target=function(){n.dtversion.uuid!=n.selected_dt_uuid&&(angular.forEach(n.dt_AIC_versions,function(a,b){a.uuid===n.selected_dt_uuid&&(n.dtversion=a)}),d.updateDeployTargets(n.engagement.uuid,n.selected_dt_uuid).then(function(b){a.ice.loader.show=!1})["catch"](function(b){a.ice.loader.show=!1,i.error(b)}),n.set_edit_mode("aic"))},n.update_ECOMP_release=function(){n.ecomp_release.uuid!=n.selected_ecomp_uuid&&(j.each(n.ECOMPReleases,function(a,b){a.uuid===n.selected_ecomp_uuid&&(n.ecomp_release=a)}),d.updateECOMPReleases(n.engagement.uuid,n.selected_ecomp_uuid).then(function(b){a.ice.loader.show=!1})["catch"](function(b){a.ice.loader.show=!1,i.error(b)}),n.set_edit_mode("ecomp"))},o()}angular.module("ice.modals").controller("validationDetailsModalController",["$rootScope","$uibModalInstance","vfcService","vfService","$stateParams","toastService","vf_uuid","usersService","$log","_",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g){var h=this,i=function(){void 0!=c.engagement&&(h.vf=c.engagement.vf),j()};h.closeModal=function(){b.close()},h.json="",h.submitForm=function(){var a={name:h.json,vf_uuid:f};d.add(a).then(function(a){b.close(a.status)})["catch"](function(a){g.error(a),e.setToast(a.status+": Error changing progress!","danger")})};var j=function(){a.ice.loader.show=!0,d.get().then(function(b){a.ice.loader.show=!1,200===b.status&&(h.dtsites=b.data)})["catch"](function(b){a.ice.loader.show=!1,g.error(b)})};i()}angular.module("ice.modals").controller("detailedViewDtsitesModalController",["$rootScope","$uibModalInstance","$stateParams","dtsiteService","toastService","vf_uuid","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g){var h=this,i=function(){h.description=null,h.checklist_name=f.name,h.state=f.state,h.action=e,h.modalText="pending"==h.state?"Are you sure you want to move the checklist state to Automation?":"Please use the button below to either approve or reject the checklist.<br>You can also add a log entry comment."};h.submitForm=function(e){var i={};null!=h.description?i.description=h.description:i.description="",e===!0?i.decline="False":i.decline="True",c.setState(f.uuid,i).then(function(c){200===c.status?(b.close(c.data),h.closeModal()):(d.setToast(c.error,"danger"),a.ice.loader.show=!1)})["catch"](function(a){g.error(a),d.setToast(a.status+": Error changing progress!","danger")})},h.closeModal=function(){b.close()},i()}angular.module("ice.modals").controller("stateDecisionModalController",["$rootScope","$uibModalInstance","checklistService","toastService","action","checklist","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g){var h=this,i=function(){h.engagement_uuid=d,h.action=e,"edit"==e?c.get(d).then(function(a){200===a.status?(h.status=a.data,h.status_modal_description=h.status.description,h.eng_status_uuid=h.status.uuid):g.error(a)})["catch"](function(a){h.status=!1,g.error(a.message)}):h.status_modal_description=""};i(),h.submitForm=function(){var d={description:h.status_modal_description};"edit"==e?(d.eng_status_uuid=h.eng_status_uuid,c.update(h.engagement_uuid,d).then(function(c){200===c.status?(b.close(c.data),h.closeModal()):(f.setToast(c.error,"danger"),a.ice.loader.show=!1)})["catch"](function(a){f.setToast(a.message,"danger"),g.error(a.message)})):c.add(h.engagement_uuid,d).then(function(c){200===c.status?(b.close(c.data),h.closeModal()):(f.setToast(c.error,"danger"),a.ice.loader.show=!1)})["catch"](function(a){f.setToast(a.message,"danger"),g.error(a.message)})},h.closeModal=function(){b.close()}}angular.module("ice.modals").controller("StatusModalController",["$rootScope","$uibModalInstance","statusService","engagement_uuid","action","toastService","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f){var g=this,h=function(){g.action=d,g.feedback_modal_description=""};h(),g.submitForm=function(){var h={description:g.feedback_modal_description};"add"==d&&c.add(h).then(function(c){200===c.status?(b.close(c.data),e.setToast("Feedback was sent successfully.","success")):(e.setToast(c.error,"danger"),a.ice.loader.show=!1)})["catch"](function(a){e.setToast(a.message,"danger"),f.error(a.message)})},g.closeModal=function(){b.close()}}angular.module("ice.modals").controller("FeedbackModalController",["$rootScope","$uibModalInstance","feedbackService","action","toastService","$log",a])}(),function(){"use strict";function a(a,b){var c=this,d=function(){b&&(c.upper_headline=b.upper_headline,c.upper_headline_value=b.upper_headline_value,c.headline=b.headline||"D2ICE",c.message=b.message||"Are you sure?",c.closeCallback=b.closeCallback,c.approveText=b.approve||"Approve",c.cancelText=b.cancel||"Cancel",c.is_close_modal_button=b.is_close_modal_button,c.is_message=b.is_message)};c.closeModal=function(b){c.closeCallback&&c.closeCallback(b),a.close(b)},d()}angular.module("ice.modals").controller("generalPromptModalController",["$uibModalInstance","modalDetails",a])}(),function(){"use strict";function a(a,b){var c=this,d=function(){b&&(c.headline=b.headline||"General log modal",c.body=b.body||"There is no body")};d(),c.closeModal=function(){a.close()}}angular.module("ice.modals").controller("GeneralLogModalController",["$uibModalInstance","modalDetails",a])}(),function(){"use strict";function a(a,b,c,d){function e(){var a=5,c="";b.getPosts(a,c,["Announcement","News"]).then(function(a){f.recentPosts=a.data})["catch"](function(a){d.error(a)})}var f=this,g=function(){c?f.post=c:b.getLastAnnouncementPost().then(function(a){a&&a.data&&1===a.data.length&&(f.post=a.data[0])})["catch"](function(a){d.error(a)}),e()};f.closeModal=function(b){a.close(b)},f.loadSelectedPostData=function(a){a&&(f.post=a)},g()}angular.module("ice.modals").controller("cmsPostModalController",["$uibModalInstance","cmsService","post","$log",a])}(),function(){"use strict";function a(a,b){var c=this,d=function(){b&&(c.engagement=b)};c.closeModal=function(){a.dismiss()},c.archiveEngagement=function(){a.close(c.reason)},d()}angular.module("ice.modals").controller("archiveEngagementModalController",["$uibModalInstance","engagementDetails",a])}(),function(){"use strict";function a(a,b,c,d,e,f){var g=this;g.show_warning=!1;var h=function(){d.getEngagementLeads().then(function(a){g.engagementLeads=e.filter(a.data,function(a){return a.uuid}),g.selectedUserUuid=e.find(g.engagementLeads,["uuid",c])})["catch"](function(a){f.error(a),g.closeModal()})};g.closeModal=function(){a.dismiss()},g.onUserSelect=function(){g.selectedUserUuid&&a.close(g.selectedUserUuid)},h()}angular.module("ice.modals").controller("selectELModalController",["$uibModalInstance","excludeUuids","selectedOption","usersService","_","$log",a])}(),function(){"use strict";function a(a,b){var c=this,d=function(){c.engagement=b,e()};c.closeModal=function(){a.dismiss()},c.updateEngagement=function(){e(),a.close({engagement:c.engagement,status:c.status})};var e=function(){c.engagement.target_completion_date&&(c.engagement.target_completion_date=new Date(c.engagement.target_completion_date)),c.engagement.heat_validated_time&&(c.engagement.heat_validated_time=new Date(c.engagement.heat_validated_time)),c.engagement.image_scan_time&&(c.engagement.image_scan_time=new Date(c.engagement.image_scan_time)),c.engagement.aic_instantiation_time&&(c.engagement.aic_instantiation_time=new Date(c.engagement.aic_instantiation_time)),c.engagement.asdc_onboarding_time&&(c.engagement.asdc_onboarding_time=new Date(c.engagement.asdc_onboarding_time))};d()}angular.module("ice.modals").controller("updateEngagementStatusModalController",["$uibModalInstance","engagement",a])}(),function(){"use strict";function a(a,b){}angular.module("ice.main",[]).controller("MainController",a).config(["$mdDateLocaleProvider",function(a){a.formatDate=function(a){return a?moment(a).format("MMMM Do YYYY"):""},a.parseDate=function(a){var b=moment(a,"YYYY-MM-DD",!0);return b.isValid()?b.toDate():new Date(NaN)}}]),a.$inject=["$scope","$rootScope"]}(),function(){"use strict";function a(a){a.state("app.dashboard",{"abstract":!0,views:{"navigation@app":{templateUrl:"core/navigation/layouts/horizontal-navigation/navigation.html",controller:"NavigationController as vm"}},bodyClass:"dashboard"}).state("app.dashboard.dashboard",{url:"/dashboard/dashboard",views:{"content@app":{templateUrl:"main/dashboard/dashboard/dashboard.html",controller:"DashboardMainController as vm"}},params:{engagement_uuid:null,engagement:null,messagePass:null},bodyClass:"dashboard"}).state("app.dashboard.overview",{url:"/dashboard/overview",views:{"content@app":{templateUrl:"main/dashboard/overview/overview.html",controller:"OverviewMainController as vm"}},params:{engagement_uuid:null,engagement:null,messagePass:null},bodyClass:"dashboard"}).state("app.dashboard.detailedview",{url:"/dashboard/detailedview",views:{"content@app":{templateUrl:"main/dashboard/detailed-view/detailed-view.html",controller:"detailedViewController as vm"}},params:{engagement_uuid:null,engagement:null},bodyClass:"dashboard"}).state("app.dashboard.checklist",{url:"/dashboard/checklist",views:{"content@app":{templateUrl:"main/dashboard/checklist/checklist.html",controller:"DashboardChecklistController as vm"}},params:{engagement_uuid:null,sub_id:null,engagement:null},bodyClass:"dashboard"})}angular.module("ice.dashboard.main",["ice.dashboard.get-started-modal"]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i,j,k,l,m,n){var o=this;o.sortableOptions={handle:" .order-nextstep",axis:"y",update:function(a,b){f.order_next_steps(o.engagement.uuid,o.steps).then(function(a){200===a.status&&n.debug("updated")})["catch"](function(a){n.error(a)})}};var p=function(){k.setAnnouncementToast(),b.timeGapLocal=moment().format("z"),b.ampm=moment().format("A"),b.mom=moment().tz(moment.tz.guess()).format("z"),o.engagement=d.engagement,void 0!=o.engagement&&(o.me=h.getUserData(),g.getSingleEngagement(o.me.uuid,o.engagement.uuid).then(function(a){b.ice.loader.show=!1,200===a.status&&a.data&&""!==a.data&&(o.vf=a.data,o.is_service_provider_internal=o.vf.is_service_provider_internal,o.name=o.vf.name,o.manual_id=o.vf.engagement.engagement_manual_id,o.vf.git_repo_url&&-1!=o.vf.git_repo_url?o.git_repo_url=o.vf.git_repo_url:o.git_repo_url=!1,o.storage_bucket_url=o.manual_id+"_"+o.name.toLowerCase(),o.team=o.vf.engagement.engagement_team,o.me=h.getUserData(),o.stages=i.stages,o.stage=o.vf.engagement.engagement_stage,o.stage_num=0,o.set_stage_num(o.stage),o.in_overview_page=!0,o.uuid=o.engagement.uuid,o.progress=o.vf.engagement.progress,o.completion_date=o.vf.engagement.target_completion_date,o.starred=!1,o.isEngagmentLead=h.isUserInRole("el"),o.isEngagementEL=h.isEngagementEL(o.team),o.isAdmin=h.isAdmin(o.me),o.does_user_role_allow_action_array=[o.isAdmin,o.isEngagementEL],o.unremoveable_users_from_eng_team_array=[o.vf.engagement.reviewer.uuid,o.vf.engagement.peer_reviewer.uuid,o.vf.engagement.creator.uuid],null!=o.vf.engagement.contact_user&&o.unremoveable_users_from_eng_team_array.push(o.vf.engagement.contact_user.uuid),o.states=i.states,o.states_select=s(i.states),o.selected_state_filter=t(),o.steps=[],o.vf_name=o.vf.name,o.vf.engagement.starred_engagement.forEach(function(a){o.me.uuid==a.uuid&&(o.starred=!0)}),o.all_states=!1,o.all_files=!0,q(),o.initActivityLogs(),o.files=o.vf.files,o.files_filter_options=[],o.files_filter_options=o.files_filter_options.concat(o.files),o.files_filter_options.push("Any file"),o.chosen_files_filter=["Any file"],o.show_step=!0,o.status=!1,e.get(o.uuid).then(function(a){200===a.status?o.status=a.data:n.error(a)})["catch"](function(a){o.status=!1,n.error(a.message)}),o.progress_needed_data=u())})["catch"](function(a){b.ice.loader.show=!1,n.error(a)}))};o.set_stage_num=function(a){switch(a){case"Intake":o.stage_num=1;break;case"Active":o.stage_num=2;break;case"Validated":o.stage_num=3;break;case"Completed":o.stage_num=4}},o.checkIfAdmin=function(a){return h.isAdmin(a)},o.is_user_allowed=function(){return 1==c.includes(o.does_user_role_allow_action_array,!0)?!0:!1},o.is_able_to_delete=function(a){return!o.is_user_allowed()||c.includes(o.unremoveable_users_from_eng_team_array,a.uuid)||o.checkIfAdmin(a)?!1:!0},o.remove_user_from_eng=function(a){if(!o.is_able_to_delete(a))return l.setToast("Action is not allowed.","danger"),void(b.ice.loader.show=!1);var c=j.open({templateUrl:"main/modals/general-prompt-modal/general-prompt-modal.html",controller:"generalPromptModalController",controllerAs:"vm",resolve:{modalDetails:function(){return{upper_headline:"Remove user from engagement team: ",upper_headline_value:a.full_name,headline:"Are you sure you would like to remove the user out of the team members?",is_message:!1,message:"",approve:"Yes",cancelText:"No",is_close_modal_button:!0}}}});angular.element("body").click(),c.result.then(function(c){if(c){var d={eng_uuid:o.vf.engagement.uuid,user_uuid:a.uuid};g.remove_user_from_eng(d).then(function(a){b.ice.loader.show=!1,204===a.status&&b.$broadcast("onUpdateEngagements",{select:{uuid:o.engagement.uuid,page_type:"overview",sub_id:void 0}})})["catch"](function(a){b.ice.loader.show=!1,n.error(a)})}})},a.is_match_both_filters=function(){return function(a){var b=!1;return o.all_files&&o.all_states?b=!0:o.all_states&&o.is_contain_files(a)?b=!0:o.all_files&&o.is_same_state(a.state)?b=!0:o.is_contain_files(a)&&o.is_same_state(a.state)&&(b=!0),b?a:!1}},o.is_all_files=function(){o.all_files=-1!==o.chosen_files_filter.indexOf("Any file")},o.is_contain_files=function(a){if(a.files)for(var b=0;b<a.files.length;b++)if(-1!==o.chosen_files_filter.indexOf(a.files[b]))return!0;return!1},o.is_same_state=function(a){return-1!==o.selected_state_filter.indexOf(a)},o.update_next_steps_choice=function(){-1!==o.selected_state_filter.indexOf("All")?o.all_states=!0:o.all_states=!1},o.editStatus=function(){var a=j.open({templateUrl:"main/modals/status/status.html",controller:"StatusModalController",controllerAs:"vm",size:"lg",resolve:{engagement_uuid:function(){return o.engagement.uuid},action:function(){return"edit"}}});a.result.then(function(a){a&&(o.status=a)},function(){n.debug("Modal dismissed at: "+new Date)})},o.addStatus=function(){var a=j.open({templateUrl:"main/modals/status/status.html",controller:"StatusModalController",controllerAs:"vm",size:"lg",resolve:{engagement_uuid:function(){return o.engagement.uuid},action:function(){return"add"}}});a.result.then(function(a){a&&(o.status=a)},function(){n.debug("Modal dismissed at: "+new Date)})},o.deleteStep=function(a){var b=j.open({templateUrl:"main/modals/general-prompt-modal/general-prompt-modal.html",controller:"generalPromptModalController",controllerAs:"vm",resolve:{modalDetails:function(){return{headline:"Delete Step",is_message:!0,message:"Are you sure you want to delete this step?",approve:"Delete Step",is_close_modal_button:!0}}}});b.result.then(function(b){b&&f["delete"](a).then(function(a){204===a.status&&(q(),initActivityLogs())})["catch"](function(a){n.error(a)})})},o.editStep=function(a){var b=j.open({templateUrl:"main/modals/next-steps/next-steps.html",controller:"NextStepsModalController",controllerAs:"vm",size:"lg",resolve:{engagement_team:function(){return o.team},title:function(){return o.engagement.name},associated_files:function(){return o.files},engagement_uuid:function(){return o.engagement.uuid},checklist:function(){return void 0},nextstep:function(){return a}}});b.result.then(function(a){a&&q()},function(){n.debug("Modal dismissed at: "+new Date)})},o.addStep=function(){var a=j.open({templateUrl:"main/modals/next-steps/next-steps.html",controller:"NextStepsModalController",controllerAs:"vm",size:"lg",resolve:{engagement_team:function(){return o.team},title:function(){return o.engagement.name},associated_files:function(){return o.files},engagement_uuid:function(){return o.engagement.uuid},checklist:function(){return void 0},nextstep:function(){return void 0}}});a.result.then(function(a){a&&(a.forEach(function(a){a.creator=o.me,o.steps.push(a)}),q())},function(){n.debug("Modal dismissed at: "+new Date)})},b.$on("onUpdateNextSteps",function(a,b){return b.eng_uuid&&b.stage?(o.uuid=b.eng_uuid,o.stage=b.stage,void q()):void n.error("onUpdateNextStep expecting args")}),o.starEngagement=function(){g.putStarredEngagements(o.engagement.uuid).then(function(a){b.ice.loader.show=!1,200===a.status&&a.data&&""!==a.data&&(1==o.starred?o.starred=!1:o.starred=!0,b.$broadcast("onUpdateEngagements",{select:{uuid:o.engagement.uuid,page_type:"overview",sub_id:void 0}}))})["catch"](function(a){b.ice.loader.show=!1,n.error(a)})},o.updateStep=function(a,b){var c={state:b};f.update(a,c).then(function(b){if(200===b.status){var c=r(a);c&&(q(),o.initActivityLogs())}})["catch"](function(a){n.error(a)})},o.toggleCompleted=function(a){var b=r(a);b&&(b.state==o.states.incomplete?o.updateStep(a,i.states.completed):b.state==o.states.completed&&o.updateStep(a,i.states.incomplete))},o.updateProgress=function(a){a&&a.progress?o.progress=a.progress:a&&a.target_date&&(o.completion_date=a.target_date,o.target_completion_date=a.target_date)},o.addPeople=function(){var a={user:o.me,eng_uuid:o.engagement.uuid,is_service_provider_internal:o.is_service_provider_internal,requiredStep:"inviteMembers"};b.$broadcast("openGettingStartedWizard",a)};var q=function(){b.ice.loader.show=!0,f.get(o.uuid,o.stage).then(function(a){b.ice.loader.show=!1,200===a.status&&(o.steps=[],a.data.forEach(function(a){o.steps.push(a)}))})["catch"](function(a){b.ice.loader.show=!1,n.error(a)})};o.initActivityLogs=function(){b.ice.loader.show=!0,g.getActivities(o.uuid).then(function(a){b.ice.loader.show=!1,200===a.status&&(o.activities=a.data)})["catch"](function(a){b.ice.loader.show=!1,n.error(a)})};var r=function(a){var b;return o.steps&&o.steps.forEach(function(c){c.uuid===a&&(b=c)}),b},s=function(a){var b=[];for(var c in a)b.push(a[c]);return b},t=function(){var a=[];return a.push("Incomplete"),a},u=function(){var a={enable_edit:(o.isEngagementEL||o.isAdmin)&&o.in_overview_page,completion_date:o.vf.engagement.target_completion_date,ecomp_release:o.vf.ecomp_release.name,vnf_version:o.vf.version,aic_version:o.vf.deployment_target.version,aic_instantiation_time:o.vf.engagement.aic_instantiation_time,asdc_onboarding_time:o.vf.engagement.asdc_onboarding_time,heat_validated_time:o.vf.engagement.heat_validated_time,image_scan_time:o.vf.engagement.image_scan_time,engagement_uuid:o.uuid,manual_id:o.manual_id};return a};o.archiveEngagement=function(){var a=j.open({templateUrl:"main/modals/archive-engagement-modal/archive-engagement-modal.html",controller:"archiveEngagementModalController",controllerAs:"vm",resolve:{engagementDetails:function(){return{manual_id:o.manual_id,name:o.name,engagement:o.engagement}}}});a.result.then(function(a){a&&o.engagement&&o.engagement.uuid?g.archiveEngagement(o.engagement.uuid,a).then(function(){m.go("app.dashboard.dashboard"),l.setToast("Engagement '"+o.engagement.name+"' archived successfully.","success")})["catch"](function(a){l.setToast("Server failed archiving engagement.","danger"),b.ice.loader.show=!1,n.error(a)}):l.setToast("No reason was supplied, therefor engagement cannot be archived.","danger")})},o.changeReviewer=function(){var a=j.open({templateUrl:"main/modals/select-el-modal/select-el-modal.html",controller:"selectELModalController",controllerAs:"vm",resolve:{excludeUuids:function(){return[o.engagement.peer_reviewer_uuid]},selectedOption:function(){return o.engagement.reviewer_uuid}}});a.result.then(function(a){o.engagement&&o.engagement.uuid?a==o.engagement.peer_reviewer_uuid?g.switchEngagementReviewers(o.engagement.uuid,a,o.engagement.reviewer_uuid).then(function(a){o.engagement.reviewer_uuid=a.data.reviewer,o.engagement.peer_reviewer_uuid=a.data.peerreviewer,l.setToast("Reviewer and peer reviewer updated successfully.","success")})["catch"](function(a){l.setToast("Server failed to update engagement reviewers.","danger"),b.ice.loader.show=!1,n.error(a)}):g.updateEngagementReviewer(o.engagement.uuid,a).then(function(a){c.remove(o.team,function(a){return a.uuid===o.engagement.reviewer_uuid}),o.team.push(a.data),o.engagement.reviewer_uuid=a.data.uuid,l.setToast("Reviewer updated successfully.","success")})["catch"](function(a){l.setToast("Server failed to update engagement reviewer.","danger"),b.ice.loader.show=!1,n.error(a)}):l.setToast("Problem occurred while updating reviewer - missing engagement uuid.","danger")})},o.changePeerReviewer=function(){var a=j.open({templateUrl:"main/modals/select-el-modal/select-el-modal.html",controller:"selectELModalController",controllerAs:"vm",resolve:{excludeUuids:function(){return[o.engagement.reviewer_uuid]},selectedOption:function(){return o.engagement.peer_reviewer_uuid}}});a.result.then(function(a){o.engagement&&o.engagement.uuid?a==o.engagement.reviewer_uuid?g.switchEngagementReviewers(o.engagement.uuid,o.engagement.peer_reviewer_uuid,a).then(function(a){o.engagement.reviewer_uuid=a.data.reviewer,o.engagement.peer_reviewer_uuid=a.data.peerreviewer,l.setToast("Peer reviewer and reviewer updated successfully.","success")})["catch"](function(a){l.setToast("Server failed to update engagement reviewers.","danger"),b.ice.loader.show=!1,n.error(a)}):g.updateEngagementPeerReviewer(o.engagement.uuid,a).then(function(a){n.debug("vm.team",o.team),c.remove(o.team,function(a){return a.uuid===o.engagement.peer_reviewer_uuid}),o.team.push(a.data),o.engagement.peer_reviewer_uuid=a.data.uuid,l.setToast("Peer reviewer updated successfully.","success")})["catch"](function(a){l.setToast("Server failed to update engagement peer reviewer.","danger"),b.ice.loader.show=!1,n.error(a)}):l.setToast("Problem occurred while updating peer reviewer - missing engagement uuid.","danger")})},o.updateEngagementStatus=function(){o.vf.engagement.progress=parseInt(o.progress);var a=j.open({templateUrl:"main/modals/update-engagement-status-modal/update-engagement-status-modal.html",controller:"updateEngagementStatusModalController",controllerAs:"vm",resolve:{engagement:function(){return angular.copy(o.vf.engagement)}}});a.result.then(function(a){g.updateEngagement(a.engagement,a.status).then(function(b){o.vf.engagement=a.engagement,o.progress=o.vf.engagement.progress,o.progress_needed_data=u(),o.status=b.data,l.setToast("Engagement status updated successfully.","success")})["catch"](function(a){l.setToast("Server failed to update engagement status.","danger"),b.ice.loader.show=!1,n.error(a)})})},o.changeTargetCompletion=function(){var a=j.open({templateUrl:"main/modals/change-date/change-date.html",controller:"ChangeDateModalController",controllerAs:"vm",resolve:{completionDate:function(){return o.vf.engagement.target_completion_date},engagementUuid:function(){return o.engagement.uuid}}});a.result.then(function(a){a&&(o.completion_date=a.target_date||o.vf.engagement.target_completion_date,o.vf.engagement.target_completion_date=o.completion_date)},function(){n.debug("Modal dismissed at: "+new Date)})},p()}angular.module("ice.dashboard.overview",[]).controller("OverviewMainController",["$scope","$rootScope","_","$stateParams","statusService","stepsService","vfService","usersService","iceConstants","$uibModal","cmsService","toastService","$state","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i,j,k,l){function m(){o.userNextSteps=[],c.getByUser().then(function(a){o.userNextSteps=a.data.data,o.userNextStepsCount=a.data.count})["catch"](function(a){l.error(a)})}function n(){angular.element(document).ready(function(){var a=angular.element(document.querySelector("#dashboard-title"));a&&1===a.length&&a.attr("list-loaded","true")})}var o=this,p=function(){b.setPage("dashboard"),j.setAnnouncementToast(),g.setJson("ice.settings.eng_uuid",void 0),o.stages=f.stages,o.stages.all="All",o.search_keyword="",o.search_stage="All",o.statistic_stage_filter="All",o.current_starting_offset="0",o.num_of_returned_items=0,o.pagination_num_of_objects=8,o.me=o.user=e.getUserData(),o.isAdminRo=e.isUserInRole(f.roles.admin_ro),o.isEngagmentEL=e.isUserInRole(f.roles.el),o.isEngagmentLead=e.isEngagementEL(o.team),o.isAdmin=e.isAdmin(o.me),o.page_num=1,o.searchEngagements(1),o.request_statistics_data(),m()};o.request_statistics_data=function(){d.getEngagements(o.me.uuid).then(function(a){if(200===a.status&&a.data&&""!==a.data){o.enagements_search_list=a.data;var b=void 0,c=0,d=0;o.enagements_search_list.forEach(function(a){"All"==o.statistic_stage_filter?(d++,("Validated"==a.engagement_stage||"Completed"==a.engagement_stage)&&a.vfc.length>1&&(b=a.vfc.split(", ").length,c+=b)):a.engagement_stage==o.statistic_stage_filter&&(d++,a.vfc.length>1&&("Validated"==a.engagement_stage||"Completed"==a.engagement_stage)&&(b=a.vfc.split(", ").length,c+=b))}),o.vfc_num=c,o.eng_num=d}})["catch"](function(b){a.ice.loader.show=!1,l.error(b)})},o.onStageChange=function(){o.page_num=1,o.searchEngagements()},o.onKeywordChange=function(){o.page_num=1,o.searchEngagements()},o.searchEngagements=function(){o.current_starting_offset=(o.page_num-1)*o.pagination_num_of_objects,o.postData={stage:o.search_stage,keyword:o.search_keyword,offset:o.current_starting_offset,limit:o.pagination_num_of_objects},d.getExpandedEngagements(o.postData).then(function(a){200===a.status&&a.data&&""!==a.data&&(o.vf_search_list=a.data.array,o.num_of_returned_items=a.data.num_of_objects,o.vf_search_list.forEach(function(a){var b={enable_edit:!1,completion_date:a.engagement__target_completion_date,ecomp_release:a.ecomp_release__name,vnf_version:a.version,aic_version:a.deployment_target__version,aic_instantiation_time:a.engagement__aic_instantiation_time,asdc_onboarding_time:a.engagement__asdc_onboarding_time,heat_validated_time:a.engagement__heat_validated_time,
+image_scan_time:a.engagement__image_scan_time,engagement_uuid:a.engagement__uuid,manual_id:a.engagement__engagement_manual_id,name:a.vf__name,starred:!1};a.progress_needed_data=b,a.starred_users.forEach(function(b){o.me.uuid==b&&(a.progress_needed_data.starred=!0)})}),o.vf_display_list=o.vf_search_list,n())})["catch"](function(b){a.ice.loader.show=!1,l.error(b)})},o.goToEngagement=function(b){a.$broadcast("searchSelectEngagement",b)},o.exportEngagementCSV=function(){var b=o.search_stage||"",c=o.search_keyword||"";a.ice.loader.show=!0,d.exportEngagementsCSV(b,c).then(function(b){if(b&&b.data){var c=new i([b.data],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});h.saveAs(c,"D2Ice.xlsx"),a.ice.loader.show=!1}})["catch"](function(b){a.ice.loader.show=!1,l.error(b)})},o.openCMSReadMoreModal=function(a){a?k.open({templateUrl:"main/modals/cms-post-modal/cms-post-modal.html",controller:"cmsPostModalController",controllerAs:"vm",size:"cms-post-read-more",resolve:{post:function(){return a}}}):l.warn("Cannot open cms post.")},p()}angular.module("ice.dashboard.dashboard",["angularUtils.directives.dirPagination","ngFileSaver"]).controller("DashboardMainController",["$rootScope","pageService","stepsService","vfService","usersService","iceConstants","localStorageService","FileSaver","Blob","cmsService","$uibModal","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i){var j=this;j.data={};var k=b.engagement_uuid;j.checklistUuid=b.sub_id,j.selected_decision=!1;var l=function(){null!=j.checklistUuid&&d.getChecklist(j.checklistUuid).then(function(a){200===a.status&&(j.data=a.data,j.data.states=e.checklist_states,j.me=f.getUserData(),j.is_peer_reviewer=f.isPeerReviewer(j.me,a.data.checklist.engagement.peer_reviewer.uuid),j.data.checklist.associated_files?j.has_files=!0:j.has_files=!1,j.formatDecisions())})["catch"](function(a){return 410!==a.status?(i.error(a.message),!1):void c.$broadcast("onUpdateEngagements",{select:{uuid:b.engagement_uuid,view_type:"overview",sub_id:void 0}})})};j.formatDecisions=function(){var a=0;j.data.checklistDecisions=_.orderBy(j.data.checklistDecisions,"weight"),angular.forEach(j.data.checklistDecisions,function(b,c){a++,b.counter=a;var d=0;b.decisions=_.orderBy(b.decisions,"weight"),angular.forEach(b.decisions,function(b,e){d++,b.counter=a+"."+d,0==j.selected_decision&&(j.selected_decision=b,j.selectDecision(b));var f;switch(j.data.checklist.state){case"peer_review":f=b.peer_review_value;break;case"review":case"approval":case"handoff":case"closed":f=b.review_value}var g;switch(f){case"approved":g="sprite approved-cl";break;case"denied":g="sprite denied-cl";break;case"not_relevant":g="sprite not-relevant-cl"}var h;switch(b.lineitem.line_type){case"auto":h="sprite automation-state"}j.data.checklistDecisions[c].decisions[e]["selected-value"]=f,j.data.checklistDecisions[c].decisions[e].view_value=f,j.data.checklistDecisions[c].decisions[e].view_value_css=g,j.data.checklistDecisions[c].decisions[e].auto_icon_css=h})}),j.refreshStateOptions()},j.setDecision=function(a,b){d.putChecklistDecision(a.uuid,{value:b}).then(function(c){if(200===c.status){switch(j.data.checklist.state){case"peer_review":a.peer_review_value=b;break;case"review":a.review_value=b}j.formatDecisions()}})},j.refreshStateOptions=function(){var a=!1;j.is_able_to_approve=!0,angular.forEach(j.data.checklistDecisions,function(b,c){a||angular.forEach(b.decisions,function(b,c){a||"approved"!=b.view_value&&"not_relevant"!=b.view_value&&(j.is_able_to_approve=!1,a=!0)})})},j.stateAction=function(a){switch(a){case"approve":var b={};b.description="",b.decline="False",d.setState(j.data.checklist.uuid,b).then(function(a){200===a.status?c.$broadcast("onUpdateEngagements",{select:{uuid:k,page_type:"overview",sub_id:j.data.checklist.uuid}}):(h.setToast(a.error,"danger"),c.ice.loader.show=!1)})["catch"](function(a){i.error(a),h.setToast(a.status+": Error changing progress!","danger")});break;case"reject":j.openSetState(a,j.data.checklist);break;case"next_step":j.openNextSteps(j.data.checklist)}},j.formatDate=function(a){var b=moment().tz(moment.tz.guess()).format("z"),c="";return c=moment(a).local().format("YYYY-MM-DD hh:mm:ss A")+" "+b},j.submitDecisionAuditLog=function(){var a={description:j.selected_decision.new_audit_log_description};d.createAuditlogDecisionChecklist(j.selected_decision.uuid,a).then(function(a){200===a.status?(void 0==j.data.decisionAuditLogs[j.selected_decision.uuid]&&(j.data.decisionAuditLogs[j.selected_decision.uuid]=[]),j.data.decisionAuditLogs[j.selected_decision.uuid].push(a.data),j.selected_decision.new_audit_log_description=""):(h.setToast(a.error,"danger"),c.ice.loader.show=!1)})["catch"](function(a){h.setToast(a.message,"danger"),i.error(a.message)})},j.selectDecision=function(b,c){(j.selected_decision!=b||void 0===j.selected_decision.selected)&&(j.selected_decision.selected=!1,j.selected_decision=b,j.selected_decision.selected=!0,a.$$postDigest(function(){if(void 0!=c){var a=angular.element(c.target).prop("offsetHeight")+angular.element(c.target).prop("offsetTop"),b=angular.element("#line-item-extended").prop("offsetHeight"),d=a-b;d>0?angular.element("#line-item-extended").css("margin-top",20+d+"px"):angular.element("#line-item-extended").css("margin-top","")}}))},j.openNextSteps=function(a){var b=g.open({templateUrl:"main/modals/next-steps/next-steps.html",controller:"NextStepsModalController",controllerAs:"vm",size:"lg",resolve:{engagement_team:function(){return a.engagement.engagement_team},title:function(){return a.name},associated_files:function(){return a.repo_associated_files},engagement_uuid:function(){return a.engagement.uuid},checklist:function(){return a},nextstep:function(){return void 0}}});b.result.then(function(b){200===b&&c.$broadcast("onUpdateEngagements",{select:{uuid:k,page_type:"overview",sub_id:a.uuid}})},function(){})},j.openSetState=function(a,b){var d=g.open({templateUrl:"main/modals/checklist/state-approve-or-reject/state-approve-or-reject.html",controller:"stateDecisionModalController",controllerAs:"vm",resolve:{checklist:function(){return b},action:function(){return a}}});d.result.then(function(a){a&&c.$broadcast("onUpdateEngagements",{select:{uuid:k,page_type:"overview",sub_id:b.uuid}})},function(){})},j.openJenkinsLogModal=function(){g.open({templateUrl:"main/modals/general-log-modal/general-log-modal.html",controller:"GeneralLogModalController",controllerAs:"vm",size:"general-log-modal",resolve:{modalDetails:function(){return{headline:"Jenkins log",body:j.data.checklist.jenkins_log}}}})},j.auditLog=function(){var a={name:j.data.checklist.name,uuid:j.data.checklist.uuid,checklistAuditLogs:j.data.checklistAuditLogs},b=g.open({templateUrl:"main/modals/audit-log/audit-log.html",controller:"AuditLogModalController",controllerAs:"vm",size:"lg",resolve:{wizardData:function(){return a}}});b.result.then(function(a){a&&j.data.checklistAuditLogs.push(a)},function(){i.debug("Modal dismissed at: "+new Date)})},j.editChecklist=function(){var a={uuid:j.data.checklist.uuid,name:j.data.checklist.name,templates:j.data.checklist.templates,selectedTemplateUuid:j.data.checklist.template.uuid,selectedTemplateName:j.data.checklist.template.name,associatedFiles:j.data.checklist.associated_files,state:j.data.checklist.state},b=g.open({templateUrl:"main/modals/checklist/checklist.html",controller:"ChecklistModalController",controllerAs:"vm",size:"lg",resolve:{wizardData:function(){return a},engagementUuid:function(){return k},modal_type:function(){return"update"}}});b.result.then(function(a){a&&(j.data.checklist.name=a.checklist_name,j.data.checklist.associated_files=a.associated_files)})},l()}angular.module("ice.dashboard.checklist",[]).controller("DashboardChecklistController",["$scope","$stateParams","$rootScope","checklistService","iceConstants","usersService","$uibModal","toastService","$log",a])}(),function(){"use strict";angular.module("ice.dashboard.get-started-modal",["ngAnimate","ui.bootstrap","ice.activation.addVf"])}(),function(){"use strict";angular.module("ice.dashboard.get-started-modal").directive("getStartedModal",function(){return{restrict:"AEC",scope:{},link:function(a,b,c){a.$emit("openGettingStartedWizardLoaded")},controller:["$rootScope","$scope","$uibModal","toastService","$log",function(a,b,c,d,e){var f=this;f.data={},f.openModal=function(){d.clearToast();c.open({templateUrl:"main/dashboard/get-started-modal/wizard/wizard-container.html",controller:"ModalCtrl",controllerAs:"wizard",resolve:{wizardData:function(){return f.wizardData}},backdrop:"static"})},b.$on("openGettingStartedWizard",function(a,b){f.wizardData=b,f.openModal()})}],controllerAs:"gm"}}).controller("ModalCtrl",["$rootScope","$scope","$uibModalInstance","vfService","usersService","localStorageService","wizardData","toastService","$log","$i18next",function(a,b,c,d,e,f,g,h,i,j){function k(){if(a.ice.loader.show=!0,g.showActivationMessage&&h.setToast("You have successfully activated your account!","success",{displayFor:"modal"}),m.stepIndex=0,m.requiredStep)return m.steps.push(o[m.requiredStep]),m.setStep(m.steps[m.stepIndex]),void(a.ice.loader.show=!1);m.eng_uuid&&""!==m.eng_uuid||m.steps.push(o.addVF),m.user.is_service_provider_contact!==!0||m.is_service_provider_internal?m.user.is_service_provider_contact||m.steps.push(o.addSponsor):m.steps.push(o.addVendor),l(),m.steps.push(o.inviteMembers);var b=e.getUserData()||{},c=b.ssh_public_key;""!==m.user.ssh_public_key&&null!==m.user.ssh_public_key||""!==c&&null!==c||m.steps.push(o.addSSH),a.ice.loader.show=!1,m.setStep(m.steps[m.stepIndex])}function l(){d.getCompanies().then(function(a){if(200===a.status&&(m.companies=a.data,void 0!=m.companies))for(var b=0;b<m.companies.length;b++)if("AT&T"==m.companies[b].name){m.data.attCompanyUuid=m.companies[b].uuid;break}})["catch"](function(a){i.error(a)})}var m=this;m.steps=[],m.data={},m.user=g.user,m.is_service_provider_internal=g.is_service_provider_internal,m.eng_uuid=g.eng_uuid,m.requiredStep=g.requiredStep;var n=j.t("serviceProvider.name"),o={addVF:{name:"addVF",title:"Add a VF"},addSponsor:{name:"addContact",title:"Add "+n+" Sponsor",mode:"sponsor",submitButton:"Add "+n+" Sponsor"},addVendor:{name:"addContact",title:"Add Vendor Contact",mode:"vendor",submitButton:"Add Vendor Cotact"},inviteMembers:{name:"inviteMembers",title:"Invite Team Members"},addSSH:{name:"addSSH",title:"Add SSH Key"}};m.setStep=function(a){m.currentStep=a,m.title=a.title,a.completed=!0},k(),m.getCurrentStep=function(){return m.currentStep.name},m.nextStep=function(){return m.clearMessage(),m.stepIndex++,m.stepIndex===m.steps.length?void m.closeWizard():void m.setStep(m.steps[m.stepIndex])},m.closeWizard=function(){m.clearMessage(),c.close()},m.clearMessage=function(){h.clearToast()},m.onAddContactSubmit=function(){a.ice.loader.show=!0,m.data.addContact.eng_uuid=m.eng_uuid,m.user.is_main_vendor_contact!==!0||m.is_service_provider_internal?m.user.is_main_vendor_contact||(m.data.addContact.company=m.data.attCompanyUuid):m.data.addContact.company=m.data.addContact.company,e.addVendorContact(m.data.addContact).then(function(b){200===b.status&&(a.ice.loader.show=!1,m.nextStep())},function(b){h.setToast(b.message,"danger",{displayFor:"modal"}),i.error(b.message),a.ice.loader.show=!1})["catch"](function(b){m.Msg=b.status+" : "+b.statusText,m.bgColor="#FFEBEB",i.error(b),a.ice.loader.show=!1})},m.onInviteSubmit=function(){a.ice.loader.show=!0;var b=[];angular.forEach(m.inviteMembers.choices,function(a,c){m.item=[];var d=new Object;d.email=a.email,d.eng_uuid=m.eng_uuid,b.push(d)}),d.inviteMembers(JSON.stringify(b)).then(function(b){200===b.status&&m.nextStep(),a.ice.loader.show=!1})["catch"](function(b){h.setToast(b.message.detail,"danger",{displayFor:"modal"}),a.ice.loader.show=!1,i.error(b.message)})},m.inviteMembers={choices:[{email:"",eng_uuid:""}]},m.addNewChoice=function(){var a=m.inviteMembers.choices.length+1;m.inviteMembers.choices.push({id:a})},m.removeChoice=function(){var a=m.inviteMembers.choices.length-1;m.inviteMembers.choices.splice(a)},m.onAddSSHSubmit=function(){a.ice.loader.show=!0,e.setSSHKey(m.user.uuid,m.data.addSSH).then(function(c){200===c.status&&(e.getIceUser().then(function(c){200===c.status&&c.data&&""!==c.data&&(m.user=c.data,a.ice.loader.show=!1,b.$emit("onUpdateEngagements"))}),m.nextStep())})["catch"](function(b){h.setToast(b.message.detail,"danger",{displayFor:"modal"}),a.ice.loader.show=!1,i.error(b.message.detail)})},b.$on("moveWizardNextStep",function(a,b){m.is_service_provider_internal=b.is_service_provider_internal,m.eng_uuid=b.engagement.uuid,m.nextStep()})}])}(),function(){"use strict";function a(a){a.state("app.welcome",{url:"/",views:{"main@":{templateUrl:"welcome/welcome.html",controller:"WelcomeController as vm"}},params:{},bodyClass:"welcome-body"})}angular.module("ice.welcome",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c){var d=function(){};d()}angular.module("ice.welcome").controller("WelcomeController",["$state","$location","localStorageService",a])}(),function(){"use strict";function a(a){a.state("app.login",{url:"/login{engagement_uuid: (?:/[^/]+)?}",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"main/activation/login/login.html",controller:"LoginController as vm"}},params:{message:null,activation_success:void 0},bodyClass:"login"})}angular.module("ice.activation.login",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e,f,g){var h=this;h.data={},d.headerTitle="Login",d.headerSubTitle="Please use the form below to login",b.resetUserData();var i="";a.params.message&&(f.setToast(a.params.message,"danger"),c.warn(a.params.message)),void 0!=e.search().t&&(i="token"+e.search().t),h.data.invitation=e.search().invitation,h.submitForm=function(){d.ice.loader.show=!0,b.login(JSON.stringify(h.data),i).then(function(c){if(200===c.status)if(d.ice.loader.show=!1,b.setUserActivationSuccess(a.params.activation_success),void 0!=c.data.isResetPwdFlow&&1==c.data.isResetPwdFlow)a.go("app.updatePassword");else{var e=a.params.engagement_uuid;void 0!=c.data.eng_uuid&&(e=c.data.eng_uuid),e?(e=e.replace("/",""),a.go("app.dashboard.overview",{engagement_uuid:e})):a.go("app.dashboard.dashboard")}})["catch"](function(b){b&&b.message&&b.message.detail?f.setToast(b.message.detail,"danger"):f.setToast(b.message,"danger"),d.ice.loader.show=!1,c.error(b.message),403===b.status&&(c.error("User is not active, redirecting to resend_activation page"),a.go("app.resend_activation",{message:"Please activate your account first"})),302===b.status&&(c.error("Temporary password has expired, redirecting to reset_password page"),a.go("app.resetPassword",{message:"Your temporary password has expired, please generate a new one"}))})}}angular.module("ice.activation.login").controller("LoginController",["$state","usersService","$log","$rootScope","$location","toastService","$stateParams",a])}(),function(){"use strict";function a(a){a.state("app.activateUser",{url:"/activate/:userID/:token",views:{"main@":{templateUrl:"main/activation/activate/activateUser.html",controller:"ActivateUserController as vm"}},params:{}})}angular.module("ice.activation.activateUser",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d){var e=function(){b.activateUser(d.userID,d.token).then(function(b){a.go("app.login",{activation_success:b.data.activation_success,engagement_uuid:b.data.engagement_uuid})})["catch"](function(b){c.error(b),a.go("app.login",{message:b.message.detail})})};e()}angular.module("ice.activation.activateUser").controller("ActivateUserController",["$state","usersService","$log","$stateParams",a])}(),function(){"use strict";function a(a){a.state("app.register",{url:"/signUp",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.register":{templateUrl:"main/activation/register/register.html",controller:"RegisterController as vm"}},bodyClass:"register"})}angular.module("ice.activation.register",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e,f,g,h){var i=this;i.data={};var j=h.t("program.name"),k=function(){e.headerTitle="Sign Up",e.headerSubTitle="Please use the form to Sign Up to "+j,a.resetUserData();var b=c.search().company;i.data.full_name=c.search().full_name,i.data.email=c.search().email,i.data.phone_number=c.search().phone_number,e.ice.loader.show=!0,d.getCompanies().then(function(a){e.ice.loader.show=!1,200===a.status&&(i.vendors=a.data,void 0!=b&&angular.forEach(i.vendors,function(a,c){a.uuid===b&&(i.data.company=a.name)}))})["catch"](function(a){e.ice.loader.show=!1,g.error(a)})};i.submitForm=function(){e.ice.loader.show=!0,1!=i.data.regular_email_updates&&(i.data.regular_email_updates=!1),i.data.inviter_uuid=c.search().inviter_uuid,i.data.eng_uuid=c.search().eng_uuid,i.data.invitation=c.search().invitation,i.data.is_contact_user="true"===c.search().is_contact_user,i.email=c.search().email,a.register(i.data).then(function(a){e.ice.loader.show=!1,200===a.status&&b.go("app.resend_activation")})["catch"](function(a){f.setToast(a.message,"danger"),e.ice.loader.show=!1,g.error(a.message)}),e.PleaseFill=""},k()}angular.module("ice.activation.register").controller("RegisterController",["usersService","$state","$location","vfService","$rootScope","toastService","$log","$i18next",a])}(),function(){"use strict";function a(a){a.state("app.resetPassword",{url:"/resetPassword",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.resetPassword":{templateUrl:"main/activation/resetPassword/resetPassword.html",controller:"ResetPasswordController as vm"}},params:{message:null},bodyClass:"resetPassword"})}angular.module("ice.activation.resetPassword",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e,f){var g=this;g.data={};var h=!0;d.headerTitle="Reset Your Password",d.headerSubTitle="Please follow the instructions below to reset your password",void 0!=a.params.message&&""!=a.params.message&&(c.setToast(a.params.message,"danger"),d.ice.loader.show=!1,f.warn(a.params.message)),g.submitForm=function(){d.ice.loader.show=!0;var a={email:g.data.email};c.clearToast(),b.sendResetPwdInstructions(a).then(function(a){200===a.status?(c.setToast("An email with detailed instructions on how to reset your password was sent to your Email.","success"),h=!1,g.data.email="",d.ice.loader.show=!1):(c.setToast("Error sending reset password instructions email.","danger"),d.ice.loader.show=!1)})["catch"](function(a){c.setToast(a.message,"danger"),d.ice.loader.show=!1,f.error(a.message)})},g.sendMail=function(){e.open("mailto:d2ice@att.com","_self")}}angular.module("ice.activation.resetPassword").controller("ResetPasswordController",["$state","usersService","toastService","$rootScope","$window","$log",a])}(),function(){"use strict";function a(a){a.state("app.updatePassword",{url:"/updatePassword{engagement_uuid: (?:/[^/]+)?}",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.updatePassword":{templateUrl:"main/activation/updatePassword/updatePassword.html",controller:"UpdatePasswordController as vm"}},params:{message:null,messagePass:null},bodyClass:"updatePassword"})}angular.module("ice.activation.updatePassword",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e,f){var g=this;g.data={};var h=!0;d.headerTitle="Update Your Password",d.headerSubTitle="Please follow the instructions below to update your password",g.submitForm=function(){d.ice.loader.show=!0;var c={password:g.data.password,confirm_password:g.data.confirm_password};b.updatePassword(b.getUserData().uuid,c).then(function(b){200===b.status?(e.setToast("Password was updated Successfully!","success"),h=!1,g.data.password="",g.data.confirm_password="",d.ice.loader.show=!1,a.go("app.dashboard.dashboard",{messagePass:"Password was updated Successfully!"})):(e.setToast("Error updating your password.","danger"),d.ice.loader.show=!1)})["catch"](function(a){e.setToast(a.message,"danger"),d.ice.loader.show=!1})},g.sendMail=function(){f.open("mailto:d2ice@att.com","_self")}}angular.module("ice.activation.updatePassword").controller("UpdatePasswordController",["$state","usersService","localStorageService","$rootScope","toastService","$window",a])}(),function(){"use strict";function a(a){a.state("app.addVf",{url:"/addVf",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.addVf":{templateUrl:"main/activation/addVf/addVf.html",controller:"AddVfController as vm"}},bodyClass:"add-vf"})}angular.module("ice.activation.addVf",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,c,d,f,g,h,i,j,k){var l=this;l.data=[],l.isModal=a.isModal,l.user=j.getUserData(),void 0==l.user&&c.go("app.login"),h.headerTitle="Add Virtual Function",h.headerSubTitle="<center>Please use the form below to submit the virtual functions you would like to engage with ICE.<br/>Please do note that each VF will be tracked separately.</center>",!l.isModal&&g.search().activation_success&&f.setToast("You have successfully activated your account","success",{displayFor:"modal"});l.targetLabDate=b(),h.ice.loader.show=!0,d.getDeployTargets().then(function(a){h.ice.loader.show=!1,200===a.status&&(l.deployTargets=a.data)})["catch"](function(a){h.ice.loader.show=!1,k.error(a)}),d.getECOMPReleases().then(function(a){200===a.status&&(l.ECOMPReleases=a.data)})["catch"](function(a){h.ice.loader.show=!1,k.error(a)}),l.choices=[{VirtualFunction:"",TargetLab:"",TargetAic:"",is_service_provider_internal:""}],l.addNewChoice=function(){var a=l.choices.length+1;l.choices.push({id:a})},l.removeChoice=function(a){l.choices.splice(a,1)},l.submitForm=function(){var b,f=[];angular.forEach(l.choices,function(a,c){b=1==a.is_service_provider_internal?"True":"False",l.item=[];var d=new Object;d.virtual_function=a.VirtualFunction;var g=new Date(Date.parse(a.TargetLab+moment().format("z")));d.target_lab_entry_date=g.getFullYear()+"-"+e(g.getMonth()+1)+"-"+e(g.getDate()),d.version=a.VFVersion,d.target_aic_uuid=a.TargetAic,d.ecomp_release=a.ECOMPRelease,d.is_service_provider_internal="True"===b,f.push(d)}),h.ice.loader.show=!0,d.addVfs(JSON.stringify(f)).then(function(b){h.ice.loader.show=!1,200===b.status&&(i.setJson("vfs",b.data),l.isModal?(a.$emit("onUpdateEngagements",{select:{uuid:b.data[0].engagement.uuid,page_type:"overview",sub_id:void 0}}),a.$emit("moveWizardNextStep",b.data[0])):b.data.is_active?c.go("app.dashboard.overview"):c.go("app.resend_activation"))})["catch"](function(a){h.ice.loader.show=!1,k.error(a)})},l.skipAddVf=function(){!l.isModal&&g.search().activation_success?c.go("app.dashboard.overview"):c.go("app.resend_activation")},l.myDate=new Date,l.minDate=new Date(l.myDate.getFullYear(),l.myDate.getMonth(),l.myDate.getDate()),l.maxDate=new Date(l.myDate.getFullYear()+2,l.myDate.getMonth(),l.myDate.getDate())}angular.module("ice.activation.addVf").controller("AddVfController",["$scope","$state","vfService","toastService","$location","$rootScope","localStorageService","usersService","$log",a]).directive("addVf",function(){return{restrict:"AEC",templateUrl:"main/activation/addVf/addVf.html",link:function(a,b,c){},controller:a,controllerAs:"vm",scope:{isModal:"=isModal"}}}),a.$inject=["$scope","$state","vfService","toastService","$location","$rootScope","localStorageService","usersService","$log"];var b=function(){var a,b=[],e=(new Date).getMonth()+1,f=(new Date).getFullYear();for(a=e;12>=a;a++)b.push({val:c(a)+"-"+f,nam:d(a)+" "+f});for(a=1;e>a;a++)b.push({val:c(a)+"-"+(f+1),nam:d(a)+" "+(f+1)});return b},c=function(a){var b=a;return 10>a&&(b="0"+a),b},d=function(a){var b;switch(a){case 1:b="January";break;case 2:b="February";break;case 3:b="March";break;case 4:b="April";break;case 5:b="May";break;case 6:b="June";break;case 7:b="July";break;case 8:b="August";break;case 9:b="September";break;case 10:b="October";break;case 11:b="November";break;case 12:b="December"}return b},e=function(a){return 10>a?"0"+a:a}}(),function(){"use strict";function a(a){a.state("app.addVendorContact",{url:"/addVendorContact",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.addVendorContact":{templateUrl:"main/activation/addVendorContact/addVendorContact.html",controller:"AddVendorContactController as vm"}},bodyClass:"addVendorContact"})}angular.module("ice.activation.addVendorContact",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e){var f=this;f.data={};var g=function(){e.ice.loader.show=!0,e.headerTitle="",e.headerSubTitle="",f.choices=[{VirtualFunction:"",TargetLab:"",TargetAic:"",is_service_provider_internal:""}],b.getCompanies().then(function(a){e.ice.loader.show=!1,200===a.status&&(f.companies=a.data)})["catch"](function(a){e.ice.loader.show=!1,d.error(a)})};f.submitForm=function(){f.data.company=f.data.company.uuid,e.ice.loader.show=!0,c.addVendorContact(f.data).then(function(b){e.ice.loader.show=!1,200===b.status&&(b.data.is_active?a.go("app.dashboard.overview"):a.go("app.resend_activation"))})["catch"](function(a){e.ice.loader.show=!1,f.Msg=response.status+" : "+response.statusText,f.bgColor="#FFEBEB",d.error(a)})},f.addNewChoice=function(){var a=f.choices.length+1;f.choices.push({id:a})},f.removeChoice=function(){var a=f.choices.length-1;f.choices.splice(a)},g()}angular.module("ice.activation.addVendorContact").controller("AddVendorContactController",["$state","vfService","usersService","$log","$rootScope",a])}(),function(){"use strict";function a(a){a.state("app.resend_activation",{url:"/resendActivation",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.resend_activation":{templateUrl:"main/activation/resendActivation/resendActivation.html",controller:"resendActivationController as vm"}},params:{message:null},bodyClass:"resend-activation"})}angular.module("ice.activation.resendActivation",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e){var f=this;f.data=[];var g=function(){c.headerTitle="Activate Your Account",c.headerSubTitle="Please follow the instructions below to activate your account.",d.params.message&&b.setToast(d.params.message,"danger"),f.activated=!1,f.showHideMsg=!1,f.showHideWait=!1};f.submitForm=function(){c.ice.loader.show=!0,a.resendActivationMail().then(function(a){c.ice.loader.show=!1,200===a.status})["catch"](function(a){c.ice.loader.show=!1,e.error(a)})},g()}angular.module("ice.activation.resendActivation").controller("resendActivationController",["usersService","toastService","$rootScope","$state","$log",a])}(),function(){"use strict";function a(a){a.state("app.terms",{url:"/terms",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.terms":{templateUrl:"main/activation/terms/terms.html",controller:"TermsController as vm"}},params:{message:null},bodyClass:"terms"})}angular.module("ice.activation.terms",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a){var b=this;b.data={},a.headerTitle="Terms of Service",a.headerSubTitle="Last updated 2016-06-10"}angular.module("ice.activation.terms").controller("TermsController",["$rootScope",a])}(),function(){"use strict";function a(a){a.state("app.contactus",{url:"/contactUs",views:{"main@":{templateUrl:"core/layouts/full-page-with-header/full-page-with-header.html",controller:"MainController as vm"},"content@app.contactus":{templateUrl:"main/activation/contactUs/contactUs.html",controller:"ContactUsController as vm"}},bodyClass:"contact-us"})}angular.module("ice.contactUs",[]).config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a){a.headerTitle="Contact Us",a.headerSubTitle="Please fill in the details below"}angular.module("ice.contactUs").controller("ContactUsController",["$rootScope",a])}(),function(){"use strict";function a(a){a.state("app.account",{url:"/account",views:{"content@app":{templateUrl:"main/dashboard/account/account.html",controller:"DashboardAccountController as vm"},"navigation@app":{templateUrl:"core/navigation/layouts/account-navigation/navigation.html",controller:"accountNavigationController as vm"}},params:{engagement_uuid:null},bodyClass:"account"}).state("app.account.notifications",{url:"/account/notifications",views:{"content@app":{templateUrl:"main/dashboard/account/notifications/notifications.html",controller:"DashboardNotificationsController as vm"}},bodyClass:"notifications"}).state("app.account.userProfile",{url:"/account/userProfile",views:{"content@app":{templateUrl:"main/dashboard/account/user-profile-settings/user-profile-settings.html",controller:"accountUserProfileSettingsController as vm"}},bodyClass:"account"})}angular.module("ice.dashboard.account").config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e,f){var g=this;g.data={};var h=function(){if(g.user=b.getUserData(),void 0==g.user)return void a.go("app.login");var h=g.user.uuid;e.ice.loader.show=!0,b.getIceUser(h).then(function(a){200===a.status?(g.data.full_name=a.data.full_name,g.data.email=a.data.email,g.data.phone_number=a.data.phone_number,g.data.password="",g.data.ssh_key=a.data.ssh_public_key,g.data.company=a.data.company.name,g.data.access_key=a.data.rgwa_access_key,g.data.access_secret="•••••••••••••••",e.ice.loader.show=!1):(f.setToast("Error getting account","danger"),d.error("Error getting account: "+uuid),e.ice.loader.show=!1)})["catch"](function(a){f.setToast(a.message,"danger"),d.error(a.message)}),c.getCompanies().then(function(a){200===a.status&&(g.companies=a.data)})["catch"](function(a){d.error(a.message)})};h(),g.getAccessSecret=function(){b.getRGWASecret().then(function(a){200===a.status?g.data.access_secret=a.data.rgwa_secret_key:(f.setToast("Error getting user's access secret","danger"),d.error("Error getting access secret: "+uuid),e.ice.loader.show=!1)})["catch"](function(a){f.setToast(a.message,"danger"),d.error(a.message)})},g.submitForm=function(){var a=b.getUserData();b.updateAccount(a.uuid,g.data).then(function(a){200===a.status&&f.setToast("Account was updated successfully!","success")})["catch"](function(a){f.setToast(a.message.detail,"danger")})}}angular.module("ice.dashboard.account").controller("DashboardAccountController",["$state","usersService","vfService","$log","$rootScope","toastService",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g){var h=this;h.data={};var i=function(){return b.setPage("notification"),e.timeGapLocal=moment().format("z"),e.ampm=moment().format("A"),e.mom=moment().tz(moment.tz.guess()).format("z"),h.pagination_num_of_objects=10,h.current_starting_offset="0",h.page_num=1,h.user=c.getUserData(),void 0==h.user?void a.go("app.login"):void h.getNotifications(!0)};h.getNotifications=function(a){var b=h.user.uuid;e.ice.loader.show=!0,h.current_starting_offset=(h.page_num-1)*h.pagination_num_of_objects,c.getNotificationsDescription(h.user.uuid,h.current_starting_offset,h.pagination_num_of_objects).then(function(i){200===i.status?(h.notifications=i.data.serilizedActivitySet,h.num_of_returned_items=i.data.num_of_objects,h.notifications_display_list=h.notifications,a&&c.resetNotificationNum(b).then(function(a){200===a.status&&f.$emit("eventClearNotifications",0)})["catch"](function(a){d.setToast(a.message,"danger"),e.ice.loader.show=!1,g.error(a)}),e.ice.loader.show=!1):(d.setToast(i.error,"danger"),
+e.ice.loader.show=!1)})["catch"](function(a){d.setToast(a.message,"danger"),e.ice.loader.show=!1,g.error(a)})},h.delNotification=function(a){for(var b=0,f=0;f<h.notifications.length;f++)if(h.notifications[f].uuid==a){b=f;break}c.notificationsDelete(a).then(function(a){400!=a.status&&h.notifications.splice(b,1)})["catch"](function(a){d.setToast(a.message,"danger"),e.ice.loader.show=!1,g.error(a)})},i()}angular.module("ice.dashboard.account").controller("DashboardNotificationsController",["$state","pageService","usersService","toastService","$rootScope","$scope","$log",a])}(),function(){"use strict";function a(a){function b(a,b,c,d){var e=a.isAdmin(a.getUserData());return e===!0?b.when():(c(function(){d.go("app.login")}),b.reject())}a.state("app.admin",{url:"/admin",views:{"navigation@app":{templateUrl:"core/navigation/layouts/admin-navigation/navigation.html",controller:"adminNavigationController as vm"}},bodyClass:"nav-admin",resolve:{authenticate:b}}).state("app.admin.checklisttemplate",{url:"/admin/checklist-template",views:{"content@app":{templateUrl:"main/admin/checklist-template/checklist-template.html",controller:"checklistTemplateController as vm"}},params:{template_uuid:void 0},bodyClass:"checklist-template"}),b.$inject=["usersService","$q","$timeout","$state"]}angular.module("ice.main.admin").config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e,f,g){var h,i=this,j=function(){d.template_uuid&&(i.inlineEditingElements={},i.wysiwyg_menu=[["bold","italic","strikethrough","underline"],["unordered-list","ordered-list","outdent","indent"]],c.getChecklistTemplate(d.template_uuid).then(function(a){200===a.status&&(i.template=a.data,k(),m(),h=angular.copy(a.data),l())})["catch"](function(a){g.error("got error with getChecklistTemplate")}))};i.switchElementInlineEditing=function(a){i.inlineEditingElements[a]=!i.inlineEditingElements[a]},i.save=function(){var a=f.open({templateUrl:"main/modals/general-prompt-modal/general-prompt-modal.html",controller:"generalPromptModalController",controllerAs:"vm",resolve:{modalDetails:function(){return{upper_headline:"Master Checklist Template: ",upper_headline_value:i.template.name,headline:"Are you done editing?",is_message:!0,message:"Editing a master checklist template will effect all checklists currently created of that type and will also restart the validation for all active engagements",approve:"Yes",cancelText:"No",is_close_modal_button:!1}}}});a.result.then(function(a){a&&c.saveChecklistTemplate(i.template).then(function(a){200===a.status&&(h=angular.copy(i.template),e.setToast("Template was saved successfully.","success"))})["catch"](function(a){e.setToast("Problem occurred while saving template.","danger"),g.error("got error with saveChecklistTemplate")})})},i.cancel=function(){var a=f.open({templateUrl:"main/modals/general-prompt-modal/general-prompt-modal.html",controller:"generalPromptModalController",controllerAs:"vm",resolve:{modalDetails:function(){return{upper_headline:"Master Checklist Template: ",upper_headline_value:i.template.name,headline:"Are you sure you want to revert all changes?",is_message:!1,approve:"Yes",cancelText:"No",is_close_modal_button:!1}}}});a.result.then(function(a){a&&(i.template=angular.copy(h),l(),e.setToast("All changes discarded.","success"))})},i.deleteSection=function(b){a.remove(i.template.sections,function(a){return b===a}),l()},i.selectLineItem=function(a,c,d){i.selectedLineItem!=a&&(i.selectedSection=c,i.selectedLineItem=a,b.$$postDigest(function(){if(void 0!=d){var a=angular.element(d.target).prop("offsetHeight")+angular.element(d.target).prop("offsetTop"),b=angular.element("#line-item-extended").prop("offsetHeight"),c=a-b;c>0?angular.element("#line-item-extended").css("margin-top",20+c+"px"):angular.element("#line-item-extended").css("margin-top","")}}))},i.addLineItem=function(b){if(b){var c=a.maxBy(b.lineItems,function(a){return a.weight})+1,d={uuid:"newEntity",name:"Untitled line item",description:"Please add a description",weight:c,validation_instructions:"Please add validation instructions for the line item."};b.lineItems.push(d)}},i.addSection=function(){if(i.template){var b=a.maxBy(i.template.sections,function(a){return a.weight})+1,c={uuid:"newEntity",name:"Untitled section",description:"Section added from portal",validation_instructions:"valid instructions",weight:b,lineItems:[]};i.template.sections.push(c)}},i.deleteLineItem=function(b){a.remove(i.selectedSection.lineItems,function(a){return b===a}),l()},i.isSaveInvalid=function(){var b=!1;return i.template&&(b=void 0!=a.find(i.template.sections,function(a){return 0===a.lineItems.length})),b};var k=function(){b.$watch("vm.template.name",function(a,b){d.templateName=a},!0)},l=function(){i.selectedSection=i.template.sections&&i.template.sections.length>0?i.template.sections[0]:void 0,i.selectedLineItem=i.selectedSection?i.selectedSection.lineItems[0]:void 0,angular.element("#line-item-extended").css("margin-top","")},m=function(){i.template&&(i.template.sections=a.orderBy(i.template.sections,"weight"),a.forEach(i.template.sections,function(b){b.lineItems=a.orderBy(b.lineItems,"weight")}))};j()}angular.module("ice.main.admin").controller("checklistTemplateController",["_","$scope","checklistService","$stateParams","toastService","$uibModal","$log",a])}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i){var j=this,k=function(){a.timeGapLocal=moment().format("z"),a.ampm=moment().format("A"),a.mom=moment().tz(moment.tz.guess()).format("z"),j.is_aic_edit_mode=!1,j.is_ecomp_edit_mode=!1,j.aic_loaded=!1,j.ecomp_loaded=!1,void 0!=b.engagement&&(j.engagement=b.engagement),void 0!=j.engagement&&(j.me=e.getUserData(),g.getSingleEngagement(j.me.uuid,j.engagement.uuid).then(function(b){if(a.ice.loader.show=!1,200===b.status&&b.data&&""!==b.data){var c=b.data;j.engagement_manual_id=c.engagement.engagement_manual_id,j.vf_name=c.name,j.vf_version=c.version,j.vf_uuid=c.uuid,j.ecomp_release=c.ecomp_release,j.target_lab=new Date(c.target_lab_entry_date),j.dtversion=c.deployment_target,j.selected_dt_uuid=j.dtversion.uuid,j.selected_ecomp_uuid=j.ecomp_release.uuid,j.me=e.getUserData(),j.name=j.engagement.name,j.isEngagementEL=e.isEngagementEL(c.engagement.engagement_team),j.isAdmin=e.isAdmin(j.me),l(),m()}})["catch"](function(b){a.ice.loader.show=!1,h.error(b)}))};j.addVfc=function(){var a=f.open({templateUrl:"main/modals/detailed-view/vfc/detailed-view-vfc-modal.html",controller:"detailedViewVFCModalController",controllerAs:"vm",resolve:{vf_uuid:function(){return j.vf_uuid}}});a.result.then(function(a){a&&m()})},this.personArray=[j.dtversion,j.vf_uuid],j.editValidationDetails=function(){var a=f.open({templateUrl:"main/modals/validation-details/detailed-view-validation-details-modal.html",controller:"validationDetailsModalController",controllerAs:"vm",resolve:{vf_uuid:function(){return j.vf_uuid}}});a.result.then(function(a){a&&k()})},j.addDTS=function(){if(j.isEngagementEL||j.isAdmin){var a=f.open({templateUrl:"main/modals/detailed-view/dtsite/detailed-view-dtsites-modal.html",controller:"detailedViewDtsitesModalController",controllerAs:"vm",resolve:{vf_uuid:function(){return j.vf_uuid}}});a.result.then(function(a){a&&200===a&&l()})}},j.changeTargetLabEntry=function(){var a=f.open({templateUrl:"main/modals/target-lab-entry/change-lab-entry-date.html",controller:"ChangeLabEntryDateModalController",controllerAs:"vm",resolve:{targetLabDate:function(){return j.target_lab},engagementUuid:function(){return j.engagement.uuid}}});a.result.then(function(a){a&&(j.target_lab=new Date(a.target_date),h.debug("data.target_date",a.target_date),h.debug("vm.target_lab",j.target_lab))},function(){h.error("Modal dismissed at: "+new Date)})},j.deleteVfc=function(a){c["delete"](a,j.vf_uuid).then(function(a){204===a.status&&m()})["catch"](function(a){h.error(a)})},j.deleteDTSite=function(a,b){d["delete"](j.vf_uuid,b).then(function(a){204===a.status&&l()})["catch"](function(a){h.error(a)})};var l=function(){(j.isEngagementEL||j.isAdmin)&&(a.ice.loader.show=!0,d.getVFSites(j.vf_uuid).then(function(b){a.ice.loader.show=!1,200===b.status&&(j.dtsites=b.data)})["catch"](function(b){a.ice.loader.show=!1,h.error(b)}))},m=function(){a.ice.loader.show=!0,c.get(j.vf_uuid).then(function(b){a.ice.loader.show=!1,200===b.status&&(j.vfcs=b.data)})["catch"](function(b){a.ice.loader.show=!1,h.error(b)})};k()}angular.module("ice.dashboard.main").controller("detailedViewController",["$rootScope","$stateParams","vfcService","dtsiteService","usersService","$uibModal","vfService","$log","_",a])}(),function(){"use strict";function a(a){a.state("app.documentation",{views:{"navigation@app":{templateUrl:"core/navigation/layouts/documentation-navigation/navigation.html",controller:"documentationNavigationController as vm"},"sidebar@app":{templateUrl:"main/documentation/sidebar/documentation.sidebar.html"}},bodyClass:"documentation",params:{displaySidebar:!0}}).state("app.documentation.page",{url:"/documentation",views:{"content@app":{templateUrl:"main/documentation/documentation.html",controller:"documentationController as vm"}},bodyClass:"documentation",params:{displaySidebar:!0,page_id:void 0}})}angular.module("ice.documentation").config(a),a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c){function d(){b.page_id&&a.getPage(b.page_id).then(function(a){a&&a.data&&(e.pageId=b.page_id,e.pageTitle=a.data.title,e.pageContent=a.data.content,e.publishDate=a.data.publish_date)})["catch"](function(a){c.error(a)})}var e=this,f=function(){d()};f()}angular.module("ice.documentation").controller("documentationController",["cmsService","$stateParams","$log",a])}(),function(){"use strict";function a(a,b){var c=this,d=function(){b.getIceUser().then(function(a){c.receiveEmails=a.data.regular_email_updates,c.receiveEmailsEveryTime=a.data.email_updates_on_every_notification,c.receiveDigestEmails=a.data.email_updates_daily_digest,c.receiveNotifications=c.receiveEmailsEveryTime||c.receiveDigestEmails})["catch"](function(b){a.setToast(b.message,"danger"),$log.error(b.message)})};c.submitForm=function(){var d=b.getUserData(),e={};e.regular_email_updates=c.receiveEmails,e.email_updates_on_every_notification=c.receiveEmailsEveryTime,e.email_updates_daily_digest=c.receiveDigestEmails,e.company=d.company.name,e.full_name=d.full_name,e.email=d.email,e.phone_number=d.phone_number,b.updateAccount(d.uuid,e).then(function(b){200===b.status&&a.setToast("User profile settings was updated successfully!","success")})["catch"](function(b){a.setToast(b.message.detail,"danger")})},c.changeReceiveNotifications=function(){c.receiveNotifications||(c.receiveEmailsEveryTime=!1,c.receiveDigestEmails=!1)},d()}angular.module("ice.dashboard.account").controller("accountUserProfileSettingsController",["toastService","usersService",a])}(),angular.module("ice").run(["$templateCache",function(a){"use strict";a.put("main/activation/activate/activateUser.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div></div>'),a.put("main/activation/addVendorContact/addVendorContact.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".addVendorContact-form"></ice-loader> <div class="container"> <div class="row"> <div class="col-md-2"></div> <form name="addVendorContactForm" ng-submit="vm.submitForm()" novalidate class="addVendorContact-form col-md-8"> <div class="form-group" ng-class="{ \'has-error\' : addVendorContactForm.company.$invalid && !addVendorContactForm.company.$pristine }"> <label class="ice-form-label required">Company</label> <select style="width:100%" name="company" ng-model="vm.data.company" ng-options="company.name for company in vm.companies track by company.uuid" class="form-control" required></select> <div class="ice-form-error" data-ng-show="addVendorContactForm.company.$error"> <span ng-show="addVendorContactForm.company.$error.required && !addVendorContactForm.company.$pristine" class="help-block">Please select a company</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : addVendorContactForm.fullName.$invalid && !addVendorContactForm.fullName.$pristine }"> <label class="ice-form-label required">Full Name</label> <input type="text" name="fullname" class="form-control" ng-model="vm.data.full_name" ng-minlength="3" ng-maxlength="50" maxlength="50" required> <div class="ice-form-error" data-ng-show="addVendorContactForm.fullname.$error"> <span ng-show="addVendorContactForm.fullname.$error.required && !addVendorContactForm.fullname.$pristine">Name is a required field.</span> <span ng-show="addVendorContactForm.fullname.$error.minlength">Full Name is too short.</span> <span ng-show="addVendorContactForm.fullname.$error.maxlength">Full Name is too long.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : addVendorContactForm.email.$invalid && !addVendorContactForm.email.$pristine }"> <label class="ice-form-label required">Email</label> <input type="email" name="email" class="form-control" ng-model="vm.data.email" ng-pattern="/^(([^<>()\\[\\]\\\\.,;:\\s@&quot;]+(\\.[^<>()\\[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[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,}))$/" maxlength="254" required> <div class="ice-form-error" data-ng-show="addVendorContactForm.email.$error"> <span ng-show="addVendorContactForm.email.$error.required && !addVendorContactForm.email.$pristine">Email is a required field.</span> <span ng-show="addVendorContactForm.email.$invalid && !addVendorContactForm.email.$pristine" class="help-block">Enter a valid email.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : addVendorContactForm.phone.$invalid && !addVendorContactForm.phone.$pristine }"> <label class="ice-form-label required">Phone</label> <input type="text" name="phone" class="form-control" ng-pattern="/^[\\+\\-0-9]+$/" ng-model="vm.data.phone_number" ng-minlength="3" ng-maxlength="30" required> <div class="ice-form-error" data-ng-show="addVendorContactForm.phone.$error"> <span ng-show="addVendorContactForm.phone.$error.required && !addVendorContactForm.phone.$pristine">Phone is a required field.</span> <span ng-show="addVendorContactForm.phone.$error.minlength" class="help-block">Phone is too short.</span> <span ng-show="addVendorContactForm.phone.$error.maxlength" class="help-block">Phone is too long.</span> <span ng-show="addVendorContactForm.phone.$error.pattern" class="help-block">Phone must consist of numbers only.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : userForm.password.$invalid && !userForm.password.$pristine }"> <input type="checkbox" ng-model="vm.data.regular_email_updates">&nbsp;I agree to receive regular email updates. </div> <div class="form-group"> <input type="checkbox" ng-model="vm.data.terms" required>&nbsp;I accept the AT&T\'s {{\'program.name\' | i18next}} Terms of Service and Privacy Policy. </div> <div id="frm-field-63-container" class="frm_form_field form-field frm_top_container"> <label class="frm_primary_label">reCAPTCHA <span class="frm_required"></span> </label> <!--\n <div id="field-7lj3ma" class="g-recaptcha" data-sitekey="6LeMMwYTAAAAACSY-OLibN7rdFHSnY9karY3VXW2"></div>\n <div id="divre-captcha-err" class="frm_error_hide">reCAPTCHA is invalid.</div>\n --> </div> <input type="hidden" name="item_key" value="xxx"> <button type="submit" class="btn btn-primary" data-ng-disabled="!addVendorContactForm.$valid">Sign Up</button> <a ui-sref="app.login" class="login">Already have an account?</a> </form> <div class="col-md-2"></div> </div> </div>'),a.put("main/activation/addVf/addVf.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".addVf-form"></ice-loader> <div class="container"> <div class="row"> <div class="col-md-2"></div> <form name="addVfForm" ng-submit="vm.submitForm()" novalidate class="addVf-form col-md-8"> <div class="table-container-flex"> <div class="table"> <!-- Table body --> <div class="body"> <div data-ng-repeat="choice in vm.choices" class="data-row-wrapper"> <ng-form name="vfItemForm"> <div class="flex-container data-row"> <!-- Text --> <div class="add-vf-wizard text"> Use the form below to add your VF.Try to be as accurate as you can around the information to make sure the validation can accomplished as possible. </div> </div> <div class="flex-container data-row"> <!-- Virtual Function --> <div class="table-col-general flex-item"> <div id="vf-name-title">VF Name</div> <input type="text" name="virtualFunction" class="form-control" ng-model="choice.VirtualFunction" maxlength="32" class="form-control" placeholder="VF Name" required ng-pattern="/^[a-zA-Z0-9-]*$/"> <div class="ice-form-error" data-ng-show="vfItemForm.virtualFunction.$error"> <span ng-show="vfItemForm.virtualFunction.$error.pattern">VF Name can be alphanumeric or/and Hyphen</span> </div> </div> </div> <div class="flex-container data-row"> <h3 id="title-key-metadata">Key Metadata</h3> </div> <div class="flex-container data-row fields_key_metadata"> <!-- ECOMP Release --> <div class="table-col-general flex-item"> <select ng-model="choice.ECOMPRelease" id="ecomp-release" class="form-control" required> <option value="" selected disabled>ECOMP Release</option> <option ng-repeat="dt in vm.ECOMPReleases" value="{{dt.uuid}}"> {{dt.name}} </option> </select> </div> <!-- Target AIC Version --> <div class="table-col-general flex-item"> <select ng-model="choice.TargetAic" id="aic-version" class="form-control" required> <option value="" selected disabled>AIC Version</option> <option ng-repeat="dt in vm.deployTargets" value="{{dt.uuid}}"> {{dt.name}} {{dt.version}} </option> </select> </div> <!-- VF Version --> <div class="table-col-general flex-item"> <input type="text" name="VFversion" id="id-vf-version" class="form-control" ng-model="choice.VFVersion" maxlength="32" class="form-control" placeholder="VF Version" required> </div> <!-- Delete VF --> <div class="table-col-general flex-item" ng-if="vm.choices.length > 1"> <!--\n <div class="reject_large" ng-click=\'vm.removeChoice()\' ng-show="$last"><span class="reject_large"></span>Remove</div>\n --> <div class="remove-button" ng-click="vm.removeChoice($index)"><span class="remove-icon"></span>Remove</div> </div> </div> <div class="flex-container data-row"> <!-- Target Lab Entry --> <div class="table-col-general flex-item"> <div id="vf-name-title">Target Lab Entry Date</div> <md-datepicker id="e2e-lab-entry-date" md-min-date="vm.minDate" ng-click="ctrl.openCalendarPane($event)" ng-model-options="{timezone: \'gmt\'}" class="btn btn-default datepicker_btn" ng-model="choice.TargetLab" md-placeholder="E2E Lab Entry Date"></md-datepicker> <input type="hidden" id="add-vf-hidden-target-lab-date" value="{{choice.TargetLab | date2: \'MMMM doo yyyy\' : timeGapLocal}}"> </div> </div> <div class="add-vf-confirm-checkbox"> <input type="checkbox" name="is_service_provider_internal" ng-model="choice.is_service_provider_internal"> The virtual function is only developed internally inside AT&T. </div> </ng-form> </div> </div> <div class="footer"> <div class="action-row-wrapper"> <a ng-if="!vm.isModal" class="add-button" ng-click="vm.addNewChoice()"> <span class="add-icon"></span> <span class="add-text">Add another VF</span> </a> <button type="submit" class="btn btn-primary" data-ng-disabled="!addVfForm.$valid">Submit your VF</button> <a id="skip-add-vf-singup" ng-if="!vm.isModal" class="" ng-click="vm.skipAddVf()">Skip VF creation</a> </div> </div> </div> </div> </form> </div> </div>'),a.put("main/activation/contactUs/contactUs.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="container"> <div class="row"> <div class="col-md-2"></div> <form name="contactUsForm" ng-submit="vm.submitForm()" novalidate class="contact-us-form col-md-8"> </form> <div class="col-md-2"></div> </div> </div>'),a.put("main/activation/inviteMembers/inviteMembers.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".inviteMembers-form"></ice-loader> <div class="container"> <div class="row"> <div class="col-md-2"></div> <form name="inviteMembersForm" ng-submit="vm.submitForm()" novalidate class="inviteMembers-form col-md-8"> <div> <div style="clear:both"></div> <fieldset data-ng-repeat="choice in choices|limitTo:10"> <div id="containera"> <div style="width:400px;height:50px;line-height:20px;;float:left"> <input type="email" name="email" class="form-control" ng-model="choice.Email" maxlength="50" ng-pattern="/^(([^<>()\\[\\]\\\\.,;:\\s@&quot;]+(\\.[^<>()\\[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[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,}))$/" class="form-control" required> <div class="ice-form-error" data-ng-show="inviteMembersForm.email.$error"> <span ng-show="inviteMembersForm.email.$error.required && !inviteMembersForm.email.$pristine">Email is a required field.</span> <span ng-show="inviteMembersForm.email.$invalid && !inviteMembersForm.email.$pristine" class="help-block">Enter a valid email.</span> </div> </div> </div> <div style="width:200px;height:50px;line-height:20px; vertical-align:middle;padding-left:10px;float:left"> <a ng-click="removeChoice()" ng-show="$last">Remove</a> </div> </fieldset> </div> <a ng-if="choices.length < 10" class="add-button" ng-click="vm.addNewChoice()">Invite another team member</a> <button type="submit" class="btn btn-primary" data-ng-disabled="!inviteMembersForm.$valid">Send invitations</button> </form> </div> </div>'),a.put("main/activation/login/login.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".login-form"></ice-loader> <div class="container"> <div class="row"> <div class="col-md-2"></div> <form name="loginForm" ng-submit="vm.submitForm()" novalidate class="login-form col-md-8"> <div class="form-group" ng-class="{ \'has-error\' : loginForm.email.$invalid && !loginForm.email.$pristine }"> <label class="ice-form-label required">Email</label> <input type="email" name="email" class="form-control" ng-model="vm.data.email" maxlength="254" required ng-pattern="/^(([^<>()\\[\\]\\\\.,;:\\s@&quot;]+(\\.[^<>()\\[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[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,}))$/"> <div class="ice-form-error" data-ng-show="loginForm.email.$error"> <span ng-show="loginForm.email.$error.required && !loginForm.email.$pristine">Email is a required field.</span> <span ng-show="loginForm.email.$error.pattern">Enter a valid email.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : loginForm.password.$invalid && !loginForm.password.$pristine }"> <label class="ice-form-label required">Password</label> <input type="password" name="password" class="form-control" ng-model="vm.data.password" ng-maxlength="32" maxlength="32" required> <div class="ice-form-error" data-ng-show="loginForm.password.$error"> <span ng-show="loginForm.password.$error.required && !loginForm.password.$pristine">Password is a required field.</span> <span ng-show="loginForm.password.$error.minlength">Password is too short.</span> <span ng-show="loginForm.password.$error.maxlength">Password is too long.</span> </div> </div> <button type="submit" class="btn btn-primary" data-ng-disabled="!loginForm.$valid">Login</button> <div class="leftLink"> <a ui-sref="app.resetPassword">Reset your password?</a> </div> <div class="rightLink"> <a id="id-dont-have-an-account" ui-sref="app.register">Don\'t have an account?</a> </div> </form> <div class="col-md-2"></div> </div> </div>'),
+a.put("main/activation/register/register.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".register-form"></ice-loader> <div class="container"> <script type="text/javascript" src="https://www.google.com/recaptcha/api.js?ver=1"></script> <div class="row"> <div class="col-md-2"></div> <form name="registerForm" ng-submit="vm.submitForm()" novalidate class="register-form col-md-8"> <div class="form-group" ng-class="{ \'has-error\' : registerForm.company.$invalid && !registerForm.company.$pristine }"> <label class="ice-form-label required">Company</label> <select ng-model="vm.data.company" name="company" class="form-control" required> <option value="">Please select a company</option> <option ng-repeat="vendor in vm.vendors" value="{{vendor.name}}" ng-selected="vendor.name===vm.data.company"> {{vendor.name}} </option> </select> <div class="ice-form-error" data-ng-show="registerForm.company.$error"> <span ng-show="registerForm.company.$error.required && !registerForm.company.$pristine" class="help-block">Please select a company</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : registerForm.fullName.$invalid && !registerForm.fullName.$pristine }"> <label class="ice-form-label required">Full Name</label> <input type="text" name="fullname" class="form-control" ng-model="vm.data.full_name" ng-minlength="3" ng-maxlength="50" maxlength="50" required ng-pattern="/^[a-zA-Z0-9 ]*$/"> <div class="ice-form-error" data-ng-show="registerForm.fullname.$error"> <span ng-show="registerForm.fullname.$error.required && !registerForm.fullname.$pristine">Name is a required field.</span> <span ng-show="registerForm.fullname.$error.minlength">Full Name is too short.</span> <span ng-show="registerForm.fullname.$error.maxlength">Full Name is too long.</span> <span ng-show="registerForm.fullname.$error.pattern">Full Name must be alphanumeric</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : registerForm.email.$invalid && !registerForm.email.$pristine }"> <label class="ice-form-label required">Email</label> <input type="email" name="email" class="form-control" ng-model="vm.data.email" maxlength="254" ng-pattern="/^(([^<>()\\[\\]\\\\.,;:\\s@&quot;]+(\\.[^<>()\\[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[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,}))$/" required> <div class="ice-form-error" data-ng-show="registerForm.email.$error"> <span ng-show="registerForm.email.$error.required && !registerForm.email.$pristine">Email is a required field.</span> <span ng-show="registerForm.email.$invalid && !registerForm.email.$error.required && !registerForm.email.$pristine">Enter a valid email.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : registerForm.phone.$invalid && !registerForm.phone.$pristine }"> <label class="ice-form-label required">Phone</label> <input type="text" name="phone" class="form-control phone-place-holder" ng-intl-tel-input ng-model="vm.data.phone_number" required ng-minlength="6" ng-maxlength="30"> <div class="ice-form-error" data-ng-show="registerForm.phone.$error"> <span ng-show="registerForm.phone.$error.required && !registerForm.phone.$pristine">Phone is a required field.</span> <span ng-show="registerForm.phone.$error.minlength" class="help-block">Phone is too short.</span> <span ng-show="registerForm.phone.$error.maxlength" class="help-block">Phone is too long.</span> <span ng-show="registerForm.phone.$dirty && registerForm.phone.$invalid" class="help-block">Phone format invalid</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : registerForm.password.$invalid && !registerForm.password.$pristine }"> <label class="ice-form-label required">Password</label> <input type="password" name="password" class="form-control" ng-model="vm.data.password" ng-minlength="4" ng-maxlength="32" maxlength="32" required autocomplete="new-password"> <div class="ice-form-error" data-ng-show="registerForm.password.$error"> <span ng-show="registerForm.password.$error.required && !registerForm.password.$pristine">Password is a required field.</span> <span ng-show="registerForm.password.$error.minlength" class="help-block">Password is too short.</span> <span ng-show="registerForm.password.$error.maxlength" class="help-block">Password is too long.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : userForm.password.$invalid && !userForm.password.$pristine }"> <input type="checkbox" ng-model="vm.data.regular_email_updates">&nbsp;I agree to receive regular email updates from AT&T {{\'program.name\' | i18next}}. </div> <div class="form-group"> <input type="checkbox" ng-model="vm.data.terms" required>&nbsp;I accept the <a href="" ui-sref="app.terms" title="AT&T\'s {{\'program.name\' | i18next}} Terms of Service and Privacy Policy" target="_blank">AT&T\'s {{\'program.name\' | i18next}} Terms of Service and Privacy Policy</a>. </div> <div id="frm-field-63-container" class="form-group frm_form_field form-field frm_top_container"> <!--\n <label class="ice-form-label required">\n <span class="frm_required"></span>\n </label>\n --> <!-- v1 api no longer works <div id="field-7lj3ma" class="g-recaptcha" data-sitekey="6LeMMwYTAAAAACSY-OLibN7rdFHSnY9karY3VXW2"></div> --> </div> <input type="hidden" name="item_key" value="xxx"> <span>{{PleaseFill}} </span> <button type="submit" class="btn btn-primary" data-ng-disabled="!registerForm.$valid">Sign Up</button> <a ui-sref="app.login" class="login">Already have an account?</a> </form> <div class="col-md-2"></div> </div> </div>'),a.put("main/activation/resendActivation/resendActivation.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".active-form"></ice-loader> <div class="container"> <div class="row"> <div class="col-md-2"></div> <form name="resendActivationForm" ng-submit="vm.submitForm()" novalidate class="active-form col-md-8"> <p> You have successfully created your account! To begin using this site you will need to activate your account via the email we have just sent to your email address. <br><br> Please note that sometimes activation emails end up in users spam/junk folders, so please check there. <br><br> If you have not received it, please click the resend the Activation Email button below. </p> <button type="submit" class="btn btn-primary">Resend Activation Email</button> <div class="leftLink"> Still having problems? Please contact us at <a href="mailto:d2ice@att.com">d2ice@att.com</a> </div> </form> <div class="col-md-2"></div> </div> </div>'),a.put("main/activation/resetPassword/resetPassword.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".resetPassword-form"></ice-loader> <div class="container"> <div class="row"> <div class="col-md-2"></div> <form name="resetPasswordForm" ng-submit="vm.submitForm()" novalidate class="resetPassword-form col-md-8"> <div class="form-group" ng-class="{ \'has-error\' : resetPasswordForm.email.$invalid && !resetPasswordForm.email.$pristine }"> <label class="ice-form-label required">Email</label> <input type="email" name="email" class="form-control" ng-model="vm.data.email" maxlength="254" required> <div class="ice-form-error" data-ng-show="resetPasswordForm.email.$error"> <span ng-show="resetPasswordForm.email.$error.required && !resetPasswordForm.email.$pristine && ngReq">Email is a required field.</span> <span ng-show="resetPasswordForm.email.$invalid && !resetPasswordForm.email.$error.required && !resetPasswordForm.email.$pristine">Enter a valid email.</span> </div> </div> <button type="submit" class="btn btn-primary" data-ng-disabled="!resetPasswordForm.$valid">Send Instructions</button> <div class="leftLink"> Still having problems? Please contact <a ng-click="vm.sendMail()">d2ice@att.com</a> </div> </form> <div class="col-md-2"></div> </div> </div>'),a.put("main/activation/terms/terms.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="container"> <p>SP Terms</p> </div>'),a.put("main/activation/updatePassword/updatePassword.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".updatePassword-form"></ice-loader> <div class="container"> <div class="row"> <div class="col-md-2"></div> <form name="updatePasswordForm" ng-submit="vm.submitForm()" novalidate class="updatePassword-form col-md-8"> <div class="form-group" ng-class="{ \'has-error\' : updatePasswordForm.password.$invalid && !updatePasswordForm.password.$pristine }"> <label class="ice-form-label">Password</label> <input type="password" name="password" class="form-control" ng-model="vm.data.password" maxlength="32" ng-minlength="4" required> <div class="ice-form-error" data-ng-show="updatePasswordForm.password.$error"> <span ng-show="updatePasswordForm.password.$error.required && !updatePasswordForm.password.$pristine && ngReq">Password is required field.</span> <span ng-show="updatePasswordForm.password.$error.minlength && ngReq">Password is too short.</span> <span ng-show="updatePasswordForm.password.$error.maxlength">Password is too long.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : updatePasswordForm.confirm_password.$invalid && !updatePasswordForm.confirm_password.$pristine }"> <label class="ice-form-label">Confirm password</label> <input type="password" name="confirm_password" class="form-control" ng-model="vm.data.confirm_password" maxlength="32" required> <div class="ice-form-error" data-ng-show="updatePasswordForm.confirm_password.$error"> <span ng-show="updatePasswordForm.confirm_password.$error.required && !updatePasswordForm.confirm_password.$pristine && ngReq">Confirm password is required field.</span> <span ng-show="!updatePasswordForm.confirm_password.$error.required && updatePasswordForm.confirm_password.$error.noMatch && updatePasswordForm.password.$dirty">Passwords do not match.</span> </div> </div> <button type="submit" class="btn btn-primary" data-ng-disabled="!updatePasswordForm.$valid">Update Password</button> <div class="leftLink"> Still having problems? Please contact <a ng-click="vm.sendMail()">d2ice@att.com</a> </div> </form> <div class="col-md-2"></div> </div> </div>'),a.put("main/admin/checklist-template/checklist-template.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <form name="checklistTemplateForm" class="checklist-template" ng-show="vm.template"> <div id="cl-header" class="row"> <div class="col-sm-8 checklist-template-topic"> <h1 id="cl-title"> <span id="edit-template-btn" class="sprite edit-medium edit-checklist" ng-click="vm.switchElementInlineEditing(\'templateName\')"></span> <span class="template-topic">Master Checklist Template:</span> <span ng-if="!vm.inlineEditingElements[\'templateName\']" name="{{vm.template.name}}" class="template-name">{{vm.template.name}}</span> <span class="form-group" ng-class="{ \'has-error\' : checklistTemplateForm.editTemplateName.$invalid && checklistTemplateForm.editTemplateName.$dirty }"> <input ng-show="vm.inlineEditingElements[\'templateName\']" class="checklist-template-edit-item edit-template-name" type="text" name="editTemplateName" ng-blur="vm.switchElementInlineEditing(\'templateName\')" ng-model="vm.template.name" required ng-minlength="1" ng-maxlength="24"> <div class="ice-form-error" data-ng-show="checklistTemplateForm.editTemplateName.$error"> <span ng-show="checklistTemplateForm.editTemplateName.$error.required && checklistTemplateForm.editTemplateName.$dirty">Template name is a required field.</span> <span ng-show="checklistTemplateForm.editTemplateName.$error.minlength" class="help-block">Template name is too short.</span> <span ng-show="checklistTemplateForm.editTemplateName.$error.maxlength" class="help-block">Template name is too long.</span> </div> </span> </h1> <div class="topic-description"> Editing a master checklist template will affect all checklists currently created of that type and will also restart the validation for all active engagements. </div> </div> <span class="col-sm-4 cl-action-buttons-frame"> <div id="state-actions" class="row"> <div class="save-button col-md-6"><button class="btn btn-gradient-success" ng-click="vm.save() " data-ng-disabled="checklistTemplateForm.$invalid || vm.isSaveInvalid()" id="save-button">Save</button></div> <div class="col-md-6"><button id="state-actions-btn-reject" class="btn btn-gradient-danger" ng-click="vm.cancel()" id="cancel-button">Cancel</button></div> </div> </span> </div> <article class="row" ng-class="blocked-area" id="checklist-main-section"> <ul class="col-md-6" id="line-item-list"> <li data-ng-repeat="section in vm.template.sections"> <h2> <span class="section-topic">Section {{$index+1}}: </span><span ng-show="!vm.inlineEditingElements[section.$$hashKey]">{{section.name}}</span> <span class="form-group" ng-class="{ \'has-error\' : checklistTemplateForm.editSectionName{{$index}}.$invalid && checklistTemplateForm.editSectionName{{$index}}.$dirty }"> <input ng-show="vm.inlineEditingElements[section.$$hashKey]" id="edit-section-input-{{$index}}" class="checklist-template-edit-item edit-section-name" type="text" name="editSectionName{{$index}}" ng-blur="vm.switchElementInlineEditing(section.$$hashKey)" ng-model="section.name" required ng-minlength="1" ng-maxlength="64"> <span class="edit-checklist template-edit-item" id="edit-section-btn-{{$index}}" ng-click="vm.switchElementInlineEditing(section.$$hashKey)"></span> <span class="remove-item" ng-click="vm.deleteSection(section)"></span> <div class="ice-form-error" data-ng-show="checklistTemplateForm.editSectionName{{$index}}.$error"> <span ng-show="checklistTemplateForm.editSectionName{{$index}}.$error.required && checklistTemplateForm.editSectionName{{$index}}.$dirty">Section name is a required field.</span> <span ng-show="checklistTemplateForm.editSectionName{{$index}}.$error.minlength" class="help-block">Section name is too short.</span> <span ng-show="checklistTemplateForm.editSectionName{{$index}}.$error.maxlength" class="help-block">Section name is too long.</span> </div> </span> </h2> <ul> <li data-ng-repeat="lineItem in section.lineItems" class="line-item-row" ng-class="{\'selected-line\' : lineItem === vm.selectedLineItem}" id="select-lineitem-btn-{{$parent.$index}}.{{$index}}" ng-click="vm.selectLineItem(lineItem, section, $event)"> <span class="col-sm-2 col-xs-2 col-md-2"> <span class="lineitem-changed-icon" ng-show="vm.inlineEditingElements[lineItem.uuid] != undefined"></span> <span ng-class="vm.inlineEditingElements[lineItem.uuid] != undefined ? \'\' : \'lineitem-index\'"></span>{{$parent.$index+1}}.{{$index+1}} </span> <span class="col-sm-9 col-xs-9 col-md-9">{{lineItem.name}}</span> <div class="col-sm-1 col-xs-1 col-md-1">&nbsp;</div> <span class="selected-line-connector"></span> </li> <li class="cl-add-item-line"> <span class="add-button" ng-click="vm.addLineItem(section);" id="add-lineitem-btn"></span> <span>Add Another line item</span> </li> </ul> </li> </ul> <aside class="col-md-6" id="line-item-extended"> <header class="row"> <h2 ng-show="vm.selectedSection" class="col-sm-11 col-xs-11 col-md-11"><span class="bold">{{vm.selectedSection.name}} -</span> <span ng-show="!vm.inlineEditingElements[vm.selectedLineItem.uuid]">{{vm.selectedLineItem.name}}</span> <span class="form-group" ng-class="{ \'has-error\' : checklistTemplateForm.editLineItemName.$invalid && checklistTemplateForm.editLineItemName.$dirty }"> <input ng-show="vm.inlineEditingElements[vm.selectedLineItem.uuid]" class="checklist-template-edit-item edit-lineitem-name" type="text" name="editLineItemName" ng-model="vm.selectedLineItem.name" required ng-minlength="1" ng-maxlength="64" id="edit-line-item-name-input"> <div class="ice-form-error" data-ng-show="checklistTemplateForm.editLineItemName.$error"> <span ng-show="checklistTemplateForm.editLineItemName.$error.required && checklistTemplateForm.editLineItemName.$dirty">Line item name is a required field.</span> <span ng-show="checklistTemplateForm.editLineItemName.$error.minlength" class="help-block">Line item name is too short.</span> <span ng-show="checklistTemplateForm.editLineItemName.$error.maxlength" class="help-block">Line item name is too long.</span> </div> </span> </h2> <span ng-class="!vm.inlineEditingElements[vm.selectedLineItem.uuid] ? \'edit-checklist template-edit-item\' : \'glyphicon glyphicon-ok edit-checklist glyphicon-cursor-approve-changes\'" ng-show="!checklistTemplateForm.$invalid" ng-click="vm.switchElementInlineEditing(vm.selectedLineItem.uuid)" id="edit-lineitem-btn"></span> <span ng-show="vm.selectedLineItem" class="remove-item" ng-click="vm.deleteLineItem(vm.selectedLineItem)" id="delete-lineitem-btn"></span> </header> <section ng-show="!vm.inlineEditingElements[vm.selectedLineItem.uuid]" id="line-item-description" ng-bind-html="vm.selectedLineItem.description | htmlspecialchars | htmlstylespan"></section> <span class="form-group" ng-class="{ \'has-error\' : checklistTemplateForm.editLineitemDescription.$invalid && checklistTemplateForm.editLineitemDescription.$dirty }"> <wysiwyg textarea-id="edit-lineitem-description" ng-show="vm.inlineEditingElements[vm.selectedLineItem.uuid]" textarea-class="form-control" textarea-name="editLineitemDescriptionTextArea" name="editLineitemDescription" textarea-height="160px" ng-model="vm.selectedLineItem.description" class="ice-wysiwyg checklist-template-edit-item edit-lineitem-description" enable-bootstrap-title="true" textarea-menu="vm.wysiwyg_menu" required textarea-required="True" ng-minlength="1" id="edit-lineitem-description-input"> </wysiwyg> <div class="ice-form-error" data-ng-show="checklistTemplateForm.editLineitemDescription.$error"> <span ng-show="checklistTemplateForm.editLineitemDescription.$error.required && checklistTemplateForm.editLineitemDescription.$dirty">Line item description is a required field.</span> <span ng-show="checklistTemplateForm.editLineitemDescription.$error.minlength" class="help-block">Line item description is too short.</span> <span ng-show="checklistTemplateForm.editLineitemDescription.$error.maxlength" class="help-block">Line item description is too long.</span> </div> </span> <section ng-show="vm.selectedLineItem" id="line-item-validation-instructions"> <h3>Validation Instructions</h3> <p ng-if="!vm.inlineEditingElements[vm.selectedLineItem.uuid]" ng-bind-html="vm.selectedLineItem.validation_instructions | htmlspecialchars | htmlstylespan"></p> <span class="form-group" ng-class="{ \'has-error\' : checklistTemplateForm.validationInstruction.$invalid && checklistTemplateForm.validationInstruction.$dirty }"> <wysiwyg textarea-id="validation-instruction" ng-show="vm.inlineEditingElements[vm.selectedLineItem.uuid]" textarea-class="form-control" textarea-name="validationInstructionTextArea" name="validationInstruction" textarea-height="160px" ng-model="vm.selectedLineItem.validation_instructions" class="ice-wysiwyg" enable-bootstrap-title="true" textarea-menu="vm.wysiwyg_menu" required textarea-required="True" ng-minlength="1"> </wysiwyg> <div class="ice-form-error" data-ng-show="checklistTemplateForm.validationInstruction.$error"> <span ng-show="checklistTemplateForm.validationInstruction.$error.required && checklistTemplateForm.validationInstruction.$dirty">Validation Instructions is a required field.</span> </div> </span> </section> <header class="row" ng-show="!vm.selectedLineItem"> <h2 class="col-sm-8 col-xs-8 col-md-8"><span class="bold">There is no line item to display</span> </h2> </header> </aside> </article> </form> <div class="another-section" ng-show="vm.template"> <span class="add-another-section" ng-click="vm.addSection()"></span> <span>Add Another Section</span> </div>'),a.put("main/dashboard/account/account.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".account-form"></ice-loader> <h2>Account</h2> <div data-ng-if="vm.stage!==vm.stages.intake"> <progress-directive progress="{{vm.progress}}" callback="vm.updateProgress" enable-edit="vm.isEngagementEL()" engagement-uuid="{{vm.uuid}}"></progress-directive> </div> <!--div class="row main-section" --> <div class="row main-section"> <get-started-modal></get-started-modal> <div class="col-md-8 steps"> <form name="accountForm" ng-submit="vm.submitForm()" novalidate class="account-form col-md-8"> <!--\n <div class="form-group">\n <h2>Account</h2>\n </div>\n --> <div class="form-group" ng-class="{ \'has-error\' : registerForm.company.$invalid && !registerForm.company.$pristine }"> <label class="ice-form-label required">Company</label> <select ng-model="vm.data.company" name="company" class="form-control" required> <option value>Please Select</option> <option ng-repeat="company in vm.companies" value="{{company.name}}" ng-selected="company.name===vm.data.company"> {{company.name}} </option> </select> <div class="ice-form-error" data-ng-show="accountForm.company.$error"> <span ng-show="accountForm.company.$error.required && !accountForm.company.$pristine" class="help-block">Please select company</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : accountForm.fullName.$invalid && !accountForm.fullName.$pristine }"> <label class="ice-form-label required">Full Name</label> <input type="text" name="fullname" class="form-control" ng-model="vm.data.full_name" ng-minlength="3" ng-maxlength="50" maxlength="50" required> <div class="ice-form-error" data-ng-show="accountForm.fullname.$error"> <span ng-show="accountForm.fullname.$error.required && !accountForm.fullname.$pristine">Full Name is a required field.</span> <span ng-show="accountForm.fullname.$error.minlength">Full Name is too short.</span> <span ng-show="accountForm.fullname.$error.maxlength">Full Name is too long.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : accountForm.email.$invalid && !accountForm.email.$pristine }"> <label class="ice-form-label">Email</label> <input id="{{vm.data.email}}" type="email" name="email" class="form-control" ng-model="vm.data.email" maxlength="254" ng-pattern="/^(([^<>()\\[\\]\\\\.,;:\\s@&quot;]+(\\.[^<>()\\[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[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,}))$/" disabled> <div class="ice-form-error" data-ng-show="accountForm.email.$error"> <span ng-show="accountForm.email.$error.required && !accountForm.email.$pristine">Email is a required field.</span> <span ng-show="accountForm.email.$invalid && !accountForm.email.$pristine" class="help-block">Enter a valid email.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : accountForm.phone.$invalid && !accountForm.phone.$pristine }"> <label class="ice-form-label required">Phone</label> <input type="text" name="phone" class="form-control" ng-intl-tel-input ng-model="vm.data.phone_number" required ng-minlength="6" ng-maxlength="30"> <div class="has-error ice-form-error" data-ng-show="accountForm.phone.$error"> <span ng-show="accountForm.phone.$error.required && !accountForm.phone.$pristine">Phone is a required field.</span> <span ng-show="accountForm.phone.$error.minlength" class="help-block">Phone is too short.</span> <span ng-show="accountForm.phone.$error.maxlength" class="help-block">Phone is too long.</span> <span ng-show="accountForm.phone.$invalid" class="help-block">Phone format invalid</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : accountForm.password.$invalid && !accountForm.password.$pristine }"> <label class="ice-form-label">Password</label> <input type="password" name="password" class="form-control" ng-model="vm.data.password" ng-minlength="4" ng-maxlength="32" maxlength="32"> <div class="ice-form-error" data-ng-show="accountForm.password.$error"> <span ng-show="accountForm.password.$error.required && !accountForm.password.$pristine">Password is a required field.</span> <span ng-show="accountForm.password.$error.required && accountForm.$submitted ">Password is required.</span> <span ng-show="accountForm.password.$error.minlength" class="help-block">Password is too short.</span> <span ng-show="accountForm.password.$error.maxlength" class="help-block">Password is too long.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : accountForm.confirm_password.$invalid && !accountForm.confirm_password.$pristine }"> <label class="ice-form-label">Confirm password</label> <input type="password" name="confirm_password" class="form-control" ng-model="vm.data.confirm_password" ng-minlength="4" ng-maxlength="32" maxlength="32"> <div class="ice-form-error" data-ng-show="accountForm.confirm_password.$error"> <span ng-show="accountForm.confirm_password.$error.required && !accountForm.confirm_password.$pristine">Confirm password is required field.</span> <span ng-show="!accountForm.confirm_password.$error.required && accountForm.confirm_password.$error.noMatch && accountForm.password.$dirty">Passwords do not match.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : accountForm.password.$invalid && !accountForm.password.$pristine }"> <label class="ice-form-label">SSH Key</label> <textarea name="ssh_key" class="form-control" ng-model="vm.data.ssh_key" ng-focus="clearMsg()"></textarea> <div class="ice-form-error" data-ng-show="accountForm.password.$error"> </div> </div> <button type="submit" id="upate-account" class="btn btn-primary" data-ng-disabled="!accountForm.$valid">Update</button> </form> </div> <div class="col-md-4 right-panel"> <div class="personImage"></div> <div class="line-separator col-md-12"></div> <h3 id="storage-credentials">Your Storage Credentials</h3> <div class="storage-credentials"> <div id="access-key-title">Access Key: <div class="access-key" id="access-key-value">{{vm.data.access_key}}</div> </div> <div id="access-secret-title">Access Secret (<span class="show-secret" ng-click="vm.getAccessSecret()" role="button" id="show-access-secret">Show</span>) <div class="access-secret" id="access-secret-value" type="password">{{vm.data.access_secret}}</div> </div> </div> </div> </div> '),
a.put("main/dashboard/account/notifications/notifications.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".account-form"></ice-loader> <div class="row"> <div class="col-md-12" id="notifications"> <h2>Notifications</h2> </div> <div class="col-md-12"> <form name="notificationsForm" novalidate class="notifications-form"> <content class="row col-md-12" id="notifications-results"> <div class="row hoverCyan" dir-paginate="notification in vm.notifications_display_list | itemsPerPage: vm.pagination_num_of_objects" total-items="vm.num_of_returned_items" current-page="vm.page_num" ng-class="{lineColor: ($index % 2 == 0),boldFont: !notification.is_read}" track by notification.uuid> <div class="electricity col-md-1"></div> <div class="col-md-10" id="table-col-{{notification.uuid}}"><notifications activity="notification.activity"></notifications></div> <div class="col-md-1"><span class="delete" id="del-notification-{{notification.uuid}}" ng-click="vm.delNotification(notification.uuid)"></span></div> </div> </content></form></div> <dir-pagination-controls on-page-change="vm.getNotifications(false)" class="col-md-12" id="notifications-pagination"></dir-pagination-controls> </div> '),a.put("main/dashboard/account/user-profile-settings/user-profile-settings.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".user-profile-settings-form"></ice-loader> <h2 id="user-profile-settings-title">Settings</h2> <form name="userProfileSettingsForm" ng-submit="vm.submitForm()" novalidate class="user-profile-settings-form col-md-6"> <div class="form-check"> <label class="form-check-label"> <input class="form-check-input" id="receive-emails" ng-model="vm.receiveEmails" type="checkbox"> I want to receive regular email updates and information from {{\'program.name\' | i18next}} </label> </div> <hr> <div class="form-check"> <label class="form-check-label"> <input class="form-check-input" id="receive-notifications" ng-model="vm.receiveNotifications" ng-click="vm.changeReceiveNotifications()" type="checkbox"> I want to receive email notifications when something happens on {{\'program.name\' | i18next}} </label> <div class="receive-email-options"> <div class="form-check"> <label class="form-check-label"> <input class="form-check-input" id="receive-emails-every-time" ng-model="vm.receiveEmailsEveryTime" ng-disabled="!vm.receiveNotifications" type="checkbox"> I want to receive an email every time </label> </div> <div class="form-check"> <label class="form-check-label"> <input class="form-check-input" id="receive-digest-emails" ng-model="vm.receiveDigestEmails" ng-disabled="!vm.receiveNotifications" type="checkbox"> I want to receive a daily digest email </label> </div> </div> </div> <button type="submit" id="update-account-user-profile-settings" class="btn btn-primary" data-ng-disabled="userProfileSettingsForm.$invalid">Update</button> </form>'),a.put("main/dashboard/checklist/checklist.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="checkList" ng-disabled="true" ng-if="vm.data != false"> <section id="state-bar" class="row"> <ul class="nav nav-justified col-md-12"> <li ng-attr-id="{{ vm.data.checklist.state.replace(\'_\',\' \') == state ? \'state\'+\'_\'+vm.data.checklist.name : \'\'}}" ng-class="{\'active\' : vm.data.checklist.state.replace(\'_\',\' \') == state}" data-ng-repeat="state in vm.data.states"> <span class="state-icon sprite {{state.replace(\' \',\'_\')}}-state"></span>{{$index + 1}}. {{state}} </li> </ul> </section> <header class="row" id="cl-header"> <!-- start of header --> <h1 class="col-sm-12 col-xs-12 col-md-6" id="cl-title"> <!-- start of title --> <span id="edit-checklist" class="sprite edit-medium" ng-if="vm.data.checklist.state != \'closed\' && !vm.is_peer_reviewer" ng-click="vm.editChecklist()"></span> <span class="bold">Checklist:</span> <span id="cl-name-id">{{vm.data.checklist.name}}</span> </h1> <!-- end of title --> <div class="cl-action-buttons-frame col-sm-12 col-xs-12 col-md-6"> <div ng-if="vm.data.checklist.state != \'closed\'" id="state-actions" class=""> <button class="btn btn-gradient-success" ng-if="vm.data.checklist.state != \'pending\' && vm.data.checklist.state != \'automation\' && (vm.data.checklist.state == \'pending\' || vm.is_able_to_approve)" ng-click="vm.stateAction(\'approve\')"> {{vm.data.checklist.state == \'pending\' ? \'Automate\' : vm.data.checklist.state == \'handoff\' ? \'Handoff complete?\' : \'Approve\'}} </button> <button id="state-actions-btn-reject" class="btn btn-gradient-danger" ng-if="vm.has_files && vm.data.checklist.state != \'handoff\' && vm.data.checklist.state != \'pending\' && vm.data.checklist.state != \'automation\'" ng-click="vm.stateAction(\'reject\')">Reject</button> <button id="state-actions-btn-add-next-steps" class="btn btn-gradient-primary" ng-if="vm.data.checklist.state != \'handoff\' && vm.data.checklist.state != \'pending\'" ng-click="vm.stateAction(\'next_step\')">Add Next Steps</button> </div> <ul class="" id="cl-side-actions"> <!-- start of side actions --> <li><span id="audit-log" ng-click="vm.auditLog()">Audit Log ({{vm.data.checklistAuditLogs.length}})</span></li> <li><span id="jenkins-log" ng-click="vm.openJenkinsLogModal()">Jenkins Log</span></li> </ul> </div> </header> <article class="row" ng-class="{\'blocked-area\' : vm.data.checklist.state == \'pending\' || vm.data.checklist.state == \'automation\' }" id="checklist-main-section"> <ul class="col-md-6" id="line-item-list"> <!-- start of line item list --> <li data-ng-repeat="section in vm.data.checklistDecisions | toArray:false"><h2><span class="bold">Section {{section.counter}}:</span> {{section.section.name}}</h2> <!-- start of section --> <ul> <li data-ng-repeat="decision in section.decisions | toArray:false" class="line-item-row" ng-class="{\'selected-line\' : decision.selected }" ng-click="vm.selectDecision(decision,$event)"> <!-- start if line item row --> <span class="col-sm-2 col-xs-2 col-md-2 value-icon"><span ng-class="decision.view_value_css" id="{{decision.uuid}}_{{decision.view_value}}"></span>{{decision.counter}}</span> <span class="col-sm-9 col-xs-9 col-md-9" ng-class="decision.lineitem.line_type" name="{{decision.lineitem.name}}">{{decision.lineitem.name}}</span> <span class="col-sm-1 col-xs-1 col-md-1 auto-icon"><span ng-class="decision.auto_icon_css"></span></span> <span class="selected-line-connector"></span> </li> <!-- end of line item row --> </ul> </li> <!-- end of section --> </ul> <!-- end of line item list --> <aside class="col-md-6" id="line-item-extended"> <!-- start of line item extended view --> <header class="row"> <!-- start of line-item extended header --> <h2 class="col-sm-8 col-xs-8 col-md-8"><span class="bold">{{vm.selected_decision.counter}} -</span> {{vm.selected_decision.lineitem.name}}</h2> <ul class="col-sm-4 col-xs-4 col-md-4" ng-if="(vm.data.checklist.state == \'review\' || vm.data.checklist.state == \'peer_review\' ) &&\n vm.selected_decision.lineitem.line_type == \'manual\'" ng-class="{\'active\' : vm.selected_decision.lineitem.line_type == \'manual\'}" id="decision-actions"> <li class="not-relevant-btn" ng-class="{\'active\' : vm.selected_decision[\'selected-value\'] == \'not_relevant\'}" ng-click="vm.selected_decision.lineitem.line_type == \'manual\' && vm.setDecision(vm.selected_decision,\'not_relevant\')"></li> <li class="denied-cl-btn" ng-class="{\'active\' : vm.selected_decision[\'selected-value\'] == \'denied\'}" ng-click="vm.selected_decision.lineitem.line_type == \'manual\' && vm.setDecision(vm.selected_decision,\'denied\')"></li> <li class="approved-cl-btn" ng-class="{\'active\' : vm.selected_decision[\'selected-value\'] == \'approved\'}" ng-click="vm.selected_decision.lineitem.line_type == \'manual\' && vm.setDecision(vm.selected_decision,\'approved\')"></li> </ul> </header> <!-- end of line-item extended header --> <section id="line-item-description" ng-bind-html="vm.selected_decision.lineitem.description | htmlspecialchars | htmlstylespan"></section> <section id="line-item-validation-instructions"> <h3>Validation Instructions</h3> <p ng-bind-html="vm.selected_decision.lineitem.validation_instructions | htmlspecialchars"></p> </section> <section id="line-item-audit-logs" class="row"> <!-- start of line item audit logs --> <h3 class="col-md-12">audit logs</h3> <ul id="audit-log-list" class="col-md-12"> <!-- start of audit log list- --> <li class="row" ng-repeat="auditlog in vm.data.decisionAuditLogs[vm.selected_decision.uuid] | orderBy:\'create_time\'"> <h4 class="col-md-6 audit-creator">{{auditlog.creator.full_name}}</h4><span class="col-md-6 audit-date">{{vm.formatDate(auditlog.create_time)}}</span> <p id="line-item-audit-log-{{$index}}" class="col-md-12 audit-text">{{auditlog.description}}</p> </li> </ul> <!-- end of audit log list --> <form name="checklistAuditLog" id="new-audit-log-from" ng-submit="vm.submitDecisionAuditLog()" novalidate class="row col-md-12"> <!-- start of new audit log form --> <textarea name="TextBox" class="col-sm-12 col-xs-12 col-md-12" ng-model="vm.selected_decision.new_audit_log_description" id="new-audit-log-text" ng-trim="false" required></textarea> <div data-ng-show="checklistAuditLog.TextBox.$error" class="ice-form-error"> <span ng-show="checklistAuditLog.TextBox.$error.pattern">Inserted text should not include any special chars such as: \\%_* ."</span> </div> <button type="submit" class="col-sm-12 col-xs-12 col-md-12 btn btn-gradient-primary" id="submit-new-audit-lop-text">Add Log Entry</button> </form> <!-- end of new audit log form --> </section> <!-- end of line item audit logs --> </aside> <!-- end of line item extended view --> </article> <!-- end of line item --> </div>'),a.put("main/dashboard/dashboard/dashboard.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="dashboard-view row"> <div class="col-md-8" id="dashboard-main-panel"> <header class="row col-md-12" id="dashboard-header"> <h1 class="col-md-4" id="dashboard-title">Statuses</h1> <span class="col-md-8 search-filters"> Stage <select id="search-filter-stage" class="form-control search-filter-stage" ng-model="vm.search_stage" ng-change="vm.onStageChange()" ng-options="stage for stage in vm.stages "> <option value="all" selected>All</option> <option value="Intake">Intake</option> <option value="Active">Active</option> <option value="3">3</option> </select> <input type="text" id="search-filter-keyword" ng-model="vm.search_keyword" ng-model-options="{ debounce: 150 }" placeholder="Search by EID, VF or VFC" class="form-control" ng-change="vm.onKeywordChange()"> </span> </header> <content class="row col-md-12" id="search-results"> <div class="col-md-12 progress-bar-row" dir-paginate="engagement in vm.vf_display_list | itemsPerPage: vm.pagination_num_of_objects" total-items="vm.num_of_returned_items" current-page="vm.page_num" track by engagement.engagement__uuid> <progress-directive progress="{{engagement.engagement__progress}}" enable-edit="false" data="engagement.progress_needed_data" statuses="true" enable-refresh="false"> </progress-directive> </div> <span class="col-md-12" id="export-to-csv" ng-click="vm.exportEngagementCSV()">Export to Excel >></span> <dir-pagination-controls on-page-change="vm.searchEngagements()" class="col-md-12" id="engagements-pagination"></dir-pagination-controls> </content> </div> <aside class="col-md-4" id="dashboard-side-panel"> <div class="col-md-12" id="assgined-nextsteps"> <div id="next-steps-header">Assigned To You ({{vm.userNextStepsCount}})</div> <ul id="next-steps-list"> <h4 class="engagement-title" ng-if="vm.userNextSteps.length == 0">No next steps are assigned to you.</h4> <li data-ng-repeat="step in vm.userNextSteps | orderBy: \'due_date\'" class="next-step-details"> <div class="next-step-details-header row"> <h2 class="engagement-title col-md-8" name="{{step.engagement_manual_id}}" ng-click="vm.goToEngagement(step.engagement_uuid)">Engagement - <span class="engagement-name">{{step.engagement_manual_id}}: {{step.vf_name}}</span></h2> <span class="due-date col-md-4"> <i class="fa fa-clock-o"></i> <span class="due-date-icon" name="duedate-{{step.due_date}}"></span>{{step.due_date | date2: \'EEEE MMMM doo yyyy\'}} </span> </div> <p class="next-step-description" name="description-{{step.engagement_manual_id}}" ng-bind-html="step.description | htmlspecialchars"></p> <span class="next-step-creation" name="creator-full-name-{{step.creator_full_name}}">Added at {{step.create_time | date2: \'EEEE MMMM doo yyyy\'}} by {{step.creator_full_name}}</span> </li> </ul> </div> <div class="line-seperator col-md-12" data-ng-if="vm.isEngagmentEL || vm.isAdmin || vm.isAdminRo"></div> <div class="col-md-12" data-ng-if="vm.isEngagmentEL || vm.isAdmin || vm.isAdminRo" id="statistics"> <div id="statistics-header" class="row"> <h2 class="col-md-4">Statistics</h2> <span class="col-md-8 search-filters"> Stage <select class="search-filter-stage" ng-model="vm.statistic_stage_filter" ng-change="vm.request_statistics_data()" ng-options="stage for stage in vm.stages "></select> </span> </div> <div id="statistics-list" class="row"> <span class="col-md-8 statistic-name">Validations</span><span class="col-md-4 statistic-count" id="id-validations-num">{{vm.vfc_num}}</span> <span class="col-md-8 statistic-name">Engagements</span><span class="col-md-4 statistic-count" id="id-engagements-num">{{vm.eng_num}}</span> </div> </div> <div class="line-seperator col-md-12"></div> <ice-news-and-announcement limit="5" show-description="true"></ice-news-and-announcement> </aside> </div>'),a.put("main/dashboard/detailed-view/detailed-view.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div id="detailed-view"> <div class="row"> <h1><span class="bold">{{vm.engagement_manual_id + \': \'}}</span>{{vm.vf_name}} </h1> </div> <div class="vfc-main-section row"> <div class="col-xs-4 col-md-4 vfc-steps"> <div id="validation-details"> <div id="validation-details-header"> <span id="vd-title">Validation Details</span><span class="add-vdetails"></span> <i class="edit-target-completion fa fa-pencil-square-o" id="update-validation-details" ng-click="vm.editValidationDetails()" class="add-vdetails"></i> </div> <div id="validation-details-content"> <div> <div class="line ecomp_release_field" ng-if="!vm.is_ecomp_edit_mode"><span id="ecomp-release-headline">ECOMP Release:</span> <span id="ecomp_version_{{vm.ecomp_release.name}}">{{vm.ecomp_release.name}}</span></div> </div> <div> <div class="line dtversion_field" ng-if="vm.is_aic_edit_mode === false"><span id="target-aic-version-headline">Target AIC Version:</span><span id="aic_version_{{vm.dtversion.version}}">{{vm.dtversion.version}}</span></div> </div> <div> <div class="line dtversion_field" ng-if="vm.is_aic_edit_mode === false"><span id="vf-version-headline">VF Version: </span> <span id="vf_version_{{vm.vf_version}}">{{vm.vf_version}}</span></div> </div> </div> </div> <div id="target-lab-entry"> <div id="target-lab-entry-header"> <span>Target Lab Entry</span> <i class="edit-target-completion fa fa-pencil-square-o" id="change-lab-entry-date" data-ng-click="vm.changeTargetLabEntry()" aria-hidden="true"></i> </div> <div id="target-lab-entry-content"> <h4 class="target-lab-entry-content">{{vm.target_lab | date:\'shortDate\'}}</h4> </div> </div> <div id="deployment-targets"> <div id="deployment-targets-header"> <span>Deployment Targets </span><span ng-click="vm.addDTS()" class="add-vfc"></span> <i class="edit-target-completion fa fa-pencil-square-o" id="add-dt" ng-show="vm.isEngagementEL || vm.isAdmin" ng-click="vm.addDTS()" class="add-vfc" aria-hidden="true"></i> </div> <div id="deployment-targets-content"> <ul> <li class="step row" data-ng-repeat="dts in vm.dtsites track by dts.uuid" ng-mouseover="hoverEdit = true" ng-mouseleave="hoverEdit = false"> <span id="visible-dts-{{dts.name}}" class="col-md-10">{{dts.name}}</span> <span class="remove-button col-md-2" ng-if="vm.dtsites.length > 0" ng-click="vm.deleteDTSite(vm.vf.uuid, dts.uuid)"> <span ng-show="hoverEdit"><span id="remove-dts-{{dts.uuid}}" class="remove-icon"></span></span> </span> </li> </ul> </div> </div> </div> <div class="col-xs-4 col-md-4 vfc-column"> <div id="virtual-function-components" ng-if="vm.isEngagementEL || vm.isAdmin"> <div id="virtual-function-header"> <span>Virtual Function Components </span><span id="virtual-vfc" ng-click="vm.addVfc()" class="add-vfc"></span> <i class="edit-target-completion fa fa-pencil-square-o" ng-show="vm.isEngagementEL || vm.isAdmin" id="add-vfc" ng-if="vm.isEngagementEL || vm.isAdmin" ng-click="vm.addVfc()" class="add-vfc"></i> </div> <div id="virtual-function-content"> <ul> <li class="step row" data-ng-repeat="vfc in vm.vfcs track by vfc.uuid" ng-mouseover="hoverEdit = true" ng-mouseleave="hoverEdit = false"> <span id="visible-dts-{{vfc.name}}" class="col-md-10"> {{vfc.name +\' (\' + vfc.external_ref_id + \')\'}} </span> <span class="remove-button col-md-2" ng-if="vm.vfcs.length > 0 && (vm.isEngagementEL || vm.isAdmin)" ng-click="vm.deleteVfc(vfc.uuid)"> <span ng-show="hoverEdit"><span id="remove-vfc-{{vfc.uuid}}" class="remove-icon"></span></span> </span> </li> </ul> </div> </div> </div> </div> </div>'),a.put("main/dashboard/get-started-modal/get-started-modal.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.-->'),a.put("main/dashboard/get-started-modal/wizard/wizard-container.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-toast is-modal="true"></ice-toast> <div class="getting-started-wizard"> <ice-loader selector=".modal-content"></ice-loader> <div class="modal-header"> <h2 name="{{wizard.title}}" class="modal-title">{{wizard.title}}</h2> <ul class="step-indication" ng-if="wizard.steps.length > 1"> <li ng-repeat="step in wizard.steps" ng-class="{selected: step.completed}">{{$index + 1}}</li> </ul> <button id="close-wizard-button" type="button" ng-click="wizard.closeWizard()" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span></button> </div> <div class="modal-body"> <div ng-switch="wizard.getCurrentStep()" class="slide-frame"> <div ng-switch-when="addVF"> <add-vf is-modal="true"></add-vf> </div> <div ng-switch-when="addContact"> <div> Please take a couple of moments to provide some additional details around your virtual function to get the process started. Do note that you can exit this wizard at any time to complete these items. </div> <form name="addContactForm" ng-submit="wizard.onAddContactSubmit()" novalidate class="addVendorContact-form col-md-12"> <div class="form-group" ng-if="wizard.currentStep.mode === \'vendor\'" ng-class="{ \'has-error\' : addContactForm.company.$invalid && !addContactForm.company.$pristine }"> <label class="ice-form-label required">Company</label> <select style="width:100%" name="company" ng-model="wizard.data.addContact.company" ng-options="company.uuid as company.name for company in wizard.companies track by company.uuid" class="form-control" ng-required="wizard.currentStep.mode === \'vendor\'"></select> <div class="ice-form-error" data-ng-show="addContactForm.company.$error"> <span ng-show="addContactForm.company.$error.required && !addContactForm.company.$pristine" class="help-block">Please select a company</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : addContactForm.fullName.$invalid && !addContactForm.fullName.$pristine }"> <label class="ice-form-label required">Full Name</label> <input type="text" name="fullname" class="form-control" ng-model="wizard.data.addContact.full_name" ng-minlength="3" ng-maxlength="50" maxlength="50" required> <div class="ice-form-error" data-ng-show="addContactForm.fullname.$error"> <span ng-show="addContactForm.fullname.$error.required && !addContactForm.fullname.$pristine">Full Name is a required field.</span> <span ng-show="addContactForm.fullname.$error.minlength">Full Name is too short.</span> <span ng-show="addContactForm.fullname.$error.maxlength">Full Name is too long.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : addContactForm.email.$invalid && !addContactForm.email.$pristine }"> <label class="ice-form-label required">Email</label> <input type="email" name="email" class="form-control" ng-model="wizard.data.addContact.email" ng-pattern="/^(([^<>()\\[\\]\\\\.,;:\\s@&quot;]+(\\.[^<>()\\[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[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,}))$/" maxlength="254" required> <div class="ice-form-error" data-ng-show="addContactForm.email.$error"> <span ng-show="addContactForm.email.$error.required && !addContactForm.email.$pristine">Email is a required field.</span> <span ng-show="addContactForm.email.$invalid && !addContactForm.email.$pristine" class="help-block">Enter a valid email.</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : addContactForm.phone.$invalid && !addContactForm.phone.$pristine }"> <label class="ice-form-label required">Phone</label> <input type="text" name="phone" class="form-control" ng-intl-tel-input ng-model="wizard.data.addContact.phone_number" required ng-minlength="6" ng-maxlength="30"> <div class="ice-form-error" data-ng-show="addContactForm.phone.$error"> <span ng-show="addContactForm.phone.$error.required && !addContactForm.phone.$pristine">Phone is a required field.</span> <span ng-show="addContactForm.phone.$error.minlength" class="help-block">Phone is too short.</span> <span ng-show="addContactForm.phone.$error.maxlength" class="help-block">Phone is too long.</span> <span ng-show="addContactForm.phone.$error.pattern" class="help-block">Phone must consist of numbers only.</span> <span ng-show="addContactForm.phone.$invalid" class="help-block">Phone format invalid</span> </div> </div> <button class="btn btn-primary" type="submit" data-ng-disabled="!addContactForm.$valid"> {{wizard.currentStep.submitButton}} </button> </form> </div> <div ng-switch-when="inviteMembers"> <div> You can invite up to 10 team members at a time to collaborate around your virtual function as you would like. Please do remember that <em>anyone</em> who is invited to collaborate around the virtual function will have equal access. </div> <form name="inviteMembersForm" ng-submit="wizard.onInviteSubmit()" novalidate class="inviteMembers-form col-md-12"> <div> <fieldset data-ng-repeat="choice in wizard.inviteMembers.choices|limitTo:10"> <div id="containera" class="input-wrapper"><input type="email" name="email" class="form-control" ng-model="choice.email" maxlength="50" class="form-control" ng-pattern="/^(([^<>()\\[\\]\\\\.,;:\\s@&quot;]+(\\.[^<>()\\[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[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,}))$/" required></div> <div class="ice-form-error" data-ng-show="inviteMembersForm.email.$error"> <span ng-show="inviteMembersForm.email.$error.required && !inviteMembersForm.email.$pristine">Email is a required field.</span> <span ng-show="inviteMembersForm.email.$invalid && !inviteMembersForm.email.$pristine" class="help-block">Enter a valid email.</span> </div> <div class="remove-button" ng-click="wizard.removeChoice()" ng-show="$last"><span class="remove-icon"></span>Remove</div> </fieldset> </div> <a ng-if="wizard.inviteMembers.choices.length < 10" class="add-button" ng-click="wizard.addNewChoice()"> <span class="add-icon"></span> <span class="add-text">Invite another team member</span> </a> <button type="submit" class="btn btn-primary" data-ng-disabled="!inviteMembersForm.$valid">Send invitations </button> </form> </div> <div ng-switch-when="addSSH"> <div> It looks like you have not yet added your SSH key to your profile. You can add one now. Please do remember that only team members who have added SSH keys to their profile can add files. </div> <form name="addSSHForm" ng-submit="wizard.onAddSSHSubmit()" novalidate class="addSsh-form col-md-12"> <div class="form-group" ng-class="{ \'has-error\' : addSSHForm.key.$invalid && !addSSHForm.key.$pristine }"> <label class="ice-form-label required">SSH Key</label> <textarea type="text" name="key" class="form-control" ng-model="wizard.data.addSSH.ssh_key" ng-minlength="3" ng-maxlength="2048" required></textarea> <div class="ice-form-error" data-ng-show="addSSHForm.key.$error"> <span ng-show="addSSHForm.key.$error.required && !addSSHForm.key.$pristine" class="help-block">Please enter your SSH key</span> </div> </div> <button class="btn btn-primary" data-ng-disabled="!addSSHForm.$valid" type="submit">Add SSH Key</button> </form> </div> </div> </div> <div class="modal-footer"> </div> </div>'),
a.put("main/dashboard/main/main.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="row main-wrapper"> <ice-loader selector=".steps"></ice-loader> <ice-loader selector=".activity-log"></ice-loader> <div class="row"> <div class="col-md-8"> <span id="star-engagement-action_{{vm.name}}" class="sprite starred" ng-class="vm.starred == true ? \'is_starred\' : \'not_starred\'" ng-click="vm.starEngagement()"></span> <h1>{{vm.name}}</h1> </div> <span class="col-md-8 git-repo-url" ng-if="vm.git_repo_url && vm.stage!=vm.stages.intake"><b>GIT:</b>&nbsp;{{vm.git_repo_url}}</span> </div> <step-stages-directive stage="vm.stage" eng-name="{{vm.vf_name}}" reviewer="{{vm.reviewer_uuid}}" stage-num="vm.stage_num" eng-uuid="{{vm.uuid}}"></step-stages-directive> <div data-ng-if="vm.stage!=vm.stages.intake"> <progress-directive progress="{{vm.progress}}" vf="{{vm.vf}}" callback="vm.updateProgress" enable-edit="vm.isEngagementEL || vm.isAdmin" completion-date="{{vm.completion_date}}" engagement-uuid="{{vm.uuid}}"></progress-directive> </div> <div class="row main-section"> <div class="col-md-8 steps"> <div class="row steps-header"> <h2 class="col-md-6">Next Steps<span data-ng-if="vm.isEngagementEL || vm.isAdmin" id="add-next-step-button" class="add-step" data-ng-click="vm.addStep()"></span></h2> <span class="col-md-6 filter-wrapper row"> <span>Files<multiselect id="selected-file-filter-dropdown" class="state-filter" ng-model="vm.chosen_files_filter" options="item for item in vm.files_filter_options" data-multiple="true" scroll-after-rows="5" filter-after-rows="5" ng-change="vm.is_all_files()" ms-header="Select files" tabindex="-1"> </multiselect></span> <span>States<multiselect class="state-filter" ng-model="vm.selected_state_filter" options="item for item in vm.states_select" id="selected-state-filter-dropdown" data-multiple="true" scroll-after-rows="5" filter-after-rows="5" ng-change="vm.update_next_steps_choice()" ms-header="Select states" tabindex="-1"> </multiselect></span> </span> </div> <ul class="step-indication"> <li class="step" data-ng-repeat="step in vm.steps | orderBy: \'due_date\' as filtered_result track by step.uuid" ng-if="vm.is_match_both_filters(step)"> <div class="step-wrapper row" id="step-{{step.uuid}}" data-ng-class="{\'completed\': vm.states.completed==step.state && !vm.isEngagementEL, \'confirmed\': vm.states.confirmed==step.state}"> <aside class="next-step-actions" data-ng-if="vm.isEngagementEL || vm.isAdmin"> <span class="moveto-confirmed" data-ng-if="vm.states.confirmed != step.state && vm.states.completed==step.state" title="Confirm" data-ng-click="vm.updateStep(step.uuid,vm.states.confirmed)" id="confirmed_{{step.uuid}}"></span> <span class="moveto-todo" data-ng-if="vm.states.confirmed!=step.state && vm.states.todo!=step.state" title="Deny" data-ng-click="vm.updateStep(step.uuid,vm.states.todo)" id="todo_{{step.uuid}}"></span> <span class="moveto-delete" title="Delete" data-ng-if="vm.states.confirmed != step.state" data-ng-click="vm.deleteStep(step.uuid)" id="delete-{{step.uuid}}"></span> </aside> <div class="description col-xs-8 col-sm-8 col-md-8"> <div class="last-action-details"> <span class="name" id="{{step.last_updater.full_name}}_{{step.last_update_type}}"> {{step.last_updater && step.last_updater.full_name || step.creator.full_name}} &nbsp;{{step.last_update_type}}:&nbsp; </span> <span class="time">{{(step.last_update_time) | date2: \'EEEE MMMM doo yyyy\'}} at {{(step.last_update_time) | date: \'hh:mm\' : timeGapLocal }} {{ampm}} {{mom}}</span> </div> <div id="{{step.uuid}}" class="step-state {{step.state | lowercase}}" data-ng-click="(step.state==vm.states.todo || step.state==vm.states.completed) && vm.toggleCompleted(step.uuid)"></div> <div class="step-text" ng-bind-html="step.description | htmlspecialchars"></div> </div> <div class="details col-xs-4 col-sm-4 col-md-4"> <span class="next-step-due-date" ng-if="step[\'due_date\'].length >0"><span class="icon"></span>{{(step[\'due_date\']) | date2: \'EEEE MMMM doo yyyy\'}}</span> <span ng-if="step.engagement != null" class="edit-next-step glyphicon glyphicon-pencil" ng-click="vm.editStep(step)"></span> <ul class="next-step-team-mates"> <li data-ng-repeat="member in step[\'assignees\'] track by member.uuid" data-ng-class="{\'me\': member.uuid == vm.me.uuid}" title="{{member.full_name}} ({{member.email}})"> </li> </ul> <span uib-popover-template="\'myPopoverTemplate.html\'" popover-title="Associated Files" popover-trigger="mouseenter" popover-html="true" popover-placement="left" class="" ng-if="step.files.length > 0">Associated Files ({{step.files.length}})</span> <script type="text/ng-template" id="myPopoverTemplate.html"><ul>\n <li ng-repeat="file in step[\'files\'] track by $index">- {{file}}</li>\n </ul></script> </div> </div> </li> </ul> </div> <div class="col-md-4 team-and-logs"> <div id="engagement-status"> <h2>Current Status<span ng-if="vm.isEngagementEL || vm.isAdmin" ng-click="vm.addStatus()" id="add-status"></span><span ng-if="(vm.isEngagementEL || vm.isAdmin) && vm.status" ng-click="vm.editStatus()" id="edit-status"></span></h2> <span id="status-update-details" ng-if="vm.status"> Last updated {{(vm.status.update_time) | date2: \'EEEE MMMM doo yyyy\'}} at {{(vm.status.update_time) | date: \'hh:mm\' : timeGapLocal }} {{ampm}} {{mom}} by {{vm.status.creator.full_name}} </span> <p id="status-description">{{vm.status.description == undefined && \'No status update has been provided yet.\' || vm.status.description }}</p> </div> <div class="team"> <h2><span>Team Members</span><span id="team-members-plus-button-id" ng-click="vm.addPeople()" class="add-people" ng-if="vm.name.length > 0"></span></h2> <ul class="team-avatars"> <li id="c-l-te-am-me-mb-er-s-po-po-ve-r" data-ng-repeat="member in vm.team track by member.uuid" data-ng-class="{\'me\': member.uuid == vm.me.uuid}" uib-popover-template="\'myClTeamMembersPopoverTemplate.html\'" popover-trigger="mouseenter" popover-html="true" popover-placement="bottom"> <script type="text/ng-template" id="myClTeamMembersPopoverTemplate.html"><span class="row">\n <span class="popover-title-name col-md-12">{{member.full_name}} -<span class="popover-title-company">{{member.company.name}}</span></span>\n <span class="popover-role-title col-md-12"> {{member.role.name == \'el\' ? \'Engagement Lead\' : \'\' }} {{member.role.name == \'el\' && vm.reviewer_uuid == member.uuid ? \' - \' : \'\'}} {{vm.reviewer_uuid == member.uuid ? \'Reviewer\' : \'\'}}</span>\n <span class="popover-details">\n <span class="popover-details-topic col-md-4">Email:</span><span class="popover-details-detail col-md-8">{{member.email}}</span>\n <span class="popover-details-topic col-md-4">Phone:</span><span class="popover-details-detail col-md-8">{{member.phone_number}}</span>\n </span>\n </span></script> </li> </ul> </div> <div class="activity-log"> <h2>Activity Log</h2> <ul class="activity-log-details"> <li data-ng-repeat="activity in vm.activities track by activity.uuid"> <notifications activity="activity"></notifications> </li> </ul> </div> </div> </div> </div>'),a.put("main/dashboard/overview/overview.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="no-display-text" ng-if="vm.engagement == undefined"></div> <div ng-class="vm.engagement == undefined ? \'no-display\' : \'overview main-wrapper\'"> <ice-loader selector=".steps"></ice-loader> <ice-loader selector=".activity-log"></ice-loader> <div class="row"> <div class="col-md-6"> <span id="star-engagement-action" class="sprite starred" ng-class="vm.starred == true ? \'is_starred\' : \'not_starred\'" ng-click="vm.starEngagement()"></span> <h1 id="engagement-title"> <span class="manual-id" id="title-id-{{vm.manual_id}}: {{vm.name}}">{{vm.manual_id}}: </span>{{vm.name}} </h1> <span ng-show="vm.isEngagementEL || vm.isAdmin" uib-dropdown uib-dropdown-toggle on-toggle="toggled(open)" id="admin-actions-dropdown" class="admin-actions-dropdown sprite"> <ul class="dropdown-menu" uib-dropdown-menu role="menu"> <li role="menuitem" ng-show="vm.isAdmin"><a data-ng-click="vm.archiveEngagement()">Archive</a></li> <li class="divider" ng-show="vm.isAdmin"></li> <li role="menuitem" ng-show="vm.isAdmin"><a data-ng-click="vm.changeReviewer()">Change Reviewer</a></li> <li class="divider" ng-show="vm.isAdmin"></li> <li role="menuitem" ng-show="vm.isAdmin"><a data-ng-click="vm.changePeerReviewer()">Change Peer Reviewer</a></li> <li class="divider" ng-show="vm.isAdmin"></li> <li role="menuitem" ng-show="vm.isEngagementEL || vm.isAdmin"><a data-ng-click="vm.updateEngagementStatus()">Update Status</a></li> </ul> </span> </div> <div class="col-md-6 row"> <span class="col-md-12 git-repo-url" ng-if="vm.git_repo_url && vm.stage!=vm.stages.intake" id="git-url"><b>GIT:</b>&nbsp;{{vm.git_repo_url}}</span> <span class="col-md-11 line-separator" ng-if="vm.git_repo_url && vm.stage!=vm.stages.intake"></span> <span class="col-md-12 storage-bucket-url" ng-if="vm.stage!=vm.stages.intake" id="bucket-url"><b>STORAGE BUCKET:</b>&nbsp;{{vm.storage_bucket_url}}</span> </div> </div> <step-stages-directive stage="vm.stage" eng-name="{{vm.vf_name}}" team="vm.team" stage-num="vm.stage_num" eng-uuid="{{vm.uuid}}"></step-stages-directive> <div data-ng-if="vm.stage!=vm.stages.intake"> <progress-directive progress="{{vm.progress}}" callback="vm.updateProgress" data="vm.progress_needed_data"> </progress-directive> </div> <div class="row main-section"> <div class="col-md-8 steps"> <div class="row steps-header"> <h2 class="col-md-6">Next Steps<span data-ng-if="vm.isEngagementEL || vm.isAdmin" id="add-next-step-button" class="add-step fa fa-plus-circle" data-ng-click="vm.addStep()"></span></h2> <span class="col-md-6 filter-wrapper row"> <span>Files<multiselect id="selected-file-filter-dropdown" class="state-filter" ng-model="vm.chosen_files_filter" options="item for item in vm.files_filter_options" data-multiple="true" scroll-after-rows="5" filter-after-rows="5" ng-change="vm.is_all_files()" ms-header="Select files" tabindex="-1"> </multiselect></span> <span>States<multiselect class="state-filter" ng-model="vm.selected_state_filter" options="item for item in vm.states_select" id="selected-state-filter-dropdown" data-multiple="true" scroll-after-rows="5" filter-after-rows="5" ng-change="vm.update_next_steps_choice()" ms-header="Select states" tabindex="-1"> </multiselect></span> </span> </div> <ul class="step-indication" ui-sortable="vm.sortableOptions" ng-model="vm.steps"> <li class="step" data-ng-repeat="step in sorted_results=( vm.steps | filter:is_match_both_filters()) track by step.uuid"> <!-- ng-if="vm.is_match_both_filters(step)" --> <div class="step-wrapper row" id="step-{{step.uuid}}" data-ng-class="{\'completed\': vm.states.completed==step.state && !vm.isEngagementEL, \'confirmed\': vm.states.confirmed==step.state}"> <aside class="next-step-actions" data-ng-show="vm.isEngagementEL || vm.isAdmin"> <span class="order-nextstep fa fa-bars"></span> <span ng-show="step.engagement" class="edit-next-step fa fa-pencil-square-o" ng-click="vm.editStep(step)"></span> <span class="moveto-delete fa fa-minus-circle" title="Delete" data-ng-if="vm.states.confirmed != step.state" data-ng-click="vm.deleteStep(step.uuid)" id="delete-{{step.uuid}}"></span> </aside> <div class="description col-xs-8 col-sm-8 col-md-8"> <div class="last-action-details"> <span class="name" id="{{step.last_updater.full_name}}_{{step.last_update_type}}"> <!--When the nex step is not related to engagement that\'s means it ssh key next step and we will display \'System Next Step\' as tha last updater--> {{step.engagement ? (step.last_updater && step.last_updater.full_name || step.creator.full_name) : "System Next Step"}} &nbsp;{{step.last_update_type}}:&nbsp; </span> <span class="time">{{(step.last_update_time) | date2: \'EEEE MMMM doo yyyy\'}} at {{(step.last_update_time) | date: \'hh:mm\' : timeGapLocal }} {{ampm}} {{mom}}</span> </div> <div id="{{step.uuid}}" class="step-state {{step.state | lowercase}} fa" ng-class="{\'fa-check-circle\': step.state == \'Completed\', \'fa-check-circle-o\': step.state == \'Incomplete\'}" data-ng-click="(step.state==vm.states.incomplete || step.state==vm.states.completed) && vm.toggleCompleted(step.uuid)"></div> <div id="step-description-{{$index}}" class="step-text" ng-bind-html="step.description | htmlspecialchars"></div> </div> <div class="details col-xs-4 col-sm-4 col-md-4"> <span class="next-step-due-date" ng-if="step[\'due_date\'].length >0"><span class="icon fa fa-clock-o"></span>{{(step[\'due_date\']) | date2: \'EEEE MMMM doo yyyy\'}}</span> <ul class="next-step-team-mates"> <li data-ng-repeat="member in step[\'assignees\'] track by member.uuid" data-ng-class="{\'me\': member.uuid == vm.me.uuid}" class="fa fa-user-circle-o" title="{{member.full_name}} ({{member.email}})"> </li> </ul> <span uib-popover-template="\'myPopoverTemplate.html\'" popover-title="Associated Files" popover-trigger="outsideClick" popover-html="true" popover-placement="bottom" class="associated-files" id="associated-files">Associated Files <span class="fa fa-caret-square-o-down"></span></span> <script type="text/ng-template" id="myPopoverTemplate.html"><span id="associated-files-empty-msg" ng-if="!step.files || step.files.length === 0">There are no files for this next step</span>\n <ul>\n <li id="file{{$index}}" ng-repeat="file in step.files track by $index">- {{file}}</li>\n </ul></script> </div> </div> </li> <h4 ng-show="!sorted_results || sorted_results.length === 0">No next steps matching filtered results.</h4> </ul> </div> <div class="col-md-4 team-and-logs"> <div id="engagement-target-completion"> <div id="target-completion-header"> <span>Target Completion</span> <i class="edit-target-completion fa fa-pencil-square-o" ng-show="vm.isEngagementEL || vm.isAdmin" data-ng-click="vm.changeTargetCompletion()" aria-hidden="true"></i> </div> <div id="target-completion-content"> <h4 class="target-completion-content">{{vm.completion_date | date:\'shortDate\'}}</h4> </div> </div> <div id="engagement-status"> <div id="engagement-status-header"> <span>Current Status</span> <i class="add-engagement-status fa fa-plus-circle" ng-show="vm.isEngagementEL || vm.isAdmin" ng-click="vm.addStatus()" aria-hidden="true"></i> </div> <div id="engagement-status-content"> <h4 class="engagement-status-content"> <i class="edit-engagement-status fa fa-pencil-square-o pull-right" ng-show="(vm.isEngagementEL || vm.isAdmin) && vm.status" ng-click="vm.editStatus()" aria-hidden="true"></i> <span id="status-update-details" ng-if="vm.status"> Last updated {{(vm.status.update_time) | date2: \'EEEE MMMM doo yyyy\'}} at {{(vm.status.update_time) | date: \'hh:mm\' : timeGapLocal }} {{ampm}} {{mom}} by {{vm.status.creator.full_name}} </span> <p id="status-description">{{vm.status.description == undefined && \'No status update has been provided yet.\' || vm.status.description }}</p> </h4> </div> </div> <div id="engagement-team"> <div id="engagement-team-header"> <span>Team Members</span> <i class="add-team-member fa fa-plus-circle" id="team-members-plus-button-id" ng-show="vm.name.length > 0" data-ng-click="vm.addPeople()" aria-hidden="true"></i> </div> <div class="engagement-team-content"> <ul class="team-avatars"> <li id="team-member-{{member.full_name}}" data-ng-repeat="member in vm.team track by member.uuid" data-ng-class="{\'me\': member.uuid == vm.me.uuid}" uib-popover-template="\'myClTeamMembersPopoverTemplate.html\'" popover-trigger="outsideClick" popover-html="true" class="team-member-avatar fa fa-user-circle-o" popover-placement="bottom"> <script type="text/ng-template" id="myClTeamMembersPopoverTemplate.html"><span class="row">\n <span id="team-member-title" class="popover-title-name col-md-12">\n {{member.full_name}}\n <span ng-show="member.company && member.company.name" class="popover-title-company"> - {{member.company.name}}</span>\n <span class="popover-role-title ">{{vm.engagement.reviewer_uuid == member.uuid ? \'Reviewer\' : \'\'}}{{vm.engagement.peer_reviewer_uuid == member.uuid ? \'Peer Reviewer\' : \'\'}}</span>\n </span>\n <span class="popover-details">\n <span class="popover-details-topic col-md-4">Email:</span><span id="team-member-email" class="popover-details-detail col-md-8">{{member.email}}</span>\n <span ng-show="member.phone_number" class="popover-details-topic col-md-4">Phone:</span><span id="team-member-phone" class="popover-details-detail col-md-8">{{member.phone_number}}</span>\n </span>\n <span id="remove-member" ng-if="vm.is_able_to_delete(member)" class="remove-user-from-eng" ng-click="vm.remove_user_from_eng(member)">\n <span>Remove</span><span class="remove-icon"></span>\n </span>\n </span></script> </li> </ul> </div> </div> <div class="activity-log"> <div id="activity-log-header">Activity Log</div> <ul class="activity-log-details"> <li data-ng-repeat="activity in vm.activities track by activity.uuid"> <notifications id="activity-log-{{$index}}" activity="activity"></notifications> </li> </ul> </div> </div> </div> </div>'),a.put("main/documentation/documentation.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".documentation-content"></ice-loader> <div class="row documentation-container"> <div class="col-md-12"> <h1 class="page-title" id="center-{{vm.pageTitle}}">{{vm.pageTitle}}</h1> <span ng-show="vm.publishDate" class="page-publish">Updated at {{vm.publishDate | date2: \'EEEE MMMM doo yyyy\'}}</span> <div class="page-content" id="{{vm.pageId}}" ng-bind-html="vm.pageContent"></div> </div> </div>'),a.put("main/documentation/sidebar/documentation.sidebar.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <aside id="documentation-side-panel" class="col-md-12"> <ice-news-and-announcement limit="5" show-description="false"></ice-news-and-announcement> </aside>'),a.put("main/errors/404.html",'<!--\n============LICENSE_START==========================================\norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--><!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Page Not Found :(</title> <style>::-moz-selection {\n background: #b3d4fc;\n text-shadow: none;\n }\n\n ::selection {\n background: #b3d4fc;\n text-shadow: none;\n }\n\n html {\n padding: 30px 10px;\n font-size: 20px;\n line-height: 1.4;\n color: #737373;\n background: #f0f0f0;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n }\n\n html,\n input {\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n }\n\n body {\n max-width: 500px;\n padding: 30px 20px 50px;\n border: 1px solid #b3b3b3;\n border-radius: 4px;\n margin: 0 auto;\n box-shadow: 0 1px 10px #a7a7a7, inset 0 1px 0 #fff;\n background: #fcfcfc;\n }\n\n h1 {\n margin: 0 10px;\n font-size: 50px;\n text-align: center;\n }\n\n h1 span {\n color: #bbb;\n }\n\n h3 {\n margin: 1.5em 0 0.5em;\n }\n\n p {\n margin: 1em 0;\n }\n\n ul {\n padding: 0 0 0 40px;\n margin: 1em 0;\n }\n\n .container {\n max-width: 380px;\n margin: 0 auto;\n }\n\n /* google search */\n\n #goog-fixurl ul {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n\n #goog-fixurl form {\n margin: 0;\n }\n\n #goog-wm-qt,\n #goog-wm-sb {\n border: 1px solid #bbb;\n font-size: 16px;\n line-height: normal;\n vertical-align: top;\n color: #444;\n border-radius: 2px;\n }\n\n #goog-wm-qt {\n width: 220px;\n height: 20px;\n padding: 5px;\n margin: 5px 10px 0 0;\n box-shadow: inset 0 1px 1px #ccc;\n }\n\n #goog-wm-sb {\n display: inline-block;\n height: 32px;\n padding: 0 10px;\n margin: 5px 0 0;\n white-space: nowrap;\n cursor: pointer;\n background-color: #f5f5f5;\n background-image: -webkit-linear-gradient(rgba(255,255,255,0), #f1f1f1);\n background-image: -moz-linear-gradient(rgba(255,255,255,0), #f1f1f1);\n background-image: -ms-linear-gradient(rgba(255,255,255,0), #f1f1f1);\n background-image: -o-linear-gradient(rgba(255,255,255,0), #f1f1f1);\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n }\n\n #goog-wm-sb:hover,\n #goog-wm-sb:focus {\n border-color: #aaa;\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\n background-color: #f8f8f8;\n }\n\n #goog-wm-qt:hover,\n #goog-wm-qt:focus {\n border-color: #105cb6;\n outline: 0;\n color: #222;\n }\n\n input::-moz-focus-inner {\n padding: 0;\n border: 0;\n }</style> </head> <body> <div class="container"> <h1>Not found <span>:(</span></h1> <p>Sorry, but the page you were trying to view does not exist.</p> <p>It looks like this was the result of either:</p> <ul> <li>a mistyped address</li> <li>an out-of-date link</li> </ul> <script>var GOOG_FIXURL_LANG = (navigator.language || \'\').slice(0,2),GOOG_FIXURL_SITE = location.host;</script> <script src="//linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script> </div> </body> </html>'),a.put("main/modals/archive-engagement-modal/archive-engagement-modal.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="archive-engagement-modal"> <div class="modal-header row"> <button type="button" ng-click="vm.closeModal()" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <div id="archive-engagement-title" class="archive-engagement-title"><span>Archive Engagement</span></div> <span class="archive-engagement-reason">Please provide a short reason for why you are archiving this engagement.</span> </div> <div class="modal-body row"> <form name="archiveEngagementForm" ng-submit="vm.archiveEngagement()" novalidate class=""> <div class="form-group" ng-class="{ \'has-error\' : archiveEngagementForm.reason.$invalid && archiveEngagementForm.reason.$dirty }"> <textarea type="text" name="reason" class="form-control" ng-model="vm.reason" required></textarea> <div class="ice-form-error" data-ng-show="archiveEngagementForm.reason.$error"> <span ng-show="archiveEngagementForm.reason.$error.required && archiveEngagementForm.reason.$dirty" class="help-block ng-hide" aria-hidden="true">Please enter a reason</span> </div> </div> <button id="submit-modal" class="btn btn-primary col-md-12" data-ng-disabled="archiveEngagementForm.$invalid" type="submit">Submit</button> </form> </div> </div>'),
a.put("main/modals/audit-log/audit-log.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-loader selector=".checkList-form"></ice-loader> <div class="modal-header checkList"> <button type="button" ng-click="vm.closeModal()" id="close-modal-button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <ice-toast is-modal="true"></ice-toast> <div id="modal-title" class="row"> <div class="dash col-md-12 col-md-12"> <span class="font_header">Checklist: </span> <span class="font_header_chk_name margin_btm italic">{{vm.name}}</span> </div> </div> </div> <div class="modal-body checkList auditlog"> <form name="AuditLogForm" ng-submit="vm.submitForm()" novalidate class="checkList-form"> <div class="margin_top"> <h2>Audit Log</h2> </div> <div class="audit-log-items" id="audit-log-lines" data-ng-repeat="auditLog in vm.checklistAuditLogs"> <div class="row"> <span class="col-md-6 font_user_name"> {{auditLog.name}} </span> <span class="col-md-6 text-right font_date"> {{auditLog.dt}} </span> <div class="col-md-12 font_desc margin_btm5" ng-bind-html="auditLog.desc"></div> </div> </div> <textarea name="inputBox" rows="3" class="form-control col-md-12 margin_top textarea-checklist-audit" ng-model="vm.description" ng-trim="false" ng-pattern="/^[a-zA-Z0-9\\&\\,\\.\\ ]*$/" required></textarea> <div data-ng-show="AuditLogForm.inputBox.$error" class="ice-form-error"> <span ng-show="AuditLogForm.inputBox.$error.required && !AuditLogForm.inputBox.$pristine">Please add a Description.</span> <span ng-show="AuditLogForm.inputBox.$error.pattern">Inserted text should not include any special chars such as: \\%_*."</span> </div> <button type="submit" class="btn btn-primary margin_top" data-ng-disabled="!AuditLogForm.$valid">Add Log Entry</button> </form> </div>'),a.put("main/modals/change-date/change-date.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <form name="updateProgressForm" ng-submit="vm.submitForm()" novalidate class="update-progress-form"> <div class="modal-header"> <h3 class="modal-title" id="modal-title">Target Completion Date</h3> <button type="button" ng-click="vm.closeModal()" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> </div> <div class="modal-body"> <div class="form-group" ng-class="{ \'has-error\' : updateProgressForm.date.$invalid && !updateProgressForm.date.$pristine }"> <!--<input type="text" name="date" class="form-control" ng-model="vm.completionDate" ng-minlength="1" ng-maxlength="2" maxlength="2" required>--> <div>{{vm.completionDate | date:\'fullDate\' }}</div> <div class="ice-form-error" data-ng-show="updateProgressForm.date.$error"> <span ng-show="updateProgressForm.date.$error.required && !updateProgressForm.date.$pristine">Date is required field!</span> </div> </div> <uib-datepicker ng-model="vm.completionDate" class="well well-sm" datepicker-options="vm.dateOptions"></uib-datepicker> </div> <div class="modal-footer"> <button type="submit" class="btn btn-primary" data-ng-disabled="!updateProgressForm.$valid">Save</button> </div> </form>'),a.put("main/modals/change-progress/change-progress.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <form name="updateProgressForm" ng-submit="vm.submitForm()" novalidate class="update-progress-form"> <div class="modal-header"> <h3 class="modal-title" id="modal-title">Specify Progress in %</h3> <button type="button" ng-click="vm.closeModal()" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> </div> <div class="modal-body"> <div class="form-group" ng-class="{ \'has-error\' : updateProgressForm.progress.$invalid && !updateProgressForm.progress.$pristine }"> <input type="text" name="progress" class="form-control" ng-model="vm.progress" ng-minlength="1" ng-maxlength="3" maxlength="3" ng-pattern="/^[1-9][0-9]?$|^100|^0$/" required> <div class="ice-form-error" data-ng-show="updateProgressForm.progress.$error"> <span ng-show="updateProgressForm.progress.$error.required && !updateProgressForm.progress.$pristine">Progress is a required field!</span> <span ng-show="updateProgressForm.progress.$error.pattern && !updateProgressForm.progress.$pristine">Progress value is not valid!</span> </div> </div> </div> <div class="modal-footer"> <button type="submit" class="btn btn-primary" id="engagement-progress-submit" data-ng-disabled="!updateProgressForm.$valid">Save</button> </div> </form>'),a.put("main/modals/checklist/checklist.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-toast is-modal="true"></ice-toast> <ice-loader selector=".checkList-form"></ice-loader> <div class="modal-header checkList"> <button type="button" ng-click="vm.closeModal()" id="close-modal-button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <div class="row margin_btm"> <h2 id="modal-header-checklist-15">{{vm.createUpadeTitle}} Checklist</h2> </div> </div> <div class="modal-body checkList"> <form name="checkListForm" ng-submit="vm.submitForm()" novalidate class="checkList-form"> <div class="row margin_btm" ng-show="vm.create" id="checklist-subject"> Use the form below to create checklist. Please do note that if a file is already associated with another checklist you will need to remove it from that checklist first to be able to associate it. </div> <div class="row margin_btm" ng-show="vm.update" id="checklist-subject-update"> Use the form below to update the checklist. Please do note that if a file is already associated with another checklist you will need to remove it from that checklist first to be able to associate it. </div> <div class="row margin_btm"> <div class="col-md-8 row"> <h3 id="checklist-name-title" class="col-md-12">Name</h3> <div class="col-md-12"><input type="text" placeholder="Checklist Name" name="checkListName" class="form-control" ng-model="vm.checkListName" maxlength="32" ng-trim="false" ng-pattern="/^[a-zA-Z0-9\\&\\ ]*$/" required></div> </div> <div class="col-md-4 row"> <h3 id="checklist-template-title" class="col-md-12">Checklist Template</h3> <div class="col-md-12"> <select id="please-select" ng-model="vm.selectedTemplateUuid" class="form-control" ng-if="vm.modalType === \'create\'" required> <option value>Please Select</option> <option id="{{dt.name}}" ng-repeat="dt in vm.checkListTemplates" value="{{dt.uuid}}" ng-selected="{{dt.Selected == true}}"> {{dt.name}} </option> </select> </div> <div ng-if="vm.modalType != \'create\'" class="col-md-12"> <span class="fnt"> <input type="text" ng-model="vm.selectedTemplateName" class="form-control" disabled> </span> </div> </div> </div> <div class="row margin_btm"> <h3 id="associated-files-title" class="col-md-12 col-no-top">Associate Files</h3> <multiselect ng-model="vm.selectedCheckListAssociatedFiles" options="file.File for file in vm.checkListAssociatedFiles" data-multiple="true" scroll-after-rows="5" filter-after-rows="5" class="col-md-12 checklist-modal-multi-select" ms-header="Select all associated files for the checklist" ms-selected="{{vm.selectedCheckListAssociatedFiles.length > 1 ? vm.selectedCheckListAssociatedFiles.length + \' Associated files\' : vm.selectedCheckListAssociatedFiles.length + \' Associated file\'}} selected" id="select-associated-files" tabindex="-1"> </multiselect> </div> <div data-ng-show="checkListForm.checkListName.$error" class="ice-form-error"> <span ng-show="checkListForm.checkListName.$error.required && !checkListForm.checkListName.$pristine">Name is a required field.</span> <span ng-show="checkListForm.checkListName.$error.maxlength">Provided name is too long.</span> <span ng-show="checkListForm.checkListName.$error.pattern">Name should not include any special chars such as: ,\\%_*."</span> </div> <div class="row margin_btm"> <div class="col-md-12"> <button id="btn-create-checklist" type="submit" class="btn btn-primary" data-ng-disabled="!checkListForm.$valid || vm.isDisabled">{{vm.modalTitle}} Checklist</button> </div> </div> </form> </div>'),a.put("main/modals/checklist/state-approve-or-reject/state-approve-or-reject.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <form name="approveOrRejectState" id="approve-or-reject-state" novalidate> <div class="row modal-header"> <button type="button" ng-click="vm.closeModal()" id="close-modal-button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <span class="state-title"><span class="bold">Checklist:</span> {{vm.checklist_name}}</span> <div class="state-title-border"></div> </div> <div class="row decision-modal-body"> <div class="modal-title" id="modal-title">{{vm.state.replace(\'_\',\' \') | capitalize}}</div> <div class="decision-comment"><div ng-bind-html="vm.modalText"></div></div> <textarea name="entry_comment" rows="3" class="col-md-12 comment-textarea" ng-model="vm.description" ng-trim="false" ng-pattern="/^[a-zA-Z0-9\\&\\,\\.\\ "></textarea> </div> <div data-ng-show="approveOrRejectState.entry_comment.$error" class="ice-form-error"> <span ng-show="approveOrRejectState.entry_comment.$error.pattern">Inserted text should not include any special chars such as: \\%_*."</span> </div> <div class="row modal_buttons"> <button id="approve-state" type="submit" class="col-md-12 btn btn-gradient-success" ng-if="vm.action == \'approve\'" ng-click="vm.submitForm(true)">{{vm.state == \'pending\' ? \'Automate\' : \'Approve\'}}</button> <button id="reject-state" type="submit" class="col-md-12 btn btn-gradient-danger" ng-if="vm.action == \'reject\'" ng-click="vm.submitForm(false)">Reject</button> </div> </form>'),a.put("main/modals/cms-post-modal/cms-post-modal.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="toast-read-more-container"> <div class="modal-header row"> <span class="toast-read-more-title" id="toast-title-id">{{vm.post.title}}</span> <p class="toast-read-more-creation ng-binding">Posted at {{vm.post.publish_date | date2: \'EEEE MMMM doo yyyy\'}} by {{vm.post.user.username}}</p> <button type="button" ng-click="vm.closeModal()" id="close-modal-button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> </div> <div class="modal-body row toast-read-more-content" id="toast-description" ng-bind-html="vm.post.content"></div> <div class="recent-cms-posts-container row"> <div class="line-separator col-md-12"></div> <span class="recent-cms-posts-title">Most recent news & announcements</span> <ul class="recent-cms-posts"> <li class="row" data-ng-repeat="post in vm.recentPosts track by post.id" ng-class="{\'selected\': (post.id === vm.post.id)}" ng-click="vm.loadSelectedPostData(post)"> <span class="col-md-7">{{post.title}}</span><span class="col-md-5 post-creation">Posted at {{post.publish_date | date2: \'EEEE MMMM doo yyyy\'}} by {{post.user.username}}</span> </li> </ul> </div> </div>'),a.put("main/modals/detailed-view/dtsite/detailed-view-dtsites-modal.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <form name="addDTSite" ng-submit="vm.submitForm()" novalidate class="update-progress-form"> <div class="modal-header"> <h3 class="modal-title" id="modal-title">Add Deployment Target</h3> <button type="button" ng-click="vm.closeModal()" id="close-modal-button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> </div> <div class="modal-body"> <div class="table-col-general flex-item"> <select ng-model="vm.json" class="form-control" required> <option value>Please Select</option> <option ng-repeat="site in vm.dtsites" value="{{site.name}}"> {{site.name}} </option> </select> </div> <br> </div> <div class="modal-footer"> <button type="submit" id="add-dt-save-button" class="btn btn-primary" data-ng-disabled="!addDTSite.$valid">Add Deployment Target</button> </div> </form>'),a.put("main/modals/detailed-view/vfc/detailed-view-vfc-modal.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="modal-header"> <h3 class="modal-title" id="modal-title">Add Virtual Function Components (VFCs)</h3> <button type="button" ng-click="vm.closeModal()" id="close-modal-button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> </div> <div class="modal-body"> <div class="vfc-explain">Please use the from below to associate the various VFCs to the virtual function and engagement. You can either choose a company or create a new company if it is not listed.</div> <form name="addVfcForm" ng-submit="vm.submitForm()"> <div data-ng-repeat="vfc in vm.vfcs" class="row"> <!--<div class="flex-container data-row">--> <ng-form name="vfcItemForm"> <div class="col-md-6"> <input type="text" name="name" placeholder="Name" class="form-control" ng-model="vfc.name" ng-trim="false" ng-pattern="/^[a-zA-Z0-9\\&\\ \\-\\_]*$/" maxlength="32" required> </div> <div class="col-md-6"> <input type="text" name="extRefID" placeholder="Ext. Ref ID" class="form-control" ng-model="vfc.external_ref_id" ng-pattern="/^[a-zA-Z0-9]*$/" maxlength="20" required><br> </div> <!-- Virtual Function Component\'s external ref id--> <div class="col-md-6 flex-item"> <select ng-model="vfc.company" id="add-vfc-choose-company" class="form-control" required> <option value>Please Select</option> <option ng-repeat="company in vm.companies" value="{{company.name}}"> {{company.name}} </option> </select> </div> <div class="col-md-6 flex-item"> <input type="text" name="newCompany" placeholder="or create a new company" id="add-vfc-manually-enter-company" class="form-control" ng-model="vfc.company" maxlength="32" ng-trim="false" ng-pattern="/^[a-zA-Z0-9\\&\\ \\-\\_]*$/" required> </div> <div class="head flex-container"> <div id="add-vfc-remove-obj-from-list" class="vfc-remove-button" ng-if="vm.vfcs.length > 1" ng-click="vm.removeChoice($index)"> <div class="remove-icon"></div> </div> </div> <div class="ice-form-error col-md-12" ng-show="(vfcItemForm.name.$error || vfcItemForm.vfc_extRefID.$error || vfcItemForm.newCompany.$error)"> <div ng-show="(vfcItemForm.name.$error.required && !vfcItemForm.name.$pristine) || (vfcItemForm.extRefID.$error.required && !(vfcItemForm.extRefID.$pristine)) || (vfcItemForm.newCompany.$error.required && !(vfcItemForm.newCompany.$pristine))">Please make sure to type a name and Ext. Ref ID for the VFC.</div> <div ng-show="vfcItemForm.name.$error.maxlength || vfcItemForm.extRefID.$error.maxlength || vfcItemForm.newCompany.$error.maxlength"> Name / Ext. Ref ID / new company name is too long.</div> <div ng-show="vfcItemForm.name.$error.pattern || vfcItemForm.extRefID.$error.pattern || vfcItemForm.newCompany.$error.pattern"> Name / Ext. Ref ID / new company name should not include any special chars such as: .,\\%" </div> </div> </ng-form> </div> <div data-ng-disabled="!addVfcForm.$valid"> <a ng-if="!vm.isModal" id="add-vfc-modal" class="modal-add-vfc" ng-click="vm.addNewChoice()"> <span class="add-icon"></span><span class="add-text">Add VFC</span> </a> </div> <div class="modal-footer"> <button type="submit" id="add-vfc-save-button" class="btn btn-primary" data-ng-disabled="!addVfcForm.$valid">Add VFCs</button> </div> </form> </div>'),a.put("main/modals/feedback/feedback.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="modal-header"> <h3 class="modal-title">{{ \'Add\' }} Feedback</h3> <button type="button" ng-click="vm.closeModal()" id="close-modal-button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> </div> <div class="modal-body feedback-modal-body"> <span>Use the form below to {{\'add\' }} the current feedback.</span> <form name="feedbackForm" ng-submit="vm.submitForm()" novalidate class="feedback-modal-form"> <textarea class="col-sm-12 col-xs-12 col-md-12 feedback-modal-description" name="description" required ng-model="vm.feedback_modal_description"></textarea> <div class="ice-form-error" data-ng-show="feedbackForm.description.$error"> <span ng-show="feedbackForm.description.$error.required && !feedbackForm.description.$pristine">Description is a required field.</span> </div> <div class="modal-footer"> <button type="submit" id="add-feedback-save-button" class="btn btn-primary" data-ng-disabled="!feedbackForm.$valid">{{\'Add\'}} feedback</button> </div> </form> </div>'),a.put("main/modals/general-log-modal/general-log-modal.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="general-log-containter"> <div class="modal-header row general-log-subtitle"> <span class="general-log-modal-title" id="general-log-modal-title-id">{{vm.headline}}</span> <button type="button" ng-click="vm.closeModal()" id="close-modal-button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> </div> <pre class="modal-body row general-log-body" id="general-log-modal-body-id" ng-bind-html="vm.body"></pre> </div>'),
a.put("main/modals/general-prompt-modal/general-prompt-modal.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="modal-header"> <button ng-if="vm.is_close_modal_button" type="button" ng-click="vm.closeModal()" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <div ng-if="vm.upper_headline" class="general-prompt-upper-dash"> <div id="general-prompt-upper-headline" class="general-prompt-upper-headline">{{vm.upper_headline}}<span ng-if="vm.upper_headline" class="upper-headline-value">{{vm.upper_headline_value}}</span></div> </div> <div class="general-prompt-title"><span class="bold" id="general-prompt-title">{{vm.headline}}</span></div> </div> <div class="modal-body row general-prompt-body"> <div ng-if="vm.is_message" class="general-prompt-text-details" ng-bind-html="vm.message"></div> <div ng-if="!vm.is_message">&nbsp;</div> <button id="general-prompt-approve-btn" type="submit" class="col-md-5 btn btn-gradient-success" ng-click="vm.closeModal(true)">{{vm.approveText}}</button> <span class="col-md-2"></span> <button id="general-prompt-cancel-btn" type="submit" class="col-md-5 btn btn-gradient-danger" ng-click="vm.closeModal(false)">{{vm.cancelText}}</button> </div>'),a.put("main/modals/next-steps/next-steps.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <ice-toast is-modal="true"></ice-toast> <div class="modal-header next-steps"> <button type="button" ng-click="vm.closeModal()" id="close-modal-button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <div class="data-row-wrapper col-md-12 checklist-name"> <span class="font_header"> {{vm.checklist.uuid == undefined && \'Engagement\' || \'Checklist\' }}: </span> <span class="font_header_chk_name margin_btm"> {{vm.title}} </span> </div> </div> <div class="modal-body next-steps"> <form name="nextStepsForm" ng-submit="vm.submitForm()" novalidate class="checkList-form" style="position:relative"> <div class="data-row-wrapper addNextSteps"> <div class="row"> <div class="col-md-12"> <span class="font_header_add_next"> <h2>{{vm.edit ? \'Edit\' : \'Add\'}} Next Steps</h2> </span> </div> </div> <div class="row"> <div class="col-md-12"> <span class="m_18_r">Use the form below to {{vm.edit ? \'edit next step\' : \'add next steps\'}}. You will need to specify assignees, which files it applies to and the due date.</span> </div> </div> </div> <div data-ng-repeat="nextStep in vm.nextSteps" ng-class="{lineColor: ($index % 2 != 0)}" class="data-row-wrapper repeaterNextStep"> <div class="form-group row posRelative"> <span class="remove-icon posAbsDelBtn" ng-if="vm.nextSteps.length > 1" ng-click="vm.removeStep($index)"></span> <div class="col-md-12"> <wysiwyg textarea-id="description" textarea-class="form-control" textarea-name="description" name="description" textarea-height="160px" ng-required="true" ng-model="nextStep.description" class="ice-wysiwyg" enable-bootstrap-title="true" textarea-menu="vm.wysiwyg_menu" required> </wysiwyg> </div> <div class="col-md-12 padTop4"> <multiselect ng-model="nextStep.files" options="c.File for c in vm.associated_files" name="{{vm.associated_files}}" data-multiple="true" scroll-after-rows="5" filter-after-rows="5" ng-required="vm.checklist.uuid != undefined" ms-selected="{{nextStep.files.length > 1 ? vm.get_chosen_files_num(nextStep) + \' files\' : nextStep.files.length + \' file\'}} selected" class="ms" ms-header="Select all associated files to this next step" id="associated-files-list" tabindex="-1" change="vm.verify_files_choice(nextStep)"> </multiselect> </div> <div class="col-md-6 padTop10"> <multiselect ng-model="nextStep.assigneesUuids" options="c.name for c in vm.assigness" data-multiple="true" scroll-after-rows="5" filter-after-rows="5" ng-required="vm.checklist.uuid != undefined" ms-header="Select assignees" ms-selected="{{nextStep.assigneesUuidss.length > 1 ? nextStep.assigneesUuidss.length + \' assignees\' : nextStep.assigneesUuidss.length + \' assignee\'}} selected" id="select-assigness" tabindex="-1"> </multiselect> </div> <div class="col-md-6 padTop10"> <div flex-gt-xs> <md-datepicker ng-model-options="{timezone: \'gmt\'}" md-min-date="vm.minDate" class="btn btn-default" ng-model="nextStep.duedate" md-placeholder="Add a Due Date" data-ng-required="true"></md-datepicker> </div> </div> </div> </div> <div class="data-row-wrapper" ng-if="!vm.edit"> <div class="col-md-12 padLeft0"> <a class="add-button" ng-click="vm.addNewStep()"> <span class="add-icon"></span> <span class="add-text">Add Another Next Step</span> </a> </div> </div> <div class="data-row-wrapper"> <button type="submit" id="btn-submit" class="btn btn-primary" data-ng-disabled="!nextStepsForm.$valid">Submit Next Steps</button> </div> <div class="data-row-wrapper text-right font-deco" ng-click="vm.closeModal()"> Skip for now </div> </form> </div>'),a.put("main/modals/select-el-modal/select-el-modal.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="select-engagement-lead-modal"> <div class="modal-header row"> <button type="button" ng-click="vm.closeModal()" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <div id="archive-engagement-title" class="select-engagement-lead-title"><span>Select Engagement Lead</span></div> <span class="select-engagement-lead-description">Please select engagement lead from the list below.</span> </div> <div class="modal-body row"> <div class="form-group"> <select style="width:100%" name="selected-user" ng-model="vm.selectedUserUuid" ng-change="vm.onUserSelect()" ng-options="el.uuid as el.full_name for el in vm.engagementLeads track by el.uuid" class="form-control"> </select> </div> <div class="modal-body"> Engagement lead cannot be both reviewer and peer reviewer.<br> If you assign the same user to two roles, we will automatically switch the other users\' role. </div> </div> </div>'),a.put("main/modals/set-eng-stage/set-eng-stage-modal.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="modal-header row"> <button type="button" ng-click="vm.closeModal()" id="close-modal-button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <div class="set-stage-title"><span class="bold">Engagement:</span> {{vm.eng_name}}</div> </div> <div class="modal-body row"> <span class="set-stage-title"><span class="bold">Current stage:</span> {{vm.current_stage.replace(\'_\',\' \') | capitalize}}</span> <div class="set-stage-modal-text-details" id="modal-message-{{vm.stage}}" ng-bind-html="vm.modalText"></div> <button type="submit" class="col-md-5 btn btn-gradient-success" ng-click="vm.closeModal(true)">Approve</button> <span class="col-md-2"></span> <button type="submit" class="col-md-5 btn btn-gradient-danger" ng-click="vm.closeModal(false)">Cancel</button> </div>'),a.put("main/modals/set-eng-stage/set_eng_stage_modal.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <form name="approveOrRejectStage" id="approve-or-reject-stage" novalidate> <div class="row modal-header"> <button type="button" ng-click="vm.closeModal()" id="close-modal-button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <span class="state-title bold"><span class="bold">Engagement:</span> {{vm.engagement_name}}</span> <div class="state-title-border"></div> </div> <div class="row decision-modal-body"> <div class="modal-title">Current stage: {{vm.stage.replace(\'_\',\' \') | capitalize}}</div> <div class="decision-comment" id="stage-{{vm.stage}}"><div ng-bind-html="vm.modalText"></div></div> </div> <div class="row modal_buttons"> <button type="submit" class="col-md-5 btn btn-gradient-success" ng-click="vm.closeModal(true)">Approve</button> <span class="col-md-2"></span> <button type="submit" class="col-md-5 btn btn-gradient-danger" ng-click="vm.closeModal(false)">Reject</button> </div> </form>'),a.put("main/modals/status/status.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="modal-header"> <h3 class="modal-title" id="modal-title">{{vm.action == \'edit\' && \'Current\' || \'Add\' }} Status</h3> <button type="button" ng-click="vm.closeModal()" id="close-modal-button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> </div> <div class="modal-body status-modal-body"> <span>Use the form below to {{vm.action == \'edit\' && \'update\' || \'add\' }} the current status of the engagement.</span> <form name="statusForm" ng-submit="vm.submitForm()" novalidate class="status-modal-form"> <textarea class="col-sm-12 col-xs-12 col-md-12 status-modal-description" name="description" ng-maxlength="256" required ng-model="vm.status_modal_description" ng-pattern="/^[a-zA-Z0-9\\&\\,\\.\\ ]*$/"></textarea> <div class="ice-form-error" data-ng-show="statusForm.description.$error"> <span ng-show="statusForm.description.$error.required && !statusForm.description.$pristine">Description is a required field.</span> <span ng-show="statusForm.description.$error.maxlength">Description is too long.</span> <span ng-show="statusForm.description.$error.pattern">Description should not include any special chars such as: *^-\\%_"</span> </div> <div class="modal-footer"> <button type="submit" id="add-vfc-save-button" class="btn btn-primary" data-ng-disabled="!statusForm.$valid">{{vm.action == \'edit\' && \'Update current\' || \'Add\' }} status</button> </div> </form> </div>'),a.put("main/modals/target-lab-entry/change-lab-entry-date.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <form name="updateTargetLabDate" ng-submit="vm.submitForm()" novalidate class="update-target-lab-form"> <div class="modal-header"> <h3 class="modal-title" id="modal-title">Target Lab Entry</h3> <button type="button" ng-click="vm.closeModal()" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> </div> <div class="modal-body"> <div class="form-group" ng-class="{ \'has-error\' : updateTargetLabDate.date.$invalid && !updateTargetLabDate.date.$pristine }"> <md-datepicker id="lab-entry-date" md-min-date="vm.minDate" ng-click="ctrl.openCalendarPane($event)" ng-model-options="{timezone: \'gmt\'}" class="btn btn-default datepicker_btn edit-target-lab-date-modal" ng-model="vm.targetLabDate" md-placeholder="Choose Lab Entry Date"></md-datepicker> <input type="hidden" id="input-lab-entry-date" value="{{vm.targetLabDate }}"> <span ng-show="updateTargetLabDate.date.$error.required && !updateTargetLabDate.date.$pristine">Date is required field!</span> </div> </div> <div class="modal-footer"> <button type="submit" class="btn btn-primary" data-ng-disabled="!updateTargetLabDate.$valid">Save</button> </div> </form>'),a.put("main/modals/update-engagement-status-modal/update-engagement-status-modal.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="update-engagement-status-modal"> <div class="modal-header row"> <button type="button" ng-click="vm.closeModal()" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <div id="update-engagement-status-title" class="update-engagement-status-title"><span>Update Status</span></div> <span class="update-engagement-status-description">Use the form below to update status details of the engagement.</span> </div> <div class="modal-body row"> <form name="updateEngagementStatusForm" ng-submit="vm.updateEngagement()" novalidate class=""> <div class="form-group" ng-class="{ \'has-error\' : updateEngagementStatusForm.progress.$invalid && updateEngagementStatusForm.progress.$dirty }"> <span class="form-field-title">Progress in %</span> <input type="number" name="progress" class="form-control" ng-model="vm.engagement.progress" required min="0" max="100"> <div class="ice-form-error" data-ng-show="updateEngagementStatusForm.progress.$error"> <span ng-show="updateEngagementStatusForm.progress.$error.required && updateEngagementStatusForm.progress.$dirty" class="help-block ng-hide" aria-hidden="true">Please enter progress</span> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : updateEngagementStatusForm.targetCompletion.$invalid && updateEngagementStatusForm.targetCompletion.$dirty }"> <span class="form-field-title">Target Completion Date</span> <md-datepicker ng-click="ctrl.openCalendarPane($event)" class="btn btn-default" ng-model="vm.engagement.target_completion_date"></md-datepicker> <input type="hidden" name="targetCompletion" class="form-control" ng-model="vm.engagement.target_completion_date" required> <div class="ice-form-error" data-ng-show="updateEngagementStatusForm.targetCompletion.$error"> <span ng-show="updateEngagementStatusForm.targetCompletion.$error.date && updateEngagementStatusForm.targetCompletion.$dirty" class="help-block ng-hide" aria-hidden="true">Please enter target completion date</span> </div> </div> <div class="panel panel-default"> <div class="panel-heading">Validation Criteria</div> <div class="panel-body"> <div class="form-group"> <span class="form-field-title">HEAT Validated</span> <md-datepicker ng-click="ctrl.openCalendarPane($event)" class="btn btn-default" ng-model="vm.engagement.heat_validated_time"></md-datepicker> <input type="hidden" name="heatValidated" class="form-control" ng-model="vm.engagement.heat_validated_time"> </div> <div class="form-group"> <span class="form-field-title">Image Scan</span> <md-datepicker ng-click="ctrl.openCalendarPane($event)" class="btn btn-default" ng-model="vm.engagement.image_scan_time"></md-datepicker> <input type="hidden" name="imageScan" class="form-control" ng-model="vm.engagement.image_scan_time"> </div> <div class="form-group"> <span class="form-field-title">AIC Instantiation</span> <md-datepicker ng-click="ctrl.openCalendarPane($event)" class="btn btn-default" ng-model="vm.engagement.aic_instantiation_time"></md-datepicker> <input type="hidden" name="aicInstantiation" class="form-control" ng-model="vm.engagement.aic_instantiation_time"> </div> <div class="form-group"> <span class="form-field-title">ASDC Onboarding</span> <md-datepicker ng-click="ctrl.openCalendarPane($event)" class="btn btn-default" ng-model="vm.engagement.asdc_onboarding_time"></md-datepicker> <input type="hidden" name="asdcOnboarding" class="form-control" ng-model="vm.engagement.asdc_onboarding_time"> </div> </div> </div> <div class="form-group" ng-class="{ \'has-error\' : updateEngagementStatusForm.status.$invalid && updateEngagementStatusForm.status.$dirty }"> <span class="form-field-title">Status</span> <textarea type="text" name="status" class="form-control" ng-model="vm.status" required></textarea> <div class="ice-form-error" data-ng-show="updateEngagementStatusForm.status.$error"> <span ng-show="updateEngagementStatusForm.status.$error.required && updateEngagementStatusForm.status.$dirty" class="help-block ng-hide" aria-hidden="true">Please enter status</span> </div> </div> <button class="btn btn-primary col-md-12" data-ng-disabled="updateEngagementStatusForm.$invalid" type="submit">Submit</button> </form> </div> </div>'),a.put("main/modals/validation-details/detailed-view-validation-details-modal.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="modal-header"> <h3 class="modal-title" id="modal-title">Validation Details (ECOMP, AIC, VF Version)</h3> <button type="button" ng-click="vm.closeModal()" id="close-modal-button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body"> <form name="ValidationDetailsForm" id="validation-details-form" ng-submit="vm.submitForm()"> <ng-form name="vfcItemForm"> <div class="row"> <div class="col-md-12 field-title" id="vf-version">VF Version</div> <div class="col-md-12"> <input type="text" name="VFversion" id="id-vf-version" ng-model="vm.VFVersion" maxlength="32" class="form-control"> </div> <div class="ice-form-error" data-ng-show="vfItemForm.VFVersion.$error"> <span ng-show="vfItemForm.VFVersion.$error.pattern">VF Version can be alphanumeric or/and Hyphen</span> </div> </div> <div class="row"> <div class="col-md-12 field-title" id="target-aic-version-headline">Target AIC Version</div> <div class="col-md-12"> <select id="aic-version-select" ng-model="vm.TargetAic" class="form-control"> <option value="" selected disabled>AIC Version</option> <option meta-order="{{$index}}" ng-repeat="dt in vm.deployTargets" id="aic_select_options_{{dt.version}}" value="{{dt.uuid}}" ng-disabled="dt.disabled">{{dt.name}} {{dt.version}} {{dt.disabled ? "- Deprecated" : ""}}</option> </select> </div> </div> <div class="row"> <div class="field-title col-md-12">ECOMP Release</div> <div class="col-md-12"> <select id="ecomp-release-select" ng-model="vm.ECOMPRelease" class="form-control"> <option value="" selected disabled>ECOMP Release</option> <option meta-order="{{$index}}" ng-repeat="dt in vm.ECOMPReleases" id="ecomp-select-options-{{dt.name}}" value="{{dt.uuid}}" ng-disabled="dt.disabled">{{dt.name}} {{dt.disabled ? "- Deprecated" : ""}}</option> </select> </div> </div> </ng-form> <div class="modal-footer"> <button type="submit" id="edit-validation-setails-save-button" class="btn btn-primary" data-ng-disabled="!ValidationDetailsForm.$valid">Save Validation Details</button> </div> </form> </div>'),
a.put("core/layouts/dashboard/dashboard.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="dashboard"> <div id="toolbar" class="toolbar navbar-fixed-top" ui-view="toolbar"></div> <div id="content-container" class="content-container"> <div id="navigation" class="navigation col-md-2" ui-view="navigation"></div> <div id="content" class="content" ng-class="state.current.params.displaySidebar ? \'col-md-7\' : \'col-md-10\'"> <ice-announcement class="col-md-12"></ice-announcement> <ice-toast is-modal="false" class="col-md-12"></ice-toast> <div ui-view="content"></div> </div> <div ng-if="state.current.params.displaySidebar" id="sidebar" ui-view="sidebar" class="col-md-3"></div> </div> </div>'),a.put("core/layouts/full-page-with-header/full-page-with-header.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <nav id="main-nav" class="welcome-navbar navbar"> <div class="container-fluid"> <div class="navbar-header welcome-nav-link"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse-1"> <span class="sr-only">Toggle navigation</span> Menu <i class="fa fa-bars"></i> </button> <a class="welcome-logo navbar-brand page-scroll" href="#/"> <img class="logo-trans logo-reg" id="logo" src="/styles/images/d2sandbox_logos-150x30.png" height="30" width="150" alt="AT&amp;T | {{\'program.name\' | i18next}}"> </a> </div> <div class="collapse navbar-collapse" id="navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> <li> <a class="welcome-nav-link page-scroll" ui-sref="app.login">Login</a> </li> <li> <a class="welcome-nav-link page-scroll" ui-sref="app.register">Sign Up</a> </li> </ul> </div> </div> </nav> <div id="full-page-with-header" class="template-layout"> <div id="header-title"> <h1 ng-bind-html="headerTitle"></h1> <h2 ng-bind-html="headerSubTitle"></h2> </div> <div id="content-container" class="content-container"> <div id="content" class="content col-md-12"> <div class="container"> <div class="row"> <div class="col-md-2"></div> <ice-toast is-modal="false" class="col-md-8"></ice-toast> <div class="col-md-2"></div> </div> </div> <div ui-view="content"></div> </div> </div> </div>'),a.put("core/navigation/layouts/account-navigation/navigation.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="dashboard-navigation"> <ice-loader selector=".engagments-list"></ice-loader> <h1 class="caption profile">Profile</h1> <ul class="actions-list"> <li id="app.account-not-selected" ng-class="{\'selected\': vm.selectedPage == \'app.account\'}" ng-click="vm.loadPageContent(\'app.account\')">Account<span class="selected" ng-show="vm.selectedPage == \'app.account\'">&raquo;</span></li> <li id="user-profile-settings" ng-class="{\'selected\': vm.selectedPage == \'app.account.userProfile\'}" ng-click="vm.loadPageContent(\'app.account.userProfile\')">Settings<span class="selected" ng-show="vm.selectedPage == \'app.account.userProfile\'">&raquo;</span></li> <li id="app.notifications-not-selected" ng-class="{\'selected\': vm.selectedPage == \'app.account.notifications\'}" ng-click="vm.loadPageContent(\'app.account.notifications\')">Notifications<span class="selected" ng-show="vm.selectedPage == \'app.account.notifications\'">&raquo;</span></li> </ul> </div>'),a.put("core/navigation/layouts/admin-navigation/navigation.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="admin-navigation"> <ice-loader selector=".engagments-list"></ice-loader> <h1 class="caption" id="left-navigation-title">Admin</h1> <div class="navbar-collapse collapse admin-navbar"> <section class="menu-engagements-category"> <ul class="engagements-list"> <li> <span class="selected clickable sub-category" id="master-checklist-templates">Master Checklist Templates</span> <ul class="engagement-details"> <li data-ng-repeat="template in vm.checkListTemplates" class="clickable"> <span class="engagement_detail_menu_name" ng-class="{\'template-selected\': vm.selectedTemplate.uuid === template.uuid}"> <span ng-click="vm.selectTemplate(template);" name="{{template.name}}">{{template.name}}</span> <span ng-show="vm.selectedTemplate.name == template.name">&raquo;</span> </span> </li> </ul> </li> </ul> </section> </div> </div>'),a.put("core/navigation/layouts/documentation-navigation/navigation.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="documentation"> <ice-loader selector=".documentation-nav"></ice-loader> <span id="mobile-collapse" class="pull-right glyphicon glyphicon-align-justify" data-toggle="collapse" data-target=".navbar-collapse"></span> <h1 class="caption">Documentation</h1> <!-- start of search bar --> <aside id="documentation-search"> <input type="text" id="search-doc" typeahead-template-url="documentationPageSearchTemplate" ng-model="vm.selectedSearchedPage" ng-model-options="{debounce: 300}" uib-typeahead="page for page in vm.documentationPage.children | customDocumentationPageSearch:$viewValue | limitTo:100" typeahead-no-results="noResults" placeholder="Search by page name" class="form-control" typeahead-on-select="vm.loadPageContent($item.id)"> <script type="text/ng-template" id="documentation-page-search-template"><a><span class="search-documentation-name" id="search-{{match.model.title}}">{{match.model.title}}</span>\n </a></script> <div ng-show="noResults" id="search-no-results"> <i class="glyphicon glyphicon-remove"></i> No Match Found </div> </aside> <!-- end of search bar --> <div id="nav-bar-wrapper" class="navbar-collapse collapse"> <ul class="actions-list"> <ul class="pages-list" id="pages-list"> <li ng-class="{\'selected\': vm.documentationPage.id == vm.pageId}" class="page"><span ng-click="vm.loadPageContent(vm.documentationPage.id)">Home</span></li> <li data-ng-repeat="page in vm.documentationPage.children | orderBy: \'_order\'" ng-class="{\'selected\': page.id == vm.pageId}" class="page"> <span ng-click="vm.loadPageContent(page.id)" id="{{page.title}}"> {{page.title}} <span ng-show="page.children && page.children.length > 0" class="fa" ng-class="{\'fa-caret-right\': vm.isPageCollapsed(page), \'fa-caret-down\': !vm.isPageCollapsed(page)}"></span> </span> <ul class="page-childs" ng-class="{\'collapse\': vm.isPageCollapsed(page)}" data-ng-if="page.children && page.children.length > 0"> <li data-ng-repeat="child in page.children | orderBy: \'_order\'" ng-class="{\'selected\': child.id == vm.pageId}" class="sub-page" role="button" tabindex="0"> <span ng-click="vm.loadPageContent(child.id)" id="{{child.title}}" class="child">{{child.title}}</span> <ul class="page-childs" ng-class="{\'collapse\': vm.isPageCollapsed(page)}" data-ng-if="child.children && child.children.length > 0"> <li data-ng-repeat="grandChild in child.children | orderBy: \'_order\'" ng-class="{\'selected\': grandChild.id == vm.pageId}" class="sub-page" role="button" tabindex="0"> <span ng-click="vm.loadPageContent(grandChild.id)" id="{{grandChild.title}}" class="child">{{grandChild.title}}</span> </li> </ul> </li> </ul> </li> </ul> </ul> </div></div>'),a.put("core/navigation/layouts/horizontal-navigation/navigation.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="dashboard-navigation"> <ice-loader selector=".engagements-list"></ice-loader> <get-started-modal></get-started-modal> <h1 class="caption">Engagements<span id="add-engagement" ng-click="vm.openGettingStartedWizard()" class="add-engagement fa fa-plus-circle"></span></h1> <!-- start of search bar --> <span id="mobile-collapse" class="pull-right glyphicon glyphicon-align-justify" data-toggle="collapse" data-target=".navbar-collapse"></span> <aside id="engagement-search"> <input type="text" typeahead-template-url="engagementSelectTemplate" id="search-eng" ng-model="vm.selected_search_engagement" uib-typeahead="engagement for enagement in enagements_search_list | customVFSearchFilter:$viewValue | limitTo:100" popover-trigger="outsideClick" popover-placement="right" uib-popover="For example search by User Email" typeahead-no-results="noResults" placeholder="Eng. ID, VF, VFC, User" class="form-control" typeahead-on-select="vm.searchSelectEngagement($item.engagement__uuid)"> <script type="text/ng-template" id="engagementSelectTemplate"><a>\n <span class="search-engagement-name" id="search-{{match.model.vf__name}}">{{match.model.engagement__engagement_manual_id}}: {{match.model.vf__name}}</span>\n </a></script> <div ng-show="noResults" id="search-no-results"> <i class="glyphicon glyphicon-remove"></i> No Match Found </div> </aside> <div id="nav-bar-wrapper" class="navbar-collapse collapse"> <!-- end of search bar --> <section id="menu-starred" class="menu-engagements-category"> <h2 class="menu-engagement-category-title">Starred</h2> <ul class="engagements-list"> <li data-ng-repeat="engagement in vm.starred_engagements | toArray | orderBy:\'engagement_manual_id\'" ng-class="{\'selected\': engagement.selected===true && vm.view_type != \'dashboard\'}" id="{{engagement.engagement_manual_id}}"> <span ng-if="engagement.red_dot" class="red_dot sprite" alt="{{engagement.red_dot | capitalize}}" title="{{engagement.red_dot | capitalize}}" popover-trigger="mouseenter" popover-html="true" popover-placement="right" uib-popover="{{engagement.red_dot | capitalize}}"> </span> <span id="clickable-{{engagement.name}}" class="clickable" ng-click="vm.selectEngagement(engagement.uuid,\'overview\');">{{engagement.name}}</span> <ul class="engagement-details" data-ng-if="engagement.selected===true && vm.view_type != \'dashboard\'"> <li id="overview-{{engagement.name}}" ng-click="vm.selectEngagement(engagement.uuid,\'overview\');" ng-class="{\'selected\': engagement.page == \'overview\'}" class="clickable"> <span class="engagement_detail_menu_name">Overview</span> <span class="engagement_detail_menu_raquo" ng-if="engagment.page == \'overview\'">&raquo;</span> </li> <li id="detailed-view-{{engagement.name}}" ng-click="vm.selectEngagement(engagement.uuid,\'detailedview\');" ng-class="{\'selected\': engagement.page == \'detailedview\'}" class="clickable"> <span class="engagement_detail_menu_name">Detailed View</span> <span class="engagement_detail_menu_raquo" ng-if="engagment.page == \'detailedview\'">&raquo;</span> </li> <li class="engagement-details-sub-catgeory" ng-if="(vm.isEngagementEL || vm.isAdmin)"> <span class="sub-category-title">Checklist <span data-ng-if="(vm.isReviewer || vm.isAdmin)" id="checklist-plus-{{vm.engagement.uuid}}" class="clickable add-checklist fa fa-plus-circle" data-ng-click="vm.addChecklist(vm.engagement.uuid)" class="clickable"></span> </span> <ul class="engagement-checklist" data-ng-if="engagement.selected===true"> <li data-ng-repeat="checklist in engagement.checklists" id="checklist-{{checklist.uuid}}" ng-class="{\n \'clickable\' : vm.user.uuid == checklist.owner__uuid || vm.isAdmin,\n \'disabled\' : vm.user.uuid != checklist.owner__uuid && !vm.isAdmin || (checklist.state == \'closed\' && !vm.isAdmin),\n \'selected\': engagement.sub_id == checklist.uuid\n }" alt="{{checklist.state | capitalize }}" ng-click="( (checklist.state != \'closed\' && ((vm.me.uuid == checklist.owner__uuid)|| vm.isAdmin)) || ((checklist.state == \'closed\') && vm.isAdmin) ) && vm.selectEngagement(engagement.uuid,\'checklist\',checklist.uuid); "> <span popover-trigger="mouseenter" popover-html="true" popover-placement="right" uib-popover="{{checklist.state | capitalize}}" class="checklist-icon sprite {{checklist.state}}-state"></span>{{checklist.name}} </li> </ul> </li> </ul> </li> </ul> </section> <section id="menu-recent" class="menu-engagements-category"> <h2 class="menu-engagement-category-title">Recent</h2> <ul class="engagements-list"> <li data-ng-repeat="engagement in vm.recent_engagements | toArray | orderBy:\'-last_update\'" ng-class="{\'selected\': engagement.selected===true && vm.view_type != \'dashboard\'}" id="{{engagement.engagement_manual_id}}"> <span ng-if="engagement.red_dot" class="red_dot sprite" alt="{{engagement.red_dot | capitalize}}" title="{{engagement.red_dot | capitalize}}" popover-trigger="mouseenter" popover-html="true" popover-placement="right" uib-popover="{{engagement.red_dot | capitalize}}"> </span> <span id="clickable-{{engagement.name}}" class="clickable" ng-click="vm.selectEngagement(engagement.uuid,\'overview\');"> {{engagement.name}}</span> <ul class="engagement-details" data-ng-if="engagement.selected===true && vm.view_type != \'dashboard\'"> <li id="overview-{{engagement.name}}" ng-click="vm.selectEngagement(engagement.uuid,\'overview\');" ng-class="{\'selected\': engagement.page == \'overview\'}" class="clickable"> <span class="engagement_detail_menu_name">Overview</span> <span class="engagement_detail_menu_raquo" ng-if="engagment.page == \'overview\'">&raquo;</span> </li> <li id="detailed-view-{{engagement.name}}" ng-click="vm.selectEngagement(engagement.uuid,\'detailedview\');" ng-class="{\'selected\': engagement.page == \'detailedview\'}" class="clickable"> <span class="engagement_detail_menu_name">Detailed View</span> <span class="engagement_detail_menu_raquo" ng-if="engagment.page == \'detailedview\'">&raquo;</span> </li> <li class="engagement-details-sub-catgeory" ng-if="vm.isEngagementEL || vm.isAdmin"> <span class="sub-category-title">Checklist <span data-ng-if="vm.isReviewer || vm.isAdmin" id="checklist-plus-{{vm.engagement.uuid}}" class="clickable add-checklist fa fa-plus-circle" data-ng-click="vm.addChecklist(vm.engagement.uuid)" class="clickable"></span> </span> <ul class="engagement-checklist" data-ng-if="engagement.selected===true"> <li data-ng-repeat="checklist in engagement.checklists" id="checklist-{{checklist.uuid}}" ng-class="{\n \'clickable\' : vm.user.uuid == checklist.owner__uuid || vm.isAdmin,\n \'disabled\' : ((vm.user.uuid != checklist.owner__uuid) && !vm.isAdmin) || (checklist.state == \'closed\' && !vm.isAdmin),\n \'selected\': engagement.sub_id == checklist.uuid\n }" alt="{{checklist.state | capitalize }}" ng-click=" ( (checklist.state != \'closed\' && (vm.user.uuid == checklist.owner__uuid || vm.isAdmin)) || ((checklist.state == \'closed\') && vm.isAdmin) ) && vm.selectEngagement(engagement.uuid,\'checklist\',checklist.uuid);"><span popover-trigger="mouseenter" popover-html="true" popover-placement="right" uib-popover="{{checklist.state | capitalize}}" class="checklist-icon sprite {{checklist.state}}-state"></span>{{checklist.name}} </li> </ul> </li> </ul> </li> </ul> </section> <ice-tool-tip></ice-tool-tip> </div></div>'),a.put("core/toolbar/layouts/horizontal-navigation/toolbar.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="col-xs-2 col-sm-2 col-md-2"> <a ui-sref="app.dashboard.dashboard"><div class="header-logo" id="logo"></div></a> </div> <div class="col-xs-8 col-sm-8 col-md-8"> <ul class="header-top-menu"> <li><a ui-sref="app.dashboard.dashboard" id="dashboard">Dashboard</a></li> <li><a ui-sref="app.documentation" id="documentation">Documentation</a></li> </ul> </div> <div class="col-xs-2 col-sm-2 col-md-2 header-right"> <!--<div class="header-chat"></div>--> <span uib-dropdown on-toggle="toggled(open)" dropdown-append-to="toolbar"> <div class="header-avatar" id="avatar" uib-dropdown-toggle> <span ng-if="vm.notifications>0" class="notifications"><span id="notifications-count" class="count">{{vm.notifications}}</span> </span></div> <ul class="dropdown-menu" uib-dropdown-menu role="menu"> <li role="menuitem"><a ui-sref="app.account">Account</a></li> <li class="divider"></li> <li role="menuitem"><a href data-ng-click="vm.addFeedback()" id="feedback-toolbar-link">Feedback</a></li> <li class="divider"></li> <li role="menuitem"><a ui-sref="app.account.notifications">Notifications</a></li> <li class="divider"></li> <li role="menuitem" ng-if="vm.isAdmin"><a ui-sref="app.admin" class="dashboard-admin-link" id="admin-toolbar-link">Admin</a></li> <li class="divider" ng-if="vm.isAdmin"></li> <li role="menuitem"><a href data-ng-click="vm.logout()" class="logout">Logout</a></li> </ul> </span> <!--<i class="fa fa-user"></i>\n <i class="fa fa-sign-out"></i>--> </div>'),a.put("directives/ice-announcement/ice-announcement.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="ice-toast" ng-if="toast.show" ng-show="toast.displayFor==\'all\' || (toast.displayFor==\'modal\' && isModal)"> <uib-alert type="{{toast.type}}" close="closeAlert()"> <span id="announcement-successfully-message" ng-bind-html="toast.message"></span> <a ng-if="toast.readMore" id="read-more-button" ng-click="toast.readMore()"><u> Read more >></u></a> </uib-alert> </div>'),a.put("directives/ice-loader/ice-loader.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="ice-loader" ng-if="loader.show===true"></div>'),a.put("directives/ice-news-and-announcement/ice-news-and-announcement.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="col-md-12" id="news-and-announcements"> <div id="news-and-announcements-header">News & Announcements</div> <ul id="news-and-announcements-list"> <h4 class="news-and-announcements-details-title" ng-if="!cmsPosts || cmsPosts.length === 0">There are no posts.</h4> <li data-ng-repeat="post in cmsPosts" class="news-and-announcements-details"> <div class="news-and-announcements-details-header row"> <h2 class="news-and-announcements-details-title" id="{{post.title}}" ng-click="openCMSReadMoreModal(post)">{{post.title}}</h2> </div> <span class="news-and-announcements-creation">Posted at {{post.publish_date | date2: \'EEEE MMMM doo yyyy\'}} by {{post.user.username}}</span> <p ng-show="showDescription" class="news-and-announcements-description" id="{{post.description}}" ng-bind-html="post.description | htmlspecialchars"></p> </li> </ul> </div>'),
-a.put("directives/ice-toast/ice-toast.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="ice-toast" ng-if="toast.show" ng-show="toast.displayFor==\'all\' || (toast.displayFor==\'modal\' && isModal)"> <uib-alert type="{{toast.type}}" close="closeAlert()"> <span id="toast-successfully-message" ng-bind-html="toast.message"></span> <a ng-if="toast.readMore" id="read-more-button" ng-click="toast.readMore()"><u> Read more >></u></a> </uib-alert> </div>'),a.put("directives/ice-tooltip/ice-tooltip.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div ng-show="tipContent && tipContent.excerpt" class="col-md-12 tooltip-container"> <div class="tooltip-title ng-binding" id="tooltip-title">Did you know?</div> <div class="tooltip-content"> <h4 id="tooltip-description">{{tipContent.excerpt}}</h4> </div> </div>'),a.put("directives/progress/progress.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="steps-progress-wrapper"> <div class="row progress-body-content"> <span id="progress_bar_{{data.manual_id}}" class="progress-left-content col-md-8"> <div class="description"> <span ng-if="!statuses" class="progress-title"><span class="manual-id">Progress</span> <span uib-popover="This is where you can see the current progress in the validation.\n You will also see the projected days left before the {{\'program.name\' | i18next}} team has completed\n the validation." popover-title="Progress" popover-trigger="click" popover-html="true" popover-placement="right" class="progress-question-mark fa fa-question-circle-o"> <span ng-mouseover="" ng-mouseleave="" class="" data-ng-click="vm"></span> </span> </span> <span ng-if="statuses" class="progress-title"> <span id="starred-{{data.manual_id}}" class="star-engagement-action fa" ng-class="data.starred ? \'fa-star\' : \'fa-star-o\'" ng-click="starEngagement()"></span> <span ng-click="goToEngagement(data.engagement_uuid)" class="progress-click"><span class="manual-id" id="eng-{{data.manual_id}}: {{data.name}}">{{data.manual_id}}: </span>{{data.name}}</span> </span> </div> <div class="steps-progress-bar"> <div class="progress-filled" ng-style="{\'flex-grow\': progress}"></div> <div class="progress-empty" data-ng-class="{\'right\': progress<=50, \'full\' : progress==100}" ng-style="{\'flex-grow\': 100-progress}"> <span id="progress-percentage" class="percents">{{progress}}&nbsp;%</span> <span id="edit-change-progress" class="edit fa fa-pencil-square-o" data-ng-if="data.enable_edit" data-ng-click="changeProgress()"></span> </div> </div> <div class="progress-version-release row"> <span class="col-md-4">Target AIC Version: {{data.aic_version}}</span> <span class="col-md-4"> ECOMP Release: {{data.ecomp_release}}</span> <span class="col-md-4"> VNF Version: <span class="vnf_version_value" ng-bind="data.vnf_version ? data.vnf_version : \'-\'"></span></span> </div> </span> <span class="progress-side-info col-md-4"> <div class="row"> <div><span class="progress-side-info-row progress-side-info-first-row col-md-7">Heat Validated:</span><span id="heat-validated-time" class="value col-md-5">{{data.heat_validated_time | date:\'shortDate\'}}</span></div> <div><span class="progress-side-info-row col-md-7">Image Scan:</span><span id="image-scan-time" class="value col-md-5">{{data.image_scan_time | date:\'shortDate\'}}</span></div> <div><span class="progress-side-info-row col-md-7">AIC Instantiation:</span><span id="aic-instantiation-time" class="value col-md-5">{{data.aic_instantiation_time | date:\'shortDate\'}}</span></div> <div><span class="progress-side-info-row progress-side-info-last-row col-md-7">ASDC Onboarding:</span><span id="asdc-onboarding-time" class="value col-md-5">{{data.asdc_onboarding_time | date:\'shortDate\'}}</span></div> </div> </span> </div></div>'),a.put("directives/step-stages/step-stages.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="steps-stages-wrapper"> <div id="set-stage-{{const.intake}}" ng-click="set_stage(\'Intake\')" class="steps-stage" ng-mouseover="hover_actions(true,1)" ng-mouseleave="hover_actions(false,0)" data-ng-class="{\'selected\': stage_num == 1, \'previous-stage\': stage_num > 1, \'hover-selected\': (priviliged == true) && (hover == true && temp_num == 1), \'hover-previous-stage\': (priviliged == true) &&(hover == true && temp_num > 1)}"><span class="circle"></span><span class="line"></span><span class="text">{{const.intake}}</span></div> <div id="set-stage-{{const.active}}" ng-click="set_stage(\'Active\')" class="steps-stage" ng-mouseover="hover_actions(true,2)" ng-mouseleave="hover_actions(false,0)" data-ng-class="{\'selected\': stage_num == 2, \'previous-stage\': stage_num > 2, \'hover-selected\': (priviliged == true) && (hover == true && temp_num == 2), \'hover-previous-stage\': (priviliged == true) &&(hover == true && temp_num > 2)}"><span class="circle"></span><span class="line"></span><span class="text">{{const.active}}</span></div> <div id="set-stage-{{const.validated}}" ng-click="set_stage(\'Validated\')" class="steps-stage" ng-mouseover="hover_actions(true,3)" ng-mouseleave="hover_actions(false,0)" data-ng-class="{\'selected\': stage_num == 3, \'previous-stage\': stage_num > 3, \'hover-selected\': (priviliged == true) && (hover == true && temp_num == 3), \'hover-previous-stage\': (priviliged == true) &&(hover == true && temp_num > 3)}"><span class="circle"></span><span class="line"></span><span class="text">{{const.validated}}</span></div> <div id="set-stage-{{const.completed}}" ng-click="set_stage(\'Completed\')" class="steps-stage" ng-mouseover="hover_actions(true,4)" ng-mouseleave="hover_actions(false,0)" data-ng-class="{\'selected\': stage_num == 4, \'hover-selected\': (priviliged == true) && (hover == true && temp_num == 4), }"><span class="circle"></span><span class="line"></span><span class="text">{{const.completed}}</span></div> </div>')}]);
+a.put("directives/ice-toast/ice-toast.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="ice-toast" ng-if="toast.show" ng-show="toast.displayFor==\'all\' || (toast.displayFor==\'modal\' && isModal)"> <uib-alert type="{{toast.type}}" close="closeAlert()"> <span id="toast-successfully-message" ng-bind-html="toast.message"></span> <a ng-if="toast.readMore" id="read-more-button" ng-click="toast.readMore()"><u> Read more >></u></a> </uib-alert> </div>'),a.put("directives/ice-tooltip/ice-tooltip.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div ng-show="tipContent && tipContent.excerpt" class="col-md-12 tooltip-container"> <div class="tooltip-title ng-binding" id="tooltip-title">Did you know?</div> <div class="tooltip-content"> <h4 id="tooltip-description">{{tipContent.excerpt}}</h4> </div> </div>'),a.put("directives/progress/progress.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="steps-progress-wrapper"> <div class="row progress-body-content"> <span id="progress_bar_{{data.manual_id}}" class="progress-left-content col-md-8"> <div class="description"> <span ng-if="!statuses" class="progress-title"><span class="manual-id">Progress</span> <span uib-popover="This is where you can see the current progress in the validation.\n You will also see the projected days left before the {{\'program.name\' | i18next}} team has completed\n the validation." popover-title="Progress" popover-trigger="click" popover-html="true" popover-placement="right" class="progress-question-mark fa fa-question-circle-o"> <span ng-mouseover="" ng-mouseleave="" class="" data-ng-click="vm"></span> </span> </span> <span ng-if="statuses" class="progress-title"> <span id="starred-{{data.manual_id}}" class="star-engagement-action fa" ng-class="data.starred ? \'fa-star\' : \'fa-star-o\'" ng-click="starEngagement()"></span> <span ng-click="goToEngagement(data.engagement_uuid)" class="progress-click"><span class="manual-id" id="eng-{{data.manual_id}}: {{data.name}}">{{data.manual_id}}: </span>{{data.name}}</span> </span> </div> <div class="steps-progress-bar"> <div class="progress-filled" ng-style="{\'flex-grow\': progress}"></div> <div class="progress-empty" data-ng-class="{\'right\': progress<=50, \'full\' : progress==100}" ng-style="{\'flex-grow\': 100-progress}"> <span id="progress-percentage" class="percents">{{progress}}&nbsp;%</span> <span id="edit-change-progress" class="edit fa fa-pencil-square-o" data-ng-if="data.enable_edit" data-ng-click="changeProgress()"></span> </div> </div> <div class="progress-version-release row"> <span class="col-md-4">Target AIC Version: {{data.aic_version}}</span> <span class="col-md-4"> ECOMP Release: {{data.ecomp_release}}</span> <span class="col-md-4"> VNF Version: <span class="vnf_version_value" ng-bind="data.vnf_version ? data.vnf_version : \'-\'"></span></span> </div> </span> <span class="progress-side-info col-md-4"> <div class="row"> <div><span class="progress-side-info-row progress-side-info-first-row col-md-7">Heat Validated:</span><span id="heat-validated-time" class="value col-md-5">{{data.heat_validated_time | date:\'shortDate\'}}</span></div> <div><span class="progress-side-info-row col-md-7">Image Scan:</span><span id="image-scan-time" class="value col-md-5">{{data.image_scan_time | date:\'shortDate\'}}</span></div> <div><span class="progress-side-info-row col-md-7">AIC Instantiation:</span><span id="aic-instantiation-time" class="value col-md-5">{{data.aic_instantiation_time | date:\'shortDate\'}}</span></div> <div><span class="progress-side-info-row progress-side-info-last-row col-md-7">ASDC Onboarding:</span><span id="asdc-onboarding-time" class="value col-md-5">{{data.asdc_onboarding_time | date:\'shortDate\'}}</span></div> </div> </span> </div></div>'),a.put("directives/step-stages/step-stages.html",'<!--\n============LICENSE_START========================================== \norg.onap.vvp/portal\n===================================================================\nCopyright © 2017 AT&T Intellectual Property. All rights reserved.\n===================================================================\n\nUnless otherwise specified, all software contained herein is licensed\nunder the Apache License, Version 2.0 (the “License”);\nyou may not use this software except in compliance with the License.\nYou may obtain a copy of the License at\n\n http:www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nUnless otherwise specified, all documentation contained herein is licensed\nunder the Creative Commons License, Attribution 4.0 Intl. (the “License”);\nyou may not use this documentation except in compliance with the License.\nYou may obtain a copy of the License at\n\n https:creativecommons.org/licenses/by/4.0/\n\nUnless required by applicable law or agreed to in writing, documentation\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n============LICENSE_END============================================\n\nECOMP is a trademark and service mark of AT&T Intellectual Property.--> <div class="steps-stages-wrapper"> <div id="set-stage-{{const.intake}}" ng-click="set_stage(\'Intake\')" class="steps-stage" ng-mouseover="hover_actions(true,1)" ng-mouseleave="hover_actions(false,0)" data-ng-class="{\'selected\': stage_num == 1, \'previous-stage\': stage_num > 1, \'hover-selected\': (priviliged == true) && (hover == true && temp_num == 1), \'hover-previous-stage\': (priviliged == true) &&(hover == true && temp_num > 1)}"><span class="circle"></span><span class="line"></span><span class="text">{{const.intake}}</span></div> <div id="set-stage-{{const.active}}" ng-click="set_stage(\'Active\')" class="steps-stage" ng-mouseover="hover_actions(true,2)" ng-mouseleave="hover_actions(false,0)" data-ng-class="{\'selected\': stage_num == 2, \'previous-stage\': stage_num > 2, \'hover-selected\': (priviliged == true) && (hover == true && temp_num == 2), \'hover-previous-stage\': (priviliged == true) &&(hover == true && temp_num > 2)}"><span class="circle"></span><span class="line"></span><span class="text">{{const.active}}</span></div> <div id="set-stage-{{const.validated}}" ng-click="set_stage(\'Validated\')" class="steps-stage" ng-mouseover="hover_actions(true,3)" ng-mouseleave="hover_actions(false,0)" data-ng-class="{\'selected\': stage_num == 3, \'previous-stage\': stage_num > 3, \'hover-selected\': (priviliged == true) && (hover == true && temp_num == 3), \'hover-previous-stage\': (priviliged == true) &&(hover == true && temp_num > 3)}"><span class="circle"></span><span class="line"></span><span class="text">{{const.validated}}</span></div> <div id="set-stage-{{const.completed}}" ng-click="set_stage(\'Completed\')" class="steps-stage" ng-mouseover="hover_actions(true,4)" ng-mouseleave="hover_actions(false,0)" data-ng-class="{\'selected\': stage_num == 4, \'hover-selected\': (priviliged == true) && (hover == true && temp_num == 4), }"><span class="circle"></span><span class="line"></span><span class="text">{{const.completed}}</span></div> </div>')}]); \ No newline at end of file
diff --git a/vvp/dist/scripts/vendor.79ec8dc5.js b/vvp/dist/scripts/vendor.30972ab5.js
index 1d16621f..af036833 100644
--- a/vvp/dist/scripts/vendor.79ec8dc5.js
+++ b/vvp/dist/scripts/vendor.30972ab5.js
@@ -14,7 +14,7 @@ if(u&&n.dropdownMenu){var e,i,m,v=h.positionElements(b,n.dropdownMenu,"bottom-le
return d.setHours(c.getHours(),c.getMinutes(),c.getSeconds()),d}function r(){return(null===a.hours||""===a.hours)&&(null===a.minutes||""===a.minutes)&&(!a.showSeconds||a.showSeconds&&(null===a.seconds||""===a.seconds))}var s=new Date,t=[],u={$setViewValue:angular.noop},v=angular.isDefined(c.meridians)?a.$parent.$eval(c.meridians):g.meridians||f.DATETIME_FORMATS.AMPMS,w=angular.isDefined(c.padHours)?a.$parent.$eval(c.padHours):!0;a.tabindex=angular.isDefined(c.tabindex)?c.tabindex:0,b.removeAttr("tabindex"),this.init=function(b,d){u=b,u.$render=this.render,u.$formatters.unshift(function(a){return a?new Date(a):null});var e=d.eq(0),f=d.eq(1),h=d.eq(2),i=angular.isDefined(c.mousewheel)?a.$parent.$eval(c.mousewheel):g.mousewheel;i&&this.setupMousewheelEvents(e,f,h);var j=angular.isDefined(c.arrowkeys)?a.$parent.$eval(c.arrowkeys):g.arrowkeys;j&&this.setupArrowkeyEvents(e,f,h),a.readonlyInput=angular.isDefined(c.readonlyInput)?a.$parent.$eval(c.readonlyInput):g.readonlyInput,this.setupInputEvents(e,f,h)};var x=g.hourStep;c.hourStep&&t.push(a.$parent.$watch(d(c.hourStep),function(a){x=+a}));var y=g.minuteStep;c.minuteStep&&t.push(a.$parent.$watch(d(c.minuteStep),function(a){y=+a}));var z;t.push(a.$parent.$watch(d(c.min),function(a){var b=new Date(a);z=isNaN(b)?void 0:b}));var A;t.push(a.$parent.$watch(d(c.max),function(a){var b=new Date(a);A=isNaN(b)?void 0:b}));var B=!1;c.ngDisabled&&t.push(a.$parent.$watch(d(c.ngDisabled),function(a){B=a})),a.noIncrementHours=function(){var a=p(s,60*x);return B||a>A||s>a&&z>a},a.noDecrementHours=function(){var a=p(s,60*-x);return B||z>a||a>s&&a>A},a.noIncrementMinutes=function(){var a=p(s,y);return B||a>A||s>a&&z>a},a.noDecrementMinutes=function(){var a=p(s,-y);return B||z>a||a>s&&a>A},a.noIncrementSeconds=function(){var a=q(s,C);return B||a>A||s>a&&z>a},a.noDecrementSeconds=function(){var a=q(s,-C);return B||z>a||a>s&&a>A},a.noToggleMeridian=function(){return s.getHours()<12?B||p(s,720)>A:B||p(s,-720)<z};var C=g.secondStep;c.secondStep&&t.push(a.$parent.$watch(d(c.secondStep),function(a){C=+a})),a.showSeconds=g.showSeconds,c.showSeconds&&t.push(a.$parent.$watch(d(c.showSeconds),function(b){a.showSeconds=!!b})),a.showMeridian=g.showMeridian,c.showMeridian&&t.push(a.$parent.$watch(d(c.showMeridian),function(b){if(a.showMeridian=!!b,u.$error.time){var c=h(),d=i();angular.isDefined(c)&&angular.isDefined(d)&&(s.setHours(c),l())}else n()})),this.setupMousewheelEvents=function(b,c,d){var e=function(a){a.originalEvent&&(a=a.originalEvent);var b=a.wheelDelta?a.wheelDelta:-a.deltaY;return a.detail||b>0};b.bind("mousewheel wheel",function(b){B||a.$apply(e(b)?a.incrementHours():a.decrementHours()),b.preventDefault()}),c.bind("mousewheel wheel",function(b){B||a.$apply(e(b)?a.incrementMinutes():a.decrementMinutes()),b.preventDefault()}),d.bind("mousewheel wheel",function(b){B||a.$apply(e(b)?a.incrementSeconds():a.decrementSeconds()),b.preventDefault()})},this.setupArrowkeyEvents=function(b,c,d){b.bind("keydown",function(b){B||(38===b.which?(b.preventDefault(),a.incrementHours(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementHours(),a.$apply()))}),c.bind("keydown",function(b){B||(38===b.which?(b.preventDefault(),a.incrementMinutes(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementMinutes(),a.$apply()))}),d.bind("keydown",function(b){B||(38===b.which?(b.preventDefault(),a.incrementSeconds(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementSeconds(),a.$apply()))})},this.setupInputEvents=function(b,c,d){if(a.readonlyInput)return a.updateHours=angular.noop,a.updateMinutes=angular.noop,void(a.updateSeconds=angular.noop);var e=function(b,c,d){u.$setViewValue(null),u.$setValidity("time",!1),angular.isDefined(b)&&(a.invalidHours=b),angular.isDefined(c)&&(a.invalidMinutes=c),angular.isDefined(d)&&(a.invalidSeconds=d)};a.updateHours=function(){var a=h(),b=i();u.$setDirty(),angular.isDefined(a)&&angular.isDefined(b)?(s.setHours(a),s.setMinutes(b),z>s||s>A?e(!0):l("h")):e(!0)},b.bind("blur",function(b){u.$setTouched(),r()?m():null===a.hours||""===a.hours?e(!0):!a.invalidHours&&a.hours<10&&a.$apply(function(){a.hours=k(a.hours,!w)})}),a.updateMinutes=function(){var a=i(),b=h();u.$setDirty(),angular.isDefined(a)&&angular.isDefined(b)?(s.setHours(b),s.setMinutes(a),z>s||s>A?e(void 0,!0):l("m")):e(void 0,!0)},c.bind("blur",function(b){u.$setTouched(),r()?m():null===a.minutes?e(void 0,!0):!a.invalidMinutes&&a.minutes<10&&a.$apply(function(){a.minutes=k(a.minutes)})}),a.updateSeconds=function(){var a=j();u.$setDirty(),angular.isDefined(a)?(s.setSeconds(a),l("s")):e(void 0,void 0,!0)},d.bind("blur",function(b){r()?m():!a.invalidSeconds&&a.seconds<10&&a.$apply(function(){a.seconds=k(a.seconds)})})},this.render=function(){var b=u.$viewValue;isNaN(b)?(u.$setValidity("time",!1),e.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')):(b&&(s=b),z>s||s>A?(u.$setValidity("time",!1),a.invalidHours=!0,a.invalidMinutes=!0):m(),n())},a.showSpinners=angular.isDefined(c.showSpinners)?a.$parent.$eval(c.showSpinners):g.showSpinners,a.incrementHours=function(){a.noIncrementHours()||o(60*x*60)},a.decrementHours=function(){a.noDecrementHours()||o(60*-x*60)},a.incrementMinutes=function(){a.noIncrementMinutes()||o(60*y)},a.decrementMinutes=function(){a.noDecrementMinutes()||o(60*-y)},a.incrementSeconds=function(){a.noIncrementSeconds()||o(C)},a.decrementSeconds=function(){a.noDecrementSeconds()||o(-C)},a.toggleMeridian=function(){var b=i(),c=h();a.noToggleMeridian()||(angular.isDefined(b)&&angular.isDefined(c)?o(720*(s.getHours()<12?60:-60)):a.meridian=a.meridian===v[0]?v[1]:v[0])},a.blur=function(){u.$setTouched()},a.$on("$destroy",function(){for(;t.length;)t.shift()()})}]).directive("uibTimepicker",["uibTimepickerConfig",function(a){return{require:["uibTimepicker","?^ngModel"],controller:"UibTimepickerController",controllerAs:"timepicker",replace:!0,scope:{},templateUrl:function(b,c){return c.templateUrl||a.templateUrl},link:function(a,b,c,d){var e=d[0],f=d[1];f&&e.init(f,b.find("input"))}}}]),angular.module("ui.bootstrap.typeahead",["ui.bootstrap.debounce","ui.bootstrap.position"]).factory("uibTypeaheadParser",["$parse",function(a){var b=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/;return{parse:function(c){var d=c.match(b);if(!d)throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "'+c+'".');return{itemName:d[3],source:a(d[4]),viewMapper:a(d[2]||d[1]),modelMapper:a(d[1])}}}}]).controller("UibTypeaheadController",["$scope","$element","$attrs","$compile","$parse","$q","$timeout","$document","$window","$rootScope","$$debounce","$uibPosition","uibTypeaheadParser",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(){O.moveInProgress||(O.moveInProgress=!0,O.$digest()),Z()}function o(){O.position=E?l.offset(b):l.position(b),O.position.top+=b.prop("offsetHeight")}var p,q,r=[9,13,27,38,40],s=200,t=a.$eval(c.typeaheadMinLength);t||0===t||(t=1),a.$watch(c.typeaheadMinLength,function(a){t=a||0===a?a:1});var u=a.$eval(c.typeaheadWaitMs)||0,v=a.$eval(c.typeaheadEditable)!==!1;a.$watch(c.typeaheadEditable,function(a){v=a!==!1});var w,x,y=e(c.typeaheadLoading).assign||angular.noop,z=c.typeaheadShouldSelect?e(c.typeaheadShouldSelect):function(a,b){var c=b.$event;return 13===c.which||9===c.which},A=e(c.typeaheadOnSelect),B=angular.isDefined(c.typeaheadSelectOnBlur)?a.$eval(c.typeaheadSelectOnBlur):!1,C=e(c.typeaheadNoResults).assign||angular.noop,D=c.typeaheadInputFormatter?e(c.typeaheadInputFormatter):void 0,E=c.typeaheadAppendToBody?a.$eval(c.typeaheadAppendToBody):!1,F=c.typeaheadAppendTo?a.$eval(c.typeaheadAppendTo):null,G=a.$eval(c.typeaheadFocusFirst)!==!1,H=c.typeaheadSelectOnExact?a.$eval(c.typeaheadSelectOnExact):!1,I=e(c.typeaheadIsOpen).assign||angular.noop,J=a.$eval(c.typeaheadShowHint)||!1,K=e(c.ngModel),L=e(c.ngModel+"($$$p)"),M=function(b,c){return angular.isFunction(K(a))&&q&&q.$options&&q.$options.getterSetter?L(b,{$$$p:c}):K.assign(b,c)},N=m.parse(c.uibTypeahead),O=a.$new(),P=a.$on("$destroy",function(){O.$destroy()});O.$on("$destroy",P);var Q="typeahead-"+O.$id+"-"+Math.floor(1e4*Math.random());b.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":Q});var R,S;J&&(R=angular.element("<div></div>"),R.css("position","relative"),b.after(R),S=b.clone(),S.attr("placeholder",""),S.attr("tabindex","-1"),S.val(""),S.css({position:"absolute",top:"0px",left:"0px","border-color":"transparent","box-shadow":"none",opacity:1,background:"none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255)",color:"#999"}),b.css({position:"relative","vertical-align":"top","background-color":"transparent"}),R.append(S),S.after(b));var T=angular.element("<div uib-typeahead-popup></div>");T.attr({id:Q,matches:"matches",active:"activeIdx",select:"select(activeIdx, evt)","move-in-progress":"moveInProgress",query:"query",position:"position","assign-is-open":"assignIsOpen(isOpen)",debounce:"debounceUpdate"}),angular.isDefined(c.typeaheadTemplateUrl)&&T.attr("template-url",c.typeaheadTemplateUrl),angular.isDefined(c.typeaheadPopupTemplateUrl)&&T.attr("popup-template-url",c.typeaheadPopupTemplateUrl);var U=function(){J&&S.val("")},V=function(){O.matches=[],O.activeIdx=-1,b.attr("aria-expanded",!1),U()},W=function(a){return Q+"-option-"+a};O.$watch("activeIdx",function(a){0>a?b.removeAttr("aria-activedescendant"):b.attr("aria-activedescendant",W(a))});var X=function(a,b){return O.matches.length>b&&a?a.toUpperCase()===O.matches[b].label.toUpperCase():!1},Y=function(c,d){var e={$viewValue:c};y(a,!0),C(a,!1),f.when(N.source(a,e)).then(function(f){var g=c===p.$viewValue;if(g&&w)if(f&&f.length>0){O.activeIdx=G?0:-1,C(a,!1),O.matches.length=0;for(var h=0;h<f.length;h++)e[N.itemName]=f[h],O.matches.push({id:W(h),label:N.viewMapper(O,e),model:f[h]});if(O.query=c,o(),b.attr("aria-expanded",!0),H&&1===O.matches.length&&X(c,0)&&(angular.isNumber(O.debounceUpdate)||angular.isObject(O.debounceUpdate)?k(function(){O.select(0,d)},angular.isNumber(O.debounceUpdate)?O.debounceUpdate:O.debounceUpdate["default"]):O.select(0,d)),J){var i=O.matches[0].label;angular.isString(c)&&c.length>0&&i.slice(0,c.length).toUpperCase()===c.toUpperCase()?S.val(c+i.slice(c.length)):S.val("")}}else V(),C(a,!0);g&&y(a,!1)},function(){V(),y(a,!1),C(a,!0)})};E&&(angular.element(i).on("resize",n),h.find("body").on("scroll",n));var Z=k(function(){O.matches.length&&o(),O.moveInProgress=!1},s);O.moveInProgress=!1,O.query=void 0;var $,_=function(a){$=g(function(){Y(a)},u)},aa=function(){$&&g.cancel($)};V(),O.assignIsOpen=function(b){I(a,b)},O.select=function(d,e){var f,h,i={};x=!0,i[N.itemName]=h=O.matches[d].model,f=N.modelMapper(a,i),M(a,f),p.$setValidity("editable",!0),p.$setValidity("parse",!0),A(a,{$item:h,$model:f,$label:N.viewMapper(a,i),$event:e}),V(),O.$eval(c.typeaheadFocusOnSelect)!==!1&&g(function(){b[0].focus()},0,!1)},b.on("keydown",function(b){if(0!==O.matches.length&&-1!==r.indexOf(b.which)){var c=z(a,{$event:b});if(-1===O.activeIdx&&c||9===b.which&&b.shiftKey)return V(),void O.$digest();b.preventDefault();var d;switch(b.which){case 27:b.stopPropagation(),V(),a.$digest();break;case 38:O.activeIdx=(O.activeIdx>0?O.activeIdx:O.matches.length)-1,O.$digest(),d=T.find("li")[O.activeIdx],d.parentNode.scrollTop=d.offsetTop;break;case 40:O.activeIdx=(O.activeIdx+1)%O.matches.length,O.$digest(),d=T.find("li")[O.activeIdx],d.parentNode.scrollTop=d.offsetTop;break;default:c&&O.$apply(function(){angular.isNumber(O.debounceUpdate)||angular.isObject(O.debounceUpdate)?k(function(){O.select(O.activeIdx,b)},angular.isNumber(O.debounceUpdate)?O.debounceUpdate:O.debounceUpdate["default"]):O.select(O.activeIdx,b)})}}}),b.bind("focus",function(a){w=!0,0!==t||p.$viewValue||g(function(){Y(p.$viewValue,a)},0)}),b.bind("blur",function(a){B&&O.matches.length&&-1!==O.activeIdx&&!x&&(x=!0,O.$apply(function(){angular.isObject(O.debounceUpdate)&&angular.isNumber(O.debounceUpdate.blur)?k(function(){O.select(O.activeIdx,a)},O.debounceUpdate.blur):O.select(O.activeIdx,a)})),!v&&p.$error.editable&&(p.$setViewValue(),p.$setValidity("editable",!0),p.$setValidity("parse",!0),b.val("")),w=!1,x=!1});var ba=function(c){b[0]!==c.target&&3!==c.which&&0!==O.matches.length&&(V(),j.$$phase||a.$digest())};h.on("click",ba),a.$on("$destroy",function(){h.off("click",ba),(E||F)&&ca.remove(),E&&(angular.element(i).off("resize",n),h.find("body").off("scroll",n)),T.remove(),J&&R.remove()});var ca=d(T)(O);E?h.find("body").append(ca):F?angular.element(F).eq(0).append(ca):b.after(ca),this.init=function(b,c){p=b,q=c,O.debounceUpdate=p.$options&&e(p.$options.debounce)(a),p.$parsers.unshift(function(b){return w=!0,0===t||b&&b.length>=t?u>0?(aa(),_(b)):Y(b):(y(a,!1),aa(),V()),v?b:b?void p.$setValidity("editable",!1):(p.$setValidity("editable",!0),null)}),p.$formatters.push(function(b){var c,d,e={};return v||p.$setValidity("editable",!0),D?(e.$model=b,D(a,e)):(e[N.itemName]=b,c=N.viewMapper(a,e),e[N.itemName]=void 0,d=N.viewMapper(a,e),c!==d?c:b)})}}]).directive("uibTypeahead",function(){return{controller:"UibTypeaheadController",require:["ngModel","^?ngModelOptions","uibTypeahead"],link:function(a,b,c,d){d[2].init(d[0],d[1])}}}).directive("uibTypeaheadPopup",["$$debounce",function(a){return{scope:{matches:"=",query:"=",active:"=",position:"&",moveInProgress:"=",select:"&",assignIsOpen:"&",debounce:"&"},replace:!0,templateUrl:function(a,b){return b.popupTemplateUrl||"uib/template/typeahead/typeahead-popup.html"},link:function(b,c,d){b.templateUrl=d.templateUrl,b.isOpen=function(){var a=b.matches.length>0;return b.assignIsOpen({isOpen:a}),a},b.isActive=function(a){return b.active===a},b.selectActive=function(a){b.active=a},b.selectMatch=function(c,d){var e=b.debounce();angular.isNumber(e)||angular.isObject(e)?a(function(){b.select({activeIdx:c,evt:d})},angular.isNumber(e)?e:e["default"]):b.select({activeIdx:c,evt:d})}}}}]).directive("uibTypeaheadMatch",["$templateRequest","$compile","$parse",function(a,b,c){return{scope:{index:"=",match:"=",query:"="},link:function(d,e,f){var g=c(f.templateUrl)(d.$parent)||"uib/template/typeahead/typeahead-match.html";a(g).then(function(a){var c=angular.element(a.trim());e.replaceWith(c),b(c)(d)})}}}]).filter("uibTypeaheadHighlight",["$sce","$injector","$log",function(a,b,c){function d(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function e(a){return/<.*>/g.test(a)}var f;return f=b.has("$sanitize"),function(b,g){return!f&&e(b)&&c.warn("Unsafe use of typeahead please use ngSanitize"),b=g?(""+b).replace(new RegExp(d(g),"gi"),"<strong>$&</strong>"):b,f||(b=a.trustAsHtml(b)),b}}]),angular.module("uib/template/accordion/accordion-group.html",[]).run(["$templateCache",function(a){a.put("uib/template/accordion/accordion-group.html",'<div class="panel" ng-class="panelClass || \'panel-default\'">\n <div role="tab" id="{{::headingId}}" aria-selected="{{isOpen}}" class="panel-heading" ng-keypress="toggleOpen($event)">\n <h4 class="panel-title">\n <a role="button" data-toggle="collapse" href aria-expanded="{{isOpen}}" aria-controls="{{::panelId}}" tabindex="0" class="accordion-toggle" ng-click="toggleOpen()" uib-accordion-transclude="heading"><span uib-accordion-header ng-class="{\'text-muted\': isDisabled}">{{heading}}</span></a>\n </h4>\n </div>\n <div id="{{::panelId}}" aria-labelledby="{{::headingId}}" aria-hidden="{{!isOpen}}" role="tabpanel" class="panel-collapse collapse" uib-collapse="!isOpen">\n <div class="panel-body" ng-transclude></div>\n </div>\n</div>\n')}]),angular.module("uib/template/accordion/accordion.html",[]).run(["$templateCache",function(a){a.put("uib/template/accordion/accordion.html",'<div role="tablist" class="panel-group" ng-transclude></div>')}]),angular.module("uib/template/alert/alert.html",[]).run(["$templateCache",function(a){a.put("uib/template/alert/alert.html",'<div class="alert" ng-class="[\'alert-\' + (type || \'warning\'), closeable ? \'alert-dismissible\' : null]" role="alert">\n <button ng-show="closeable" type="button" class="close" ng-click="close({$event: $event})">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">Close</span>\n </button>\n <div ng-transclude></div>\n</div>\n')}]),angular.module("uib/template/carousel/carousel.html",[]).run(["$templateCache",function(a){a.put("uib/template/carousel/carousel.html",'<div ng-mouseenter="pause()" ng-mouseleave="play()" class="carousel" ng-swipe-right="prev()" ng-swipe-left="next()">\n <div class="carousel-inner" ng-transclude></div>\n <a role="button" href class="left carousel-control" ng-click="prev()" ng-class="{ disabled: isPrevDisabled() }" ng-show="slides.length > 1">\n <span aria-hidden="true" class="glyphicon glyphicon-chevron-left"></span>\n <span class="sr-only">previous</span>\n </a>\n <a role="button" href class="right carousel-control" ng-click="next()" ng-class="{ disabled: isNextDisabled() }" ng-show="slides.length > 1">\n <span aria-hidden="true" class="glyphicon glyphicon-chevron-right"></span>\n <span class="sr-only">next</span>\n </a>\n <ol class="carousel-indicators" ng-show="slides.length > 1">\n <li ng-repeat="slide in slides | orderBy:indexOfSlide track by $index" ng-class="{ active: isActive(slide) }" ng-click="select(slide)">\n <span class="sr-only">slide {{ $index + 1 }} of {{ slides.length }}<span ng-if="isActive(slide)">, currently active</span></span>\n </li>\n </ol>\n</div>\n')}]),angular.module("uib/template/carousel/slide.html",[]).run(["$templateCache",function(a){a.put("uib/template/carousel/slide.html",'<div ng-class="{\n \'active\': active\n }" class="item text-center" ng-transclude></div>\n')}]),angular.module("uib/template/datepicker/datepicker.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/datepicker.html",'<div class="uib-datepicker" ng-switch="datepickerMode" role="application" ng-keydown="keydown($event)">\n <uib-daypicker ng-switch-when="day" tabindex="0"></uib-daypicker>\n <uib-monthpicker ng-switch-when="month" tabindex="0"></uib-monthpicker>\n <uib-yearpicker ng-switch-when="year" tabindex="0"></uib-yearpicker>\n</div>\n')}]),angular.module("uib/template/datepicker/day.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/day.html",'<table class="uib-daypicker" role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left uib-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th colspan="{{::5 + showWeeks}}"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm uib-title" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right uib-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n <tr>\n <th ng-if="showWeeks" class="text-center"></th>\n <th ng-repeat="label in ::labels track by $index" class="text-center"><small aria-label="{{::label.full}}">{{::label.abbr}}</small></th>\n </tr>\n </thead>\n <tbody>\n <tr class="uib-weeks" ng-repeat="row in rows track by $index">\n <td ng-if="showWeeks" class="text-center h6"><em>{{ weekNumbers[$index] }}</em></td>\n <td ng-repeat="dt in row" class="uib-day text-center" role="gridcell"\n id="{{::dt.uid}}"\n ng-class="::dt.customClass">\n <button type="button" class="btn btn-default btn-sm"\n uib-is-class="\n \'btn-info\' for selectedDt,\n \'active\' for activeDt\n on dt"\n ng-click="select(dt.date)"\n ng-disabled="::dt.disabled"\n tabindex="-1"><span ng-class="::{\'text-muted\': dt.secondary, \'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("uib/template/datepicker/month.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/month.html",'<table class="uib-monthpicker" role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left uib-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm uib-title" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right uib-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n </thead>\n <tbody>\n <tr class="uib-months" ng-repeat="row in rows track by $index">\n <td ng-repeat="dt in row" class="uib-month text-center" role="gridcell"\n id="{{::dt.uid}}"\n ng-class="::dt.customClass">\n <button type="button" class="btn btn-default"\n uib-is-class="\n \'btn-info\' for selectedDt,\n \'active\' for activeDt\n on dt"\n ng-click="select(dt.date)"\n ng-disabled="::dt.disabled"\n tabindex="-1"><span ng-class="::{\'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("uib/template/datepicker/year.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/year.html",'<table class="uib-yearpicker" role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left uib-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th colspan="{{::columns - 2}}"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm uib-title" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right uib-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n </thead>\n <tbody>\n <tr class="uib-years" ng-repeat="row in rows track by $index">\n <td ng-repeat="dt in row" class="uib-year text-center" role="gridcell"\n id="{{::dt.uid}}"\n ng-class="::dt.customClass">\n <button type="button" class="btn btn-default"\n uib-is-class="\n \'btn-info\' for selectedDt,\n \'active\' for activeDt\n on dt"\n ng-click="select(dt.date)"\n ng-disabled="::dt.disabled"\n tabindex="-1"><span ng-class="::{\'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("uib/template/datepickerPopup/popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepickerPopup/popup.html",'<div>\n <ul class="uib-datepicker-popup dropdown-menu uib-position-measure" dropdown-nested ng-if="isOpen" ng-keydown="keydown($event)" ng-click="$event.stopPropagation()">\n <li ng-transclude></li>\n <li ng-if="showButtonBar" class="uib-button-bar">\n <span class="btn-group pull-left">\n <button type="button" class="btn btn-sm btn-info uib-datepicker-current" ng-click="select(\'today\', $event)" ng-disabled="isDisabled(\'today\')">{{ getText(\'current\') }}</button>\n <button type="button" class="btn btn-sm btn-danger uib-clear" ng-click="select(null, $event)">{{ getText(\'clear\') }}</button>\n </span>\n <button type="button" class="btn btn-sm btn-success pull-right uib-close" ng-click="close($event)">{{ getText(\'close\') }}</button>\n </li>\n </ul>\n</div>\n')}]),angular.module("uib/template/modal/backdrop.html",[]).run(["$templateCache",function(a){a.put("uib/template/modal/backdrop.html",'<div class="modal-backdrop"\n uib-modal-animation-class="fade"\n modal-in-class="in"\n ng-style="{\'z-index\': 1040 + (index && 1 || 0) + index*10}"\n></div>\n')}]),angular.module("uib/template/modal/window.html",[]).run(["$templateCache",function(a){a.put("uib/template/modal/window.html",'<div modal-render="{{$isRendered}}" tabindex="-1" role="dialog" class="modal"\n uib-modal-animation-class="fade"\n modal-in-class="in"\n ng-style="{\'z-index\': 1050 + index*10, display: \'block\'}">\n <div class="modal-dialog {{size ? \'modal-\' + size : \'\'}}"><div class="modal-content" uib-modal-transclude></div></div>\n</div>\n')}]),angular.module("uib/template/pager/pager.html",[]).run(["$templateCache",function(a){a.put("uib/template/pager/pager.html",'<ul class="pager">\n <li ng-class="{disabled: noPrevious()||ngDisabled, previous: align}"><a href ng-click="selectPage(page - 1, $event)">{{::getText(\'previous\')}}</a></li>\n <li ng-class="{disabled: noNext()||ngDisabled, next: align}"><a href ng-click="selectPage(page + 1, $event)">{{::getText(\'next\')}}</a></li>\n</ul>\n')}]),angular.module("uib/template/pagination/pagination.html",[]).run(["$templateCache",function(a){a.put("uib/template/pagination/pagination.html",'<ul class="pagination">\n <li ng-if="::boundaryLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-first"><a href ng-click="selectPage(1, $event)">{{::getText(\'first\')}}</a></li>\n <li ng-if="::directionLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-prev"><a href ng-click="selectPage(page - 1, $event)">{{::getText(\'previous\')}}</a></li>\n <li ng-repeat="page in pages track by $index" ng-class="{active: page.active,disabled: ngDisabled&&!page.active}" class="pagination-page"><a href ng-click="selectPage(page.number, $event)">{{page.text}}</a></li>\n <li ng-if="::directionLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-next"><a href ng-click="selectPage(page + 1, $event)">{{::getText(\'next\')}}</a></li>\n <li ng-if="::boundaryLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-last"><a href ng-click="selectPage(totalPages, $event)">{{::getText(\'last\')}}</a></li>\n</ul>\n')}]),angular.module("uib/template/tooltip/tooltip-html-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/tooltip/tooltip-html-popup.html",'<div class="tooltip"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" ng-bind-html="contentExp()"></div>\n</div>\n')}]),angular.module("uib/template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/tooltip/tooltip-popup.html",'<div class="tooltip"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" ng-bind="content"></div>\n</div>\n')}]),angular.module("uib/template/tooltip/tooltip-template-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/tooltip/tooltip-template-popup.html",'<div class="tooltip"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner"\n uib-tooltip-template-transclude="contentExp()"\n tooltip-template-transclude-scope="originScope()"></div>\n</div>\n')}]),angular.module("uib/template/popover/popover-html.html",[]).run(["$templateCache",function(a){a.put("uib/template/popover/popover-html.html",'<div class="popover"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="uibTitle" ng-if="uibTitle"></h3>\n <div class="popover-content" ng-bind-html="contentExp()"></div>\n </div>\n</div>\n')}]),angular.module("uib/template/popover/popover-template.html",[]).run(["$templateCache",function(a){a.put("uib/template/popover/popover-template.html",'<div class="popover"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="uibTitle" ng-if="uibTitle"></h3>\n <div class="popover-content"\n uib-tooltip-template-transclude="contentExp()"\n tooltip-template-transclude-scope="originScope()"></div>\n </div>\n</div>\n')}]),angular.module("uib/template/popover/popover.html",[]).run(["$templateCache",function(a){a.put("uib/template/popover/popover.html",'<div class="popover"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="uibTitle" ng-if="uibTitle"></h3>\n <div class="popover-content" ng-bind="content"></div>\n </div>\n</div>\n')}]),angular.module("uib/template/progressbar/bar.html",[]).run(["$templateCache",function(a){a.put("uib/template/progressbar/bar.html",'<div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: (percent < 100 ? percent : 100) + \'%\'}" aria-valuetext="{{percent | number:0}}%" aria-labelledby="{{::title}}" ng-transclude></div>\n')}]),angular.module("uib/template/progressbar/progress.html",[]).run(["$templateCache",function(a){a.put("uib/template/progressbar/progress.html",'<div class="progress" ng-transclude aria-labelledby="{{::title}}"></div>')}]),angular.module("uib/template/progressbar/progressbar.html",[]).run(["$templateCache",function(a){a.put("uib/template/progressbar/progressbar.html",'<div class="progress">\n <div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: (percent < 100 ? percent : 100) + \'%\'}" aria-valuetext="{{percent | number:0}}%" aria-labelledby="{{::title}}" ng-transclude></div>\n</div>\n')}]),angular.module("uib/template/rating/rating.html",[]).run(["$templateCache",function(a){a.put("uib/template/rating/rating.html",'<span ng-mouseleave="reset()" ng-keydown="onKeydown($event)" tabindex="0" role="slider" aria-valuemin="0" aria-valuemax="{{range.length}}" aria-valuenow="{{value}}" aria-valuetext="{{title}}">\n <span ng-repeat-start="r in range track by $index" class="sr-only">({{ $index < value ? \'*\' : \' \' }})</span>\n <i ng-repeat-end ng-mouseenter="enter($index + 1)" ng-click="rate($index + 1)" class="glyphicon" ng-class="$index < value && (r.stateOn || \'glyphicon-star\') || (r.stateOff || \'glyphicon-star-empty\')" ng-attr-title="{{r.title}}"></i>\n</span>\n')}]),angular.module("uib/template/tabs/tab.html",[]).run(["$templateCache",function(a){a.put("uib/template/tabs/tab.html",'<li ng-class="[{active: active, disabled: disabled}, classes]" class="uib-tab nav-item">\n <a href ng-click="select($event)" class="nav-link" uib-tab-heading-transclude>{{heading}}</a>\n</li>\n')}]),angular.module("uib/template/tabs/tabset.html",[]).run(["$templateCache",function(a){a.put("uib/template/tabs/tabset.html",'<div>\n <ul class="nav nav-{{tabset.type || \'tabs\'}}" ng-class="{\'nav-stacked\': vertical, \'nav-justified\': justified}" ng-transclude></ul>\n <div class="tab-content">\n <div class="tab-pane"\n ng-repeat="tab in tabset.tabs"\n ng-class="{active: tabset.active === tab.index}"\n uib-tab-content-transclude="tab">\n </div>\n </div>\n</div>\n');
}]),angular.module("uib/template/timepicker/timepicker.html",[]).run(["$templateCache",function(a){a.put("uib/template/timepicker/timepicker.html",'<table class="uib-timepicker">\n <tbody>\n <tr class="text-center" ng-show="::showSpinners">\n <td class="uib-increment hours"><a ng-click="incrementHours()" ng-class="{disabled: noIncrementHours()}" class="btn btn-link" ng-disabled="noIncrementHours()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n <td>&nbsp;</td>\n <td class="uib-increment minutes"><a ng-click="incrementMinutes()" ng-class="{disabled: noIncrementMinutes()}" class="btn btn-link" ng-disabled="noIncrementMinutes()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n <td ng-show="showSeconds">&nbsp;</td>\n <td ng-show="showSeconds" class="uib-increment seconds"><a ng-click="incrementSeconds()" ng-class="{disabled: noIncrementSeconds()}" class="btn btn-link" ng-disabled="noIncrementSeconds()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n <td ng-show="showMeridian"></td>\n </tr>\n <tr>\n <td class="form-group uib-time hours" ng-class="{\'has-error\': invalidHours}">\n <input type="text" placeholder="HH" ng-model="hours" ng-change="updateHours()" class="form-control text-center" ng-readonly="::readonlyInput" maxlength="2" tabindex="{{::tabindex}}" ng-disabled="noIncrementHours()" ng-blur="blur()">\n </td>\n <td class="uib-separator">:</td>\n <td class="form-group uib-time minutes" ng-class="{\'has-error\': invalidMinutes}">\n <input type="text" placeholder="MM" ng-model="minutes" ng-change="updateMinutes()" class="form-control text-center" ng-readonly="::readonlyInput" maxlength="2" tabindex="{{::tabindex}}" ng-disabled="noIncrementMinutes()" ng-blur="blur()">\n </td>\n <td ng-show="showSeconds" class="uib-separator">:</td>\n <td class="form-group uib-time seconds" ng-class="{\'has-error\': invalidSeconds}" ng-show="showSeconds">\n <input type="text" placeholder="SS" ng-model="seconds" ng-change="updateSeconds()" class="form-control text-center" ng-readonly="readonlyInput" maxlength="2" tabindex="{{::tabindex}}" ng-disabled="noIncrementSeconds()" ng-blur="blur()">\n </td>\n <td ng-show="showMeridian" class="uib-time am-pm"><button type="button" ng-class="{disabled: noToggleMeridian()}" class="btn btn-default text-center" ng-click="toggleMeridian()" ng-disabled="noToggleMeridian()" tabindex="{{::tabindex}}">{{meridian}}</button></td>\n </tr>\n <tr class="text-center" ng-show="::showSpinners">\n <td class="uib-decrement hours"><a ng-click="decrementHours()" ng-class="{disabled: noDecrementHours()}" class="btn btn-link" ng-disabled="noDecrementHours()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n <td>&nbsp;</td>\n <td class="uib-decrement minutes"><a ng-click="decrementMinutes()" ng-class="{disabled: noDecrementMinutes()}" class="btn btn-link" ng-disabled="noDecrementMinutes()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n <td ng-show="showSeconds">&nbsp;</td>\n <td ng-show="showSeconds" class="uib-decrement seconds"><a ng-click="decrementSeconds()" ng-class="{disabled: noDecrementSeconds()}" class="btn btn-link" ng-disabled="noDecrementSeconds()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n <td ng-show="showMeridian"></td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("uib/template/typeahead/typeahead-match.html",[]).run(["$templateCache",function(a){a.put("uib/template/typeahead/typeahead-match.html",'<a href\n tabindex="-1"\n ng-bind-html="match.label | uibTypeaheadHighlight:query"\n ng-attr-title="{{match.label}}"></a>\n')}]),angular.module("uib/template/typeahead/typeahead-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/typeahead/typeahead-popup.html",'<ul class="dropdown-menu" ng-show="isOpen() && !moveInProgress" ng-style="{top: position().top+\'px\', left: position().left+\'px\'}" role="listbox" aria-hidden="{{!isOpen()}}">\n <li ng-repeat="match in matches track by $index" ng-class="{active: isActive($index) }" ng-mouseenter="selectActive($index)" ng-click="selectMatch($index, $event)" role="option" id="{{::match.id}}">\n <div uib-typeahead-match index="$index" match="match" query="query" template-url="templateUrl"></div>\n </li>\n</ul>\n')}]),angular.module("ui.bootstrap.carousel").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibCarouselCss&&angular.element(document).find("head").prepend('<style type="text/css">.ng-animate.item:not(.left):not(.right){-webkit-transition:0s ease-in-out left;transition:0s ease-in-out left}</style>'),angular.$$uibCarouselCss=!0}),angular.module("ui.bootstrap.datepicker").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibDatepickerCss&&angular.element(document).find("head").prepend('<style type="text/css">.uib-datepicker .uib-title{width:100%;}.uib-day button,.uib-month button,.uib-year button{min-width:100%;}.uib-left,.uib-right{width:100%}</style>'),angular.$$uibDatepickerCss=!0}),angular.module("ui.bootstrap.position").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibPositionCss&&angular.element(document).find("head").prepend('<style type="text/css">.uib-position-measure{display:block !important;visibility:hidden !important;position:absolute !important;top:-9999px !important;left:-9999px !important;}.uib-position-scrollbar-measure{position:absolute !important;top:-9999px !important;width:50px !important;height:50px !important;overflow:scroll !important;}.uib-position-body-scrollbar-measure{overflow:scroll !important;}</style>'),angular.$$uibPositionCss=!0}),angular.module("ui.bootstrap.datepickerPopup").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibDatepickerpopupCss&&angular.element(document).find("head").prepend('<style type="text/css">.uib-datepicker-popup.dropdown-menu{display:block;float:none;margin:0;}.uib-button-bar{padding:10px 9px 2px;}</style>'),angular.$$uibDatepickerpopupCss=!0}),angular.module("ui.bootstrap.tooltip").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibTooltipCss&&angular.element(document).find("head").prepend('<style type="text/css">[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,[uib-popover-popup].popover.top-left > .arrow,[uib-popover-popup].popover.top-right > .arrow,[uib-popover-popup].popover.bottom-left > .arrow,[uib-popover-popup].popover.bottom-right > .arrow,[uib-popover-popup].popover.left-top > .arrow,[uib-popover-popup].popover.left-bottom > .arrow,[uib-popover-popup].popover.right-top > .arrow,[uib-popover-popup].popover.right-bottom > .arrow,[uib-popover-html-popup].popover.top-left > .arrow,[uib-popover-html-popup].popover.top-right > .arrow,[uib-popover-html-popup].popover.bottom-left > .arrow,[uib-popover-html-popup].popover.bottom-right > .arrow,[uib-popover-html-popup].popover.left-top > .arrow,[uib-popover-html-popup].popover.left-bottom > .arrow,[uib-popover-html-popup].popover.right-top > .arrow,[uib-popover-html-popup].popover.right-bottom > .arrow,[uib-popover-template-popup].popover.top-left > .arrow,[uib-popover-template-popup].popover.top-right > .arrow,[uib-popover-template-popup].popover.bottom-left > .arrow,[uib-popover-template-popup].popover.bottom-right > .arrow,[uib-popover-template-popup].popover.left-top > .arrow,[uib-popover-template-popup].popover.left-bottom > .arrow,[uib-popover-template-popup].popover.right-top > .arrow,[uib-popover-template-popup].popover.right-bottom > .arrow{top:auto;bottom:auto;left:auto;right:auto;margin:0;}[uib-popover-popup].popover,[uib-popover-html-popup].popover,[uib-popover-template-popup].popover{display:block !important;}</style>'),angular.$$uibTooltipCss=!0}),angular.module("ui.bootstrap.timepicker").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibTimepickerCss&&angular.element(document).find("head").prepend('<style type="text/css">.uib-time input{width:50px;}</style>'),angular.$$uibTimepickerCss=!0}),angular.module("ui.bootstrap.typeahead").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibTypeaheadCss&&angular.element(document).find("head").prepend('<style type="text/css">[uib-typeahead-popup].dropdown-menu{display:block;}</style>'),angular.$$uibTypeaheadCss=!0}),function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return od.apply(null,arguments)}function b(a){od=a}function c(a){return a instanceof Array||"[object Array]"===Object.prototype.toString.call(a)}function d(a){return null!=a&&"[object Object]"===Object.prototype.toString.call(a)}function e(a){var b;for(b in a)return!1;return!0}function f(a){return"number"==typeof a||"[object Number]"===Object.prototype.toString.call(a)}function g(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function h(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function i(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function j(a,b){for(var c in b)i(b,c)&&(a[c]=b[c]);return i(b,"toString")&&(a.toString=b.toString),i(b,"valueOf")&&(a.valueOf=b.valueOf),a}function k(a,b,c,d){return rb(a,b,c,d,!0).utc()}function l(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null}}function m(a){return null==a._pf&&(a._pf=l()),a._pf}function n(a){if(null==a._isValid){var b=m(a),c=qd.call(b.parsedDateParts,function(a){return null!=a}),d=!isNaN(a._d.getTime())&&b.overflow<0&&!b.empty&&!b.invalidMonth&&!b.invalidWeekday&&!b.nullInput&&!b.invalidFormat&&!b.userInvalidated&&(!b.meridiem||b.meridiem&&c);if(a._strict&&(d=d&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour),null!=Object.isFrozen&&Object.isFrozen(a))return d;a._isValid=d}return a._isValid}function o(a){var b=k(NaN);return null!=a?j(m(b),a):m(b).userInvalidated=!0,b}function p(a){return void 0===a}function q(a,b){var c,d,e;if(p(b._isAMomentObject)||(a._isAMomentObject=b._isAMomentObject),p(b._i)||(a._i=b._i),p(b._f)||(a._f=b._f),p(b._l)||(a._l=b._l),p(b._strict)||(a._strict=b._strict),p(b._tzm)||(a._tzm=b._tzm),p(b._isUTC)||(a._isUTC=b._isUTC),p(b._offset)||(a._offset=b._offset),p(b._pf)||(a._pf=m(b)),p(b._locale)||(a._locale=b._locale),rd.length>0)for(c in rd)d=rd[c],e=b[d],p(e)||(a[d]=e);return a}function r(b){q(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),sd===!1&&(sd=!0,a.updateOffset(this),sd=!1)}function s(a){return a instanceof r||null!=a&&null!=a._isAMomentObject}function t(a){return 0>a?Math.ceil(a)||0:Math.floor(a)}function u(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=t(b)),c}function v(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&u(a[d])!==u(b[d]))&&g++;return g+f}function w(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function x(b,c){var d=!0;return j(function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,b),d){for(var e,f=[],g=0;g<arguments.length;g++){if(e="","object"==typeof arguments[g]){e+="\n["+g+"] ";for(var h in arguments[0])e+=h+": "+arguments[0][h]+", ";e=e.slice(0,-2)}else e=arguments[g];f.push(e)}w(b+"\nArguments: "+Array.prototype.slice.call(f).join("")+"\n"+(new Error).stack),d=!1}return c.apply(this,arguments)},c)}function y(b,c){null!=a.deprecationHandler&&a.deprecationHandler(b,c),td[b]||(w(c),td[b]=!0)}function z(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}function A(a){var b,c;for(c in a)b=a[c],z(b)?this[c]=b:this["_"+c]=b;this._config=a,this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function B(a,b){var c,e=j({},a);for(c in b)i(b,c)&&(d(a[c])&&d(b[c])?(e[c]={},j(e[c],a[c]),j(e[c],b[c])):null!=b[c]?e[c]=b[c]:delete e[c]);for(c in a)i(a,c)&&!i(b,c)&&d(a[c])&&(e[c]=j({},e[c]));return e}function C(a){null!=a&&this.set(a)}function D(a,b,c){var d=this._calendar[a]||this._calendar.sameElse;return z(d)?d.call(b,c):d}function E(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function F(){return this._invalidDate}function G(a){return this._ordinal.replace("%d",a)}function H(a,b,c,d){var e=this._relativeTime[c];return z(e)?e(a,b,c,d):e.replace(/%d/i,a)}function I(a,b){var c=this._relativeTime[a>0?"future":"past"];return z(c)?c(b):c.replace(/%s/i,b)}function J(a,b){var c=a.toLowerCase();Dd[c]=Dd[c+"s"]=Dd[b]=a}function K(a){return"string"==typeof a?Dd[a]||Dd[a.toLowerCase()]:void 0}function L(a){var b,c,d={};for(c in a)i(a,c)&&(b=K(c),b&&(d[b]=a[c]));return d}function M(a,b){Ed[a]=b}function N(a){var b=[];for(var c in a)b.push({unit:c,priority:Ed[c]});return b.sort(function(a,b){return a.priority-b.priority}),b}function O(b,c){return function(d){return null!=d?(Q(this,b,d),a.updateOffset(this,c),this):P(this,b)}}function P(a,b){return a.isValid()?a._d["get"+(a._isUTC?"UTC":"")+b]():NaN}function Q(a,b,c){a.isValid()&&a._d["set"+(a._isUTC?"UTC":"")+b](c)}function R(a){return a=K(a),z(this[a])?this[a]():this}function S(a,b){if("object"==typeof a){a=L(a);for(var c=N(a),d=0;d<c.length;d++)this[c[d].unit](a[c[d].unit])}else if(a=K(a),z(this[a]))return this[a](b);return this}function T(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function U(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Id[a]=e),b&&(Id[b[0]]=function(){return T(e.apply(this,arguments),b[1],b[2])}),c&&(Id[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function V(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function W(a){var b,c,d=a.match(Fd);for(b=0,c=d.length;c>b;b++)Id[d[b]]?d[b]=Id[d[b]]:d[b]=V(d[b]);return function(b){var e,f="";for(e=0;c>e;e++)f+=d[e]instanceof Function?d[e].call(b,a):d[e];return f}}function X(a,b){return a.isValid()?(b=Y(b,a.localeData()),Hd[b]=Hd[b]||W(b),Hd[b](a)):a.localeData().invalidDate()}function Y(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Gd.lastIndex=0;d>=0&&Gd.test(a);)a=a.replace(Gd,c),Gd.lastIndex=0,d-=1;return a}function Z(a,b,c){$d[a]=z(b)?b:function(a,d){return a&&c?c:b}}function $(a,b){return i($d,a)?$d[a](b._strict,b._locale):new RegExp(_(a))}function _(a){return aa(a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function aa(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ba(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),f(b)&&(d=function(a,c){c[b]=u(a)}),c=0;c<a.length;c++)_d[a[c]]=d}function ca(a,b){ba(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function da(a,b,c){null!=b&&i(_d,a)&&_d[a](b,c._a,c,a)}function ea(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function fa(a,b){return a?c(this._months)?this._months[a.month()]:this._months[(this._months.isFormat||ke).test(b)?"format":"standalone"][a.month()]:this._months}function ga(a,b){return a?c(this._monthsShort)?this._monthsShort[a.month()]:this._monthsShort[ke.test(b)?"format":"standalone"][a.month()]:this._monthsShort}function ha(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],d=0;12>d;++d)f=k([2e3,d]),this._shortMonthsParse[d]=this.monthsShort(f,"").toLocaleLowerCase(),this._longMonthsParse[d]=this.months(f,"").toLocaleLowerCase();return c?"MMM"===b?(e=je.call(this._shortMonthsParse,g),-1!==e?e:null):(e=je.call(this._longMonthsParse,g),-1!==e?e:null):"MMM"===b?(e=je.call(this._shortMonthsParse,g),-1!==e?e:(e=je.call(this._longMonthsParse,g),-1!==e?e:null)):(e=je.call(this._longMonthsParse,g),-1!==e?e:(e=je.call(this._shortMonthsParse,g),-1!==e?e:null))}function ia(a,b,c){var d,e,f;if(this._monthsParseExact)return ha.call(this,a,b,c);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){if(e=k([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function ja(a,b){var c;if(!a.isValid())return a;if("string"==typeof b)if(/^\d+$/.test(b))b=u(b);else if(b=a.localeData().monthsParse(b),!f(b))return a;return c=Math.min(a.date(),ea(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a}function ka(b){return null!=b?(ja(this,b),a.updateOffset(this,!0),this):P(this,"Month")}function la(){return ea(this.year(),this.month())}function ma(a){return this._monthsParseExact?(i(this,"_monthsRegex")||oa.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):(i(this,"_monthsShortRegex")||(this._monthsShortRegex=ne),this._monthsShortStrictRegex&&a?this._monthsShortStrictRegex:this._monthsShortRegex)}function na(a){return this._monthsParseExact?(i(this,"_monthsRegex")||oa.call(this),a?this._monthsStrictRegex:this._monthsRegex):(i(this,"_monthsRegex")||(this._monthsRegex=oe),this._monthsStrictRegex&&a?this._monthsStrictRegex:this._monthsRegex)}function oa(){function a(a,b){return b.length-a.length}var b,c,d=[],e=[],f=[];for(b=0;12>b;b++)c=k([2e3,b]),d.push(this.monthsShort(c,"")),e.push(this.months(c,"")),f.push(this.months(c,"")),f.push(this.monthsShort(c,""));for(d.sort(a),e.sort(a),f.sort(a),b=0;12>b;b++)d[b]=aa(d[b]),e[b]=aa(e[b]);for(b=0;24>b;b++)f[b]=aa(f[b]);this._monthsRegex=new RegExp("^("+f.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+e.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+d.join("|")+")","i")}function pa(a){return qa(a)?366:365}function qa(a){return a%4===0&&a%100!==0||a%400===0}function ra(){return qa(this.year())}function sa(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 100>a&&a>=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function ta(a){var b=new Date(Date.UTC.apply(null,arguments));return 100>a&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function ua(a,b,c){var d=7+b-c,e=(7+ta(a,0,d).getUTCDay()-b)%7;return-e+d-1}function va(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=ua(a,d,e),j=1+7*(b-1)+h+i;return 0>=j?(f=a-1,g=pa(f)+j):j>pa(a)?(f=a+1,g=j-pa(a)):(f=a,g=j),{year:f,dayOfYear:g}}function wa(a,b,c){var d,e,f=ua(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return 1>g?(e=a.year()-1,d=g+xa(e,b,c)):g>xa(a.year(),b,c)?(d=g-xa(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function xa(a,b,c){var d=ua(a,b,c),e=ua(a+1,b,c);return(pa(a)-d+e)/7}function ya(a){return wa(a,this._week.dow,this._week.doy).week}function za(){return this._week.dow}function Aa(){return this._week.doy}function Ba(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function Ca(a){var b=wa(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function Da(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function Ea(a,b){return"string"==typeof a?b.weekdaysParse(a)%7||7:isNaN(a)?null:a}function Fa(a,b){return a?c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?"format":"standalone"][a.day()]:this._weekdays}function Ga(a){return a?this._weekdaysShort[a.day()]:this._weekdaysShort}function Ha(a){return a?this._weekdaysMin[a.day()]:this._weekdaysMin}function Ia(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;7>d;++d)f=k([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,"").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,"").toLocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,"").toLocaleLowerCase();return c?"dddd"===b?(e=je.call(this._weekdaysParse,g),-1!==e?e:null):"ddd"===b?(e=je.call(this._shortWeekdaysParse,g),-1!==e?e:null):(e=je.call(this._minWeekdaysParse,g),-1!==e?e:null):"dddd"===b?(e=je.call(this._weekdaysParse,g),-1!==e?e:(e=je.call(this._shortWeekdaysParse,g),-1!==e?e:(e=je.call(this._minWeekdaysParse,g),-1!==e?e:null))):"ddd"===b?(e=je.call(this._shortWeekdaysParse,g),-1!==e?e:(e=je.call(this._weekdaysParse,g),-1!==e?e:(e=je.call(this._minWeekdaysParse,g),-1!==e?e:null))):(e=je.call(this._minWeekdaysParse,g),-1!==e?e:(e=je.call(this._weekdaysParse,g),-1!==e?e:(e=je.call(this._shortWeekdaysParse,g),-1!==e?e:null)))}function Ja(a,b,c){var d,e,f;if(this._weekdaysParseExact)return Ia.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;7>d;d++){if(e=k([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp("^"+this.weekdays(e,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[d]=new RegExp("^"+this.weekdaysShort(e,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[d]=new RegExp("^"+this.weekdaysMin(e,"").replace(".",".?")+"$","i")),this._weekdaysParse[d]||(f="^"+this.weekdays(e,"")+"|^"+this.weekdaysShort(e,"")+"|^"+this.weekdaysMin(e,""),this._weekdaysParse[d]=new RegExp(f.replace(".",""),"i")),c&&"dddd"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&"ddd"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&"dd"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function Ka(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Da(a,this.localeData()),this.add(a-b,"d")):b}function La(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Ma(a){if(!this.isValid())return null!=a?this:NaN;if(null!=a){var b=Ea(a,this.localeData());return this.day(this.day()%7?b:b-7)}return this.day()||7}function Na(a){return this._weekdaysParseExact?(i(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):(i(this,"_weekdaysRegex")||(this._weekdaysRegex=ue),this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex)}function Oa(a){return this._weekdaysParseExact?(i(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(i(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ve),this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Pa(a){return this._weekdaysParseExact?(i(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(i(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=we),this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Qa(){function a(a,b){return b.length-a.length}var b,c,d,e,f,g=[],h=[],i=[],j=[];for(b=0;7>b;b++)c=k([2e3,1]).day(b),d=this.weekdaysMin(c,""),e=this.weekdaysShort(c,""),f=this.weekdays(c,""),g.push(d),h.push(e),i.push(f),j.push(d),j.push(e),j.push(f);for(g.sort(a),h.sort(a),i.sort(a),j.sort(a),b=0;7>b;b++)h[b]=aa(h[b]),i[b]=aa(i[b]),j[b]=aa(j[b]);this._weekdaysRegex=new RegExp("^("+j.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+g.join("|")+")","i")}function Ra(){return this.hours()%12||12}function Sa(){return this.hours()||24}function Ta(a,b){U(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Ua(a,b){return b._meridiemParse}function Va(a){return"p"===(a+"").toLowerCase().charAt(0)}function Wa(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Xa(a){return a?a.toLowerCase().replace("_","-"):a}function Ya(a){for(var b,c,d,e,f=0;f<a.length;){for(e=Xa(a[f]).split("-"),b=e.length,c=Xa(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=Za(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&v(e,c,!0)>=b-1)break;b--}f++}return null}function Za(a){var b=null;if(!Be[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=xe._abbr,require("./locale/"+a),$a(b)}catch(c){}return Be[a]}function $a(a,b){var c;return a&&(c=p(b)?bb(a):_a(a,b),c&&(xe=c)),xe._abbr}function _a(a,b){if(null!==b){var c=Ae;if(b.abbr=a,null!=Be[a])y("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),c=Be[a]._config;else if(null!=b.parentLocale){if(null==Be[b.parentLocale])return Ce[b.parentLocale]||(Ce[b.parentLocale]=[]),Ce[b.parentLocale].push({name:a,config:b}),null;c=Be[b.parentLocale]._config}return Be[a]=new C(B(c,b)),Ce[a]&&Ce[a].forEach(function(a){_a(a.name,a.config)}),$a(a),Be[a]}return delete Be[a],null}function ab(a,b){if(null!=b){var c,d=Ae;null!=Be[a]&&(d=Be[a]._config),b=B(d,b),c=new C(b),c.parentLocale=Be[a],Be[a]=c,$a(a)}else null!=Be[a]&&(null!=Be[a].parentLocale?Be[a]=Be[a].parentLocale:null!=Be[a]&&delete Be[a]);return Be[a]}function bb(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return xe;if(!c(a)){if(b=Za(a))return b;a=[a]}return Ya(a)}function cb(){return wd(Be)}function db(a){var b,c=a._a;return c&&-2===m(a).overflow&&(b=c[be]<0||c[be]>11?be:c[ce]<1||c[ce]>ea(c[ae],c[be])?ce:c[de]<0||c[de]>24||24===c[de]&&(0!==c[ee]||0!==c[fe]||0!==c[ge])?de:c[ee]<0||c[ee]>59?ee:c[fe]<0||c[fe]>59?fe:c[ge]<0||c[ge]>999?ge:-1,m(a)._overflowDayOfYear&&(ae>b||b>ce)&&(b=ce),m(a)._overflowWeeks&&-1===b&&(b=he),m(a)._overflowWeekday&&-1===b&&(b=ie),m(a).overflow=b),a}function eb(a){var b,c,d,e,f,g,h=a._i,i=De.exec(h)||Ee.exec(h);if(i){for(m(a).iso=!0,b=0,c=Ge.length;c>b;b++)if(Ge[b][1].exec(i[1])){e=Ge[b][0],d=Ge[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=He.length;c>b;b++)if(He[b][1].exec(i[3])){f=(i[2]||" ")+He[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!Fe.exec(i[4]))return void(a._isValid=!1);g="Z"}a._f=e+(f||"")+(g||""),kb(a)}else a._isValid=!1}function fb(b){var c=Ie.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(eb(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}function gb(a,b,c){return null!=a?a:null!=b?b:c}function hb(b){var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]}function ib(a){var b,c,d,e,f=[];if(!a._d){for(d=hb(a),a._w&&null==a._a[ce]&&null==a._a[be]&&jb(a),a._dayOfYear&&(e=gb(a._a[ae],d[ae]),a._dayOfYear>pa(e)&&(m(a)._overflowDayOfYear=!0),c=ta(e,0,a._dayOfYear),a._a[be]=c.getUTCMonth(),a._a[ce]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[de]&&0===a._a[ee]&&0===a._a[fe]&&0===a._a[ge]&&(a._nextDay=!0,a._a[de]=0),a._d=(a._useUTC?ta:sa).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[de]=24)}}function jb(a){var b,c,d,e,f,g,h,i;if(b=a._w,null!=b.GG||null!=b.W||null!=b.E)f=1,g=4,c=gb(b.GG,a._a[ae],wa(sb(),1,4).year),d=gb(b.W,1),e=gb(b.E,1),(1>e||e>7)&&(i=!0);else{f=a._locale._week.dow,g=a._locale._week.doy;var j=wa(sb(),f,g);c=gb(b.gg,a._a[ae],j.year),d=gb(b.w,j.week),null!=b.d?(e=b.d,(0>e||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f}1>d||d>xa(c,f,g)?m(a)._overflowWeeks=!0:null!=i?m(a)._overflowWeekday=!0:(h=va(c,d,e,f,g),a._a[ae]=h.year,a._dayOfYear=h.dayOfYear)}function kb(b){if(b._f===a.ISO_8601)return void eb(b);b._a=[],m(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,j=0;for(e=Y(b._f,b._locale).match(Fd)||[],c=0;c<e.length;c++)f=e[c],d=(h.match($(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&m(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),Id[f]?(d?m(b).empty=!1:m(b).unusedTokens.push(f),da(f,d,b)):b._strict&&!d&&m(b).unusedTokens.push(f);m(b).charsLeftOver=i-j,h.length>0&&m(b).unusedInput.push(h),b._a[de]<=12&&m(b).bigHour===!0&&b._a[de]>0&&(m(b).bigHour=void 0),m(b).parsedDateParts=b._a.slice(0),m(b).meridiem=b._meridiem,b._a[de]=lb(b._locale,b._a[de],b._meridiem),ib(b),db(b)}function lb(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function mb(a){var b,c,d,e,f;if(0===a._f.length)return m(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;e<a._f.length;e++)f=0,b=q({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],kb(b),n(b)&&(f+=m(b).charsLeftOver,f+=10*m(b).unusedTokens.length,m(b).score=f,(null==d||d>f)&&(d=f,c=b));j(a,c||b)}function nb(a){if(!a._d){var b=L(a._i);a._a=h([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),ib(a)}}function ob(a){var b=new r(db(pb(a)));return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function pb(a){var b=a._i,d=a._f;return a._locale=a._locale||bb(a._l),null===b||void 0===d&&""===b?o({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),s(b)?new r(db(b)):(g(b)?a._d=b:c(d)?mb(a):d?kb(a):qb(a),n(a)||(a._d=null),a))}function qb(b){var d=b._i;void 0===d?b._d=new Date(a.now()):g(d)?b._d=new Date(d.valueOf()):"string"==typeof d?fb(b):c(d)?(b._a=h(d.slice(0),function(a){return parseInt(a,10)}),ib(b)):"object"==typeof d?nb(b):f(d)?b._d=new Date(d):a.createFromInputFallback(b)}function rb(a,b,f,g,h){var i={};return(f===!0||f===!1)&&(g=f,f=void 0),(d(a)&&e(a)||c(a)&&0===a.length)&&(a=void 0),i._isAMomentObject=!0,i._useUTC=i._isUTC=h,i._l=f,i._i=a,i._f=b,i._strict=g,ob(i)}function sb(a,b,c,d){return rb(a,b,c,d,!1)}function tb(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return sb();
for(d=b[0],e=1;e<b.length;++e)(!b[e].isValid()||b[e][a](d))&&(d=b[e]);return d}function ub(){var a=[].slice.call(arguments,0);return tb("isBefore",a)}function vb(){var a=[].slice.call(arguments,0);return tb("isAfter",a)}function wb(a){var b=L(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+1e3*h*60*60,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=bb(),this._bubble()}function xb(a){return a instanceof wb}function yb(a){return 0>a?-1*Math.round(-1*a):Math.round(a)}function zb(a,b){U(a,0,0,function(){var a=this.utcOffset(),c="+";return 0>a&&(a=-a,c="-"),c+T(~~(a/60),2)+b+T(~~a%60,2)})}function Ab(a,b){var c=(b||"").match(a);if(null===c)return null;var d=c[c.length-1]||[],e=(d+"").match(Me)||["-",0,0],f=+(60*e[1])+u(e[2]);return 0===f?0:"+"===e[0]?f:-f}function Bb(b,c){var d,e;return c._isUTC?(d=c.clone(),e=(s(b)||g(b)?b.valueOf():sb(b).valueOf())-d.valueOf(),d._d.setTime(d._d.valueOf()+e),a.updateOffset(d,!1),d):sb(b).local()}function Cb(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Db(b,c){var d,e=this._offset||0;if(!this.isValid())return null!=b?this:NaN;if(null!=b){if("string"==typeof b){if(b=Ab(Xd,b),null===b)return this}else Math.abs(b)<16&&(b=60*b);return!this._isUTC&&c&&(d=Cb(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?Tb(this,Ob(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?e:Cb(this)}function Eb(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Fb(a){return this.utcOffset(0,a)}function Gb(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Cb(this),"m")),this}function Hb(){if(null!=this._tzm)this.utcOffset(this._tzm);else if("string"==typeof this._i){var a=Ab(Wd,this._i);null!=a?this.utcOffset(a):this.utcOffset(0,!0)}return this}function Ib(a){return this.isValid()?(a=a?sb(a).utcOffset():0,(this.utcOffset()-a)%60===0):!1}function Jb(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Kb(){if(!p(this._isDSTShifted))return this._isDSTShifted;var a={};if(q(a,this),a=pb(a),a._a){var b=a._isUTC?k(a._a):sb(a._a);this._isDSTShifted=this.isValid()&&v(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Lb(){return this.isValid()?!this._isUTC:!1}function Mb(){return this.isValid()?this._isUTC:!1}function Nb(){return this.isValid()?this._isUTC&&0===this._offset:!1}function Ob(a,b){var c,d,e,g=a,h=null;return xb(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:f(a)?(g={},b?g[b]=a:g.milliseconds=a):(h=Ne.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:u(h[ce])*c,h:u(h[de])*c,m:u(h[ee])*c,s:u(h[fe])*c,ms:u(yb(1e3*h[ge]))*c}):(h=Oe.exec(a))?(c="-"===h[1]?-1:1,g={y:Pb(h[2],c),M:Pb(h[3],c),w:Pb(h[4],c),d:Pb(h[5],c),h:Pb(h[6],c),m:Pb(h[7],c),s:Pb(h[8],c)}):null==g?g={}:"object"==typeof g&&("from"in g||"to"in g)&&(e=Rb(sb(g.from),sb(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new wb(g),xb(a)&&i(a,"_locale")&&(d._locale=a._locale),d}function Pb(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function Qb(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function Rb(a,b){var c;return a.isValid()&&b.isValid()?(b=Bb(b,a),a.isBefore(b)?c=Qb(a,b):(c=Qb(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function Sb(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(y(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Ob(c,d),Tb(this,e,a),this}}function Tb(b,c,d,e){var f=c._milliseconds,g=yb(c._days),h=yb(c._months);b.isValid()&&(e=null==e?!0:e,f&&b._d.setTime(b._d.valueOf()+f*d),g&&Q(b,"Date",P(b,"Date")+g*d),h&&ja(b,P(b,"Month")+h*d),e&&a.updateOffset(b,g||h))}function Ub(a,b){var c=a.diff(b,"days",!0);return-6>c?"sameElse":-1>c?"lastWeek":0>c?"lastDay":1>c?"sameDay":2>c?"nextDay":7>c?"nextWeek":"sameElse"}function Vb(b,c){var d=b||sb(),e=Bb(d,this).startOf("day"),f=a.calendarFormat(this,e)||"sameElse",g=c&&(z(c[f])?c[f].call(this,d):c[f]);return this.format(g||this.localeData().calendar(f,this,sb(d)))}function Wb(){return new r(this)}function Xb(a,b){var c=s(a)?a:sb(a);return this.isValid()&&c.isValid()?(b=K(p(b)?"millisecond":b),"millisecond"===b?this.valueOf()>c.valueOf():c.valueOf()<this.clone().startOf(b).valueOf()):!1}function Yb(a,b){var c=s(a)?a:sb(a);return this.isValid()&&c.isValid()?(b=K(p(b)?"millisecond":b),"millisecond"===b?this.valueOf()<c.valueOf():this.clone().endOf(b).valueOf()<c.valueOf()):!1}function Zb(a,b,c,d){return d=d||"()",("("===d[0]?this.isAfter(a,c):!this.isBefore(a,c))&&(")"===d[1]?this.isBefore(b,c):!this.isAfter(b,c))}function $b(a,b){var c,d=s(a)?a:sb(a);return this.isValid()&&d.isValid()?(b=K(b||"millisecond"),"millisecond"===b?this.valueOf()===d.valueOf():(c=d.valueOf(),this.clone().startOf(b).valueOf()<=c&&c<=this.clone().endOf(b).valueOf())):!1}function _b(a,b){return this.isSame(a,b)||this.isAfter(a,b)}function ac(a,b){return this.isSame(a,b)||this.isBefore(a,b)}function bc(a,b,c){var d,e,f,g;return this.isValid()?(d=Bb(a,this),d.isValid()?(e=6e4*(d.utcOffset()-this.utcOffset()),b=K(b),"year"===b||"month"===b||"quarter"===b?(g=cc(this,d),"quarter"===b?g/=3:"year"===b&&(g/=12)):(f=this-d,g="second"===b?f/1e3:"minute"===b?f/6e4:"hour"===b?f/36e5:"day"===b?(f-e)/864e5:"week"===b?(f-e)/6048e5:f),c?g:t(g)):NaN):NaN}function cc(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,"months");return 0>b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)||0}function dc(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function ec(){var a=this.clone().utc();return 0<a.year()&&a.year()<=9999?z(Date.prototype.toISOString)?this.toDate().toISOString():X(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):X(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function fc(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var a="moment",b="";this.isLocal()||(a=0===this.utcOffset()?"moment.utc":"moment.parseZone",b="Z");var c="["+a+'("]',d=0<this.year()&&this.year()<=9999?"YYYY":"YYYYYY",e="-MM-DD[T]HH:mm:ss.SSS",f=b+'[")]';return this.format(c+d+e+f)}function gc(b){b||(b=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var c=X(this,b);return this.localeData().postformat(c)}function hc(a,b){return this.isValid()&&(s(a)&&a.isValid()||sb(a).isValid())?Ob({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function ic(a){return this.from(sb(),a)}function jc(a,b){return this.isValid()&&(s(a)&&a.isValid()||sb(a).isValid())?Ob({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function kc(a){return this.to(sb(),a)}function lc(a){var b;return void 0===a?this._locale._abbr:(b=bb(a),null!=b&&(this._locale=b),this)}function mc(){return this._locale}function nc(a){switch(a=K(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function oc(a){return a=K(a),void 0===a||"millisecond"===a?this:("date"===a&&(a="day"),this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms"))}function pc(){return this._d.valueOf()-6e4*(this._offset||0)}function qc(){return Math.floor(this.valueOf()/1e3)}function rc(){return new Date(this.valueOf())}function sc(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function tc(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a.milliseconds()}}function uc(){return this.isValid()?this.toISOString():null}function vc(){return n(this)}function wc(){return j({},m(this))}function xc(){return m(this).overflow}function yc(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function zc(a,b){U(0,[a,a.length],0,b)}function Ac(a){return Ec.call(this,a,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Bc(a){return Ec.call(this,a,this.isoWeek(),this.isoWeekday(),1,4)}function Cc(){return xa(this.year(),1,4)}function Dc(){var a=this.localeData()._week;return xa(this.year(),a.dow,a.doy)}function Ec(a,b,c,d,e){var f;return null==a?wa(this,d,e).year:(f=xa(a,d,e),b>f&&(b=f),Fc.call(this,a,b,c,d,e))}function Fc(a,b,c,d,e){var f=va(a,b,c,d,e),g=ta(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function Gc(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Hc(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function Ic(a,b){b[ge]=u(1e3*("0."+a))}function Jc(){return this._isUTC?"UTC":""}function Kc(){return this._isUTC?"Coordinated Universal Time":""}function Lc(a){return sb(1e3*a)}function Mc(){return sb.apply(null,arguments).parseZone()}function Nc(a){return a}function Oc(a,b,c,d){var e=bb(),f=k().set(d,b);return e[c](f,a)}function Pc(a,b,c){if(f(a)&&(b=a,a=void 0),a=a||"",null!=b)return Oc(a,b,c,"month");var d,e=[];for(d=0;12>d;d++)e[d]=Oc(a,d,c,"month");return e}function Qc(a,b,c,d){"boolean"==typeof a?(f(b)&&(c=b,b=void 0),b=b||""):(b=a,c=b,a=!1,f(b)&&(c=b,b=void 0),b=b||"");var e=bb(),g=a?e._week.dow:0;if(null!=c)return Oc(b,(c+g)%7,d,"day");var h,i=[];for(h=0;7>h;h++)i[h]=Oc(b,(h+g)%7,d,"day");return i}function Rc(a,b){return Pc(a,b,"months")}function Sc(a,b){return Pc(a,b,"monthsShort")}function Tc(a,b,c){return Qc(a,b,c,"weekdays")}function Uc(a,b,c){return Qc(a,b,c,"weekdaysShort")}function Vc(a,b,c){return Qc(a,b,c,"weekdaysMin")}function Wc(){var a=this._data;return this._milliseconds=Ze(this._milliseconds),this._days=Ze(this._days),this._months=Ze(this._months),a.milliseconds=Ze(a.milliseconds),a.seconds=Ze(a.seconds),a.minutes=Ze(a.minutes),a.hours=Ze(a.hours),a.months=Ze(a.months),a.years=Ze(a.years),this}function Xc(a,b,c,d){var e=Ob(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function Yc(a,b){return Xc(this,a,b,1)}function Zc(a,b){return Xc(this,a,b,-1)}function $c(a){return 0>a?Math.floor(a):Math.ceil(a)}function _c(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*$c(bd(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=t(f/1e3),i.seconds=a%60,b=t(a/60),i.minutes=b%60,c=t(b/60),i.hours=c%24,g+=t(c/24),e=t(ad(g)),h+=e,g-=$c(bd(e)),d=t(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function ad(a){return 4800*a/146097}function bd(a){return 146097*a/4800}function cd(a){var b,c,d=this._milliseconds;if(a=K(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+ad(b),"month"===a?c:c/12;switch(b=this._days+Math.round(bd(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function dd(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*u(this._months/12)}function ed(a){return function(){return this.as(a)}}function fd(a){return a=K(a),this[a+"s"]()}function gd(a){return function(){return this._data[a]}}function hd(){return t(this.days()/7)}function id(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function jd(a,b,c){var d=Ob(a).abs(),e=of(d.as("s")),f=of(d.as("m")),g=of(d.as("h")),h=of(d.as("d")),i=of(d.as("M")),j=of(d.as("y")),k=e<pf.s&&["s",e]||1>=f&&["m"]||f<pf.m&&["mm",f]||1>=g&&["h"]||g<pf.h&&["hh",g]||1>=h&&["d"]||h<pf.d&&["dd",h]||1>=i&&["M"]||i<pf.M&&["MM",i]||1>=j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,id.apply(null,k)}function kd(a){return void 0===a?of:"function"==typeof a?(of=a,!0):!1}function ld(a,b){return void 0===pf[a]?!1:void 0===b?pf[a]:(pf[a]=b,!0)}function md(a){var b=this.localeData(),c=jd(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function nd(){var a,b,c,d=qf(this._milliseconds)/1e3,e=qf(this._days),f=qf(this._months);a=t(d/60),b=t(a/60),d%=60,a%=60,c=t(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(0>m?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"}var od,pd;pd=Array.prototype.some?Array.prototype.some:function(a){for(var b=Object(this),c=b.length>>>0,d=0;c>d;d++)if(d in b&&a.call(this,b[d],d,b))return!0;return!1};var qd=pd,rd=a.momentProperties=[],sd=!1,td={};a.suppressDeprecationWarnings=!1,a.deprecationHandler=null;var ud;ud=Object.keys?Object.keys:function(a){var b,c=[];for(b in a)i(a,b)&&c.push(b);return c};var vd,wd=ud,xd={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},yd={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},zd="Invalid date",Ad="%d",Bd=/\d{1,2}/,Cd={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Dd={},Ed={},Fd=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Gd=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Hd={},Id={},Jd=/\d/,Kd=/\d\d/,Ld=/\d{3}/,Md=/\d{4}/,Nd=/[+-]?\d{6}/,Od=/\d\d?/,Pd=/\d\d\d\d?/,Qd=/\d\d\d\d\d\d?/,Rd=/\d{1,3}/,Sd=/\d{1,4}/,Td=/[+-]?\d{1,6}/,Ud=/\d+/,Vd=/[+-]?\d+/,Wd=/Z|[+-]\d\d:?\d\d/gi,Xd=/Z|[+-]\d\d(?::?\d\d)?/gi,Yd=/[+-]?\d+(\.\d{1,3})?/,Zd=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,$d={},_d={},ae=0,be=1,ce=2,de=3,ee=4,fe=5,ge=6,he=7,ie=8;vd=Array.prototype.indexOf?Array.prototype.indexOf:function(a){var b;for(b=0;b<this.length;++b)if(this[b]===a)return b;return-1};var je=vd;U("M",["MM",2],"Mo",function(){return this.month()+1}),U("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),U("MMMM",0,0,function(a){return this.localeData().months(this,a)}),J("month","M"),M("month",8),Z("M",Od),Z("MM",Od,Kd),Z("MMM",function(a,b){return b.monthsShortRegex(a)}),Z("MMMM",function(a,b){return b.monthsRegex(a)}),ba(["M","MM"],function(a,b){b[be]=u(a)-1}),ba(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[be]=e:m(c).invalidMonth=a});var ke=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,le="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),me="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),ne=Zd,oe=Zd;U("Y",0,0,function(){var a=this.year();return 9999>=a?""+a:"+"+a}),U(0,["YY",2],0,function(){return this.year()%100}),U(0,["YYYY",4],0,"year"),U(0,["YYYYY",5],0,"year"),U(0,["YYYYYY",6,!0],0,"year"),J("year","y"),M("year",1),Z("Y",Vd),Z("YY",Od,Kd),Z("YYYY",Sd,Md),Z("YYYYY",Td,Nd),Z("YYYYYY",Td,Nd),ba(["YYYYY","YYYYYY"],ae),ba("YYYY",function(b,c){c[ae]=2===b.length?a.parseTwoDigitYear(b):u(b)}),ba("YY",function(b,c){c[ae]=a.parseTwoDigitYear(b)}),ba("Y",function(a,b){b[ae]=parseInt(a,10)}),a.parseTwoDigitYear=function(a){return u(a)+(u(a)>68?1900:2e3)};var pe=O("FullYear",!0);U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),J("week","w"),J("isoWeek","W"),M("week",5),M("isoWeek",5),Z("w",Od),Z("ww",Od,Kd),Z("W",Od),Z("WW",Od,Kd),ca(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=u(a)});var qe={dow:0,doy:6};U("d",0,"do","day"),U("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),U("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),U("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),J("day","d"),J("weekday","e"),J("isoWeekday","E"),M("day",11),M("weekday",11),M("isoWeekday",11),Z("d",Od),Z("e",Od),Z("E",Od),Z("dd",function(a,b){return b.weekdaysMinRegex(a)}),Z("ddd",function(a,b){return b.weekdaysShortRegex(a)}),Z("dddd",function(a,b){return b.weekdaysRegex(a)}),ca(["dd","ddd","dddd"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);null!=e?b.d=e:m(c).invalidWeekday=a}),ca(["d","e","E"],function(a,b,c,d){b[d]=u(a)});var re="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),se="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),te="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ue=Zd,ve=Zd,we=Zd;U("H",["HH",2],0,"hour"),U("h",["hh",2],0,Ra),U("k",["kk",2],0,Sa),U("hmm",0,0,function(){return""+Ra.apply(this)+T(this.minutes(),2)}),U("hmmss",0,0,function(){return""+Ra.apply(this)+T(this.minutes(),2)+T(this.seconds(),2)}),U("Hmm",0,0,function(){return""+this.hours()+T(this.minutes(),2)}),U("Hmmss",0,0,function(){return""+this.hours()+T(this.minutes(),2)+T(this.seconds(),2)}),Ta("a",!0),Ta("A",!1),J("hour","h"),M("hour",13),Z("a",Ua),Z("A",Ua),Z("H",Od),Z("h",Od),Z("HH",Od,Kd),Z("hh",Od,Kd),Z("hmm",Pd),Z("hmmss",Qd),Z("Hmm",Pd),Z("Hmmss",Qd),ba(["H","HH"],de),ba(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),ba(["h","hh"],function(a,b,c){b[de]=u(a),m(c).bigHour=!0}),ba("hmm",function(a,b,c){var d=a.length-2;b[de]=u(a.substr(0,d)),b[ee]=u(a.substr(d)),m(c).bigHour=!0}),ba("hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[de]=u(a.substr(0,d)),b[ee]=u(a.substr(d,2)),b[fe]=u(a.substr(e)),m(c).bigHour=!0}),ba("Hmm",function(a,b,c){var d=a.length-2;b[de]=u(a.substr(0,d)),b[ee]=u(a.substr(d))}),ba("Hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[de]=u(a.substr(0,d)),b[ee]=u(a.substr(d,2)),b[fe]=u(a.substr(e))});var xe,ye=/[ap]\.?m?\.?/i,ze=O("Hours",!0),Ae={calendar:xd,longDateFormat:yd,invalidDate:zd,ordinal:Ad,ordinalParse:Bd,relativeTime:Cd,months:le,monthsShort:me,week:qe,weekdays:re,weekdaysMin:te,weekdaysShort:se,meridiemParse:ye},Be={},Ce={},De=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Ee=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Fe=/Z|[+-]\d\d(?::?\d\d)?/,Ge=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],He=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ie=/^\/?Date\((\-?\d+)/i;a.createFromInputFallback=x("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),a.ISO_8601=function(){};var Je=x("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=sb.apply(null,arguments);return this.isValid()&&a.isValid()?this>a?this:a:o()}),Ke=x("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=sb.apply(null,arguments);return this.isValid()&&a.isValid()?a>this?this:a:o()}),Le=function(){return Date.now?Date.now():+new Date};zb("Z",":"),zb("ZZ",""),Z("Z",Xd),Z("ZZ",Xd),ba(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Ab(Xd,a)});var Me=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var Ne=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Oe=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Ob.fn=wb.prototype;var Pe=Sb(1,"add"),Qe=Sb(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Re=x("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});U(0,["gg",2],0,function(){return this.weekYear()%100}),U(0,["GG",2],0,function(){return this.isoWeekYear()%100}),zc("gggg","weekYear"),zc("ggggg","weekYear"),zc("GGGG","isoWeekYear"),zc("GGGGG","isoWeekYear"),J("weekYear","gg"),J("isoWeekYear","GG"),M("weekYear",1),M("isoWeekYear",1),Z("G",Vd),Z("g",Vd),Z("GG",Od,Kd),Z("gg",Od,Kd),Z("GGGG",Sd,Md),Z("gggg",Sd,Md),Z("GGGGG",Td,Nd),Z("ggggg",Td,Nd),ca(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=u(a)}),ca(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),U("Q",0,"Qo","quarter"),J("quarter","Q"),M("quarter",7),Z("Q",Jd),ba("Q",function(a,b){b[be]=3*(u(a)-1)}),U("D",["DD",2],"Do","date"),J("date","D"),M("date",9),Z("D",Od),Z("DD",Od,Kd),Z("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),ba(["D","DD"],ce),ba("Do",function(a,b){b[ce]=u(a.match(Od)[0],10)});var Se=O("Date",!0);U("DDD",["DDDD",3],"DDDo","dayOfYear"),J("dayOfYear","DDD"),M("dayOfYear",4),Z("DDD",Rd),Z("DDDD",Ld),ba(["DDD","DDDD"],function(a,b,c){c._dayOfYear=u(a)}),U("m",["mm",2],0,"minute"),J("minute","m"),M("minute",14),Z("m",Od),Z("mm",Od,Kd),ba(["m","mm"],ee);var Te=O("Minutes",!1);U("s",["ss",2],0,"second"),J("second","s"),M("second",15),Z("s",Od),Z("ss",Od,Kd),ba(["s","ss"],fe);var Ue=O("Seconds",!1);U("S",0,0,function(){return~~(this.millisecond()/100)}),U(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,function(){return 10*this.millisecond()}),U(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),U(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),U(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),U(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),U(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),J("millisecond","ms"),M("millisecond",16),Z("S",Rd,Jd),Z("SS",Rd,Kd),Z("SSS",Rd,Ld);var Ve;for(Ve="SSSS";Ve.length<=9;Ve+="S")Z(Ve,Ud);for(Ve="S";Ve.length<=9;Ve+="S")ba(Ve,Ic);var We=O("Milliseconds",!1);U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");var Xe=r.prototype;Xe.add=Pe,Xe.calendar=Vb,Xe.clone=Wb,Xe.diff=bc,Xe.endOf=oc,Xe.format=gc,Xe.from=hc,Xe.fromNow=ic,Xe.to=jc,Xe.toNow=kc,Xe.get=R,Xe.invalidAt=xc,Xe.isAfter=Xb,Xe.isBefore=Yb,Xe.isBetween=Zb,Xe.isSame=$b,Xe.isSameOrAfter=_b,Xe.isSameOrBefore=ac,Xe.isValid=vc,Xe.lang=Re,Xe.locale=lc,Xe.localeData=mc,Xe.max=Ke,Xe.min=Je,Xe.parsingFlags=wc,Xe.set=S,Xe.startOf=nc,Xe.subtract=Qe,Xe.toArray=sc,Xe.toObject=tc,Xe.toDate=rc,Xe.toISOString=ec,Xe.inspect=fc,Xe.toJSON=uc,Xe.toString=dc,Xe.unix=qc,Xe.valueOf=pc,Xe.creationData=yc,Xe.year=pe,Xe.isLeapYear=ra,Xe.weekYear=Ac,Xe.isoWeekYear=Bc,Xe.quarter=Xe.quarters=Gc,Xe.month=ka,Xe.daysInMonth=la,Xe.week=Xe.weeks=Ba,Xe.isoWeek=Xe.isoWeeks=Ca,Xe.weeksInYear=Dc,Xe.isoWeeksInYear=Cc,Xe.date=Se,Xe.day=Xe.days=Ka,Xe.weekday=La,Xe.isoWeekday=Ma,Xe.dayOfYear=Hc,Xe.hour=Xe.hours=ze,Xe.minute=Xe.minutes=Te,Xe.second=Xe.seconds=Ue,Xe.millisecond=Xe.milliseconds=We,Xe.utcOffset=Db,Xe.utc=Fb,Xe.local=Gb,Xe.parseZone=Hb,Xe.hasAlignedHourOffset=Ib,Xe.isDST=Jb,Xe.isLocal=Lb,Xe.isUtcOffset=Mb,Xe.isUtc=Nb,Xe.isUTC=Nb,Xe.zoneAbbr=Jc,Xe.zoneName=Kc,Xe.dates=x("dates accessor is deprecated. Use date instead.",Se),Xe.months=x("months accessor is deprecated. Use month instead",ka),Xe.years=x("years accessor is deprecated. Use year instead",pe),Xe.zone=x("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Eb),Xe.isDSTShifted=x("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Kb);var Ye=C.prototype;Ye.calendar=D,Ye.longDateFormat=E,Ye.invalidDate=F,Ye.ordinal=G,Ye.preparse=Nc,Ye.postformat=Nc,Ye.relativeTime=H,Ye.pastFuture=I,Ye.set=A,Ye.months=fa,Ye.monthsShort=ga,Ye.monthsParse=ia,Ye.monthsRegex=na,Ye.monthsShortRegex=ma,Ye.week=ya,Ye.firstDayOfYear=Aa,Ye.firstDayOfWeek=za,Ye.weekdays=Fa,Ye.weekdaysMin=Ha,Ye.weekdaysShort=Ga,Ye.weekdaysParse=Ja,Ye.weekdaysRegex=Na,Ye.weekdaysShortRegex=Oa,Ye.weekdaysMinRegex=Pa,Ye.isPM=Va,Ye.meridiem=Wa,$a("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===u(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=x("moment.lang is deprecated. Use moment.locale instead.",$a),a.langData=x("moment.langData is deprecated. Use moment.localeData instead.",bb);var Ze=Math.abs,$e=ed("ms"),_e=ed("s"),af=ed("m"),bf=ed("h"),cf=ed("d"),df=ed("w"),ef=ed("M"),ff=ed("y"),gf=gd("milliseconds"),hf=gd("seconds"),jf=gd("minutes"),kf=gd("hours"),lf=gd("days"),mf=gd("months"),nf=gd("years"),of=Math.round,pf={s:45,m:45,h:22,d:26,M:11},qf=Math.abs,rf=wb.prototype;return rf.abs=Wc,rf.add=Yc,rf.subtract=Zc,rf.as=cd,rf.asMilliseconds=$e,rf.asSeconds=_e,rf.asMinutes=af,rf.asHours=bf,rf.asDays=cf,rf.asWeeks=df,rf.asMonths=ef,rf.asYears=ff,rf.valueOf=dd,rf._bubble=_c,rf.get=fd,rf.milliseconds=gf,rf.seconds=hf,rf.minutes=jf,rf.hours=kf,rf.days=lf,rf.weeks=hd,rf.months=mf,rf.years=nf,rf.humanize=md,rf.toISOString=nd,rf.toString=nd,rf.toJSON=nd,rf.locale=lc,rf.localeData=mc,rf.toIsoString=x("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",nd),rf.lang=Re,U("X",0,0,"unix"),U("x",0,0,"valueOf"),Z("x",Vd),Z("X",Yd),ba("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),ba("x",function(a,b,c){c._d=new Date(u(a))}),a.version="2.17.0",b(sb),a.fn=Xe,a.min=ub,a.max=vb,a.now=Le,a.utc=k,a.unix=Lc,a.months=Rc,a.isDate=g,a.locale=$a,a.invalid=o,a.duration=Ob,a.isMoment=s,a.weekdays=Tc,a.parseZone=Mc,a.localeData=bb,a.isDuration=xb,a.monthsShort=Sc,a.weekdaysMin=Vc,a.defineLocale=_a,a.updateLocale=ab,a.locales=cb,a.weekdaysShort=Uc,a.normalizeUnits=K,a.relativeTimeRounding=kd,a.relativeTimeThreshold=ld,a.calendarFormat=Ub,a.prototype=Xe,a}),function(a,b,c){"use strict";function d(){var a=!1;this.$get=["$$sanitizeUri",function(c){return a&&b.extend(x,v),function(a){var b=[];return g(a,j(b,function(a,b){return!/^unsafe:/.test(c(a,b))})),b.join("")}}],this.enableSvg=function(c){return b.isDefined(c)?(a=c,this):a}}function e(a){var c=[],d=j(c,b.noop);return d.chars(a),c.join("")}function f(a,c){var d,e={},f=a.split(",");for(d=0;d<f.length;d++)e[c?b.lowercase(f[d]):f[d]]=!0;return e}function g(a,b){null===a||a===c?a="":"string"!=typeof a&&(a=""+a),l.innerHTML=a;var d=5;do{if(0===d)throw m("uinput","Failed to sanitize html because the input is unstable");d--,document.documentMode<=11&&k(l),a=l.innerHTML,l.innerHTML=a}while(a!==l.innerHTML);for(var e=l.firstChild;e;){switch(e.nodeType){case 1:b.start(e.nodeName.toLowerCase(),h(e.attributes));break;case 3:b.chars(e.textContent)}var f;if(!(f=e.firstChild)&&(1==e.nodeType&&b.end(e.nodeName.toLowerCase()),f=e.nextSibling,!f))for(;null==f&&(e=e.parentNode,e!==l);)f=e.nextSibling,1==e.nodeType&&b.end(e.nodeName.toLowerCase());e=f}for(;e=l.firstChild;)l.removeChild(e)}function h(a){for(var b={},c=0,d=a.length;d>c;c++){var e=a[c];b[e.name]=e.value}return b}function i(a){return a.replace(/&/g,"&amp;").replace(n,function(a){var b=a.charCodeAt(0),c=a.charCodeAt(1);return"&#"+(1024*(b-55296)+(c-56320)+65536)+";"}).replace(o,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function j(a,c){var d=!1,e=b.bind(a,a.push);return{start:function(a,f){a=b.lowercase(a),!d&&w[a]&&(d=a),d||x[a]!==!0||(e("<"),e(a),b.forEach(f,function(d,f){var g=b.lowercase(f),h="img"===a&&"src"===g||"background"===g;B[g]!==!0||y[g]===!0&&!c(d,h)||(e(" "),e(f),e('="'),e(i(d)),e('"'))}),e(">"))},end:function(a){a=b.lowercase(a),d||x[a]!==!0||p[a]===!0||(e("</"),e(a),e(">")),a==d&&(d=!1)},chars:function(a){d||e(i(a))}}}function k(a){if(a.nodeType===Node.ELEMENT_NODE)for(var b=a.attributes,c=0,d=b.length;d>c;c++){var e=b[c],f=e.name.toLowerCase();("xmlns:ns1"===f||0===f.indexOf("ns1:"))&&(a.removeAttributeNode(e),c--,d--)}var g=a.firstChild;g&&k(g),g=a.nextSibling,g&&k(g)}var l,m=b.$$minErr("$sanitize"),n=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,o=/([^\#-~ |!])/g,p=f("area,br,col,hr,img,wbr"),q=f("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),r=f("rp,rt"),s=b.extend({},r,q),t=b.extend({},q,f("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul")),u=b.extend({},r,f("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),v=f("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,stop,svg,switch,text,title,tspan"),w=f("script,style"),x=b.extend({},p,t,u,s),y=f("background,cite,href,longdesc,src,xlink:href"),z=f("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width"),A=f("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan",!0),B=b.extend({},y,A,z);!function(a){var b;if(!a.document||!a.document.implementation)throw m("noinert","Can't create an inert html document");b=a.document.implementation.createHTMLDocument("inert");var c=b.documentElement||b.getDocumentElement(),d=c.getElementsByTagName("body");if(1===d.length)l=d[0];else{var e=b.createElement("html");l=b.createElement("body"),e.appendChild(l),b.appendChild(e)}}(a),b.module("ngSanitize",[]).provider("$sanitize",d),b.module("ngSanitize").filter("linky",["$sanitize",function(a){
-var c=/((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,d=/^mailto:/i,f=b.$$minErr("linky"),g=b.isString;return function(h,i,j){function k(a){a&&q.push(e(a))}function l(a,c){var d;if(q.push("<a "),b.isFunction(j)&&(j=j(a)),b.isObject(j))for(d in j)q.push(d+'="'+j[d]+'" ');else j={};!b.isDefined(i)||"target"in j||q.push('target="',i,'" '),q.push('href="',a.replace(/"/g,"&quot;"),'">'),k(c),q.push("</a>")}if(null==h||""===h)return h;if(!g(h))throw f("notstring","Expected string but received: {0}",h);for(var m,n,o,p=h,q=[];m=p.match(c);)n=m[0],m[2]||m[4]||(n=(m[3]?"http://":"mailto:")+n),o=m.index,k(p.substr(0,o)),l(n,m[0].replace(d,"")),p=p.substring(o+m[0].length);return k(p),a(q.join(""))}}])}(window,window.angular),angular.module("colorpicker.module",[]).factory("Helper",function(){"use strict";return{closestSlider:function(a){var b=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.msMatchesSelector;return b.bind(a)("I")?a.parentNode:a},getOffset:function(a,b){for(var c=0,d=0,e=a.getBoundingClientRect();a&&!isNaN(a.offsetLeft)&&!isNaN(a.offsetTop);)b||"BODY"!==a.tagName?(c+=a.scrollLeft,d+=a.scrollTop):(c+=document.documentElement.scrollLeft||a.scrollLeft,d+=document.documentElement.scrollTop||a.scrollTop),a=a.offsetParent;return{top:e.top+window.pageYOffset,left:e.left+window.pageXOffset,scrollX:c,scrollY:d}},stringParsers:[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],a[4]]}},{re:/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16)]}},{re:/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)]}}]}}).factory("Color",["Helper",function(a){"use strict";return{value:{h:1,s:1,b:1,a:1},rgb:function(){var a=this.toRGB();return"rgb("+a.r+","+a.g+","+a.b+")"},rgba:function(){var a=this.toRGB();return"rgba("+a.r+","+a.g+","+a.b+","+a.a+")"},hex:function(){return this.toHex()},RGBtoHSB:function(a,b,c,d){a/=255,b/=255,c/=255;var e,f,g,h;return g=Math.max(a,b,c),h=g-Math.min(a,b,c),e=0===h?null:g===a?(b-c)/h:g===b?(c-a)/h+2:(a-b)/h+4,e=(e+360)%6*60/360,f=0===h?0:h/g,{h:e||1,s:f,b:g,a:d||1}},setColor:function(b){b=b?b.toLowerCase():b;for(var c in a.stringParsers)if(a.stringParsers.hasOwnProperty(c)){var d=a.stringParsers[c],e=d.re.exec(b),f=e&&d.parse(e);if(f)return this.value=this.RGBtoHSB.apply(null,f),!1}},setHue:function(a){this.value.h=1-a},setSaturation:function(a){this.value.s=a},setLightness:function(a){this.value.b=1-a},setAlpha:function(a){this.value.a=parseInt(100*(1-a),10)/100},toRGB:function(a,b,c,d){a||(a=this.value.h,b=this.value.s,c=this.value.b),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-Math.abs(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],{r:Math.round(255*e),g:Math.round(255*f),b:Math.round(255*g),a:d||this.value.a}},toHex:function(a,b,c,d){var e=this.toRGB(a,b,c,d);return"#"+(1<<24|parseInt(e.r,10)<<16|parseInt(e.g,10)<<8|parseInt(e.b,10)).toString(16).substr(1)}}}]).factory("Slider",["Helper",function(a){"use strict";var b={maxLeft:0,maxTop:0,callLeft:null,callTop:null,knob:{top:0,left:0}},c={};return{getSlider:function(){return b},getLeftPosition:function(a){return Math.max(0,Math.min(b.maxLeft,b.left+((a.pageX||c.left)-c.left)))},getTopPosition:function(a){return Math.max(0,Math.min(b.maxTop,b.top+((a.pageY||c.top)-c.top)))},setSlider:function(d,e){var f=a.closestSlider(d.target),g=a.getOffset(f,e),h=f.getBoundingClientRect(),i=d.clientX-h.left,j=d.clientY-h.top;b.knob=f.children[0].style,b.left=d.pageX-g.left-window.pageXOffset+g.scrollX,b.top=d.pageY-g.top-window.pageYOffset+g.scrollY,c={left:d.pageX-(i-b.left),top:d.pageY-(j-b.top)}},setSaturation:function(a,c,d){b={maxLeft:d,maxTop:d,callLeft:"setSaturation",callTop:"setLightness"},this.setSlider(a,c)},setHue:function(a,c,d){b={maxLeft:0,maxTop:d,callLeft:!1,callTop:"setHue"},this.setSlider(a,c)},setAlpha:function(a,c,d){b={maxLeft:0,maxTop:d,callLeft:!1,callTop:"setAlpha"},this.setSlider(a,c)},setKnob:function(a,c){b.knob.top=a+"px",b.knob.left=c+"px"}}}]).directive("colorpicker",["$document","$compile","Color","Slider","Helper",function(a,b,c,d,e){"use strict";return{require:"?ngModel",restrict:"A",link:function(f,g,h,i){function j(){a.on("mousemove",l),a.on("mouseup",m)}function k(){try{K.css("backgroundColor",G[u]())}catch(a){K.css("backgroundColor",G.toHex())}J.css("backgroundColor",G.toHex(G.value.h,1,1,1)),"rgba"===u&&(t.css.backgroundColor=G.toHex())}function l(a){var b=d.getLeftPosition(a),c=d.getTopPosition(a),e=d.getSlider();d.setKnob(c,b),e.callLeft&&G[e.callLeft].call(G,b/A),e.callTop&&G[e.callTop].call(G,c/A),k();var h=G[u]();return g.val(h),i&&f.$apply(i.$setViewValue(h)),z&&M.val(h),!1}function m(){r("colorpicker-selected"),a.off("mousemove",l),a.off("mouseup",m)}function n(a){G.value=H,G.setColor(g.val()),z&&!a&&M.val(g.val()),L.eq(0).css({left:G.value.s*A+"px",top:A-G.value.b*A+"px"}),L.eq(1).css("top",A*(1-G.value.h)+"px"),L.eq(2).css("top",A*(1-G.value.a)+"px"),H=G.value,k()}function o(){var a,b=e.getOffset(g[0]);return angular.isDefined(h.colorpickerParent)&&(b.left=0,b.top=0),"top"===v?a={top:b.top-147,left:b.left}:"right"===v?a={top:b.top,left:b.left+126}:"bottom"===v?a={top:b.top+g[0].offsetHeight+2,left:b.left}:"left"===v&&(a={top:b.top,left:b.left-150}),{top:a.top+"px",left:a.left+"px"}}function p(){s()}function q(){F.hasClass("colorpicker-visible")||(n(),F.addClass("colorpicker-visible").css(o()),r("colorpicker-shown"),w===!1&&a.on("mousedown",p),h.colorpickerIsOpen&&(f[h.colorpickerIsOpen]=!0,f.$$phase&&f.$root.$$phase||f.$digest()))}function r(a){i&&f.$emit(a,{name:h.ngModel,value:i.$modelValue})}function s(){F.hasClass("colorpicker-visible")&&(F.removeClass("colorpicker-visible"),r("colorpicker-closed"),a.off("mousedown",p),h.colorpickerIsOpen&&(f[h.colorpickerIsOpen]=!1,f.$$phase&&f.$root.$$phase||f.$digest()))}var t,u=h.colorpicker?h.colorpicker:"hex",v=angular.isDefined(h.colorpickerPosition)?h.colorpickerPosition:"bottom",w=angular.isDefined(h.colorpickerInline)?h.colorpickerInline:!1,x=angular.isDefined(h.colorpickerFixedPosition)?h.colorpickerFixedPosition:!1,y=angular.isDefined(h.colorpickerParent)?g.parent():angular.element(document.body),z=angular.isDefined(h.colorpickerWithInput)?h.colorpickerWithInput:!1,A=angular.isDefined(h.colorpickerSize)?h.colorpickerSize:100,B=A+"px",C=z?'<input type="text" name="colorpicker-input" spellcheck="false">':"",D=w?"":'<button type="button" class="close close-colorpicker">&times;</button>',E='<div class="colorpicker dropdown"><div class="dropdown-menu"><colorpicker-saturation><i></i></colorpicker-saturation><colorpicker-hue><i></i></colorpicker-hue><colorpicker-alpha><i></i></colorpicker-alpha><colorpicker-preview></colorpicker-preview>'+C+D+"</div></div>",F=angular.element(E),G=c,H={h:1,s:0,b:1,a:1},I=F.find("colorpicker-hue"),J=F.find("colorpicker-saturation"),K=F.find("colorpicker-preview"),L=F.find("i");if(b(F)(f),F.css("min-width",parseInt(A)+29+"px"),J.css({width:B,height:B}),I.css("height",B),z){var M=F.find("input");M.css("width",B),M.on("mousedown",function(a){a.stopPropagation()}).on("keyup",function(){var a=this.value;g.val(a),i&&i.$modelValue!==a&&(f.$apply(i.$setViewValue(a)),n(!0))})}"rgba"===u&&(F.addClass("alpha"),t=F.find("colorpicker-alpha"),t.css("height",B),t.on("click",function(a){d.setAlpha(a,x,A),l(a)}).on("mousedown",function(a){d.setAlpha(a,x,A),j()}).on("mouseup",function(a){r("colorpicker-selected-alpha")})),I.on("click",function(a){d.setHue(a,x,A),l(a)}).on("mousedown",function(a){d.setHue(a,x,A),j()}).on("mouseup",function(a){r("colorpicker-selected-hue")}),J.on("click",function(a){d.setSaturation(a,x,A),l(a),angular.isDefined(h.colorpickerCloseOnSelect)&&s()}).on("mousedown",function(a){d.setSaturation(a,x,A),j()}).on("mouseup",function(a){r("colorpicker-selected-saturation")}),x&&F.addClass("colorpicker-fixed-position"),F.addClass("colorpicker-position-"+v),"true"===w&&F.addClass("colorpicker-inline"),y.append(F),i&&(i.$render=function(){g.val(i.$viewValue),n()}),g.on("blur keyup change",function(){n()}),g.on("$destroy",function(){F.remove()}),w===!1?g.on("click",q):q(),F.on("mousedown",function(a){a.stopPropagation(),a.preventDefault()}),F.find("button").on("click",function(){s()}),h.colorpickerIsOpen&&f.$watch(h.colorpickerIsOpen,function(a){a===!0?q():a===!1&&s()})}}}]),function(a,b){"use strict";var c=[["bold","italic","underline","strikethrough","subscript","superscript"],["format-block"],["font"],["font-size"],["font-color","hilite-color"],["remove-format"],["ordered-list","unordered-list","outdent","indent"],["left-justify","center-justify","right-justify"],["code","quote","paragraph"],["link","image"]];a.module("wysiwyg.module",["colorpicker.module"]).directive("wysiwyg",["$timeout","wysiwgGui","$compile",function(c,d,e){function f(f,g,h,i){function j(){k(),l(),m(),n()}function k(){d.setCustomElements(f.textareaCustomMenu);var a=g.children("div.wysiwyg-menu")[0];a.appendChild(d.createMenu(f.textareaMenu)),e(a)(f)}function l(){f.$watch("disabled",function(b){a.element("div.wysiwyg-menu").find("button").each(function(){a.element(this).attr("disabled",b)}),a.element("div.wysiwyg-menu").find("select").each(function(){a.element(this).attr("disabled",b)})})}function m(){"true"===h.enableBootstrapTitle&&h.enableBootstrapTitle!==b&&g.find("button[title]").tooltip({container:"body"})}function n(){a.element(".wysiwyg-menu").find("button").on("click",function(){var b=a.element(this);f.$emit("wysiwyg.click",b.attr("title")||b.attr("data-original-title"))}),q.on("input keyup paste mouseup",function(){var a=q.html();"<br>"==a&&(a=""),i.$setViewValue(a)}),q.on("keydown",function(a){if(9==a.keyCode){var b=(q.html(),window.getSelection());b.anchorOffset;a.preventDefault()}}),q.on("click keyup focus mouseup",function(){c(function(){f.isBold=f.cmdState("bold"),f.isUnderlined=f.cmdState("underline"),f.isStrikethrough=f.cmdState("strikethrough"),f.isItalic=f.cmdState("italic"),f.isSuperscript=o("SUP"),f.isSubscript=o("SUB"),f.isRightJustified=f.cmdState("justifyright"),f.isLeftJustified=f.cmdState("justifyleft"),f.isCenterJustified=f.cmdState("justifycenter"),f.isPre="pre"===f.cmdValue("formatblock"),f.isBlockquote="blockquote"===f.cmdValue("formatblock"),f.isOrderedList=f.cmdState("insertorderedlist"),f.isUnorderedList=f.cmdState("insertunorderedlist"),f.fonts.forEach(function(a,b){return f.cmdValue("fontname").indexOf(a)>-1?(f.font=a,!1):void 0}),f.cmdValue("formatblock").toLowerCase(),f.formatBlocks.forEach(function(a,b){return f.cmdValue("formatblock").toLowerCase()===a.value.toLowerCase()?(f.formatBlock=a,!1):void 0}),f.fontSizes.forEach(function(a,b){return f.cmdValue("fontsize")===a.value?(f.fontSize=a,!1):void 0}),f.hiliteColor=p(),g.find("button.wysiwyg-hiliteColor").css("background-color",f.hiliteColor),f.fontColor=f.cmdValue("forecolor"),g.find("button.wysiwyg-fontcolor").css("color",f.fontColor),f.isLink=o("A")},0)})}function o(a){var b=window.getSelection().getRangeAt(0);return b&&(b.startContainer.parentNode.tagName===a.toUpperCase()||b.endContainer.parentNode.tagName===a.toUpperCase())?!0:!1}function p(){var b=window.getSelection().getRangeAt(0);if(b){var c=a.element(b.startContainer.parentNode).attr("style");if(!a.isDefined(c))return!1;for(var d=c.split(";"),e=0;e<d.length;e++){var f=d[e].split(":");if("background-color"===f[0])return f[1]}return"#fff"}return"#fff"}var q=g.find("div.wysiwyg-textarea");f.isLink=!1,f.fontSizes=[{value:"1",size:"10px"},{value:"2",size:"13px"},{value:"3",size:"16px"},{value:"4",size:"18px"},{value:"5",size:"24px"},{value:"6",size:"32px"},{value:"7",size:"48px"}],f.formatBlocks=[{name:"Heading Blocks",value:"div"},{name:"Heading 1",value:"h1"},{name:"Heading 2",value:"h2"},{name:"Heading 3",value:"h3"},{name:"Heading 4",value:"h4"},{name:"Heading 5",value:"h5"},{name:"Heading 6",value:"h6"}],f.formatBlock=f.formatBlocks[0],f.fontSize=f.fontSizes[1],a.isArray(f.cssClasses)&&(f.cssClasses.unshift("css"),f.cssClass=f.cssClasses[0]),f.fonts=["Georgia","Palatino Linotype","Times New Roman","Arial","Helvetica","Arial Black","Comic Sans MS","Impact","Lucida Sans Unicode","Tahoma","Trebuchet MS","Verdana","Courier New","Lucida Console","Helvetica Neue"].sort(),f.font=f.fonts[6],j(),i.$render=function(){q.html(i.$viewValue)},f.format=function(a,b){document.execCommand(a,!1,b)},f.cmdState=function(a){return document.queryCommandState(a)},f.cmdValue=function(a){return document.queryCommandValue(a)},f.createLink=function(){var a=prompt("Enter the link URL");a&&a!==b&&f.format("createlink",a)},f.insertImage=function(){var a=prompt("Enter the image URL");a&&a!==b&&f.format("insertimage",a)},f.setFont=function(){f.format("fontname",f.font)},f.setFontSize=function(){f.format("fontsize",f.fontSize.value)},f.setFormatBlock=function(){f.format("formatBlock",f.formatBlock.value)},f.setFontColor=function(){f.format("forecolor",f.fontColor)},f.setHiliteColor=function(){f.format("hiliteColor",f.hiliteColor)},f.format("enableobjectresizing",!0),f.format("styleWithCSS",!0)}return{template:'<div><style> .wysiwyg-textarea[contentEditable="false"] { background-color:#eee} .wysiwyg-btn-group-margin { margin-right:5px; } .wysiwyg-select { height:30px;margin-bottom:1px;} .wysiwyg-colorpicker { font-family: arial, sans-serif !important;font-size:16px !important; padding:2px 10px !important;}</style><div class="wysiwyg-menu"></div><div id="{{textareaId}}" ng-attr-style="resize:vertical;height:{{textareaHeight || \'80px\'}}; overflow:auto" contentEditable="{{!disabled}}" class="{{textareaClass}} wysiwyg-textarea" name="{{textareaName}}" ng-model="value"></div></div>',restrict:"E",scope:{value:"=ngModel",textareaHeight:"@textareaHeight",textareaName:"@textareaName",textareaClass:"@textareaClass",textareaRequired:"@textareaRequired",textareaId:"@textareaId",textareaMenu:"=textareaMenu",textareaCustomMenu:"=textareaCustomMenu",fn:"&",disabled:"=?disabledArea"},replace:!0,require:"ngModel",link:f,transclude:!0}}]).factory("wysiwgGui",["wysiwgGuiElements",function(b){function d(a){var b;if(a.tag)b=document.createElement(a.tag);else{if(!a.text)return console.log("cannot create this element."),b=document.createElement("span");b=document.createElement("span")}if(a.text&&document.all?b.innerText=a.text:a.text?b.textContent=a.text:b.textContent="",a.classes&&(b.className=a.classes),a.html&&(b.innerHTML=a.html),a.attributes&&a.attributes.length)for(var c in a.attributes){var e=a.attributes[c];e.name&&e.value&&b.setAttribute(e.name,e.value)}if(a.data&&a.data.length)for(var f in a.data)b.appendChild(d(a.data[f]));return b}var e=b,f={},g=function(a){f=a},h=function(){return{tag:"div",classes:"btn-group btn-group-sm wysiwyg-btn-group-margin"}},i=function(a){return e[a]||{}},j=function(b){a.extend(e,f),b=a.isDefined(b)&&""!==b?b:c;for(var g,j=document.createElement("div"),k=0;k<b.length;k++){for(var l=d(h()),m=0;m<b[k].length;m++)"link"===b[k][m]&&(g=d(i("unlink")),l.appendChild(g)),g=d(i(b[k][m])),l.appendChild(g);j.appendChild(l)}return j};return{createMenu:j,setCustomElements:g}}]).value("wysiwgGuiElements",{bold:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Bold"},{name:"ng-click",value:"format('bold')"},{name:"ng-class",value:"{ active: isBold }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-bold"}]},italic:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Italic"},{name:"ng-click",value:"format('italic')"},{name:"ng-class",value:"{ active: isItalic }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-italic"}]},underline:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Underline"},{name:"ng-click",value:"format('underline')"},{name:"ng-class",value:"{ active: isUnderlined }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-underline"}]},strikethrough:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Strikethrough"},{name:"ng-click",value:"format('strikethrough')"},{name:"ng-class",value:"{ active: isStrikethrough }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-strikethrough"}]},subscript:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Subscript"},{name:"ng-click",value:"format('subscript')"},{name:"ng-class",value:"{ active: isSubscript }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-subscript"}]},superscript:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Superscript"},{name:"ng-click",value:"format('superscript')"},{name:"ng-class",value:"{ active: isSuperscript }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-superscript"}]},"remove-format":{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Remove Formatting"},{name:"ng-click",value:"format('removeFormat')"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-eraser"}]},"ordered-list":{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Ordered List"},{name:"ng-click",value:"format('insertorderedlist')"},{name:"ng-class",value:"{ active: isOrderedList }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-list-ol"}]},"unordered-list":{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Unordered List"},{name:"ng-click",value:"format('insertunorderedlist')"},{name:"ng-class",value:"{ active: isUnorderedList }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-list-ul"}]},outdent:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Outdent"},{name:"ng-click",value:"format('outdent')"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-outdent"}]},indent:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Indent"},{name:"ng-click",value:"format('indent')"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-indent"}]},"left-justify":{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Left Justify"},{name:"ng-click",value:"format('justifyleft')"},{name:"ng-class",value:"{ active: isLeftJustified }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-align-left"}]},"center-justify":{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Center Justify"},{name:"ng-click",value:"format('justifycenter')"},{name:"ng-class",value:"{ active: isCenterJustified }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-align-center"}]},"right-justify":{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Right Justify"},{name:"ng-click",value:"format('justifyright')"},{name:"ng-class",value:"{ active: isRightJustified }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-align-right"}]},code:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Code"},{name:"ng-click",value:"format('formatblock', 'pre')"},{name:"ng-class",value:"{ active: isPre }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-code"}]},quote:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Quote"},{name:"ng-click",value:"format('formatblock', 'blockquote')"},{name:"ng-class",value:"{ active: isBlockquote }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-quote-right"}]},paragraph:{tag:"button",classes:"btn btn-default",text:"P",attributes:[{name:"title",value:"Paragragh"},{name:"ng-click",value:"format('insertParagraph')"},{name:"ng-class",value:"{ active: isParagraph }"},{name:"type",value:"button"}]},image:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Image"},{name:"ng-click",value:"insertImage()"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-picture-o"}]},"font-color":{tag:"button",classes:"btn btn-default wysiwyg-colorpicker wysiwyg-fontcolor",text:"A",attributes:[{name:"title",value:"Font Color"},{name:"colorpicker",value:"rgba"},{name:"colorpicker-position",value:"top"},{name:"ng-model",value:"fontColor"},{name:"ng-change",value:"setFontColor()"},{name:"type",value:"button"}]},"hilite-color":{tag:"button",classes:"btn btn-default wysiwyg-colorpicker wysiwyg-fontcolor",text:"H",attributes:[{name:"title",value:"Hilite Color"},{name:"colorpicker",value:"rgba"},{name:"colorpicker-position",value:"top"},{name:"ng-model",value:"hiliteColor"},{name:"ng-change",value:"setHiliteColor()"},{name:"type",value:"button"}]},font:{tag:"select",classes:"form-control wysiwyg-select",attributes:[{name:"title",value:"Font"},{name:"ng-model",value:"font"},{name:"ng-options",value:"f for f in fonts"},{name:"ng-change",value:"setFont()"}]},"font-size":{tag:"select",classes:"form-control wysiwyg-select",attributes:[{name:"title",value:"Image"},{name:"ng-model",value:"fontSize"},{name:"ng-options",value:"f.size for f in fontSizes"},{name:"ng-change",value:"setFontSize()"}]},"format-block":{tag:"select",classes:"form-control wysiwyg-select",attributes:[{name:"title",value:"Format Block"},{name:"ng-model",value:"formatBlock"},{name:"ng-options",value:"f.name for f in formatBlocks"},{name:"ng-change",value:"setFormatBlock()"}]},link:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Link"},{name:"ng-click",value:"createLink()"},{name:"ng-show",value:"!isLink"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-link"}]},unlink:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Unlink"},{name:"ng-click",value:"format('unlink')"},{name:"ng-show",value:"isLink"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-unlink"}]}})}(angular),function(a,b){"use strict";"function"==typeof define&&define.amd?define(["moment"],b):"object"==typeof module&&module.exports?module.exports=b(require("moment")):b(a.moment)}(this,function(a){"use strict";function b(a){return a>96?a-87:a>64?a-29:a-48}function c(a){var c,d=0,e=a.split("."),f=e[0],g=e[1]||"",h=1,i=0,j=1;for(45===a.charCodeAt(0)&&(d=1,j=-1),d;d<f.length;d++)c=b(f.charCodeAt(d)),i=60*i+c;for(d=0;d<g.length;d++)h/=60,c=b(g.charCodeAt(d)),i+=c*h;return i*j}function d(a){for(var b=0;b<a.length;b++)a[b]=c(a[b])}function e(a,b){for(var c=0;b>c;c++)a[c]=Math.round((a[c-1]||0)+6e4*a[c]);a[b-1]=1/0}function f(a,b){var c,d=[];for(c=0;c<b.length;c++)d[c]=a[b[c]];return d}function g(a){var b=a.split("|"),c=b[2].split(" "),g=b[3].split(""),h=b[4].split(" ");return d(c),d(g),d(h),e(h,g.length),{name:b[0],abbrs:f(b[1].split(" "),g),offsets:f(c,g),untils:h,population:0|b[5]}}function h(a){a&&this._set(g(a))}function i(a){var b=a.toTimeString(),c=b.match(/\([a-z ]+\)/i);c&&c[0]?(c=c[0].match(/[A-Z]/g),c=c?c.join(""):void 0):(c=b.match(/[A-Z]{3,5}/g),c=c?c[0]:void 0),"GMT"===c&&(c=void 0),this.at=+a,this.abbr=c,this.offset=a.getTimezoneOffset()}function j(a){this.zone=a,this.offsetScore=0,this.abbrScore=0}function k(a,b){for(var c,d;d=6e4*((b.at-a.at)/12e4|0);)c=new i(new Date(a.at+d)),c.offset===a.offset?a=c:b=c;return a}function l(){var a,b,c,d=(new Date).getFullYear()-2,e=new i(new Date(d,0,1)),f=[e];for(c=1;48>c;c++)b=new i(new Date(d,c,1)),b.offset!==e.offset&&(a=k(e,b),f.push(a),f.push(new i(new Date(a.at+6e4)))),e=b;for(c=0;4>c;c++)f.push(new i(new Date(d+c,0,1))),f.push(new i(new Date(d+c,6,1)));return f}function m(a,b){return a.offsetScore!==b.offsetScore?a.offsetScore-b.offsetScore:a.abbrScore!==b.abbrScore?a.abbrScore-b.abbrScore:b.zone.population-a.zone.population}function n(a,b){var c,e;for(d(b),c=0;c<b.length;c++)e=b[c],I[e]=I[e]||{},I[e][a]=!0}function o(a){var b,c,d,e=a.length,f={},g=[];for(b=0;e>b;b++){d=I[a[b].offset]||{};for(c in d)d.hasOwnProperty(c)&&(f[c]=!0)}for(b in f)f.hasOwnProperty(b)&&g.push(H[b]);return g}function p(){try{var a=Intl.DateTimeFormat().resolvedOptions().timeZone;if(a){var b=H[r(a)];if(b)return b;z("Moment Timezone found "+a+" from the Intl api, but did not have that data loaded.")}}catch(c){}var d,e,f,g=l(),h=g.length,i=o(g),k=[];for(e=0;e<i.length;e++){for(d=new j(t(i[e]),h),f=0;h>f;f++)d.scoreOffsetAt(g[f]);k.push(d)}return k.sort(m),k.length>0?k[0].zone.name:void 0}function q(a){return(!D||a)&&(D=p()),D}function r(a){return(a||"").toLowerCase().replace(/\//g,"_")}function s(a){var b,c,d,e;for("string"==typeof a&&(a=[a]),b=0;b<a.length;b++)d=a[b].split("|"),c=d[0],e=r(c),F[e]=a[b],H[e]=c,d[5]&&n(e,d[2].split(" "))}function t(a,b){a=r(a);var c,d=F[a];return d instanceof h?d:"string"==typeof d?(d=new h(d),F[a]=d,d):G[a]&&b!==t&&(c=t(G[a],t))?(d=F[a]=new h,d._set(c),d.name=H[a],d):null}function u(){var a,b=[];for(a in H)H.hasOwnProperty(a)&&(F[a]||F[G[a]])&&H[a]&&b.push(H[a]);return b.sort()}function v(a){var b,c,d,e;for("string"==typeof a&&(a=[a]),b=0;b<a.length;b++)c=a[b].split("|"),d=r(c[0]),e=r(c[1]),G[d]=e,H[d]=c[0],G[e]=d,H[e]=c[1]}function w(a){s(a.zones),v(a.links),A.dataVersion=a.version}function x(a){return x.didShowError||(x.didShowError=!0,z("moment.tz.zoneExists('"+a+"') has been deprecated in favor of !moment.tz.zone('"+a+"')")),!!t(a)}function y(a){return!(!a._a||void 0!==a._tzm)}function z(a){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(a)}function A(b){var c=Array.prototype.slice.call(arguments,0,-1),d=arguments[arguments.length-1],e=t(d),f=a.utc.apply(null,c);return e&&!a.isMoment(b)&&y(f)&&f.add(e.parse(f),"minutes"),f.tz(d),f}function B(a){return function(){return this._z?this._z.abbr(this):a.call(this)}}function C(a){return function(){return this._z=null,a.apply(this,arguments)}}if(void 0!==a.tz)return z("Moment Timezone "+a.tz.version+" was already loaded "+(a.tz.dataVersion?"with data from ":"without any data")+a.tz.dataVersion),a;var D,E="0.5.10",F={},G={},H={},I={},J=a.version.split("."),K=+J[0],L=+J[1];(2>K||2===K&&6>L)&&z("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+a.version+". See momentjs.com"),h.prototype={_set:function(a){this.name=a.name,this.abbrs=a.abbrs,this.untils=a.untils,this.offsets=a.offsets,this.population=a.population},_index:function(a){var b,c=+a,d=this.untils;for(b=0;b<d.length;b++)if(c<d[b])return b},parse:function(a){var b,c,d,e,f=+a,g=this.offsets,h=this.untils,i=h.length-1;for(e=0;i>e;e++)if(b=g[e],c=g[e+1],d=g[e?e-1:e],c>b&&A.moveAmbiguousForward?b=c:b>d&&A.moveInvalidForward&&(b=d),f<h[e]-6e4*b)return g[e];return g[i]},abbr:function(a){return this.abbrs[this._index(a)]},offset:function(a){return this.offsets[this._index(a)]}},j.prototype.scoreOffsetAt=function(a){this.offsetScore+=Math.abs(this.zone.offset(a.at)-a.offset),this.zone.abbr(a.at).replace(/[^A-Z]/g,"")!==a.abbr&&this.abbrScore++},A.version=E,A.dataVersion="",A._zones=F,A._links=G,A._names=H,A.add=s,A.link=v,A.load=w,A.zone=t,A.zoneExists=x,A.guess=q,A.names=u,A.Zone=h,A.unpack=g,A.unpackBase60=c,A.needsOffset=y,A.moveInvalidForward=!0,A.moveAmbiguousForward=!1;var M=a.fn;a.tz=A,a.defaultZone=null,a.updateOffset=function(b,c){var d,e=a.defaultZone;void 0===b._z&&(e&&y(b)&&!b._isUTC&&(b._d=a.utc(b._a)._d,b.utc().add(e.parse(b),"minutes")),b._z=e),b._z&&(d=b._z.offset(b),Math.abs(d)<16&&(d/=60),void 0!==b.utcOffset?b.utcOffset(-d,c):b.zone(d,c))},M.tz=function(b){return b?(this._z=t(b),this._z?a.updateOffset(this):z("Moment Timezone has no data for "+b+". See http://momentjs.com/timezone/docs/#/data-loading/."),this):this._z?this._z.name:void 0},M.zoneName=B(M.zoneName),M.zoneAbbr=B(M.zoneAbbr),M.utc=C(M.utc),a.tz.setDefault=function(b){return(2>K||2===K&&9>L)&&z("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+a.version+"."),a.defaultZone=b?t(b):null,a};var N=a.momentProperties;return"[object Array]"===Object.prototype.toString.call(N)?(N.push("_z"),N.push("_a")):N&&(N._z=null),w({version:"2016j",zones:["Africa/Abidjan|GMT|0|0||48e5","Africa/Khartoum|EAT|-30|0||51e5","Africa/Algiers|CET|-10|0||26e5","Africa/Lagos|WAT|-10|0||17e6","Africa/Maputo|CAT|-20|0||26e5","Africa/Cairo|EET EEST|-20 -30|010101010|1Cby0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6","Africa/Casablanca|WET WEST|0 -10|01010101010101010101010101010101010101010|1Cco0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0|32e5","Europe/Paris|CET CEST|-10 -20|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6","Africa/Johannesburg|SAST|-20|0||84e5","Africa/Tripoli|EET CET CEST|-20 -10 -20|0120|1IlA0 TA0 1o00|11e5","Africa/Windhoek|WAST WAT|-20 -10|01010101010101010101010|1C1c0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0|32e4","America/Adak|HST HDT|a0 90|01010101010101010101010|1BR00 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326","America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1BQX0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4","America/Santo_Domingo|AST|40|0||29e5","America/Araguaina|BRT BRST|30 20|010|1IdD0 Lz0|14e4","America/Argentina/Buenos_Aires|ART|30|0|","America/Asuncion|PYST PYT|30 40|01010101010101010101010|1C430 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5","America/Panama|EST|50|0||15e5","America/Bahia|BRT BRST|30 20|010|1FJf0 Rb0|27e5","America/Bahia_Banderas|MST CDT CST|70 50 60|01212121212121212121212|1C1l0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3","America/Fortaleza|BRT|30|0||34e5","America/Managua|CST|60|0||22e5","America/Manaus|AMT|40|0||19e5","America/Bogota|COT|50|0||90e5","America/Denver|MST MDT|70 60|01010101010101010101010|1BQV0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5","America/Campo_Grande|AMST AMT|30 40|01010101010101010101010|1BIr0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10|77e4","America/Cancun|CST CDT EST|60 50 50|010101010102|1C1k0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4","America/Caracas|VET VET|4u 40|01|1QMT0|29e5","America/Cayenne|GFT|30|0||58e3","America/Chicago|CST CDT|60 50|01010101010101010101010|1BQU0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5","America/Chihuahua|MST MDT|70 60|01010101010101010101010|1C1l0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4","America/Phoenix|MST|70|0||42e5","America/Los_Angeles|PST PDT|80 70|01010101010101010101010|1BQW0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6","America/New_York|EST EDT|50 40|01010101010101010101010|1BQT0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6","America/Rio_Branco|AMT ACT|40 50|01|1KLE0|31e4","America/Fort_Nelson|PST PDT MST|80 70 70|010101010102|1BQW0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2","America/Halifax|AST ADT|40 30|01010101010101010101010|1BQS0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4","America/Godthab|WGT WGST|30 20|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3","America/Goose_Bay|AST ADT|40 30|01010101010101010101010|1BQQ1 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2","America/Grand_Turk|EST EDT AST|50 40 40|0101010101012|1BQT0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2","America/Guayaquil|ECT|50|0||27e5","America/Guyana|GYT|40|0||80e4","America/Havana|CST CDT|50 40|01010101010101010101010|1BQR0 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5","America/La_Paz|BOT|40|0||19e5","America/Lima|PET|50|0||11e6","America/Mexico_City|CST CDT|60 50|01010101010101010101010|1C1k0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6","America/Metlakatla|PST AKST AKDT|80 90 80|012121212121|1PAa0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Miquelon|PMST PMDT|30 20|01010101010101010101010|1BQR0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2","America/Montevideo|UYST UYT|20 30|010101010101|1BQQ0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5","America/Noronha|FNT|20|0||30e2","America/North_Dakota/Beulah|MST MDT CST CDT|70 60 60 50|01232323232323232323232|1BQV0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Paramaribo|SRT|30|0||24e4","America/Port-au-Prince|EST EDT|50 40|010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Santiago|CLST CLT|30 40|010101010101010101010|1C1f0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|62e5","America/Sao_Paulo|BRST BRT|20 30|01010101010101010101010|1BIq0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10|20e6","America/Scoresbysund|EGT EGST|10 0|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452","America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1BQPv 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","Antarctica/Casey|+11 +08|-b0 -80|01010|1BN30 40P0 KL0 blz0|10","Antarctica/Davis|+05 +07|-50 -70|0101|1BPw0 3Wn0 KN0|70","Antarctica/DumontDUrville|+10|-a0|0||80","Antarctica/Macquarie|AEDT MIST|-b0 -b0|01|1C140|1","Asia/Tashkent|+05|-50|0||23e5","Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|1C120 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5","Antarctica/Rothera|-03|30|0||130","Antarctica/Syowa|+03|-30|0||20","Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40","Asia/Almaty|+06|-60|0||15e5","Asia/Baghdad|AST|-30|0||66e5","Asia/Amman|EET EEST|-20 -30|010101010101010101010|1BVy0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0|25e5","Asia/Kamchatka|+12 +11|-c0 -b0|010|1Dp30 WM0|18e4","Asia/Baku|+04 +05|-40 -50|0101010101010|1BWo0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5","Asia/Bangkok|ICT|-70|0||15e6","Asia/Barnaul|+06 +07|-60 -70|010101|1BWk0 1qM0 WM0 8Hz0 3rd0","Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1BWm0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5","Asia/Brunei|BNT|-80|0||42e4","Asia/Kolkata|IST|-5u|0||15e6","Asia/Chita|+09 +10 +08|-90 -a0 -80|010120|1BWh0 1qM0 WM0 8Hz0 3re0|33e4","Asia/Choibalsan|CHOT CHOST|-80 -90|0101010101010|1O8G0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0|38e3","Asia/Shanghai|CST|-80|0||23e6","Asia/Colombo|+0530|-5u|0||22e5","Asia/Dhaka|BDT|-60|0||16e6","Asia/Damascus|EET EEST|-20 -30|01010101010101010101010|1C0m0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0|26e5","Asia/Dili|TLT|-90|0||19e4","Asia/Dubai|GST|-40|0||39e5","Asia/Famagusta|EET EEST +03|-20 -30 -30|010101010101012|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0","Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1BVW1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0|18e5","Asia/Hebron|EET EEST|-20 -30|0101010101010101010101010|1BVy0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0|25e4","Asia/Hong_Kong|HKT|-80|0||73e5","Asia/Hovd|HOVT HOVST|-70 -80|0101010101010|1O8H0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0|81e3","Asia/Irkutsk|+08 +09|-80 -90|01010|1BWi0 1qM0 WM0 8Hz0|60e4","Europe/Istanbul|EET EEST +03|-20 -30 -30|010101010101012|1BWp0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6","Asia/Jakarta|WIB|-70|0||31e6","Asia/Jayapura|WIT|-90|0||26e4","Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1BVA0 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4","Asia/Kabul|AFT|-4u|0||46e5","Asia/Karachi|PKT|-50|0||24e6","Asia/Urumqi|XJT|-60|0||32e5","Asia/Kathmandu|NPT|-5J|0||12e5","Asia/Khandyga|+10 +11 +09|-a0 -b0 -90|010102|1BWg0 1qM0 WM0 17V0 7zD0|66e2","Asia/Krasnoyarsk|+07 +08|-70 -80|01010|1BWj0 1qM0 WM0 8Hz0|10e5","Asia/Kuala_Lumpur|MYT|-80|0||71e5","Asia/Magadan|+11 +12 +10|-b0 -c0 -a0|010120|1BWf0 1qM0 WM0 8Hz0 3Cq0|95e3","Asia/Makassar|WITA|-80|0||15e5","Asia/Manila|PHT|-80|0||24e6","Europe/Athens|EET EEST|-20 -30|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5","Asia/Novokuznetsk|+07 +06|-70 -60|010|1Dp80 WM0|55e4","Asia/Novosibirsk|+06 +07|-60 -70|010101|1BWk0 1qM0 WM0 8Hz0 4eN0|15e5","Asia/Omsk|+06 +07|-60 -70|01010|1BWk0 1qM0 WM0 8Hz0|12e5","Asia/Pyongyang|KST KST|-90 -8u|01|1P4D0|29e5","Asia/Rangoon|MMT|-6u|0||48e5","Asia/Sakhalin|+10 +11|-a0 -b0|010101|1BWg0 1qM0 WM0 8Hz0 3rd0|58e4","Asia/Seoul|KST|-90|0||23e6","Asia/Singapore|SGT|-80|0||56e5","Asia/Srednekolymsk|+11 +12|-b0 -c0|01010|1BWf0 1qM0 WM0 8Hz0|35e2","Asia/Tbilisi|+04|-40|0||11e5","Asia/Tehran|IRST IRDT|-3u -4u|01010101010101010101010|1BTUu 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6","Asia/Thimphu|BTT|-60|0||79e3","Asia/Tokyo|JST|-90|0||38e6","Asia/Tomsk|+06 +07|-60 -70|010101|1BWk0 1qM0 WM0 8Hz0 3Qp0|10e5","Asia/Ulaanbaatar|ULAT ULAST|-80 -90|0101010101010|1O8G0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0|12e5","Asia/Ust-Nera|+11 +12 +10|-b0 -c0 -a0|010102|1BWf0 1qM0 WM0 17V0 7zD0|65e2","Asia/Vladivostok|+10 +11|-a0 -b0|01010|1BWg0 1qM0 WM0 8Hz0|60e4","Asia/Yakutsk|+09 +10|-90 -a0|01010|1BWh0 1qM0 WM0 8Hz0|28e4","Asia/Yekaterinburg|+05 +06|-50 -60|01010|1BWl0 1qM0 WM0 8Hz0|14e5","Asia/Yerevan|+04 +05|-40 -50|01010|1BWm0 1qM0 WM0 1qM0|13e5","Atlantic/Azores|AZOT AZOST|10 0|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4","Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5","Atlantic/Cape_Verde|CVT|10|0||50e4","Atlantic/South_Georgia|GST|20|0||30","Atlantic/Stanley|FKST FKT|30 40|010|1C6R0 U10|21e2","Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1C140 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5","Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1C14u 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5","Australia/Brisbane|AEST|-a0|0||20e5","Australia/Darwin|ACST|-9u|0||12e4","Australia/Eucla|ACWST|-8J|0||368","Australia/Lord_Howe|LHDT LHST|-b0 -au|01010101010101010101010|1C130 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347","Australia/Perth|AWST|-80|0||18e5","Pacific/Easter|EASST EAST|50 60|010101010101010101010|1C1f0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|30e2","Europe/Dublin|GMT IST|0 -10|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Etc/GMT+1|-01|10|0|","Etc/GMT+10|-10|a0|0|","Etc/GMT+11|-11|b0|0|","Etc/GMT+12|-12|c0|0|","Etc/GMT+2|-02|20|0|","Etc/GMT+4|-04|40|0|","Etc/GMT+5|-05|50|0|","Etc/GMT+6|-06|60|0|","Etc/GMT+7|-07|70|0|","Etc/GMT+8|-08|80|0|","Etc/GMT+9|-09|90|0|","Etc/GMT-1|+01|-10|0|","Etc/GMT-11|+11|-b0|0|","Etc/GMT-12|+12|-c0|0|","Etc/GMT-13|+13|-d0|0|","Etc/GMT-14|+14|-e0|0|","Etc/GMT-2|+02|-20|0|","Etc/GMT-7|+07|-70|0|","Etc/GMT-8|+08|-80|0|","Etc/GMT-9|+09|-90|0|","Etc/UCT|UCT|0|0|","Etc/UTC|UTC|0|0|","Europe/Astrakhan|+03 +04|-30 -40|010101|1BWn0 1qM0 WM0 8Hz0 3rd0","Europe/London|GMT BST|0 -10|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6","Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1BWo0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4","Europe/Kaliningrad|EET EEST +03|-20 -30 -30|01020|1BWo0 1qM0 WM0 8Hz0|44e4","Europe/Volgograd|+03 +04|-30 -40|01010|1BWn0 1qM0 WM0 8Hz0|10e5","Europe/Minsk|EET EEST +03|-20 -30 -30|0102|1BWo0 1qM0 WM0|19e5","Europe/Moscow|MSK MSD MSK|-30 -40 -40|01020|1BWn0 1qM0 WM0 8Hz0|16e6","Europe/Samara|+04 +03|-40 -30|010|1Dpb0 WM0|12e5","Europe/Saratov|+03 +04|-30 -40|010101|1BWn0 1qM0 WM0 8Hz0 5810","Europe/Simferopol|EET EEST MSK MSK|-20 -30 -40 -30|01010101023|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4","Pacific/Honolulu|HST|a0|0||37e4","Indian/Chagos|IOT|-60|0||30e2","Indian/Christmas|CXT|-70|0||21e2","Indian/Cocos|CCT|-6u|0||596","Indian/Mahe|SCT|-40|0||79e3","Indian/Maldives|MVT|-50|0||35e4","Indian/Mauritius|MUT|-40|0||15e4","Indian/Reunion|RET|-40|0||84e4","Pacific/Majuro|MHT|-c0|0||28e3","MET|MET MEST|-10 -20|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Pacific/Chatham|CHADT CHAST|-dJ -cJ|01010101010101010101010|1C120 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600","Pacific/Apia|SST SDT WSDT WSST|b0 a0 -e0 -d0|01012323232323232323232|1Dbn0 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3","Pacific/Bougainville|PGT BST|-a0 -b0|01|1NwE0|18e4","Pacific/Chuuk|CHUT|-a0|0||49e3","Pacific/Efate|VUT|-b0|0||66e3","Pacific/Enderbury|PHOT|-d0|0||1","Pacific/Fakaofo|TKT TKT|b0 -d0|01|1Gfn0|483","Pacific/Fiji|FJST FJT|-d0 -c0|01010101010101010101010|1BWe0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0|88e4","Pacific/Funafuti|TVT|-c0|0||45e2","Pacific/Galapagos|GALT|60|0||25e3","Pacific/Gambier|GAMT|90|0||125","Pacific/Guadalcanal|SBT|-b0|0||11e4","Pacific/Guam|ChST|-a0|0||17e4","Pacific/Kiritimati|LINT|-e0|0||51e2","Pacific/Kosrae|KOST|-b0|0||66e2","Pacific/Marquesas|MART|9u|0||86e2","Pacific/Pago_Pago|SST|b0|0||37e2","Pacific/Nauru|NRT|-c0|0||10e3","Pacific/Niue|NUT|b0|0||12e2","Pacific/Norfolk|NFT NFT|-bu -b0|01|1PoCu|25e4","Pacific/Noumea|NCT|-b0|0||98e3","Pacific/Palau|PWT|-90|0||21e3","Pacific/Pitcairn|PST|80|0||56","Pacific/Pohnpei|PONT|-b0|0||34e3","Pacific/Port_Moresby|PGT|-a0|0||25e4","Pacific/Rarotonga|CKT|a0|0||13e3","Pacific/Tahiti|TAHT|a0|0||18e4","Pacific/Tarawa|GILT|-c0|0||29e3","Pacific/Tongatapu|+13 +14|-d0 -e0|0101010101|1S4d0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0|75e3","Pacific/Wake|WAKT|-c0|0||16e3","Pacific/Wallis|WFT|-c0|0||94"],
+var c=/((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,d=/^mailto:/i,f=b.$$minErr("linky"),g=b.isString;return function(h,i,j){function k(a){a&&q.push(e(a))}function l(a,c){var d;if(q.push("<a "),b.isFunction(j)&&(j=j(a)),b.isObject(j))for(d in j)q.push(d+'="'+j[d]+'" ');else j={};!b.isDefined(i)||"target"in j||q.push('target="',i,'" '),q.push('href="',a.replace(/"/g,"&quot;"),'">'),k(c),q.push("</a>")}if(null==h||""===h)return h;if(!g(h))throw f("notstring","Expected string but received: {0}",h);for(var m,n,o,p=h,q=[];m=p.match(c);)n=m[0],m[2]||m[4]||(n=(m[3]?"http://":"mailto:")+n),o=m.index,k(p.substr(0,o)),l(n,m[0].replace(d,"")),p=p.substring(o+m[0].length);return k(p),a(q.join(""))}}])}(window,window.angular),angular.module("colorpicker.module",[]).factory("Helper",function(){"use strict";return{closestSlider:function(a){var b=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.msMatchesSelector;return b.bind(a)("I")?a.parentNode:a},getOffset:function(a,b){for(var c=0,d=0,e=a.getBoundingClientRect();a&&!isNaN(a.offsetLeft)&&!isNaN(a.offsetTop);)b||"BODY"!==a.tagName?(c+=a.scrollLeft,d+=a.scrollTop):(c+=document.documentElement.scrollLeft||a.scrollLeft,d+=document.documentElement.scrollTop||a.scrollTop),a=a.offsetParent;return{top:e.top+window.pageYOffset,left:e.left+window.pageXOffset,scrollX:c,scrollY:d}},stringParsers:[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],a[4]]}},{re:/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16)]}},{re:/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)]}}]}}).factory("Color",["Helper",function(a){"use strict";return{value:{h:1,s:1,b:1,a:1},rgb:function(){var a=this.toRGB();return"rgb("+a.r+","+a.g+","+a.b+")"},rgba:function(){var a=this.toRGB();return"rgba("+a.r+","+a.g+","+a.b+","+a.a+")"},hex:function(){return this.toHex()},RGBtoHSB:function(a,b,c,d){a/=255,b/=255,c/=255;var e,f,g,h;return g=Math.max(a,b,c),h=g-Math.min(a,b,c),e=0===h?null:g===a?(b-c)/h:g===b?(c-a)/h+2:(a-b)/h+4,e=(e+360)%6*60/360,f=0===h?0:h/g,{h:e||1,s:f,b:g,a:d||1}},setColor:function(b){b=b?b.toLowerCase():b;for(var c in a.stringParsers)if(a.stringParsers.hasOwnProperty(c)){var d=a.stringParsers[c],e=d.re.exec(b),f=e&&d.parse(e);if(f)return this.value=this.RGBtoHSB.apply(null,f),!1}},setHue:function(a){this.value.h=1-a},setSaturation:function(a){this.value.s=a},setLightness:function(a){this.value.b=1-a},setAlpha:function(a){this.value.a=parseInt(100*(1-a),10)/100},toRGB:function(a,b,c,d){a||(a=this.value.h,b=this.value.s,c=this.value.b),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-Math.abs(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],{r:Math.round(255*e),g:Math.round(255*f),b:Math.round(255*g),a:d||this.value.a}},toHex:function(a,b,c,d){var e=this.toRGB(a,b,c,d);return"#"+(1<<24|parseInt(e.r,10)<<16|parseInt(e.g,10)<<8|parseInt(e.b,10)).toString(16).substr(1)}}}]).factory("Slider",["Helper",function(a){"use strict";var b={maxLeft:0,maxTop:0,callLeft:null,callTop:null,knob:{top:0,left:0}},c={};return{getSlider:function(){return b},getLeftPosition:function(a){return Math.max(0,Math.min(b.maxLeft,b.left+((a.pageX||c.left)-c.left)))},getTopPosition:function(a){return Math.max(0,Math.min(b.maxTop,b.top+((a.pageY||c.top)-c.top)))},setSlider:function(d,e){var f=a.closestSlider(d.target),g=a.getOffset(f,e),h=f.getBoundingClientRect(),i=d.clientX-h.left,j=d.clientY-h.top;b.knob=f.children[0].style,b.left=d.pageX-g.left-window.pageXOffset+g.scrollX,b.top=d.pageY-g.top-window.pageYOffset+g.scrollY,c={left:d.pageX-(i-b.left),top:d.pageY-(j-b.top)}},setSaturation:function(a,c,d){b={maxLeft:d,maxTop:d,callLeft:"setSaturation",callTop:"setLightness"},this.setSlider(a,c)},setHue:function(a,c,d){b={maxLeft:0,maxTop:d,callLeft:!1,callTop:"setHue"},this.setSlider(a,c)},setAlpha:function(a,c,d){b={maxLeft:0,maxTop:d,callLeft:!1,callTop:"setAlpha"},this.setSlider(a,c)},setKnob:function(a,c){b.knob.top=a+"px",b.knob.left=c+"px"}}}]).directive("colorpicker",["$document","$compile","Color","Slider","Helper",function(a,b,c,d,e){"use strict";return{require:"?ngModel",restrict:"A",link:function(f,g,h,i){function j(){a.on("mousemove",l),a.on("mouseup",m)}function k(){try{K.css("backgroundColor",G[u]())}catch(a){K.css("backgroundColor",G.toHex())}J.css("backgroundColor",G.toHex(G.value.h,1,1,1)),"rgba"===u&&(t.css.backgroundColor=G.toHex())}function l(a){var b=d.getLeftPosition(a),c=d.getTopPosition(a),e=d.getSlider();d.setKnob(c,b),e.callLeft&&G[e.callLeft].call(G,b/A),e.callTop&&G[e.callTop].call(G,c/A),k();var h=G[u]();return g.val(h),i&&f.$apply(i.$setViewValue(h)),z&&O.val(h),!1}function m(){r("colorpicker-selected"),a.off("mousemove",l),a.off("mouseup",m)}function n(a){G.value=H,G.setColor(g.val()),z&&!a&&O.val(g.val()),L.eq(0).css({left:G.value.s*A+"px",top:A-G.value.b*A+"px"}),L.eq(1).css("top",A*(1-G.value.h)+"px"),L.eq(2).css("top",A*(1-G.value.a)+"px"),H=G.value,k()}function o(){var a,b=e.getOffset(g[0]),c=2;return angular.isDefined(h.colorpickerParent)&&(b.left=0,b.top=0),"top"===v?a={top:b.top-N-c,left:b.left}:"right"===v?a={top:b.top,left:b.left+g[0].offsetWidth+c}:"bottom"===v?a={top:b.top+g[0].offsetHeight+c,left:b.left}:"left"===v&&(a={top:b.top,left:b.left-M-c}),{top:a.top+"px",left:a.left+"px"}}function p(){s()}function q(){F.hasClass("colorpicker-visible")||(n(),F.addClass("colorpicker-visible").css(o()),r("colorpicker-shown"),w===!1&&a.on("mousedown",p),h.colorpickerIsOpen&&(f[h.colorpickerIsOpen]=!0,f.$$phase&&f.$root.$$phase||f.$digest()))}function r(a){i&&f.$emit(a,{name:h.ngModel,value:i.$modelValue})}function s(){F.hasClass("colorpicker-visible")&&(F.removeClass("colorpicker-visible"),r("colorpicker-closed"),a.off("mousedown",p),h.colorpickerIsOpen&&(f[h.colorpickerIsOpen]=!1,f.$$phase&&f.$root.$$phase||f.$digest()))}var t,u=h.colorpicker?h.colorpicker:"hex",v=angular.isDefined(h.colorpickerPosition)?h.colorpickerPosition:"bottom",w=angular.isDefined(h.colorpickerInline)?h.colorpickerInline:!1,x=angular.isDefined(h.colorpickerFixedPosition)?h.colorpickerFixedPosition:!1,y=angular.isDefined(h.colorpickerParent)?g.parent():angular.element(document.body),z=angular.isDefined(h.colorpickerWithInput)?h.colorpickerWithInput:!1,A=angular.isDefined(h.colorpickerSize)?h.colorpickerSize:100,B=A+"px",C=z?'<input type="text" name="colorpicker-input" spellcheck="false">':"",D=w?"":'<button type="button" class="close close-colorpicker">&times;</button>',E='<div class="colorpicker dropdown"><div class="dropdown-menu"><colorpicker-saturation><i></i></colorpicker-saturation><colorpicker-hue><i></i></colorpicker-hue><colorpicker-alpha><i></i></colorpicker-alpha><colorpicker-preview></colorpicker-preview>'+C+D+"</div></div>",F=angular.element(E),G=c,H={h:1,s:0,b:1,a:1},I=F.find("colorpicker-hue"),J=F.find("colorpicker-saturation"),K=F.find("colorpicker-preview"),L=F.find("i"),M=parseInt(A)+29+("rgba"===u?15:0),N=parseInt(A)+55;if(b(F)(f),F.css("min-width",M+"px"),J.css({width:B,height:B}),I.css("height",B),z){var O=F.find("input");O.css("width",B),O.on("mousedown",function(a){a.stopPropagation()}).on("keyup",function(){var a=this.value;g.val(a),i&&i.$modelValue!==a&&(f.$apply(i.$setViewValue(a)),n(!0))})}"rgba"===u&&(F.addClass("alpha"),t=F.find("colorpicker-alpha"),t.css("height",B),t.on("click",function(a){d.setAlpha(a,x,A),l(a)}).on("mousedown",function(a){d.setAlpha(a,x,A),j()}).on("mouseup",function(a){r("colorpicker-selected-alpha")})),I.on("click",function(a){d.setHue(a,x,A),l(a)}).on("mousedown",function(a){d.setHue(a,x,A),j()}).on("mouseup",function(a){r("colorpicker-selected-hue")}),J.on("click",function(a){d.setSaturation(a,x,A),l(a),angular.isDefined(h.colorpickerCloseOnSelect)&&s()}).on("mousedown",function(a){d.setSaturation(a,x,A),j()}).on("mouseup",function(a){r("colorpicker-selected-saturation")}),x&&F.addClass("colorpicker-fixed-position"),F.addClass("colorpicker-position-"+v),"true"===w&&F.addClass("colorpicker-inline"),y.append(F),i&&(i.$render=function(){g.val(i.$viewValue),n()}),g.on("blur keyup change",function(){n()}),g.on("$destroy",function(){F.remove()}),w===!1?g.on("click",q):q(),F.on("mousedown",function(a){a.stopPropagation(),a.preventDefault()}),F.find("button").on("click",function(){s()}),h.colorpickerIsOpen&&f.$watch(h.colorpickerIsOpen,function(a){a===!0?q():a===!1&&s()})}}}]),function(a,b){"use strict";var c=[["bold","italic","underline","strikethrough","subscript","superscript"],["format-block"],["font"],["font-size"],["font-color","hilite-color"],["remove-format"],["ordered-list","unordered-list","outdent","indent"],["left-justify","center-justify","right-justify"],["code","quote","paragraph"],["link","image"]];a.module("wysiwyg.module",["colorpicker.module"]).directive("wysiwyg",["$timeout","wysiwgGui","$compile",function(c,d,e){function f(f,g,h,i){function j(){k(),l(),m(),n()}function k(){d.setCustomElements(f.textareaCustomMenu);var a=g.children("div.wysiwyg-menu")[0];a.appendChild(d.createMenu(f.textareaMenu)),e(a)(f)}function l(){f.$watch("disabled",function(b){a.element("div.wysiwyg-menu").find("button").each(function(){a.element(this).attr("disabled",b)}),a.element("div.wysiwyg-menu").find("select").each(function(){a.element(this).attr("disabled",b)})})}function m(){"true"===h.enableBootstrapTitle&&h.enableBootstrapTitle!==b&&g.find("button[title]").tooltip({container:"body"})}function n(){a.element(".wysiwyg-menu").find("button").on("click",function(){var b=a.element(this);f.$emit("wysiwyg.click",b.attr("title")||b.attr("data-original-title"))}),q.on("input keyup paste mouseup",function(){var a=q.html();"<br>"==a&&(a=""),i.$setViewValue(a)}),q.on("keydown",function(a){if(9==a.keyCode){var b=(q.html(),window.getSelection());b.anchorOffset;a.preventDefault()}}),q.on("click keyup focus mouseup",function(){c(function(){f.isBold=f.cmdState("bold"),f.isUnderlined=f.cmdState("underline"),f.isStrikethrough=f.cmdState("strikethrough"),f.isItalic=f.cmdState("italic"),f.isSuperscript=o("SUP"),f.isSubscript=o("SUB"),f.isRightJustified=f.cmdState("justifyright"),f.isLeftJustified=f.cmdState("justifyleft"),f.isCenterJustified=f.cmdState("justifycenter"),f.isPre="pre"===f.cmdValue("formatblock"),f.isBlockquote="blockquote"===f.cmdValue("formatblock"),f.isOrderedList=f.cmdState("insertorderedlist"),f.isUnorderedList=f.cmdState("insertunorderedlist"),f.fonts.forEach(function(a,b){return f.cmdValue("fontname").indexOf(a)>-1?(f.font=a,!1):void 0}),f.cmdValue("formatblock").toLowerCase(),f.formatBlocks.forEach(function(a,b){return f.cmdValue("formatblock").toLowerCase()===a.value.toLowerCase()?(f.formatBlock=a,!1):void 0}),f.fontSizes.forEach(function(a,b){return f.cmdValue("fontsize")===a.value?(f.fontSize=a,!1):void 0}),f.hiliteColor=p(),g.find("button.wysiwyg-hiliteColor").css("background-color",f.hiliteColor),f.fontColor=f.cmdValue("forecolor"),g.find("button.wysiwyg-fontcolor").css("color",f.fontColor),f.isLink=o("A")},0)})}function o(a){var b=window.getSelection().getRangeAt(0);return b&&(b.startContainer.parentNode.tagName===a.toUpperCase()||b.endContainer.parentNode.tagName===a.toUpperCase())?!0:!1}function p(){var b=window.getSelection().getRangeAt(0);if(b){var c=a.element(b.startContainer.parentNode).attr("style");if(!a.isDefined(c))return!1;for(var d=c.split(";"),e=0;e<d.length;e++){var f=d[e].split(":");if("background-color"===f[0])return f[1]}return"#fff"}return"#fff"}var q=g.find("div.wysiwyg-textarea");f.isLink=!1,f.fontSizes=[{value:"1",size:"10px"},{value:"2",size:"13px"},{value:"3",size:"16px"},{value:"4",size:"18px"},{value:"5",size:"24px"},{value:"6",size:"32px"},{value:"7",size:"48px"}],f.formatBlocks=[{name:"Heading Blocks",value:"div"},{name:"Heading 1",value:"h1"},{name:"Heading 2",value:"h2"},{name:"Heading 3",value:"h3"},{name:"Heading 4",value:"h4"},{name:"Heading 5",value:"h5"},{name:"Heading 6",value:"h6"}],f.formatBlock=f.formatBlocks[0],f.fontSize=f.fontSizes[1],a.isArray(f.cssClasses)&&(f.cssClasses.unshift("css"),f.cssClass=f.cssClasses[0]),f.fonts=["Georgia","Palatino Linotype","Times New Roman","Arial","Helvetica","Arial Black","Comic Sans MS","Impact","Lucida Sans Unicode","Tahoma","Trebuchet MS","Verdana","Courier New","Lucida Console","Helvetica Neue"].sort(),f.font=f.fonts[6],j(),i.$render=function(){q.html(i.$viewValue)},f.format=function(a,b){document.execCommand(a,!1,b)},f.cmdState=function(a){return document.queryCommandState(a)},f.cmdValue=function(a){return document.queryCommandValue(a)},f.createLink=function(){var a=prompt("Enter the link URL");a&&a!==b&&f.format("createlink",a)},f.insertImage=function(){var a=prompt("Enter the image URL");a&&a!==b&&f.format("insertimage",a)},f.setFont=function(){f.format("fontname",f.font)},f.setFontSize=function(){f.format("fontsize",f.fontSize.value)},f.setFormatBlock=function(){f.format("formatBlock",f.formatBlock.value)},f.setFontColor=function(){f.format("forecolor",f.fontColor)},f.setHiliteColor=function(){f.format("hiliteColor",f.hiliteColor)},f.format("enableobjectresizing",!0),f.format("styleWithCSS",!0)}return{template:'<div><style> .wysiwyg-textarea[contentEditable="false"] { background-color:#eee} .wysiwyg-btn-group-margin { margin-right:5px; } .wysiwyg-select { height:30px;margin-bottom:1px;} .wysiwyg-colorpicker { font-family: arial, sans-serif !important;font-size:16px !important; padding:2px 10px !important;}</style><div class="wysiwyg-menu"></div><div id="{{textareaId}}" ng-attr-style="resize:vertical;height:{{textareaHeight || \'80px\'}}; overflow:auto" contentEditable="{{!disabled}}" class="{{textareaClass}} wysiwyg-textarea" name="{{textareaName}}" ng-model="value"></div></div>',restrict:"E",scope:{value:"=ngModel",textareaHeight:"@textareaHeight",textareaName:"@textareaName",textareaClass:"@textareaClass",textareaRequired:"@textareaRequired",textareaId:"@textareaId",textareaMenu:"=textareaMenu",textareaCustomMenu:"=textareaCustomMenu",fn:"&",disabled:"=?disabledArea"},replace:!0,require:"ngModel",link:f,transclude:!0}}]).factory("wysiwgGui",["wysiwgGuiElements",function(b){function d(a){var b;if(a.tag)b=document.createElement(a.tag);else{if(!a.text)return console.log("cannot create this element."),b=document.createElement("span");b=document.createElement("span")}if(a.text&&document.all?b.innerText=a.text:a.text?b.textContent=a.text:b.textContent="",a.classes&&(b.className=a.classes),a.html&&(b.innerHTML=a.html),a.attributes&&a.attributes.length)for(var c in a.attributes){var e=a.attributes[c];e.name&&e.value&&b.setAttribute(e.name,e.value)}if(a.data&&a.data.length)for(var f in a.data)b.appendChild(d(a.data[f]));return b}var e=b,f={},g=function(a){f=a},h=function(){return{tag:"div",classes:"btn-group btn-group-sm wysiwyg-btn-group-margin"}},i=function(a){return e[a]||{}},j=function(b){a.extend(e,f),b=a.isDefined(b)&&""!==b?b:c;for(var g,j=document.createElement("div"),k=0;k<b.length;k++){for(var l=d(h()),m=0;m<b[k].length;m++)"link"===b[k][m]&&(g=d(i("unlink")),l.appendChild(g)),g=d(i(b[k][m])),l.appendChild(g);j.appendChild(l)}return j};return{createMenu:j,setCustomElements:g}}]).value("wysiwgGuiElements",{bold:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Bold"},{name:"ng-click",value:"format('bold')"},{name:"ng-class",value:"{ active: isBold }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-bold"}]},italic:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Italic"},{name:"ng-click",value:"format('italic')"},{name:"ng-class",value:"{ active: isItalic }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-italic"}]},underline:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Underline"},{name:"ng-click",value:"format('underline')"},{name:"ng-class",value:"{ active: isUnderlined }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-underline"}]},strikethrough:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Strikethrough"},{name:"ng-click",value:"format('strikethrough')"},{name:"ng-class",value:"{ active: isStrikethrough }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-strikethrough"}]},subscript:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Subscript"},{name:"ng-click",value:"format('subscript')"},{name:"ng-class",value:"{ active: isSubscript }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-subscript"}]},superscript:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Superscript"},{name:"ng-click",value:"format('superscript')"},{name:"ng-class",value:"{ active: isSuperscript }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-superscript"}]},"remove-format":{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Remove Formatting"},{name:"ng-click",value:"format('removeFormat')"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-eraser"}]},"ordered-list":{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Ordered List"},{name:"ng-click",value:"format('insertorderedlist')"},{name:"ng-class",value:"{ active: isOrderedList }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-list-ol"}]},"unordered-list":{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Unordered List"},{name:"ng-click",value:"format('insertunorderedlist')"},{name:"ng-class",value:"{ active: isUnorderedList }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-list-ul"}]},outdent:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Outdent"},{name:"ng-click",value:"format('outdent')"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-outdent"}]},indent:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Indent"},{name:"ng-click",value:"format('indent')"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-indent"}]},"left-justify":{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Left Justify"},{name:"ng-click",value:"format('justifyleft')"},{name:"ng-class",value:"{ active: isLeftJustified }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-align-left"}]},"center-justify":{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Center Justify"},{name:"ng-click",value:"format('justifycenter')"},{name:"ng-class",value:"{ active: isCenterJustified }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-align-center"}]},"right-justify":{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Right Justify"},{name:"ng-click",value:"format('justifyright')"},{name:"ng-class",value:"{ active: isRightJustified }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-align-right"}]},code:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Code"},{name:"ng-click",value:"format('formatblock', 'pre')"},{name:"ng-class",value:"{ active: isPre }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-code"}]},quote:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Quote"},{name:"ng-click",value:"format('formatblock', 'blockquote')"},{name:"ng-class",value:"{ active: isBlockquote }"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-quote-right"}]},paragraph:{tag:"button",classes:"btn btn-default",text:"P",attributes:[{name:"title",value:"Paragragh"},{name:"ng-click",value:"format('insertParagraph')"},{name:"ng-class",value:"{ active: isParagraph }"},{name:"type",value:"button"}]},image:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Image"},{name:"ng-click",value:"insertImage()"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-picture-o"}]},"font-color":{tag:"button",classes:"btn btn-default wysiwyg-colorpicker wysiwyg-fontcolor",text:"A",attributes:[{name:"title",value:"Font Color"},{name:"colorpicker",value:"rgba"},{name:"colorpicker-position",value:"top"},{name:"ng-model",value:"fontColor"},{name:"ng-change",value:"setFontColor()"},{name:"type",value:"button"}]},"hilite-color":{tag:"button",classes:"btn btn-default wysiwyg-colorpicker wysiwyg-fontcolor",text:"H",attributes:[{name:"title",value:"Hilite Color"},{name:"colorpicker",value:"rgba"},{name:"colorpicker-position",value:"top"},{name:"ng-model",value:"hiliteColor"},{name:"ng-change",value:"setHiliteColor()"},{name:"type",value:"button"}]},font:{tag:"select",classes:"form-control wysiwyg-select",attributes:[{name:"title",value:"Font"},{name:"ng-model",value:"font"},{name:"ng-options",value:"f for f in fonts"},{name:"ng-change",value:"setFont()"}]},"font-size":{tag:"select",classes:"form-control wysiwyg-select",attributes:[{name:"title",value:"Image"},{name:"ng-model",value:"fontSize"},{name:"ng-options",value:"f.size for f in fontSizes"},{name:"ng-change",value:"setFontSize()"}]},"format-block":{tag:"select",classes:"form-control wysiwyg-select",attributes:[{name:"title",value:"Format Block"},{name:"ng-model",value:"formatBlock"},{name:"ng-options",value:"f.name for f in formatBlocks"},{name:"ng-change",value:"setFormatBlock()"}]},link:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Link"},{name:"ng-click",value:"createLink()"},{name:"ng-show",value:"!isLink"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-link"}]},unlink:{tag:"button",classes:"btn btn-default",attributes:[{name:"title",value:"Unlink"},{name:"ng-click",value:"format('unlink')"},{name:"ng-show",value:"isLink"},{name:"type",value:"button"}],data:[{tag:"i",classes:"fa fa-unlink"}]}})}(angular),function(a,b){"use strict";"function"==typeof define&&define.amd?define(["moment"],b):"object"==typeof module&&module.exports?module.exports=b(require("moment")):b(a.moment)}(this,function(a){"use strict";function b(a){return a>96?a-87:a>64?a-29:a-48}function c(a){var c,d=0,e=a.split("."),f=e[0],g=e[1]||"",h=1,i=0,j=1;for(45===a.charCodeAt(0)&&(d=1,j=-1),d;d<f.length;d++)c=b(f.charCodeAt(d)),i=60*i+c;for(d=0;d<g.length;d++)h/=60,c=b(g.charCodeAt(d)),i+=c*h;return i*j}function d(a){for(var b=0;b<a.length;b++)a[b]=c(a[b])}function e(a,b){for(var c=0;b>c;c++)a[c]=Math.round((a[c-1]||0)+6e4*a[c]);a[b-1]=1/0}function f(a,b){var c,d=[];for(c=0;c<b.length;c++)d[c]=a[b[c]];return d}function g(a){var b=a.split("|"),c=b[2].split(" "),g=b[3].split(""),h=b[4].split(" ");return d(c),d(g),d(h),e(h,g.length),{name:b[0],abbrs:f(b[1].split(" "),g),offsets:f(c,g),untils:h,population:0|b[5]}}function h(a){a&&this._set(g(a))}function i(a){var b=a.toTimeString(),c=b.match(/\([a-z ]+\)/i);c&&c[0]?(c=c[0].match(/[A-Z]/g),c=c?c.join(""):void 0):(c=b.match(/[A-Z]{3,5}/g),c=c?c[0]:void 0),"GMT"===c&&(c=void 0),this.at=+a,this.abbr=c,this.offset=a.getTimezoneOffset()}function j(a){this.zone=a,this.offsetScore=0,this.abbrScore=0}function k(a,b){for(var c,d;d=6e4*((b.at-a.at)/12e4|0);)c=new i(new Date(a.at+d)),c.offset===a.offset?a=c:b=c;return a}function l(){var a,b,c,d=(new Date).getFullYear()-2,e=new i(new Date(d,0,1)),f=[e];for(c=1;48>c;c++)b=new i(new Date(d,c,1)),b.offset!==e.offset&&(a=k(e,b),f.push(a),f.push(new i(new Date(a.at+6e4)))),e=b;for(c=0;4>c;c++)f.push(new i(new Date(d+c,0,1))),f.push(new i(new Date(d+c,6,1)));return f}function m(a,b){return a.offsetScore!==b.offsetScore?a.offsetScore-b.offsetScore:a.abbrScore!==b.abbrScore?a.abbrScore-b.abbrScore:b.zone.population-a.zone.population}function n(a,b){var c,e;for(d(b),c=0;c<b.length;c++)e=b[c],I[e]=I[e]||{},I[e][a]=!0}function o(a){var b,c,d,e=a.length,f={},g=[];for(b=0;e>b;b++){d=I[a[b].offset]||{};for(c in d)d.hasOwnProperty(c)&&(f[c]=!0)}for(b in f)f.hasOwnProperty(b)&&g.push(H[b]);return g}function p(){try{var a=Intl.DateTimeFormat().resolvedOptions().timeZone;if(a){var b=H[r(a)];if(b)return b;z("Moment Timezone found "+a+" from the Intl api, but did not have that data loaded.")}}catch(c){}var d,e,f,g=l(),h=g.length,i=o(g),k=[];for(e=0;e<i.length;e++){for(d=new j(t(i[e]),h),f=0;h>f;f++)d.scoreOffsetAt(g[f]);k.push(d)}return k.sort(m),k.length>0?k[0].zone.name:void 0}function q(a){return(!D||a)&&(D=p()),D}function r(a){return(a||"").toLowerCase().replace(/\//g,"_")}function s(a){var b,c,d,e;for("string"==typeof a&&(a=[a]),b=0;b<a.length;b++)d=a[b].split("|"),c=d[0],e=r(c),F[e]=a[b],H[e]=c,d[5]&&n(e,d[2].split(" "))}function t(a,b){a=r(a);var c,d=F[a];return d instanceof h?d:"string"==typeof d?(d=new h(d),F[a]=d,d):G[a]&&b!==t&&(c=t(G[a],t))?(d=F[a]=new h,d._set(c),d.name=H[a],d):null}function u(){var a,b=[];for(a in H)H.hasOwnProperty(a)&&(F[a]||F[G[a]])&&H[a]&&b.push(H[a]);return b.sort()}function v(a){var b,c,d,e;for("string"==typeof a&&(a=[a]),b=0;b<a.length;b++)c=a[b].split("|"),d=r(c[0]),e=r(c[1]),G[d]=e,H[d]=c[0],G[e]=d,H[e]=c[1]}function w(a){s(a.zones),v(a.links),A.dataVersion=a.version}function x(a){return x.didShowError||(x.didShowError=!0,z("moment.tz.zoneExists('"+a+"') has been deprecated in favor of !moment.tz.zone('"+a+"')")),!!t(a)}function y(a){return!(!a._a||void 0!==a._tzm)}function z(a){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(a)}function A(b){var c=Array.prototype.slice.call(arguments,0,-1),d=arguments[arguments.length-1],e=t(d),f=a.utc.apply(null,c);return e&&!a.isMoment(b)&&y(f)&&f.add(e.parse(f),"minutes"),f.tz(d),f}function B(a){return function(){return this._z?this._z.abbr(this):a.call(this)}}function C(a){return function(){return this._z=null,a.apply(this,arguments)}}if(void 0!==a.tz)return z("Moment Timezone "+a.tz.version+" was already loaded "+(a.tz.dataVersion?"with data from ":"without any data")+a.tz.dataVersion),a;var D,E="0.5.10",F={},G={},H={},I={},J=a.version.split("."),K=+J[0],L=+J[1];(2>K||2===K&&6>L)&&z("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+a.version+". See momentjs.com"),h.prototype={_set:function(a){this.name=a.name,this.abbrs=a.abbrs,this.untils=a.untils,this.offsets=a.offsets,this.population=a.population},_index:function(a){var b,c=+a,d=this.untils;for(b=0;b<d.length;b++)if(c<d[b])return b},parse:function(a){var b,c,d,e,f=+a,g=this.offsets,h=this.untils,i=h.length-1;for(e=0;i>e;e++)if(b=g[e],c=g[e+1],d=g[e?e-1:e],c>b&&A.moveAmbiguousForward?b=c:b>d&&A.moveInvalidForward&&(b=d),f<h[e]-6e4*b)return g[e];return g[i]},abbr:function(a){return this.abbrs[this._index(a)]},offset:function(a){return this.offsets[this._index(a)]}},j.prototype.scoreOffsetAt=function(a){this.offsetScore+=Math.abs(this.zone.offset(a.at)-a.offset),this.zone.abbr(a.at).replace(/[^A-Z]/g,"")!==a.abbr&&this.abbrScore++},A.version=E,A.dataVersion="",A._zones=F,A._links=G,A._names=H,A.add=s,A.link=v,A.load=w,A.zone=t,A.zoneExists=x,A.guess=q,A.names=u,A.Zone=h,A.unpack=g,A.unpackBase60=c,A.needsOffset=y,A.moveInvalidForward=!0,A.moveAmbiguousForward=!1;var M=a.fn;a.tz=A,a.defaultZone=null,a.updateOffset=function(b,c){var d,e=a.defaultZone;void 0===b._z&&(e&&y(b)&&!b._isUTC&&(b._d=a.utc(b._a)._d,b.utc().add(e.parse(b),"minutes")),b._z=e),b._z&&(d=b._z.offset(b),Math.abs(d)<16&&(d/=60),void 0!==b.utcOffset?b.utcOffset(-d,c):b.zone(d,c))},M.tz=function(b){return b?(this._z=t(b),this._z?a.updateOffset(this):z("Moment Timezone has no data for "+b+". See http://momentjs.com/timezone/docs/#/data-loading/."),this):this._z?this._z.name:void 0},M.zoneName=B(M.zoneName),M.zoneAbbr=B(M.zoneAbbr),M.utc=C(M.utc),a.tz.setDefault=function(b){return(2>K||2===K&&9>L)&&z("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+a.version+"."),a.defaultZone=b?t(b):null,a};var N=a.momentProperties;return"[object Array]"===Object.prototype.toString.call(N)?(N.push("_z"),N.push("_a")):N&&(N._z=null),w({version:"2016j",zones:["Africa/Abidjan|GMT|0|0||48e5","Africa/Khartoum|EAT|-30|0||51e5","Africa/Algiers|CET|-10|0||26e5","Africa/Lagos|WAT|-10|0||17e6","Africa/Maputo|CAT|-20|0||26e5","Africa/Cairo|EET EEST|-20 -30|010101010|1Cby0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6","Africa/Casablanca|WET WEST|0 -10|01010101010101010101010101010101010101010|1Cco0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0|32e5","Europe/Paris|CET CEST|-10 -20|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6","Africa/Johannesburg|SAST|-20|0||84e5","Africa/Tripoli|EET CET CEST|-20 -10 -20|0120|1IlA0 TA0 1o00|11e5","Africa/Windhoek|WAST WAT|-20 -10|01010101010101010101010|1C1c0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0|32e4","America/Adak|HST HDT|a0 90|01010101010101010101010|1BR00 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326","America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1BQX0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4","America/Santo_Domingo|AST|40|0||29e5","America/Araguaina|BRT BRST|30 20|010|1IdD0 Lz0|14e4","America/Argentina/Buenos_Aires|ART|30|0|","America/Asuncion|PYST PYT|30 40|01010101010101010101010|1C430 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5","America/Panama|EST|50|0||15e5","America/Bahia|BRT BRST|30 20|010|1FJf0 Rb0|27e5","America/Bahia_Banderas|MST CDT CST|70 50 60|01212121212121212121212|1C1l0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3","America/Fortaleza|BRT|30|0||34e5","America/Managua|CST|60|0||22e5","America/Manaus|AMT|40|0||19e5","America/Bogota|COT|50|0||90e5","America/Denver|MST MDT|70 60|01010101010101010101010|1BQV0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5","America/Campo_Grande|AMST AMT|30 40|01010101010101010101010|1BIr0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10|77e4","America/Cancun|CST CDT EST|60 50 50|010101010102|1C1k0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4","America/Caracas|VET VET|4u 40|01|1QMT0|29e5","America/Cayenne|GFT|30|0||58e3","America/Chicago|CST CDT|60 50|01010101010101010101010|1BQU0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5","America/Chihuahua|MST MDT|70 60|01010101010101010101010|1C1l0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4","America/Phoenix|MST|70|0||42e5","America/Los_Angeles|PST PDT|80 70|01010101010101010101010|1BQW0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6","America/New_York|EST EDT|50 40|01010101010101010101010|1BQT0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6","America/Rio_Branco|AMT ACT|40 50|01|1KLE0|31e4","America/Fort_Nelson|PST PDT MST|80 70 70|010101010102|1BQW0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2","America/Halifax|AST ADT|40 30|01010101010101010101010|1BQS0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4","America/Godthab|WGT WGST|30 20|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3","America/Goose_Bay|AST ADT|40 30|01010101010101010101010|1BQQ1 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2","America/Grand_Turk|EST EDT AST|50 40 40|0101010101012|1BQT0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2","America/Guayaquil|ECT|50|0||27e5","America/Guyana|GYT|40|0||80e4","America/Havana|CST CDT|50 40|01010101010101010101010|1BQR0 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5","America/La_Paz|BOT|40|0||19e5","America/Lima|PET|50|0||11e6","America/Mexico_City|CST CDT|60 50|01010101010101010101010|1C1k0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6","America/Metlakatla|PST AKST AKDT|80 90 80|012121212121|1PAa0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Miquelon|PMST PMDT|30 20|01010101010101010101010|1BQR0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2","America/Montevideo|UYST UYT|20 30|010101010101|1BQQ0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5","America/Noronha|FNT|20|0||30e2","America/North_Dakota/Beulah|MST MDT CST CDT|70 60 60 50|01232323232323232323232|1BQV0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Paramaribo|SRT|30|0||24e4","America/Port-au-Prince|EST EDT|50 40|010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Santiago|CLST CLT|30 40|010101010101010101010|1C1f0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|62e5","America/Sao_Paulo|BRST BRT|20 30|01010101010101010101010|1BIq0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10|20e6","America/Scoresbysund|EGT EGST|10 0|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452","America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1BQPv 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","Antarctica/Casey|+11 +08|-b0 -80|01010|1BN30 40P0 KL0 blz0|10","Antarctica/Davis|+05 +07|-50 -70|0101|1BPw0 3Wn0 KN0|70","Antarctica/DumontDUrville|+10|-a0|0||80","Antarctica/Macquarie|AEDT MIST|-b0 -b0|01|1C140|1","Asia/Tashkent|+05|-50|0||23e5","Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|1C120 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5","Antarctica/Rothera|-03|30|0||130","Antarctica/Syowa|+03|-30|0||20","Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40","Asia/Almaty|+06|-60|0||15e5","Asia/Baghdad|AST|-30|0||66e5","Asia/Amman|EET EEST|-20 -30|010101010101010101010|1BVy0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0|25e5","Asia/Kamchatka|+12 +11|-c0 -b0|010|1Dp30 WM0|18e4","Asia/Baku|+04 +05|-40 -50|0101010101010|1BWo0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5","Asia/Bangkok|ICT|-70|0||15e6","Asia/Barnaul|+06 +07|-60 -70|010101|1BWk0 1qM0 WM0 8Hz0 3rd0","Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1BWm0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5","Asia/Brunei|BNT|-80|0||42e4","Asia/Kolkata|IST|-5u|0||15e6","Asia/Chita|+09 +10 +08|-90 -a0 -80|010120|1BWh0 1qM0 WM0 8Hz0 3re0|33e4","Asia/Choibalsan|CHOT CHOST|-80 -90|0101010101010|1O8G0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0|38e3","Asia/Shanghai|CST|-80|0||23e6","Asia/Colombo|+0530|-5u|0||22e5","Asia/Dhaka|BDT|-60|0||16e6","Asia/Damascus|EET EEST|-20 -30|01010101010101010101010|1C0m0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0|26e5","Asia/Dili|TLT|-90|0||19e4","Asia/Dubai|GST|-40|0||39e5","Asia/Famagusta|EET EEST +03|-20 -30 -30|010101010101012|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0","Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1BVW1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0|18e5","Asia/Hebron|EET EEST|-20 -30|0101010101010101010101010|1BVy0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0|25e4","Asia/Hong_Kong|HKT|-80|0||73e5","Asia/Hovd|HOVT HOVST|-70 -80|0101010101010|1O8H0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0|81e3","Asia/Irkutsk|+08 +09|-80 -90|01010|1BWi0 1qM0 WM0 8Hz0|60e4","Europe/Istanbul|EET EEST +03|-20 -30 -30|010101010101012|1BWp0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6","Asia/Jakarta|WIB|-70|0||31e6","Asia/Jayapura|WIT|-90|0||26e4","Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1BVA0 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4","Asia/Kabul|AFT|-4u|0||46e5","Asia/Karachi|PKT|-50|0||24e6","Asia/Urumqi|XJT|-60|0||32e5","Asia/Kathmandu|NPT|-5J|0||12e5","Asia/Khandyga|+10 +11 +09|-a0 -b0 -90|010102|1BWg0 1qM0 WM0 17V0 7zD0|66e2","Asia/Krasnoyarsk|+07 +08|-70 -80|01010|1BWj0 1qM0 WM0 8Hz0|10e5","Asia/Kuala_Lumpur|MYT|-80|0||71e5","Asia/Magadan|+11 +12 +10|-b0 -c0 -a0|010120|1BWf0 1qM0 WM0 8Hz0 3Cq0|95e3","Asia/Makassar|WITA|-80|0||15e5","Asia/Manila|PHT|-80|0||24e6","Europe/Athens|EET EEST|-20 -30|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5","Asia/Novokuznetsk|+07 +06|-70 -60|010|1Dp80 WM0|55e4","Asia/Novosibirsk|+06 +07|-60 -70|010101|1BWk0 1qM0 WM0 8Hz0 4eN0|15e5","Asia/Omsk|+06 +07|-60 -70|01010|1BWk0 1qM0 WM0 8Hz0|12e5","Asia/Pyongyang|KST KST|-90 -8u|01|1P4D0|29e5","Asia/Rangoon|MMT|-6u|0||48e5","Asia/Sakhalin|+10 +11|-a0 -b0|010101|1BWg0 1qM0 WM0 8Hz0 3rd0|58e4","Asia/Seoul|KST|-90|0||23e6","Asia/Singapore|SGT|-80|0||56e5","Asia/Srednekolymsk|+11 +12|-b0 -c0|01010|1BWf0 1qM0 WM0 8Hz0|35e2","Asia/Tbilisi|+04|-40|0||11e5","Asia/Tehran|IRST IRDT|-3u -4u|01010101010101010101010|1BTUu 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6","Asia/Thimphu|BTT|-60|0||79e3","Asia/Tokyo|JST|-90|0||38e6","Asia/Tomsk|+06 +07|-60 -70|010101|1BWk0 1qM0 WM0 8Hz0 3Qp0|10e5","Asia/Ulaanbaatar|ULAT ULAST|-80 -90|0101010101010|1O8G0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0|12e5","Asia/Ust-Nera|+11 +12 +10|-b0 -c0 -a0|010102|1BWf0 1qM0 WM0 17V0 7zD0|65e2","Asia/Vladivostok|+10 +11|-a0 -b0|01010|1BWg0 1qM0 WM0 8Hz0|60e4","Asia/Yakutsk|+09 +10|-90 -a0|01010|1BWh0 1qM0 WM0 8Hz0|28e4","Asia/Yekaterinburg|+05 +06|-50 -60|01010|1BWl0 1qM0 WM0 8Hz0|14e5","Asia/Yerevan|+04 +05|-40 -50|01010|1BWm0 1qM0 WM0 1qM0|13e5","Atlantic/Azores|AZOT AZOST|10 0|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4","Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5","Atlantic/Cape_Verde|CVT|10|0||50e4","Atlantic/South_Georgia|GST|20|0||30","Atlantic/Stanley|FKST FKT|30 40|010|1C6R0 U10|21e2","Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1C140 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5","Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1C14u 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5","Australia/Brisbane|AEST|-a0|0||20e5","Australia/Darwin|ACST|-9u|0||12e4","Australia/Eucla|ACWST|-8J|0||368","Australia/Lord_Howe|LHDT LHST|-b0 -au|01010101010101010101010|1C130 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347","Australia/Perth|AWST|-80|0||18e5","Pacific/Easter|EASST EAST|50 60|010101010101010101010|1C1f0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|30e2","Europe/Dublin|GMT IST|0 -10|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Etc/GMT+1|-01|10|0|","Etc/GMT+10|-10|a0|0|","Etc/GMT+11|-11|b0|0|","Etc/GMT+12|-12|c0|0|","Etc/GMT+2|-02|20|0|","Etc/GMT+4|-04|40|0|","Etc/GMT+5|-05|50|0|","Etc/GMT+6|-06|60|0|","Etc/GMT+7|-07|70|0|","Etc/GMT+8|-08|80|0|","Etc/GMT+9|-09|90|0|","Etc/GMT-1|+01|-10|0|","Etc/GMT-11|+11|-b0|0|","Etc/GMT-12|+12|-c0|0|","Etc/GMT-13|+13|-d0|0|","Etc/GMT-14|+14|-e0|0|","Etc/GMT-2|+02|-20|0|","Etc/GMT-7|+07|-70|0|","Etc/GMT-8|+08|-80|0|","Etc/GMT-9|+09|-90|0|","Etc/UCT|UCT|0|0|","Etc/UTC|UTC|0|0|","Europe/Astrakhan|+03 +04|-30 -40|010101|1BWn0 1qM0 WM0 8Hz0 3rd0","Europe/London|GMT BST|0 -10|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6","Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1BWo0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4","Europe/Kaliningrad|EET EEST +03|-20 -30 -30|01020|1BWo0 1qM0 WM0 8Hz0|44e4","Europe/Volgograd|+03 +04|-30 -40|01010|1BWn0 1qM0 WM0 8Hz0|10e5","Europe/Minsk|EET EEST +03|-20 -30 -30|0102|1BWo0 1qM0 WM0|19e5","Europe/Moscow|MSK MSD MSK|-30 -40 -40|01020|1BWn0 1qM0 WM0 8Hz0|16e6","Europe/Samara|+04 +03|-40 -30|010|1Dpb0 WM0|12e5","Europe/Saratov|+03 +04|-30 -40|010101|1BWn0 1qM0 WM0 8Hz0 5810","Europe/Simferopol|EET EEST MSK MSK|-20 -30 -40 -30|01010101023|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4","Pacific/Honolulu|HST|a0|0||37e4","Indian/Chagos|IOT|-60|0||30e2","Indian/Christmas|CXT|-70|0||21e2","Indian/Cocos|CCT|-6u|0||596","Indian/Mahe|SCT|-40|0||79e3","Indian/Maldives|MVT|-50|0||35e4","Indian/Mauritius|MUT|-40|0||15e4","Indian/Reunion|RET|-40|0||84e4","Pacific/Majuro|MHT|-c0|0||28e3","MET|MET MEST|-10 -20|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Pacific/Chatham|CHADT CHAST|-dJ -cJ|01010101010101010101010|1C120 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600","Pacific/Apia|SST SDT WSDT WSST|b0 a0 -e0 -d0|01012323232323232323232|1Dbn0 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3","Pacific/Bougainville|PGT BST|-a0 -b0|01|1NwE0|18e4","Pacific/Chuuk|CHUT|-a0|0||49e3","Pacific/Efate|VUT|-b0|0||66e3","Pacific/Enderbury|PHOT|-d0|0||1","Pacific/Fakaofo|TKT TKT|b0 -d0|01|1Gfn0|483","Pacific/Fiji|FJST FJT|-d0 -c0|01010101010101010101010|1BWe0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0|88e4","Pacific/Funafuti|TVT|-c0|0||45e2","Pacific/Galapagos|GALT|60|0||25e3","Pacific/Gambier|GAMT|90|0||125","Pacific/Guadalcanal|SBT|-b0|0||11e4","Pacific/Guam|ChST|-a0|0||17e4","Pacific/Kiritimati|LINT|-e0|0||51e2","Pacific/Kosrae|KOST|-b0|0||66e2","Pacific/Marquesas|MART|9u|0||86e2","Pacific/Pago_Pago|SST|b0|0||37e2","Pacific/Nauru|NRT|-c0|0||10e3","Pacific/Niue|NUT|b0|0||12e2","Pacific/Norfolk|NFT NFT|-bu -b0|01|1PoCu|25e4","Pacific/Noumea|NCT|-b0|0||98e3","Pacific/Palau|PWT|-90|0||21e3","Pacific/Pitcairn|PST|80|0||56","Pacific/Pohnpei|PONT|-b0|0||34e3","Pacific/Port_Moresby|PGT|-a0|0||25e4","Pacific/Rarotonga|CKT|a0|0||13e3","Pacific/Tahiti|TAHT|a0|0||18e4","Pacific/Tarawa|GILT|-c0|0||29e3","Pacific/Tongatapu|+13 +14|-d0 -e0|0101010101|1S4d0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0|75e3","Pacific/Wake|WAKT|-c0|0||16e3","Pacific/Wallis|WFT|-c0|0||94"],
links:["Africa/Abidjan|Africa/Accra","Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Bissau","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Monrovia","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Sao_Tome","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|America/Danmarkshavn","Africa/Abidjan|Atlantic/Reykjavik","Africa/Abidjan|Atlantic/St_Helena","Africa/Abidjan|Etc/GMT","Africa/Abidjan|Etc/GMT+0","Africa/Abidjan|Etc/GMT-0","Africa/Abidjan|Etc/GMT0","Africa/Abidjan|Etc/Greenwich","Africa/Abidjan|GMT","Africa/Abidjan|GMT+0","Africa/Abidjan|GMT-0","Africa/Abidjan|GMT0","Africa/Abidjan|Greenwich","Africa/Abidjan|Iceland","Africa/Algiers|Africa/Tunis","Africa/Cairo|Egypt","Africa/Casablanca|Africa/El_Aaiun","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Khartoum|Africa/Addis_Ababa","Africa/Khartoum|Africa/Asmara","Africa/Khartoum|Africa/Asmera","Africa/Khartoum|Africa/Dar_es_Salaam","Africa/Khartoum|Africa/Djibouti","Africa/Khartoum|Africa/Juba","Africa/Khartoum|Africa/Kampala","Africa/Khartoum|Africa/Mogadishu","Africa/Khartoum|Africa/Nairobi","Africa/Khartoum|Indian/Antananarivo","Africa/Khartoum|Indian/Comoro","Africa/Khartoum|Indian/Mayotte","Africa/Lagos|Africa/Bangui","Africa/Lagos|Africa/Brazzaville","Africa/Lagos|Africa/Douala","Africa/Lagos|Africa/Kinshasa","Africa/Lagos|Africa/Libreville","Africa/Lagos|Africa/Luanda","Africa/Lagos|Africa/Malabo","Africa/Lagos|Africa/Ndjamena","Africa/Lagos|Africa/Niamey","Africa/Lagos|Africa/Porto-Novo","Africa/Maputo|Africa/Blantyre","Africa/Maputo|Africa/Bujumbura","Africa/Maputo|Africa/Gaborone","Africa/Maputo|Africa/Harare","Africa/Maputo|Africa/Kigali","Africa/Maputo|Africa/Lubumbashi","Africa/Maputo|Africa/Lusaka","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|America/Juneau","America/Anchorage|America/Nome","America/Anchorage|America/Sitka","America/Anchorage|America/Yakutat","America/Anchorage|US/Alaska","America/Argentina/Buenos_Aires|America/Argentina/Catamarca","America/Argentina/Buenos_Aires|America/Argentina/ComodRivadavia","America/Argentina/Buenos_Aires|America/Argentina/Cordoba","America/Argentina/Buenos_Aires|America/Argentina/Jujuy","America/Argentina/Buenos_Aires|America/Argentina/La_Rioja","America/Argentina/Buenos_Aires|America/Argentina/Mendoza","America/Argentina/Buenos_Aires|America/Argentina/Rio_Gallegos","America/Argentina/Buenos_Aires|America/Argentina/Salta","America/Argentina/Buenos_Aires|America/Argentina/San_Juan","America/Argentina/Buenos_Aires|America/Argentina/San_Luis","America/Argentina/Buenos_Aires|America/Argentina/Tucuman","America/Argentina/Buenos_Aires|America/Argentina/Ushuaia","America/Argentina/Buenos_Aires|America/Buenos_Aires","America/Argentina/Buenos_Aires|America/Catamarca","America/Argentina/Buenos_Aires|America/Cordoba","America/Argentina/Buenos_Aires|America/Jujuy","America/Argentina/Buenos_Aires|America/Mendoza","America/Argentina/Buenos_Aires|America/Rosario","America/Campo_Grande|America/Cuiaba","America/Chicago|America/Indiana/Knox","America/Chicago|America/Indiana/Tell_City","America/Chicago|America/Knox_IN","America/Chicago|America/Matamoros","America/Chicago|America/Menominee","America/Chicago|America/North_Dakota/Center","America/Chicago|America/North_Dakota/New_Salem","America/Chicago|America/Rainy_River","America/Chicago|America/Rankin_Inlet","America/Chicago|America/Resolute","America/Chicago|America/Winnipeg","America/Chicago|CST6CDT","America/Chicago|Canada/Central","America/Chicago|US/Central","America/Chicago|US/Indiana-Starke","America/Chihuahua|America/Mazatlan","America/Chihuahua|Mexico/BajaSur","America/Denver|America/Boise","America/Denver|America/Cambridge_Bay","America/Denver|America/Edmonton","America/Denver|America/Inuvik","America/Denver|America/Ojinaga","America/Denver|America/Shiprock","America/Denver|America/Yellowknife","America/Denver|Canada/Mountain","America/Denver|MST7MDT","America/Denver|Navajo","America/Denver|US/Mountain","America/Fortaleza|America/Belem","America/Fortaleza|America/Maceio","America/Fortaleza|America/Recife","America/Fortaleza|America/Santarem","America/Halifax|America/Glace_Bay","America/Halifax|America/Moncton","America/Halifax|America/Thule","America/Halifax|Atlantic/Bermuda","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/Los_Angeles|America/Dawson","America/Los_Angeles|America/Ensenada","America/Los_Angeles|America/Santa_Isabel","America/Los_Angeles|America/Tijuana","America/Los_Angeles|America/Vancouver","America/Los_Angeles|America/Whitehorse","America/Los_Angeles|Canada/Pacific","America/Los_Angeles|Canada/Yukon","America/Los_Angeles|Mexico/BajaNorte","America/Los_Angeles|PST8PDT","America/Los_Angeles|US/Pacific","America/Los_Angeles|US/Pacific-New","America/Managua|America/Belize","America/Managua|America/Costa_Rica","America/Managua|America/El_Salvador","America/Managua|America/Guatemala","America/Managua|America/Regina","America/Managua|America/Swift_Current","America/Managua|America/Tegucigalpa","America/Managua|Canada/East-Saskatchewan","America/Managua|Canada/Saskatchewan","America/Manaus|America/Boa_Vista","America/Manaus|America/Porto_Velho","America/Manaus|Brazil/West","America/Mexico_City|America/Merida","America/Mexico_City|America/Monterrey","America/Mexico_City|Mexico/General","America/New_York|America/Detroit","America/New_York|America/Fort_Wayne","America/New_York|America/Indiana/Indianapolis","America/New_York|America/Indiana/Marengo","America/New_York|America/Indiana/Petersburg","America/New_York|America/Indiana/Vevay","America/New_York|America/Indiana/Vincennes","America/New_York|America/Indiana/Winamac","America/New_York|America/Indianapolis","America/New_York|America/Iqaluit","America/New_York|America/Kentucky/Louisville","America/New_York|America/Kentucky/Monticello","America/New_York|America/Louisville","America/New_York|America/Montreal","America/New_York|America/Nassau","America/New_York|America/Nipigon","America/New_York|America/Pangnirtung","America/New_York|America/Thunder_Bay","America/New_York|America/Toronto","America/New_York|Canada/Eastern","America/New_York|EST5EDT","America/New_York|US/East-Indiana","America/New_York|US/Eastern","America/New_York|US/Michigan","America/Noronha|Brazil/DeNoronha","America/Panama|America/Atikokan","America/Panama|America/Cayman","America/Panama|America/Coral_Harbour","America/Panama|America/Jamaica","America/Panama|EST","America/Panama|Jamaica","America/Phoenix|America/Creston","America/Phoenix|America/Dawson_Creek","America/Phoenix|America/Hermosillo","America/Phoenix|MST","America/Phoenix|US/Arizona","America/Rio_Branco|America/Eirunepe","America/Rio_Branco|America/Porto_Acre","America/Rio_Branco|Brazil/Acre","America/Santiago|Antarctica/Palmer","America/Santiago|Chile/Continental","America/Santo_Domingo|America/Anguilla","America/Santo_Domingo|America/Antigua","America/Santo_Domingo|America/Aruba","America/Santo_Domingo|America/Barbados","America/Santo_Domingo|America/Blanc-Sablon","America/Santo_Domingo|America/Curacao","America/Santo_Domingo|America/Dominica","America/Santo_Domingo|America/Grenada","America/Santo_Domingo|America/Guadeloupe","America/Santo_Domingo|America/Kralendijk","America/Santo_Domingo|America/Lower_Princes","America/Santo_Domingo|America/Marigot","America/Santo_Domingo|America/Martinique","America/Santo_Domingo|America/Montserrat","America/Santo_Domingo|America/Port_of_Spain","America/Santo_Domingo|America/Puerto_Rico","America/Santo_Domingo|America/St_Barthelemy","America/Santo_Domingo|America/St_Kitts","America/Santo_Domingo|America/St_Lucia","America/Santo_Domingo|America/St_Thomas","America/Santo_Domingo|America/St_Vincent","America/Santo_Domingo|America/Tortola","America/Santo_Domingo|America/Virgin","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada/Newfoundland","Antarctica/DumontDUrville|Etc/GMT-10","Antarctica/Rothera|Etc/GMT+3","Antarctica/Syowa|Etc/GMT-3","Asia/Almaty|Antarctica/Vostok","Asia/Almaty|Asia/Bishkek","Asia/Almaty|Asia/Qyzylorda","Asia/Almaty|Etc/GMT-6","Asia/Baghdad|Asia/Aden","Asia/Baghdad|Asia/Bahrain","Asia/Baghdad|Asia/Kuwait","Asia/Baghdad|Asia/Qatar","Asia/Baghdad|Asia/Riyadh","Asia/Bangkok|Asia/Ho_Chi_Minh","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Saigon","Asia/Bangkok|Asia/Vientiane","Asia/Dhaka|Asia/Dacca","Asia/Dubai|Asia/Muscat","Asia/Hong_Kong|Hongkong","Asia/Jakarta|Asia/Pontianak","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kamchatka|Asia/Anadyr","Asia/Kathmandu|Asia/Katmandu","Asia/Kolkata|Asia/Calcutta","Asia/Kuala_Lumpur|Asia/Kuching","Asia/Makassar|Asia/Ujung_Pandang","Asia/Rangoon|Asia/Yangon","Asia/Seoul|ROK","Asia/Shanghai|Asia/Chongqing","Asia/Shanghai|Asia/Chungking","Asia/Shanghai|Asia/Harbin","Asia/Shanghai|Asia/Macao","Asia/Shanghai|Asia/Macau","Asia/Shanghai|Asia/Taipei","Asia/Shanghai|PRC","Asia/Shanghai|ROC","Asia/Singapore|Singapore","Asia/Tashkent|Antarctica/Mawson","Asia/Tashkent|Asia/Aqtau","Asia/Tashkent|Asia/Aqtobe","Asia/Tashkent|Asia/Ashgabat","Asia/Tashkent|Asia/Ashkhabad","Asia/Tashkent|Asia/Atyrau","Asia/Tashkent|Asia/Dushanbe","Asia/Tashkent|Asia/Oral","Asia/Tashkent|Asia/Samarkand","Asia/Tashkent|Etc/GMT-5","Asia/Tashkent|Indian/Kerguelen","Asia/Tbilisi|Etc/GMT-4","Asia/Tehran|Iran","Asia/Thimphu|Asia/Thimbu","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Asia/Urumqi|Asia/Kashgar","Australia/Adelaide|Australia/Broken_Hill","Australia/Adelaide|Australia/South","Australia/Adelaide|Australia/Yancowinna","Australia/Brisbane|Australia/Lindeman","Australia/Brisbane|Australia/Queensland","Australia/Darwin|Australia/North","Australia/Lord_Howe|Australia/LHI","Australia/Perth|Australia/West","Australia/Sydney|Australia/ACT","Australia/Sydney|Australia/Canberra","Australia/Sydney|Australia/Currie","Australia/Sydney|Australia/Hobart","Australia/Sydney|Australia/Melbourne","Australia/Sydney|Australia/NSW","Australia/Sydney|Australia/Tasmania","Australia/Sydney|Australia/Victoria","Etc/UCT|UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Astrakhan|Europe/Ulyanovsk","Europe/Athens|Asia/Nicosia","Europe/Athens|EET","Europe/Athens|Europe/Bucharest","Europe/Athens|Europe/Helsinki","Europe/Athens|Europe/Kiev","Europe/Athens|Europe/Mariehamn","Europe/Athens|Europe/Nicosia","Europe/Athens|Europe/Riga","Europe/Athens|Europe/Sofia","Europe/Athens|Europe/Tallinn","Europe/Athens|Europe/Uzhgorod","Europe/Athens|Europe/Vilnius","Europe/Athens|Europe/Zaporozhye","Europe/Chisinau|Europe/Tiraspol","Europe/Dublin|Eire","Europe/Istanbul|Asia/Istanbul","Europe/Istanbul|Turkey","Europe/Lisbon|Atlantic/Canary","Europe/Lisbon|Atlantic/Faeroe","Europe/Lisbon|Atlantic/Faroe","Europe/Lisbon|Atlantic/Madeira","Europe/Lisbon|Portugal","Europe/Lisbon|WET","Europe/London|Europe/Belfast","Europe/London|Europe/Guernsey","Europe/London|Europe/Isle_of_Man","Europe/London|Europe/Jersey","Europe/London|GB","Europe/London|GB-Eire","Europe/Moscow|W-SU","Europe/Paris|Africa/Ceuta","Europe/Paris|Arctic/Longyearbyen","Europe/Paris|Atlantic/Jan_Mayen","Europe/Paris|CET","Europe/Paris|Europe/Amsterdam","Europe/Paris|Europe/Andorra","Europe/Paris|Europe/Belgrade","Europe/Paris|Europe/Berlin","Europe/Paris|Europe/Bratislava","Europe/Paris|Europe/Brussels","Europe/Paris|Europe/Budapest","Europe/Paris|Europe/Busingen","Europe/Paris|Europe/Copenhagen","Europe/Paris|Europe/Gibraltar","Europe/Paris|Europe/Ljubljana","Europe/Paris|Europe/Luxembourg","Europe/Paris|Europe/Madrid","Europe/Paris|Europe/Malta","Europe/Paris|Europe/Monaco","Europe/Paris|Europe/Oslo","Europe/Paris|Europe/Podgorica","Europe/Paris|Europe/Prague","Europe/Paris|Europe/Rome","Europe/Paris|Europe/San_Marino","Europe/Paris|Europe/Sarajevo","Europe/Paris|Europe/Skopje","Europe/Paris|Europe/Stockholm","Europe/Paris|Europe/Tirane","Europe/Paris|Europe/Vaduz","Europe/Paris|Europe/Vatican","Europe/Paris|Europe/Vienna","Europe/Paris|Europe/Warsaw","Europe/Paris|Europe/Zagreb","Europe/Paris|Europe/Zurich","Europe/Paris|Poland","Europe/Volgograd|Europe/Kirov","Pacific/Auckland|Antarctica/McMurdo","Pacific/Auckland|Antarctica/South_Pole","Pacific/Auckland|NZ","Pacific/Chatham|NZ-CHAT","Pacific/Chuuk|Pacific/Truk","Pacific/Chuuk|Pacific/Yap","Pacific/Easter|Chile/EasterIsland","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|HST","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Majuro|Kwajalein","Pacific/Majuro|Pacific/Kwajalein","Pacific/Pago_Pago|Pacific/Midway","Pacific/Pago_Pago|Pacific/Samoa","Pacific/Pago_Pago|US/Samoa","Pacific/Pohnpei|Pacific/Ponape"]}),a}),function(){function a(a,b,c){function d(d,k){var l=k.dirPaginate,m=l.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),n=/\|\s*itemsPerPage\s*:\s*(.*\(\s*\w*\)|([^\)]*?(?=\s+as\s+))|[^\)]*)/;if(null===m[2].match(n))throw"pagination directive: the 'itemsPerPage' filter must be set.";var o=m[2].replace(n,""),p=b(o);g(d);var q=k.paginationId||j;return c.registerInstance(q),function(d,g,k){var m=b(k.paginationId)(d)||k.paginationId||j;c.registerInstance(m);var n=e(l,m);f(g,k,n),h(g);var o=a(g),q=i(d,k,m);c.setCurrentPageParser(m,q,d),"undefined"!=typeof k.totalItems?(c.setAsyncModeTrue(m),d.$watch(function(){return b(k.totalItems)(d)},function(a){a>=0&&c.setCollectionLength(m,a)})):(c.setAsyncModeFalse(m),d.$watchCollection(function(){return p(d)},function(a){if(a){var b=a instanceof Array?a.length:Object.keys(a).length;c.setCollectionLength(m,b)}})),o(d)}}function e(a,b){var c,d=!!a.match(/(\|\s*itemsPerPage\s*:[^|]*:[^|]*)/);return c=b===j||d?a:a.replace(/(\|\s*itemsPerPage\s*:\s*[^|\s]*)/,"$1 : '"+b+"'")}function f(a,b,c){a[0].hasAttribute("dir-paginate-start")||a[0].hasAttribute("data-dir-paginate-start")?(b.$set("ngRepeatStart",c),a.eq(a.length-1).attr("ng-repeat-end",!0)):b.$set("ngRepeat",c)}function g(a){angular.forEach(a,function(a){1===a.nodeType&&angular.element(a).attr("dir-paginate-no-compile",!0)})}function h(a){angular.forEach(a,function(a){1===a.nodeType&&angular.element(a).removeAttr("dir-paginate-no-compile")}),a.eq(0).removeAttr("dir-paginate-start").removeAttr("dir-paginate").removeAttr("data-dir-paginate-start").removeAttr("data-dir-paginate"),a.eq(a.length-1).removeAttr("dir-paginate-end").removeAttr("data-dir-paginate-end")}function i(a,c,d){var e;if(c.currentPage)e=b(c.currentPage);else{var f=(d+"__currentPage").replace(/\W/g,"_");a[f]=1,e=b(f)}return e}return{terminal:!0,multiElement:!0,priority:100,compile:d}}function b(){return{priority:5e3,terminal:!0}}function c(a){a.put("angularUtils.directives.dirPagination.template",'<ul class="pagination" ng-if="1 < pages.length || !autoHide"><li ng-if="boundaryLinks" ng-class="{ disabled : pagination.current == 1 }"><a href="" ng-click="setCurrent(1)">&laquo;</a></li><li ng-if="directionLinks" ng-class="{ disabled : pagination.current == 1 }"><a href="" ng-click="setCurrent(pagination.current - 1)">&lsaquo;</a></li><li ng-repeat="pageNumber in pages track by tracker(pageNumber, $index)" ng-class="{ active : pagination.current == pageNumber, disabled : pageNumber == \'...\' || ( ! autoHide && pages.length === 1 ) }"><a href="" ng-click="setCurrent(pageNumber)">{{ pageNumber }}</a></li><li ng-if="directionLinks" ng-class="{ disabled : pagination.current == pagination.last }"><a href="" ng-click="setCurrent(pagination.current + 1)">&rsaquo;</a></li><li ng-if="boundaryLinks" ng-class="{ disabled : pagination.current == pagination.last }"><a href="" ng-click="setCurrent(pagination.last)">&raquo;</a></li></ul>')}function d(a,b){function c(b,c,e){function g(c){if(a.isRegistered(m)&&k(c)){var e=b.pagination.current;b.pages=d(c,a.getCollectionLength(m),a.getItemsPerPage(m),o),b.pagination.current=c,i(),b.onPageChange&&b.onPageChange({newPageNumber:c,oldPageNumber:e})}}function h(){if(a.isRegistered(m)){var c=parseInt(a.getCurrentPage(m))||1;b.pages=d(c,a.getCollectionLength(m),a.getItemsPerPage(m),o),b.pagination.current=c,b.pagination.last=b.pages[b.pages.length-1],b.pagination.last<b.pagination.current?b.setCurrent(b.pagination.last):i()}}function i(){if(a.isRegistered(m)){var c=a.getCurrentPage(m),d=a.getItemsPerPage(m),e=a.getCollectionLength(m);b.range.lower=(c-1)*d+1,b.range.upper=Math.min(c*d,e),b.range.total=e}}function k(a){return f.test(a)&&a>0&&a<=b.pagination.last}var l=e.paginationId||j,m=b.paginationId||e.paginationId||j;if(!a.isRegistered(m)&&!a.isRegistered(l)){var n=m!==j?" (id: "+m+") ":" ";window.console&&console.warn("Pagination directive: the pagination controls"+n+"cannot be used without the corresponding pagination directive, which was not found at link time.")}b.maxSize||(b.maxSize=9),b.autoHide=void 0===b.autoHide?!0:b.autoHide,b.directionLinks=angular.isDefined(e.directionLinks)?b.$parent.$eval(e.directionLinks):!0,b.boundaryLinks=angular.isDefined(e.boundaryLinks)?b.$parent.$eval(e.boundaryLinks):!1;var o=Math.max(b.maxSize,5);b.pages=[],b.pagination={last:1,current:1},b.range={lower:1,upper:1,total:1},b.$watch("maxSize",function(a){a&&(o=Math.max(b.maxSize,5),h())}),b.$watch(function(){return a.isRegistered(m)?(a.getCollectionLength(m)+1)*a.getItemsPerPage(m):void 0},function(a){a>0&&h()}),b.$watch(function(){return a.isRegistered(m)?a.getItemsPerPage(m):void 0},function(a,c){a!=c&&"undefined"!=typeof c&&g(b.pagination.current)}),b.$watch(function(){return a.isRegistered(m)?a.getCurrentPage(m):void 0},function(a,b){a!=b&&g(a)}),b.setCurrent=function(b){a.isRegistered(m)&&k(b)&&(b=parseInt(b,10),a.setCurrentPage(m,b))},b.tracker=function(a,b){return a+"_"+b}}function d(a,b,c,d){var f,g=[],h=Math.ceil(b/c),i=Math.ceil(d/2);f=i>=a?"start":a>h-i?"end":"middle";for(var j=h>d,k=1;h>=k&&d>=k;){var l=e(k,a,d,h),m=2===k&&("middle"===f||"end"===f),n=k===d-1&&("middle"===f||"start"===f);j&&(m||n)?g.push("..."):g.push(l),k++}return g}function e(a,b,c,d){var e=Math.ceil(c/2);return a===c?d:1===a?a:d>c?b>d-e?d-c+a:b>e?b-e+a:a:a}var f=/^\d+$/,g={restrict:"AE",scope:{maxSize:"=?",onPageChange:"&?",paginationId:"=?",autoHide:"=?"},link:c},h=b.getString();return void 0!==h?g.template=h:g.templateUrl=function(a,c){return c.templateUrl||b.getPath()},g}function e(a){return function(b,c,d){if("undefined"==typeof d&&(d=j),!a.isRegistered(d))throw"pagination directive: the itemsPerPage id argument (id: "+d+") does not match a registered pagination-id.";var e,g;if(angular.isObject(b)){if(c=parseInt(c)||9999999999,g=a.isAsyncMode(d)?0:(a.getCurrentPage(d)-1)*c,e=g+c,a.setItemsPerPage(d,c),b instanceof Array)return b.slice(g,e);var h={};return angular.forEach(f(b).slice(g,e),function(a){h[a]=b[a]}),h}return b}}function f(a){if(Object.keys)return Object.keys(a);var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b}function g(){var a,b={};this.registerInstance=function(c){"undefined"==typeof b[c]&&(b[c]={asyncMode:!1},a=c)},this.deregisterInstance=function(a){delete b[a]},this.isRegistered=function(a){return"undefined"!=typeof b[a]},this.getLastInstanceId=function(){return a},this.setCurrentPageParser=function(a,c,d){b[a].currentPageParser=c,b[a].context=d},this.setCurrentPage=function(a,c){b[a].currentPageParser.assign(b[a].context,c)},this.getCurrentPage=function(a){var c=b[a].currentPageParser;return c?c(b[a].context):1},this.setItemsPerPage=function(a,c){b[a].itemsPerPage=c},this.getItemsPerPage=function(a){return b[a].itemsPerPage},this.setCollectionLength=function(a,c){b[a].collectionLength=c},this.getCollectionLength=function(a){return b[a].collectionLength},this.setAsyncModeTrue=function(a){b[a].asyncMode=!0},this.setAsyncModeFalse=function(a){b[a].asyncMode=!1},this.isAsyncMode=function(a){return b[a].asyncMode}}function h(){var a,b="angularUtils.directives.dirPagination.template";this.setPath=function(a){b=a},this.setString=function(b){a=b},this.$get=function(){return{getPath:function(){return b},getString:function(){return a}}}}var i="angularUtils.directives.dirPagination",j="__default";angular.module(i,[]).directive("dirPaginate",["$compile","$parse","paginationService",a]).directive("dirPaginateNoCompile",b).directive("dirPaginationControls",["paginationService","paginationTemplate",d]).filter("itemsPerPage",["paginationService",e]).service("paginationService",g).provider("paginationTemplate",h).run(["$templateCache",c])}(),function(){"use strict";var a={TAB:9,ENTER:13,ESC:27,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,SHIFT:16,CTRL:17,ALT:18,PAGE_UP:33,PAGE_DOWN:34,HOME:36,END:35,BACKSPACE:8,DELETE:46,COMMAND:91,MAP:{91:"COMMAND",8:"BACKSPACE",9:"TAB",13:"ENTER",16:"SHIFT",17:"CTRL",18:"ALT",19:"PAUSEBREAK",20:"CAPSLOCK",27:"ESC",32:"SPACE",33:"PAGE_UP",34:"PAGE_DOWN",35:"END",36:"HOME",37:"LEFT",38:"UP",39:"RIGHT",40:"DOWN",43:"+",44:"PRINTSCREEN",45:"INSERT",46:"DELETE",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"A",66:"B",67:"C",68:"D",69:"E",70:"F",71:"G",72:"H",73:"I",74:"J",75:"K",76:"L",77:"M",78:"N",79:"O",80:"P",81:"Q",82:"R",83:"S",84:"T",85:"U",86:"V",87:"W",88:"X",89:"Y",90:"Z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NUMLOCK",145:"SCROLLLOCK",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},isControl:function(b){var c=b.which;switch(c){case a.COMMAND:case a.SHIFT:case a.CTRL:case a.ALT:return!0}return b.metaKey||b.ctrlKey||b.altKey?!0:!1},isFunctionKey:function(a){return a=a.which?a.which:a,a>=112&&123>=a},isVerticalMovement:function(b){return~[a.UP,a.DOWN].indexOf(b)},isHorizontalMovement:function(b){return~[a.LEFT,a.RIGHT,a.BACKSPACE,a.DELETE].indexOf(b)},toSeparator:function(b){var c={ENTER:"\n",TAB:" ",SPACE:" "}[b];return c?c:a[b]?void 0:b}};void 0===angular.element.prototype.querySelectorAll&&(angular.element.prototype.querySelectorAll=function(a){return angular.element(this[0].querySelectorAll(a))}),void 0===angular.element.prototype.closest&&(angular.element.prototype.closest=function(a){for(var b=this[0],c=b.matches||b.webkitMatchesSelector||b.mozMatchesSelector||b.msMatchesSelector;b;){if(c.bind(b)(a))return b;b=b.parentElement}return!1});var b=0,c=angular.module("ui.select",[]).constant("uiSelectConfig",{theme:"bootstrap",searchEnabled:!0,sortable:!1,placeholder:"",refreshDelay:1e3,closeOnSelect:!0,skipFocusser:!1,dropdownPosition:"auto",removeSelected:!0,resetSearchInput:!0,generateId:function(){return b++},appendToBody:!1,spinnerEnabled:!1,spinnerClass:"glyphicon-refresh ui-select-spin"}).service("uiSelectMinErr",function(){var a=angular.$$minErr("ui.select");return function(){var b=a.apply(this,arguments),c=b.message.replace(new RegExp("\nhttp://errors.angularjs.org/.*"),"");return new Error(c)}}).directive("uisTranscludeAppend",function(){return{link:function(a,b,c,d,e){e(a,function(a){b.append(a)})}}}).filter("highlight",function(){function a(a){return(""+a).replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}return function(b,c){return c&&b?(""+b).replace(new RegExp(a(c),"gi"),'<span class="ui-select-highlight">$&</span>'):b}}).factory("uisOffset",["$document","$window",function(a,b){return function(c){var d=c[0].getBoundingClientRect();return{width:d.width||c.prop("offsetWidth"),height:d.height||c.prop("offsetHeight"),top:d.top+(b.pageYOffset||a[0].documentElement.scrollTop),left:d.left+(b.pageXOffset||a[0].documentElement.scrollLeft)}}}]);c.directive("uiSelectChoices",["uiSelectConfig","uisRepeatParser","uiSelectMinErr","$compile","$window",function(a,b,c,d,e){return{restrict:"EA",require:"^uiSelect",replace:!0,transclude:!0,templateUrl:function(b){b.addClass("ui-select-choices");var c=b.parent().attr("theme")||a.theme;return c+"/choices.tpl.html"},compile:function(d,f){if(!f.repeat)throw c("repeat","Expected 'repeat' expression.");var g=f.groupBy,h=f.groupFilter;if(g){var i=d.querySelectorAll(".ui-select-choices-group");if(1!==i.length)throw c("rows","Expected 1 .ui-select-choices-group but got '{0}'.",i.length);i.attr("ng-repeat",b.getGroupNgRepeatExpression())}var j=b.parse(f.repeat),k=d.querySelectorAll(".ui-select-choices-row");if(1!==k.length)throw c("rows","Expected 1 .ui-select-choices-row but got '{0}'.",k.length);k.attr("ng-repeat",j.repeatExpression(g)).attr("ng-if","$select.open");var l=d.querySelectorAll(".ui-select-choices-row-inner");if(1!==l.length)throw c("rows","Expected 1 .ui-select-choices-row-inner but got '{0}'.",l.length);l.attr("uis-transclude-append","");var m=e.document.addEventListener?k:l;return m.attr("ng-click","$select.select("+j.itemName+",$select.skipFocusser,$event)"),function(b,c,e,f){f.parseRepeatAttr(e.repeat,g,h),f.disableChoiceExpression=e.uiDisableChoice,f.onHighlightCallback=e.onHighlight,f.dropdownPosition=e.position?e.position.toLowerCase():a.dropdownPosition,b.$on("$destroy",function(){k.remove()}),b.$watch("$select.search",function(a){a&&!f.open&&f.multiple&&f.activate(!1,!0),f.activeIndex=f.tagging.isActivated?-1:0,!e.minimumInputLength||f.search.length>=e.minimumInputLength?f.refresh(e.refresh):f.items=[]}),e.$observe("refreshDelay",function(){var c=b.$eval(e.refreshDelay);f.refreshDelay=void 0!==c?c:a.refreshDelay}),b.$watch("$select.open",function(a){a?d.attr("role","listbox"):d.removeAttr("role")})}}}}]),c.controller("uiSelectCtrl",["$scope","$element","$timeout","$filter","$$uisDebounce","uisRepeatParser","uiSelectMinErr","uiSelectConfig","$parse","$injector","$window",function(b,c,d,e,f,g,h,i,j,k,l){function m(a,b,c){if(a.findIndex)return a.findIndex(b,c);for(var d,e=Object(a),f=e.length>>>0,g=0;f>g;g++)if(d=e[g],b.call(c,d,g,e))return g;return-1}function n(){u.resetSearchInput&&(u.search=v,u.selected&&u.items.length&&!u.multiple&&(u.activeIndex=m(u.items,function(a){return angular.equals(this,a)},u.selected)))}function o(a,b){var c,d,e=[];for(c=0;c<b.length;c++)for(d=0;d<a.length;d++)a[d].name==[b[c]]&&e.push(a[d]);return e}function p(a,b){var c=y.indexOf(a);b&&-1===c&&y.push(a),!b&&c>-1&&y.splice(c,1)}function q(a){return y.indexOf(a)>-1}function r(a){function b(a,b){var c=d.indexOf(a);b&&-1===c&&d.push(a),!b&&c>-1&&d.splice(c,0)}function c(a){return d.indexOf(a)>-1}if(a){var d=[];u.isLocked=function(a,d){var e=!1,f=u.selected[d];return f&&(a?(e=!!a.$eval(u.lockChoiceExpression),b(f,e)):e=c(f)),e}}}function s(b){var c=!0;switch(b){case a.DOWN:!u.open&&u.multiple?u.activate(!1,!0):u.activeIndex<u.items.length-1&&u.activeIndex++;break;case a.UP:!u.open&&u.multiple?u.activate(!1,!0):(u.activeIndex>0||0===u.search.length&&u.tagging.isActivated&&u.activeIndex>-1)&&u.activeIndex--;break;case a.TAB:(!u.multiple||u.open)&&u.select(u.items[u.activeIndex],!0);break;case a.ENTER:u.open&&(u.tagging.isActivated||u.activeIndex>=0)?u.select(u.items[u.activeIndex],u.skipFocusser):u.activate(!1,!0);break;case a.ESC:u.close();break;default:c=!1}return c}function t(){var a=c.querySelectorAll(".ui-select-choices-content"),b=a.querySelectorAll(".ui-select-choices-row");if(b.length<1)throw h("choices","Expected multiple .ui-select-choices-row but got '{0}'.",b.length);if(!(u.activeIndex<0)){var d=b[u.activeIndex],e=d.offsetTop+d.clientHeight-a[0].scrollTop,f=a[0].offsetHeight;e>f?a[0].scrollTop+=e-f:e<d.clientHeight&&(u.isGrouped&&0===u.activeIndex?a[0].scrollTop=0:a[0].scrollTop-=d.clientHeight-e)}}var u=this,v="";if(u.placeholder=i.placeholder,u.searchEnabled=i.searchEnabled,u.sortable=i.sortable,u.refreshDelay=i.refreshDelay,u.paste=i.paste,u.resetSearchInput=i.resetSearchInput,u.refreshing=!1,u.spinnerEnabled=i.spinnerEnabled,u.spinnerClass=i.spinnerClass,u.removeSelected=i.removeSelected,u.closeOnSelect=!0,u.skipFocusser=!1,u.search=v,u.activeIndex=0,u.items=[],u.open=!1,u.focus=!1,u.disabled=!1,u.selected=void 0,u.dropdownPosition="auto",u.focusser=void 0,u.multiple=void 0,u.disableChoiceExpression=void 0,u.tagging={isActivated:!1,fct:void 0},u.taggingTokens={isActivated:!1,tokens:void 0},u.lockChoiceExpression=void 0,u.clickTriggeredSelect=!1,u.$filter=e,u.$element=c,u.$animate=function(){try{return k.get("$animate")}catch(a){return null}}(),u.searchInput=c.querySelectorAll("input.ui-select-search"),1!==u.searchInput.length)throw h("searchInput","Expected 1 input.ui-select-search but got '{0}'.",u.searchInput.length);u.isEmpty=function(){return angular.isUndefined(u.selected)||null===u.selected||""===u.selected||u.multiple&&0===u.selected.length},u.activate=function(a,e){if(u.disabled||u.open)u.open&&!u.searchEnabled&&u.close();else{e||n(),b.$broadcast("uis:activate"),u.open=!0,u.activeIndex=u.activeIndex>=u.items.length?0:u.activeIndex,-1===u.activeIndex&&u.taggingLabel!==!1&&(u.activeIndex=0);var f=c.querySelectorAll(".ui-select-choices-content"),g=c.querySelectorAll(".ui-select-search");if(u.$animate&&u.$animate.on&&u.$animate.enabled(f[0])){var h=function(b,c){"start"===c&&0===u.items.length?(u.$animate.off("removeClass",g[0],h),d(function(){u.focusSearchInput(a)})):"close"===c&&(u.$animate.off("enter",f[0],h),d(function(){u.focusSearchInput(a)}))};u.items.length>0?u.$animate.on("enter",f[0],h):u.$animate.on("removeClass",g[0],h)}else d(function(){u.focusSearchInput(a),!u.tagging.isActivated&&u.items.length>1&&t()})}},u.focusSearchInput=function(a){u.search=a||u.search,u.searchInput[0].focus()},u.findGroupByName=function(a){return u.groups&&u.groups.filter(function(b){return b.name===a})[0]},u.parseRepeatAttr=function(a,c,d){function e(a){var e=b.$eval(c);if(u.groups=[],angular.forEach(a,function(a){var b=angular.isFunction(e)?e(a):a[e],c=u.findGroupByName(b);c?c.items.push(a):u.groups.push({name:b,items:[a]})}),d){var f=b.$eval(d);angular.isFunction(f)?u.groups=f(u.groups):angular.isArray(f)&&(u.groups=o(u.groups,f))}u.items=[],u.groups.forEach(function(a){u.items=u.items.concat(a.items)})}function f(a){u.items=a}u.setItemsFn=c?e:f,u.parserResult=g.parse(a),u.isGrouped=!!c,u.itemProperty=u.parserResult.itemName;var i=u.parserResult.source,k=function(){var a=i(b);b.$uisSource=Object.keys(a).map(function(b){var c={};return c[u.parserResult.keyName]=b,c.value=a[b],c})};u.parserResult.keyName&&(k(),u.parserResult.source=j("$uisSource"+u.parserResult.filters),b.$watch(i,function(a,b){a!==b&&k()},!0)),u.refreshItems=function(a){a=a||u.parserResult.source(b);var c=u.selected;if(u.isEmpty()||angular.isArray(c)&&!c.length||!u.multiple||!u.removeSelected)u.setItemsFn(a);else if(void 0!==a&&null!==a){var d=a.filter(function(a){return angular.isArray(c)?c.every(function(b){return!angular.equals(a,b)}):!angular.equals(a,c)});u.setItemsFn(d)}("auto"===u.dropdownPosition||"up"===u.dropdownPosition)&&b.calculateDropdownPos(),b.$broadcast("uis:refresh")},b.$watchCollection(u.parserResult.source,function(a){if(void 0===a||null===a)u.items=[];else{if(!angular.isArray(a))throw h("items","Expected an array but got '{0}'.",a);u.refreshItems(a),angular.isDefined(u.ngModel.$modelValue)&&(u.ngModel.$modelValue=null)}})};var w;u.refresh=function(a){void 0!==a&&(w&&d.cancel(w),w=d(function(){var c=b.$eval(a);c&&angular.isFunction(c.then)&&!u.refreshing&&(u.refreshing=!0,c.then(function(){u.refreshing=!1}))},u.refreshDelay))},u.isActive=function(a){if(!u.open)return!1;var b=u.items.indexOf(a[u.itemProperty]),c=b==u.activeIndex;return!c||0>b?!1:(c&&!angular.isUndefined(u.onHighlightCallback)&&a.$eval(u.onHighlightCallback),c)};var x=function(a){return u.selected&&angular.isArray(u.selected)&&u.selected.filter(function(b){return angular.equals(b,a)}).length>0},y=[];u.isDisabled=function(a){if(u.open){var b=a[u.itemProperty],c=u.items.indexOf(b),d=!1;if(c>=0&&(angular.isDefined(u.disableChoiceExpression)||u.multiple)){if(b.isTag)return!1;u.multiple&&(d=x(b)),!d&&angular.isDefined(u.disableChoiceExpression)&&(d=!!a.$eval(u.disableChoiceExpression)),p(b,d)}return d}},u.select=function(a,c,e){if(void 0===a||!q(a)){
if(!u.items&&!u.search&&!u.tagging.isActivated)return;if(!a||!q(a)){if(u.clickTriggeredSelect=!1,e&&("click"===e.type||"touchend"===e.type)&&a&&(u.clickTriggeredSelect=!0),u.tagging.isActivated&&u.clickTriggeredSelect===!1){if(u.taggingLabel===!1)if(u.activeIndex<0){if(void 0===a&&(a=void 0!==u.tagging.fct?u.tagging.fct(u.search):u.search),!a||angular.equals(u.items[0],a))return}else a=u.items[u.activeIndex];else if(0===u.activeIndex){if(void 0===a)return;if(void 0!==u.tagging.fct&&"string"==typeof a){if(a=u.tagging.fct(a),!a)return}else"string"==typeof a&&(a=a.replace(u.taggingLabel,"").trim())}if(x(a))return void u.close(c)}n(),b.$broadcast("uis:select",a);var f={};f[u.parserResult.itemName]=a,d(function(){u.onSelectCallback(b,{$item:a,$model:u.parserResult.modelMapper(b,f)})}),u.closeOnSelect&&u.close(c)}}},u.close=function(a){u.open&&(u.ngModel&&u.ngModel.$setTouched&&u.ngModel.$setTouched(),u.open=!1,n(),b.$broadcast("uis:close",a))},u.setFocus=function(){u.focus||u.focusInput[0].focus()},u.clear=function(a){u.select(void 0),a.stopPropagation(),d(function(){u.focusser[0].focus()},0,!1)},u.toggle=function(a){u.open?(u.close(),a.preventDefault(),a.stopPropagation()):u.activate()},u.isLocked=function(){return!1},b.$watch(function(){return angular.isDefined(u.lockChoiceExpression)&&""!==u.lockChoiceExpression},r);var z=null,A=!1;u.sizeSearchInput=function(){var a=u.searchInput[0],c=u.searchInput.parent().parent()[0],e=function(){return c.clientWidth*!!a.offsetParent},f=function(b){if(0===b)return!1;var c=b-a.offsetLeft-10;return 50>c&&(c=b),u.searchInput.css("width",c+"px"),!0};u.searchInput.css("width","10px"),d(function(){null!==z||f(e())||(z=b.$watch(function(){A||(A=!0,b.$$postDigest(function(){A=!1,f(e())&&(z(),z=null)}))},angular.noop))})},u.searchInput.on("keydown",function(c){var e=c.which;~[a.ENTER,a.ESC].indexOf(e)&&(c.preventDefault(),c.stopPropagation()),b.$apply(function(){var b=!1;if((u.items.length>0||u.tagging.isActivated)&&(s(e)||u.searchEnabled||(c.preventDefault(),c.stopPropagation()),u.taggingTokens.isActivated)){for(var f=0;f<u.taggingTokens.tokens.length;f++)u.taggingTokens.tokens[f]===a.MAP[c.keyCode]&&u.search.length>0&&(b=!0);b&&d(function(){u.searchInput.triggerHandler("tagged");var b=u.search.replace(a.MAP[c.keyCode],"").trim();u.tagging.fct&&(b=u.tagging.fct(b)),b&&u.select(b,!0)})}}),a.isVerticalMovement(e)&&u.items.length>0&&t(),(e===a.ENTER||e===a.ESC)&&(c.preventDefault(),c.stopPropagation())}),u.searchInput.on("paste",function(b){var c;if(c=window.clipboardData&&window.clipboardData.getData?window.clipboardData.getData("Text"):(b.originalEvent||b).clipboardData.getData("text/plain"),c=u.search+c,c&&c.length>0)if(u.taggingTokens.isActivated){for(var d=[],e=0;e<u.taggingTokens.tokens.length;e++){var f=a.toSeparator(u.taggingTokens.tokens[e])||u.taggingTokens.tokens[e];if(c.indexOf(f)>-1){d=c.split(f);break}}0===d.length&&(d=[c]);var g=u.search;angular.forEach(d,function(a){var b=u.tagging.fct?u.tagging.fct(a):a;b&&u.select(b,!0)}),u.search=g||v,b.preventDefault(),b.stopPropagation()}else u.paste&&(u.paste(c),u.search=v,b.preventDefault(),b.stopPropagation())}),u.searchInput.on("tagged",function(){d(function(){n()})});var B=f(function(){u.sizeSearchInput()},50);angular.element(l).bind("resize",B),b.$on("$destroy",function(){u.searchInput.off("keyup keydown tagged blur paste"),angular.element(l).off("resize",B)}),b.$watch("$select.activeIndex",function(a){a&&c.find("input").attr("aria-activedescendant","ui-select-choices-row-"+u.generatedId+"-"+a)}),b.$watch("$select.open",function(a){a||c.find("input").removeAttr("aria-activedescendant")})}]),c.directive("uiSelect",["$document","uiSelectConfig","uiSelectMinErr","uisOffset","$compile","$parse","$timeout",function(a,b,c,d,e,f,g){return{restrict:"EA",templateUrl:function(a,c){var d=c.theme||b.theme;return d+(angular.isDefined(c.multiple)?"/select-multiple.tpl.html":"/select.tpl.html")},replace:!0,transclude:!0,require:["uiSelect","^ngModel"],scope:!0,controller:"uiSelectCtrl",controllerAs:"$select",compile:function(e,h){var i=/{(.*)}\s*{(.*)}/.exec(h.ngClass);if(i){var j="{"+i[1]+", "+i[2]+"}";h.ngClass=j,e.attr("ng-class",j)}return angular.isDefined(h.multiple)?e.append("<ui-select-multiple/>").removeAttr("multiple"):e.append("<ui-select-single/>"),h.inputId&&(e.querySelectorAll("input.ui-select-search")[0].id=h.inputId),function(e,h,i,j,k){function l(a){if(o.open){var b=!1;if(b=window.jQuery?window.jQuery.contains(h[0],a.target):h[0].contains(a.target),!b&&!o.clickTriggeredSelect){var c;if(o.skipFocusser)c=!0;else{var d=["input","button","textarea","select"],f=angular.element(a.target).controller("uiSelect");c=f&&f!==o,c||(c=~d.indexOf(a.target.tagName.toLowerCase()))}o.close(c),e.$digest()}o.clickTriggeredSelect=!1}}function m(){var b=d(h);r=angular.element('<div class="ui-select-placeholder"></div>'),r[0].style.width=b.width+"px",r[0].style.height=b.height+"px",h.after(r),s=h[0].style.width,a.find("body").append(h),h[0].style.position="absolute",h[0].style.left=b.left+"px",h[0].style.top=b.top+"px",h[0].style.width=b.width+"px"}function n(){null!==r&&(r.replaceWith(h),r=null,h[0].style.position="",h[0].style.left="",h[0].style.top="",h[0].style.width=s,o.setFocus())}var o=j[0],p=j[1];o.generatedId=b.generateId(),o.baseTitle=i.title||"Select box",o.focusserTitle=o.baseTitle+" focus",o.focusserId="focusser-"+o.generatedId,o.closeOnSelect=function(){return angular.isDefined(i.closeOnSelect)?f(i.closeOnSelect)():b.closeOnSelect}(),e.$watch("skipFocusser",function(){var a=e.$eval(i.skipFocusser);o.skipFocusser=void 0!==a?a:b.skipFocusser}),o.onSelectCallback=f(i.onSelect),o.onRemoveCallback=f(i.onRemove),o.ngModel=p,o.choiceGrouped=function(a){return o.isGrouped&&a&&a.name},i.tabindex&&i.$observe("tabindex",function(a){o.focusInput.attr("tabindex",a),h.removeAttr("tabindex")}),e.$watch(function(){return e.$eval(i.searchEnabled)},function(a){o.searchEnabled=void 0!==a?a:b.searchEnabled}),e.$watch("sortable",function(){var a=e.$eval(i.sortable);o.sortable=void 0!==a?a:b.sortable}),i.$observe("limit",function(){o.limit=angular.isDefined(i.limit)?parseInt(i.limit,10):void 0}),e.$watch("removeSelected",function(){var a=e.$eval(i.removeSelected);o.removeSelected=void 0!==a?a:b.removeSelected}),i.$observe("disabled",function(){o.disabled=void 0!==i.disabled?i.disabled:!1}),i.$observe("resetSearchInput",function(){var a=e.$eval(i.resetSearchInput);o.resetSearchInput=void 0!==a?a:!0}),i.$observe("paste",function(){o.paste=e.$eval(i.paste)}),i.$observe("tagging",function(){if(void 0!==i.tagging){var a=e.$eval(i.tagging);o.tagging={isActivated:!0,fct:a!==!0?a:void 0}}else o.tagging={isActivated:!1,fct:void 0}}),i.$observe("taggingLabel",function(){void 0!==i.tagging&&("false"===i.taggingLabel?o.taggingLabel=!1:o.taggingLabel=void 0!==i.taggingLabel?i.taggingLabel:"(new)")}),i.$observe("taggingTokens",function(){if(void 0!==i.tagging){var a=void 0!==i.taggingTokens?i.taggingTokens.split("|"):[",","ENTER"];o.taggingTokens={isActivated:!0,tokens:a}}}),i.$observe("spinnerEnabled",function(){var a=e.$eval(i.spinnerEnabled);o.spinnerEnabled=void 0!==a?a:b.spinnerEnabled}),i.$observe("spinnerClass",function(){var a=i.spinnerClass;o.spinnerClass=void 0!==a?i.spinnerClass:b.spinnerClass}),angular.isDefined(i.autofocus)&&g(function(){o.setFocus()}),angular.isDefined(i.focusOn)&&e.$on(i.focusOn,function(){g(function(){o.setFocus()})}),a.on("click",l),e.$on("$destroy",function(){a.off("click",l)}),k(e,function(a){var b=angular.element("<div>").append(a),d=b.querySelectorAll(".ui-select-match");if(d.removeAttr("ui-select-match"),d.removeAttr("data-ui-select-match"),1!==d.length)throw c("transcluded","Expected 1 .ui-select-match but got '{0}'.",d.length);h.querySelectorAll(".ui-select-match").replaceWith(d);var e=b.querySelectorAll(".ui-select-choices");if(e.removeAttr("ui-select-choices"),e.removeAttr("data-ui-select-choices"),1!==e.length)throw c("transcluded","Expected 1 .ui-select-choices but got '{0}'.",e.length);h.querySelectorAll(".ui-select-choices").replaceWith(e);var f=b.querySelectorAll(".ui-select-no-choice");f.removeAttr("ui-select-no-choice"),f.removeAttr("data-ui-select-no-choice"),1==f.length&&h.querySelectorAll(".ui-select-no-choice").replaceWith(f)});var q=e.$eval(i.appendToBody);(void 0!==q?q:b.appendToBody)&&(e.$watch("$select.open",function(a){a?m():n()}),e.$on("$destroy",function(){n()}));var r=null,s="",t=null,u="direction-up";e.$watch("$select.open",function(){("auto"===o.dropdownPosition||"up"===o.dropdownPosition)&&e.calculateDropdownPos()});var v=function(a,b){a=a||d(h),b=b||d(t),t[0].style.position="absolute",t[0].style.top=-1*b.height+"px",h.addClass(u)},w=function(a,b){h.removeClass(u),a=a||d(h),b=b||d(t),t[0].style.position="",t[0].style.top=""},x=function(){g(function(){if("up"===o.dropdownPosition)v();else{h.removeClass(u);var b=d(h),c=d(t),e=a[0].documentElement.scrollTop||a[0].body.scrollTop;b.top+b.height+c.height>e+a[0].documentElement.clientHeight?v(b,c):w(b,c)}t[0].style.opacity=1})},y=!1;e.calculateDropdownPos=function(){if(o.open){if(t=angular.element(h).querySelectorAll(".ui-select-dropdown"),0===t.length)return;if(""!==o.search||y||(t[0].style.opacity=0,y=!0),!d(t).height&&o.$animate&&o.$animate.on&&o.$animate.enabled(t)){var a=!0;o.$animate.on("enter",t,function(b,c){"close"===c&&a&&(x(),a=!1)})}else x()}else{if(null===t||0===t.length)return;t[0].style.opacity=0,t[0].style.position="",t[0].style.top="",h.removeClass(u)}}}}}}]),c.directive("uiSelectMatch",["uiSelectConfig",function(a){function b(a,b){return a[0].hasAttribute(b)?a.attr(b):a[0].hasAttribute("data-"+b)?a.attr("data-"+b):a[0].hasAttribute("x-"+b)?a.attr("x-"+b):void 0}return{restrict:"EA",require:"^uiSelect",replace:!0,transclude:!0,templateUrl:function(c){c.addClass("ui-select-match");var d=c.parent(),e=b(d,"theme")||a.theme,f=angular.isDefined(b(d,"multiple"));return e+(f?"/match-multiple.tpl.html":"/match.tpl.html")},link:function(b,c,d,e){function f(a){e.allowClear=angular.isDefined(a)?""===a?!0:"true"===a.toLowerCase():!1}e.lockChoiceExpression=d.uiLockChoice,d.$observe("placeholder",function(b){e.placeholder=void 0!==b?b:a.placeholder}),d.$observe("allowClear",f),f(d.allowClear),e.multiple&&e.sizeSearchInput()}}}]),c.directive("uiSelectMultiple",["uiSelectMinErr","$timeout",function(b,c){return{restrict:"EA",require:["^uiSelect","^ngModel"],controller:["$scope","$timeout",function(a,b){var c,d=this,e=a.$select;angular.isUndefined(e.selected)&&(e.selected=[]),a.$evalAsync(function(){c=a.ngModel}),d.activeMatchIndex=-1,d.updateModel=function(){c.$setViewValue(Date.now()),d.refreshComponent()},d.refreshComponent=function(){e.refreshItems&&e.refreshItems(),e.sizeSearchInput&&e.sizeSearchInput()},d.removeChoice=function(c){if(e.isLocked(null,c))return!1;var f=e.selected[c],g={};return g[e.parserResult.itemName]=f,e.selected.splice(c,1),d.activeMatchIndex=-1,e.sizeSearchInput(),b(function(){e.onRemoveCallback(a,{$item:f,$model:e.parserResult.modelMapper(a,g)})}),d.updateModel(),!0},d.getPlaceholder=function(){return e.selected&&e.selected.length?void 0:e.placeholder}}],controllerAs:"$selectMultiple",link:function(d,e,f,g){function h(a){return angular.isNumber(a.selectionStart)?a.selectionStart:a.value.length}function i(b){function c(){switch(b){case a.LEFT:return~n.activeMatchIndex?k:g;case a.RIGHT:return~n.activeMatchIndex&&i!==g?j:(l.activate(),!1);case a.BACKSPACE:return~n.activeMatchIndex?n.removeChoice(i)?k:i:g;case a.DELETE:return~n.activeMatchIndex?(n.removeChoice(n.activeMatchIndex),i):!1}}var d=h(l.searchInput[0]),e=l.selected.length,f=0,g=e-1,i=n.activeMatchIndex,j=n.activeMatchIndex+1,k=n.activeMatchIndex-1,m=i;return d>0||l.search.length&&b==a.RIGHT?!1:(l.close(),m=c(),l.selected.length&&m!==!1?n.activeMatchIndex=Math.min(g,Math.max(f,m)):n.activeMatchIndex=-1,!0)}function j(a){if(void 0===a||void 0===l.search)return!1;var b=a.filter(function(a){return void 0===l.search.toUpperCase()||void 0===a?!1:a.toUpperCase()===l.search.toUpperCase()}).length>0;return b}function k(a,b){var c=-1;if(angular.isArray(a))for(var d=angular.copy(a),e=0;e<d.length;e++)if(void 0===l.tagging.fct)d[e]+" "+l.taggingLabel===b&&(c=e);else{var f=d[e];angular.isObject(f)&&(f.isTag=!0),angular.equals(f,b)&&(c=e)}return c}var l=g[0],m=d.ngModel=g[1],n=d.$selectMultiple;l.multiple=!0,l.focusInput=l.searchInput,m.$isEmpty=function(a){return!a||0===a.length},m.$parsers.unshift(function(){for(var a,b={},c=[],e=l.selected.length-1;e>=0;e--)b={},b[l.parserResult.itemName]=l.selected[e],a=l.parserResult.modelMapper(d,b),c.unshift(a);return c}),m.$formatters.unshift(function(a){var b,c=l.parserResult&&l.parserResult.source(d,{$select:{search:""}}),e={};if(!c)return a;var f=[],g=function(a,c){if(a&&a.length){for(var g=a.length-1;g>=0;g--){if(e[l.parserResult.itemName]=a[g],b=l.parserResult.modelMapper(d,e),l.parserResult.trackByExp){var h=/(\w*)\./.exec(l.parserResult.trackByExp),i=/\.([^\s]+)/.exec(l.parserResult.trackByExp);if(h&&h.length>0&&h[1]==l.parserResult.itemName&&i&&i.length>0&&b[i[1]]==c[i[1]])return f.unshift(a[g]),!0}if(angular.equals(b,c))return f.unshift(a[g]),!0}return!1}};if(!a)return f;for(var h=a.length-1;h>=0;h--)g(l.selected,a[h])||g(c,a[h])||f.unshift(a[h]);return f}),d.$watchCollection(function(){return m.$modelValue},function(a,b){b!=a&&(angular.isDefined(m.$modelValue)&&(m.$modelValue=null),n.refreshComponent())}),m.$render=function(){if(!angular.isArray(m.$viewValue)){if(!angular.isUndefined(m.$viewValue)&&null!==m.$viewValue)throw b("multiarr","Expected model value to be array but got '{0}'",m.$viewValue);m.$viewValue=[]}l.selected=m.$viewValue,n.refreshComponent(),d.$evalAsync()},d.$on("uis:select",function(a,b){l.selected.length>=l.limit||(l.selected.push(b),n.updateModel())}),d.$on("uis:activate",function(){n.activeMatchIndex=-1}),d.$watch("$select.disabled",function(a,b){b&&!a&&l.sizeSearchInput()}),l.searchInput.on("keydown",function(b){var c=b.which;d.$apply(function(){var d=!1;a.isHorizontalMovement(c)&&(d=i(c)),d&&c!=a.TAB&&(b.preventDefault(),b.stopPropagation())})}),l.searchInput.on("keyup",function(b){if(a.isVerticalMovement(b.which)||d.$evalAsync(function(){l.activeIndex=l.taggingLabel===!1?-1:0}),l.tagging.isActivated&&l.search.length>0){if(b.which===a.TAB||a.isControl(b)||a.isFunctionKey(b)||b.which===a.ESC||a.isVerticalMovement(b.which))return;if(l.activeIndex=l.taggingLabel===!1?-1:0,l.taggingLabel===!1)return;var c,e,f,g,h=angular.copy(l.items),i=angular.copy(l.items),m=!1,n=-1;if(void 0!==l.tagging.fct){if(f=l.$filter("filter")(h,{isTag:!0}),f.length>0&&(g=f[0]),h.length>0&&g&&(m=!0,h=h.slice(1,h.length),i=i.slice(1,i.length)),c=l.tagging.fct(l.search),i.some(function(a){return angular.equals(a,c)})||l.selected.some(function(a){return angular.equals(a,c)}))return void d.$evalAsync(function(){l.activeIndex=0,l.items=h});c&&(c.isTag=!0)}else{if(f=l.$filter("filter")(h,function(a){return a.match(l.taggingLabel)}),f.length>0&&(g=f[0]),e=h[0],void 0!==e&&h.length>0&&g&&(m=!0,h=h.slice(1,h.length),i=i.slice(1,i.length)),c=l.search+" "+l.taggingLabel,k(l.selected,l.search)>-1)return;if(j(i.concat(l.selected)))return void(m&&(h=i,d.$evalAsync(function(){l.activeIndex=0,l.items=h})));if(j(i))return void(m&&(l.items=i.slice(1,i.length)))}m&&(n=k(l.selected,c)),n>-1?h=h.slice(n+1,h.length-1):(h=[],c&&h.push(c),h=h.concat(i)),d.$evalAsync(function(){if(l.activeIndex=0,l.items=h,l.isGrouped){var a=c?h.slice(1):h;l.setItemsFn(a),c&&(l.items.unshift(c),l.groups.unshift({name:"",items:[c],tagging:!0}))}})}}),l.searchInput.on("blur",function(){c(function(){n.activeMatchIndex=-1})})}}}]),c.directive("uiSelectNoChoice",["uiSelectConfig",function(a){return{restrict:"EA",require:"^uiSelect",replace:!0,transclude:!0,templateUrl:function(b){b.addClass("ui-select-no-choice");var c=b.parent().attr("theme")||a.theme;return c+"/no-choice.tpl.html"}}}]),c.directive("uiSelectSingle",["$timeout","$compile",function(b,c){return{restrict:"EA",require:["^uiSelect","^ngModel"],link:function(d,e,f,g){var h=g[0],i=g[1];i.$parsers.unshift(function(a){var b,c={};return c[h.parserResult.itemName]=a,b=h.parserResult.modelMapper(d,c)}),i.$formatters.unshift(function(a){var b,c=h.parserResult&&h.parserResult.source(d,{$select:{search:""}}),e={};if(c){var f=function(c){return e[h.parserResult.itemName]=c,b=h.parserResult.modelMapper(d,e),b===a};if(h.selected&&f(h.selected))return h.selected;for(var g=c.length-1;g>=0;g--)if(f(c[g]))return c[g]}return a}),d.$watch("$select.selected",function(a){i.$viewValue!==a&&i.$setViewValue(a)}),i.$render=function(){h.selected=i.$viewValue},d.$on("uis:select",function(a,b){h.selected=b}),d.$on("uis:close",function(a,c){b(function(){h.focusser.prop("disabled",!1),c||h.focusser[0].focus()},0,!1)}),d.$on("uis:activate",function(){j.prop("disabled",!0)});var j=angular.element("<input ng-disabled='$select.disabled' class='ui-select-focusser ui-select-offscreen' type='text' id='{{ $select.focusserId }}' aria-label='{{ $select.focusserTitle }}' aria-haspopup='true' role='button' />");c(j)(d),h.focusser=j,h.focusInput=j,e.parent().append(j),j.bind("focus",function(){d.$evalAsync(function(){h.focus=!0})}),j.bind("blur",function(){d.$evalAsync(function(){h.focus=!1})}),j.bind("keydown",function(b){return b.which===a.BACKSPACE?(b.preventDefault(),b.stopPropagation(),h.select(void 0),void d.$apply()):void(b.which===a.TAB||a.isControl(b)||a.isFunctionKey(b)||b.which===a.ESC||((b.which==a.DOWN||b.which==a.UP||b.which==a.ENTER||b.which==a.SPACE)&&(b.preventDefault(),b.stopPropagation(),h.activate()),d.$digest()))}),j.bind("keyup input",function(b){b.which===a.TAB||a.isControl(b)||a.isFunctionKey(b)||b.which===a.ESC||b.which==a.ENTER||b.which===a.BACKSPACE||(h.activate(j.val()),j.val(""),d.$digest())})}}}]),c.directive("uiSelectSort",["$timeout","uiSelectConfig","uiSelectMinErr",function(a,b,c){return{require:["^^uiSelect","^ngModel"],link:function(b,d,e,f){if(null===b[e.uiSelectSort])throw c("sort","Expected a list to sort");var g=f[0],h=f[1],i=angular.extend({axis:"horizontal"},b.$eval(e.uiSelectSortOptions)),j=i.axis,k="dragging",l="dropping",m="dropping-before",n="dropping-after";b.$watch(function(){return g.sortable},function(a){a?d.attr("draggable",!0):d.removeAttr("draggable")}),d.on("dragstart",function(a){d.addClass(k),(a.dataTransfer||a.originalEvent.dataTransfer).setData("text",b.$index.toString())}),d.on("dragend",function(){q(k)});var o,p=function(a,b){this.splice(b,0,this.splice(a,1)[0])},q=function(a){angular.forEach(g.$element.querySelectorAll("."+a),function(b){angular.element(b).removeClass(a)})},r=function(a){a.preventDefault();var b="vertical"===j?a.offsetY||a.layerY||(a.originalEvent?a.originalEvent.offsetY:0):a.offsetX||a.layerX||(a.originalEvent?a.originalEvent.offsetX:0);b<this["vertical"===j?"offsetHeight":"offsetWidth"]/2?(q(n),d.addClass(m)):(q(m),d.addClass(n))},s=function(b){b.preventDefault();var c=parseInt((b.dataTransfer||b.originalEvent.dataTransfer).getData("text"),10);a.cancel(o),o=a(function(){t(c)},20)},t=function(a){var c=b.$eval(e.uiSelectSort),f=c[a],g=null;g=d.hasClass(m)?a<b.$index?b.$index-1:b.$index:a<b.$index?b.$index:b.$index+1,p.apply(c,[a,g]),h.$setViewValue(Date.now()),b.$apply(function(){b.$emit("uiSelectSort:change",{array:c,item:f,from:a,to:g})}),q(l),q(m),q(n),d.off("drop",s)};d.on("dragenter",function(){d.hasClass(k)||(d.addClass(l),d.on("dragover",r),d.on("drop",s))}),d.on("dragleave",function(a){a.target==d&&(q(l),q(m),q(n),d.off("dragover",r),d.off("drop",s))})}}}]),c.factory("$$uisDebounce",["$timeout",function(a){return function(b,c){var d;return function(){var e=this,f=Array.prototype.slice.call(arguments);d&&a.cancel(d),d=a(function(){b.apply(e,f)},c)}}}]),c.directive("uisOpenClose",["$parse","$timeout",function(a,b){return{restrict:"A",require:"uiSelect",link:function(c,d,e,f){f.onOpenCloseCallback=a(e.uisOpenClose),c.$watch("$select.open",function(a,d){a!==d&&b(function(){f.onOpenCloseCallback(c,{isOpen:a})})})}}}]),c.service("uisRepeatParser",["uiSelectMinErr","$parse",function(a,b){var c=this;c.parse=function(c){var d;if(d=c.match(/^\s*(?:([\s\S]+?)\s+as\s+)?(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+(\s*[\s\S]+?)?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),!d)throw a("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",c);var e=d[5],f="";if(d[3]){e=d[5].replace(/(^\()|(\)$)/g,"");var g=d[5].match(/^\s*(?:[\s\S]+?)(?:[^\|]|\|\|)+([\s\S]*)\s*$/);g&&g[1].trim()&&(f=g[1],e=e.replace(f,""))}return{itemName:d[4]||d[2],keyName:d[3],source:b(e),filters:f,trackByExp:d[6],modelMapper:b(d[1]||d[4]||d[2]),repeatExpression:function(a){var b=this.itemName+" in "+(a?"$group.items":"$select.items");return this.trackByExp&&(b+=" track by "+this.trackByExp),b}}},c.getGroupNgRepeatExpression=function(){return"$group in $select.groups track by $group.name"}}])}(),angular.module("ui.select").run(["$templateCache",function(a){a.put("bootstrap/choices.tpl.html",'<ul class="ui-select-choices ui-select-choices-content ui-select-dropdown dropdown-menu" ng-show="$select.open && $select.items.length > 0"><li class="ui-select-choices-group" id="ui-select-choices-{{ $select.generatedId }}"><div class="divider" ng-show="$select.isGrouped && $index > 0"></div><div ng-show="$select.isGrouped" class="ui-select-choices-group-label dropdown-header" ng-bind="$group.name"></div><div ng-attr-id="ui-select-choices-row-{{ $select.generatedId }}-{{$index}}" class="ui-select-choices-row" ng-class="{active: $select.isActive(this), disabled: $select.isDisabled(this)}" role="option"><span class="ui-select-choices-row-inner"></span></div></li></ul>'),a.put("bootstrap/match-multiple.tpl.html",'<span class="ui-select-match"><span ng-repeat="$item in $select.selected track by $index"><span class="ui-select-match-item btn btn-default btn-xs" tabindex="-1" type="button" ng-disabled="$select.disabled" ng-click="$selectMultiple.activeMatchIndex = $index;" ng-class="{\'btn-primary\':$selectMultiple.activeMatchIndex === $index, \'select-locked\':$select.isLocked(this, $index)}" ui-select-sort="$select.selected"><span class="close ui-select-match-close" ng-hide="$select.disabled" ng-click="$selectMultiple.removeChoice($index)">&nbsp;&times;</span> <span uis-transclude-append=""></span></span></span></span>'),a.put("bootstrap/match.tpl.html",'<div class="ui-select-match" ng-hide="$select.open && $select.searchEnabled" ng-disabled="$select.disabled" ng-class="{\'btn-default-focus\':$select.focus}"><span tabindex="-1" class="btn btn-default form-control ui-select-toggle" aria-label="{{ $select.baseTitle }} activate" ng-disabled="$select.disabled" ng-click="$select.activate()" style="outline: 0;"><span ng-show="$select.isEmpty()" class="ui-select-placeholder text-muted">{{$select.placeholder}}</span> <span ng-hide="$select.isEmpty()" class="ui-select-match-text pull-left" ng-class="{\'ui-select-allow-clear\': $select.allowClear && !$select.isEmpty()}" ng-transclude=""></span> <i class="caret pull-right" ng-click="$select.toggle($event)"></i> <a ng-show="$select.allowClear && !$select.isEmpty() && ($select.disabled !== true)" aria-label="{{ $select.baseTitle }} clear" style="margin-right: 10px" ng-click="$select.clear($event)" class="btn btn-xs btn-link pull-right"><i class="glyphicon glyphicon-remove" aria-hidden="true"></i></a></span></div>'),a.put("bootstrap/no-choice.tpl.html",'<ul class="ui-select-no-choice dropdown-menu" ng-show="$select.items.length == 0"><li ng-transclude=""></li></ul>'),a.put("bootstrap/select-multiple.tpl.html",'<div class="ui-select-container ui-select-multiple ui-select-bootstrap dropdown form-control" ng-class="{open: $select.open}"><div><div class="ui-select-match"></div><input type="search" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="ui-select-search input-xs" placeholder="{{$selectMultiple.getPlaceholder()}}" ng-disabled="$select.disabled" ng-click="$select.activate()" ng-model="$select.search" role="combobox" aria-expanded="{{$select.open}}" aria-label="{{$select.baseTitle}}" ng-class="{\'spinner\': $select.refreshing}" ondrop="return false;"></div><div class="ui-select-choices"></div><div class="ui-select-no-choice"></div></div>'),a.put("bootstrap/select.tpl.html",'<div class="ui-select-container ui-select-bootstrap dropdown" ng-class="{open: $select.open}"><div class="ui-select-match"></div><span ng-show="$select.open && $select.refreshing && $select.spinnerEnabled" class="ui-select-refreshing {{$select.spinnerClass}}"></span> <input type="search" autocomplete="off" tabindex="-1" aria-expanded="true" aria-label="{{ $select.baseTitle }}" aria-owns="ui-select-choices-{{ $select.generatedId }}" class="form-control ui-select-search" ng-class="{ \'ui-select-search-hidden\' : !$select.searchEnabled }" placeholder="{{$select.placeholder}}" ng-model="$select.search" ng-show="$select.open"><div class="ui-select-choices"></div><div class="ui-select-no-choice"></div></div>'),a.put("select2/choices.tpl.html",'<ul tabindex="-1" class="ui-select-choices ui-select-choices-content select2-results"><li class="ui-select-choices-group" ng-class="{\'select2-result-with-children\': $select.choiceGrouped($group) }"><div ng-show="$select.choiceGrouped($group)" class="ui-select-choices-group-label select2-result-label" ng-bind="$group.name"></div><ul id="ui-select-choices-{{ $select.generatedId }}" ng-class="{\'select2-result-sub\': $select.choiceGrouped($group), \'select2-result-single\': !$select.choiceGrouped($group) }"><li role="option" ng-attr-id="ui-select-choices-row-{{ $select.generatedId }}-{{$index}}" class="ui-select-choices-row" ng-class="{\'select2-highlighted\': $select.isActive(this), \'select2-disabled\': $select.isDisabled(this)}"><div class="select2-result-label ui-select-choices-row-inner"></div></li></ul></li></ul>'),a.put("select2/match-multiple.tpl.html",'<span class="ui-select-match"><li class="ui-select-match-item select2-search-choice" ng-repeat="$item in $select.selected track by $index" ng-class="{\'select2-search-choice-focus\':$selectMultiple.activeMatchIndex === $index, \'select2-locked\':$select.isLocked(this, $index)}" ui-select-sort="$select.selected"><span uis-transclude-append=""></span> <a href="javascript:;" class="ui-select-match-close select2-search-choice-close" ng-click="$selectMultiple.removeChoice($index)" tabindex="-1"></a></li></span>'),a.put("select2/match.tpl.html",'<a class="select2-choice ui-select-match" ng-class="{\'select2-default\': $select.isEmpty()}" ng-click="$select.toggle($event)" aria-label="{{ $select.baseTitle }} select"><span ng-show="$select.isEmpty()" class="select2-chosen">{{$select.placeholder}}</span> <span ng-hide="$select.isEmpty()" class="select2-chosen" ng-transclude=""></span> <abbr ng-if="$select.allowClear && !$select.isEmpty()" class="select2-search-choice-close" ng-click="$select.clear($event)"></abbr> <span class="select2-arrow ui-select-toggle"><b></b></span></a>'),a.put("select2/no-choice.tpl.html",'<div class="ui-select-no-choice dropdown" ng-show="$select.items.length == 0"><div class="dropdown-content"><div data-selectable="" ng-transclude=""></div></div></div>'),a.put("select2/select-multiple.tpl.html",'<div class="ui-select-container ui-select-multiple select2 select2-container select2-container-multi" ng-class="{\'select2-container-active select2-dropdown-open open\': $select.open, \'select2-container-disabled\': $select.disabled}"><ul class="select2-choices"><span class="ui-select-match"></span><li class="select2-search-field"><input type="search" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="combobox" aria-expanded="true" aria-owns="ui-select-choices-{{ $select.generatedId }}" aria-label="{{ $select.baseTitle }}" aria-activedescendant="ui-select-choices-row-{{ $select.generatedId }}-{{ $select.activeIndex }}" class="select2-input ui-select-search" placeholder="{{$selectMultiple.getPlaceholder()}}" ng-disabled="$select.disabled" ng-hide="$select.disabled" ng-model="$select.search" ng-click="$select.activate()" style="width: 34px;" ondrop="return false;"></li></ul><div class="ui-select-dropdown select2-drop select2-with-searchbox select2-drop-active" ng-class="{\'select2-display-none\': !$select.open || $select.items.length === 0}"><div class="ui-select-choices"></div></div></div>'),a.put("select2/select.tpl.html",'<div class="ui-select-container select2 select2-container" ng-class="{\'select2-container-active select2-dropdown-open open\': $select.open, \'select2-container-disabled\': $select.disabled, \'select2-container-active\': $select.focus, \'select2-allowclear\': $select.allowClear && !$select.isEmpty()}"><div class="ui-select-match"></div><div class="ui-select-dropdown select2-drop select2-with-searchbox select2-drop-active" ng-class="{\'select2-display-none\': !$select.open}"><div class="search-container" ng-class="{\'ui-select-search-hidden\':!$select.searchEnabled, \'select2-search\':$select.searchEnabled}"><input type="search" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" ng-class="{\'select2-active\': $select.refreshing}" role="combobox" aria-expanded="true" aria-owns="ui-select-choices-{{ $select.generatedId }}" aria-label="{{ $select.baseTitle }}" class="ui-select-search select2-input" ng-model="$select.search"></div><div class="ui-select-choices"></div><div class="ui-select-no-choice"></div></div></div>'),a.put("selectize/choices.tpl.html",'<div ng-show="$select.open" class="ui-select-choices ui-select-dropdown selectize-dropdown" ng-class="{\'single\': !$select.multiple, \'multi\': $select.multiple}"><div class="ui-select-choices-content selectize-dropdown-content"><div class="ui-select-choices-group optgroup"><div ng-show="$select.isGrouped" class="ui-select-choices-group-label optgroup-header" ng-bind="$group.name"></div><div role="option" class="ui-select-choices-row" ng-class="{active: $select.isActive(this), disabled: $select.isDisabled(this)}"><div class="option ui-select-choices-row-inner" data-selectable=""></div></div></div></div></div>'),a.put("selectize/match-multiple.tpl.html",'<div class="ui-select-match" data-value="" ng-repeat="$item in $select.selected track by $index" ng-click="$selectMultiple.activeMatchIndex = $index;" ng-class="{\'active\':$selectMultiple.activeMatchIndex === $index}" ui-select-sort="$select.selected"><span class="ui-select-match-item" ng-class="{\'select-locked\':$select.isLocked(this, $index)}"><span uis-transclude-append=""></span> <span class="remove ui-select-match-close" ng-hide="$select.disabled" ng-click="$selectMultiple.removeChoice($index)">&times;</span></span></div>'),a.put("selectize/match.tpl.html",'<div ng-hide="$select.searchEnabled && ($select.open || $select.isEmpty())" class="ui-select-match"><span ng-show="!$select.searchEnabled && ($select.isEmpty() || $select.open)" class="ui-select-placeholder text-muted">{{$select.placeholder}}</span> <span ng-hide="$select.isEmpty() || $select.open" ng-transclude=""></span></div>'),a.put("selectize/no-choice.tpl.html",'<div class="ui-select-no-choice selectize-dropdown" ng-show="$select.items.length == 0"><div class="selectize-dropdown-content"><div data-selectable="" ng-transclude=""></div></div></div>'),a.put("selectize/select-multiple.tpl.html",'<div class="ui-select-container selectize-control multi plugin-remove_button" ng-class="{\'open\': $select.open}"><div class="selectize-input" ng-class="{\'focus\': $select.open, \'disabled\': $select.disabled, \'selectize-focus\' : $select.focus}" ng-click="$select.open && !$select.searchEnabled ? $select.toggle($event) : $select.activate()"><div class="ui-select-match"></div><input type="search" autocomplete="off" tabindex="-1" class="ui-select-search" ng-class="{\'ui-select-search-hidden\':!$select.searchEnabled}" placeholder="{{$selectMultiple.getPlaceholder()}}" ng-model="$select.search" ng-disabled="$select.disabled" aria-expanded="{{$select.open}}" aria-label="{{ $select.baseTitle }}" ondrop="return false;"></div><div class="ui-select-choices"></div><div class="ui-select-no-choice"></div></div>'),
a.put("selectize/select.tpl.html",'<div class="ui-select-container selectize-control single" ng-class="{\'open\': $select.open}"><div class="selectize-input" ng-class="{\'focus\': $select.open, \'disabled\': $select.disabled, \'selectize-focus\' : $select.focus}" ng-click="$select.open && !$select.searchEnabled ? $select.toggle($event) : $select.activate()"><div class="ui-select-match"></div><input type="search" autocomplete="off" tabindex="-1" class="ui-select-search ui-select-toggle" ng-class="{\'ui-select-search-hidden\':!$select.searchEnabled}" ng-click="$select.toggle($event)" placeholder="{{$select.placeholder}}" ng-model="$select.search" ng-hide="!$select.isEmpty() && !$select.open" ng-disabled="$select.disabled" aria-label="{{ $select.baseTitle }}"></div><div class="ui-select-choices"></div><div class="ui-select-no-choice"></div></div>')}]),function(){"use strict";angular.module("ui.multiselect",["multiselect.tpl.html"]).factory("optionParser",["$parse",function(a){var b=/^\s*(.*?)(?:\s+as\s+(.*?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+(.*)$/;return{parse:function(c){var d=c.match(b);if(!d)throw new Error("Expected typeahead specification in form of '_modelValue_ (as _label_)? for _item_ in _collection_' but got '"+c+"'.");return{itemName:d[3],source:a(d[4]),viewMapper:a(d[2]||d[1]),modelMapper:a(d[1])}}}}]).directive("multiselect",["$parse","$document","$compile","$interpolate","optionParser",function(a,b,c,d,e){return{restrict:"E",require:"ngModel",link:function(b,f,g,h){function i(){y.items.length=0;var a=r.source(b);if(angular.isDefined(a)&&null!==a)for(var c=0;c<a.length;c++){var d={};d[r.itemName]=a[c],y.items.push({label:r.viewMapper(d),model:a[c],checked:!1})}}function j(){return y.placeholder=g.msPlaceholder||"Type to filter options",y.placeholder}function k(){if(l(h.$modelValue))return y.header=g.msHeader||"Select",y.header;if(s)g.msSelected?y.header=d(g.msSelected)(y):y.header=h.$modelValue.length+" selected";else{var a={};a[r.itemName]=h.$modelValue,y.header=r.viewMapper(a)}}function l(a){if(a===!0||a===!1)return!1;if(!a)return!0;if(a.length&&a.length>0)return!1;for(var b in a)if(a[b])return!1;return void 0!==t&&void 0!==a[t]?!1:!0}function m(a){a.checked||(y.uncheckAll(),a.checked=!a.checked),o(!1)}function n(a){a.checked=!a.checked,o(!0)}function o(a){var b;a?(b=[],angular.forEach(y.items,function(a){a.checked&&b.push(a.model)})):angular.forEach(y.items,function(a){return a.checked?(b=a.model,!1):void 0}),h.$setViewValue(b)}function p(a){angular.isArray(a)?angular.forEach(y.items,function(b){b.checked=!1,angular.forEach(a,function(a){void 0===t&&angular.equals(b.model,a)?b.checked=!0:void 0!==t&&angular.equals(b.model[t],a[t])&&(b.checked=!0)})}):angular.forEach(y.items,function(b){b.checked=!1,void 0===t&&angular.equals(b.model,a)?b.checked=!0:void 0!==t&&null!==a&&angular.equals(b.model[t],a[t])&&(b.checked=!0)})}var q=g.options,r=e.parse(q),s=g.multiple?!0:!1,t=g.compareBy,u=g.scrollAfterRows,v=g.tabindex,w=g.maxWidth,x=!1,y=b.$new();y.filterAfterRows=g.filterAfterRows;var z=g.change||angular.noop;y.items=[],y.header="Select",y.placeholder="Type to filter options",y.multiple=s,y.disabled=!1,y.ulStyle={},void 0!==u&&parseInt(u).toString()===u&&(y.ulStyle={"max-height":26*u+14+"px","overflow-y":"auto","overflow-x":"hidden"}),void 0!==v&&parseInt(v).toString()===v&&(y.tabindex=v),void 0!==w&&parseInt(w).toString()===w&&(y.maxWidth={"max-width":w+"px"}),b.$on("$destroy",function(){y.$destroy()});var A=angular.element("<multiselect-popup></multiselect-popup>");(g.required||g.ngRequired)&&(x=!0),g.$observe("required",function(a){x=a}),y.$watch(function(){return a(g.ngDisabled)(b)},function(a){y.disabled=a}),y.$watch(function(){return a(g.multiple)(b)},function(a){s=a||!1}),y.$watch(function(){return r.source(b)},function(a){angular.isDefined(a)&&i()},!0),y.$watch(function(){return h.$modelValue},function(a,b){angular.isDefined(a)&&(p(a),y.$eval(z)),k(),j(),h.$setValidity("required",y.valid())},!0),y.$watch(function(){return g.msPlaceholder},function(){j()}),y.$watch(function(){return g.msHeader},function(){k()}),i(),f.append(c(A)(y)),y.modelValue=function(){return h.$modelValue},y.getAttrHeaderText=function(){return g.msHeader||"Select"},y.valid=function(){if(!x)return!0;var a=h.$modelValue;return angular.isArray(a)&&a.length>0||!angular.isArray(a)&&null!==a},y.checkAll=function(){s&&(angular.forEach(y.items,function(a){a.checked=!0}),o(!0))},y.uncheckAll=function(){angular.forEach(y.items,function(a){a.checked=!1}),o(!0)},y.select=function(a,b){s===!1?(m(b),y.toggleSelect()):(a.stopPropagation(),n(b))}}}}]).directive("multiselectPopup",["$document",function(a){return{restrict:"E",scope:!1,replace:!0,templateUrl:"multiselect.tpl.html",link:function(b,c,d){function e(d){f(d.target,c.find(d.target.tagName))||(c.removeClass("open"),a.unbind("click",e),b.$apply())}b.isVisible=!1,b.toggleSelect=function(){c.hasClass("open")?(b.filter="",c.removeClass("open"),a.unbind("click",e)):(b.filter="",c.addClass("open"),a.bind("click",e))};var f=function(a,b){for(var c=0;c<b.length;c++)if(a===b[c])return!0;return!1}}}}]),angular.module("multiselect.tpl.html",[]).run(["$templateCache",function(a){a.put("multiselect.tpl.html",'<div class="btn-group">\n <button tabindex="{{tabindex}}" title="{{header}}" type="button" class="btn btn-default dropdown-toggle" ng-click="toggleSelect()" ng-disabled="disabled" ng-class="{\'error\': !valid()}">\n <div ng-style="maxWidth" style="padding-right: 13px; overflow: hidden; text-overflow: ellipsis;">{{header}}</div><span class="caret" style="position:absolute;right:10px;top:14px;"></span>\n </button>\n <ul class="dropdown-menu" style="margin-bottom:30px;padding-left:5px;padding-right:5px;" ng-style="ulStyle">\n <input ng-show="items.length > filterAfterRows" ng-model="filter" style="padding: 0px 3px;margin-right: 15px; margin-bottom: 4px;" placeholder="{{placeholder}}"> <li data-ng-if="modelValue().length > 0" data-stopPropagation="true">\n <a ng-click="uncheckAll()" style="padding:3px 10px;cursor:pointer;">\n <i class="fa" ng-class="{\'fa-check-square-o\': i.checked, \'fa-square-o\': !i.checked}"></i> {{getAttrHeaderText()}}</a>\n </li>\n <li data-stopPropagation="true" ng-repeat="i in items | filter:filter">\n <a ng-click="select($event, i)" style="padding:3px 10px;cursor:pointer;">\n <i class="fa" ng-class="{\'fa-check-square-o\': i.checked, \'fa-square-o\': !i.checked}"></i> {{i.label}}</a>\n </li>\n </ul>\n</div>')}])}(),angular.module("ui.bootstrap.datetimepicker",["ui.bootstrap.dateparser","ui.bootstrap.position"]).constant("uiDatetimePickerConfig",{dateFormat:"yyyy-MM-dd HH:mm",defaultTime:"00:00:00",html5Types:{date:"yyyy-MM-dd","datetime-local":"yyyy-MM-ddTHH:mm:ss.sss",month:"yyyy-MM"},initialPicker:"date",reOpenDefault:!1,enableDate:!0,enableTime:!0,buttonBar:{show:!0,now:{show:!0,text:"Now"},today:{show:!0,text:"Today"},clear:{show:!0,text:"Clear"},date:{show:!0,text:"Date"},time:{show:!0,text:"Time"},close:{show:!0,text:"Close"}},closeOnDateSelection:!0,closeOnTimeNow:!0,appendToBody:!1,altInputFormats:[],ngModelOptions:{},saveAs:!1,readAs:!1}).controller("DateTimePickerController",["$scope","$element","$attrs","$compile","$parse","$document","$timeout","$uibPosition","dateFilter","uibDateParser","uiDatetimePickerConfig","$rootScope",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(c){var d=v[0],e=b[0].contains(c.target),f=void 0!==d.contains&&d.contains(c.target);!a.isOpen||e||f||a.$apply(function(){a.close(!1)})}function n(c){27===c.which&&a.isOpen?(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.close(!1)}),b[0].focus()):40!==c.which||a.isOpen||(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!0}))}function o(a){return a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()})}function p(b){var c=j.parse(b,w,a.date);if(isNaN(c))for(var d=0;d<C.length;d++)if(c=j.parse(b,C[d],a.date),!isNaN(c))return c;return c}function q(a){if(angular.isNumber(a)&&!isNaN(a)&&(a=new Date(a)),!a)return null;if(angular.isDate(a)&&!isNaN(a))return a;if(angular.isString(a)){var b=p(a);return isNaN(b)?void 0:j.toTimezone(b,u.timezone)}return void 0}function r(b){return a.datepickerOptions.minDate&&b<a.datepickerOptions.minDate?!1:a.datepickerOptions.maxDate&&b>a.datepickerOptions.maxDate?!1:!0}function s(a,b){var d=a||b;return c.ngRequired||c.required||d?(angular.isNumber(d)&&(d=new Date(d)),d?angular.isDate(d)&&!isNaN(d)?r(d):angular.isDate(new Date(d))&&!isNaN(new Date(d).valueOf())?r(new Date(d)):angular.isString(d)?!isNaN(p(b))&&r(p(b)):!1:!0):!0}var t,u,v,w=k.dateFormat,x={},y=[],z=angular.isDefined(c.closeOnDateSelection)?a.$parent.$eval(c.closeOnDateSelection):k.closeOnDateSelection,A=angular.isDefined(c.closeOnTimeNow)?a.$parent.$eval(c.closeOnTimeNow):k.closeOnTimeNow,B=angular.isDefined(c.datepickerAppendToBody)?a.$parent.$eval(c.datepickerAppendToBody):k.appendToBody,C=angular.isDefined(c.altInputFormats)?a.$parent.$eval(c.altInputFormats):k.altInputFormats,D=angular.isDefined(c.saveAs)?a.$parent.$eval(c.saveAs)||c.saveAs:k.saveAs,E=angular.isDefined(c.readAs)?a.$parent.$eval(c.readAs):k.readAs;this.init=function(e){function g(a){if(t.$isEmpty(a))return a;var b=new Date(a);return angular.isDate(b)&&!isNaN(b)?b:a}function h(a){return!a||angular.isString(a)||!angular.isDate(a)||isNaN(a)?a:"ISO"===D?a.toISOString():"json"===D?a.toJSON():"number"===D?a.valueOf():i?j.fromTimezone(a,u.timezone).toLocaleString():(w=w.replace(/M!/,"MM").replace(/d!/,"dd"),j.filter(j.fromTimezone(a,u.timezone),w))}if(t=e,u=t.$options||k.ngModelOptions,a.buttonBar=angular.isDefined(c.buttonBar)?a.$parent.$eval(c.buttonBar):k.buttonBar,a.enableDate=angular.isDefined(a.enableDate)?a.enableDate:k.enableDate,a.enableTime=angular.isDefined(a.enableTime)?a.enableTime:k.enableTime,a.initialPicker=angular.isDefined(c.initialPicker)?c.initialPicker:a.enableDate?k.initialPicker:"time",a.reOpenDefault=angular.isDefined(c.reOpenDefault)?c.reOpenDefault:k.reOpenDefault,"date"==a.initialPicker&&!a.enableDate)throw new Error("datetimePicker can't have initialPicker set to date and have enableDate set to false.");a.showPicker=a.enableDate?a.initialPicker:"time";var i=!1;if(k.html5Types[c.type]?(w=k.html5Types[c.type],i=!0):(w=c.datetimePicker||k.dateFormat,c.$observe("datetimePicker",function(a){var b=a||k.dateFormat;if(b!==w&&(w=b,t.$modelValue=null,!w))throw new Error("datetimePicker must have a date format specified.")})),!w)throw new Error("datetimePicker must have a date format specified.");var l=angular.element('<div date-picker-wrap><div uib-datepicker></div></div><div time-picker-wrap><div uib-timepicker style="margin:0 auto"></div></div>');u?(timezone=u.timezone,a.ngModelOptions=angular.copy(u),a.ngModelOptions.timezone=null,a.ngModelOptions.updateOnDefault===!0&&(a.ngModelOptions.updateOn=a.ngModelOptions.updateOn?a.ngModelOptions.updateOn+" default":"default"),l.attr("ng-model-options","ngModelOptions")):timezone=null,l.attr({"ng-model":"date","ng-change":"dateSelection(date)"});var m=angular.element(l.children()[0]);a.datepickerOptions||(a.datepickerOptions={}),i&&"month"===c.type&&(a.datepickerOptions.datepickerMode="month",a.datepickerOptions.minMode="month"),m.attr("datepicker-options","datepickerOptions"),angular.isDefined(a.datepickerOptions.datepickerMode)||(a.datepickerOptions.datepickerMode="day");var r=angular.element(l.children()[1]);a.timepickerOptions||(a.timepickerOptions={});for(var x in a.timepickerOptions)r.attr(o(x),"timepickerOptions."+x);angular.forEach(["minDate","maxDate","initDate"],function(b){a.datepickerOptions[b]&&("minDate"==b?r.attr("min","datepickerOptions.minDate"):"maxDate"==b&&r.attr("max","datepickerOptions.maxDate"))}),i?t.$formatters.push(function(b){return a.date=j.fromTimezone(b,u.timezone),b}):(t.$$parserName="datetime",t.$validators.datetime=s,t.$parsers.unshift(q),t.$formatters.push(function(b){return t.$isEmpty(b)?(a.date=b,b):(a.date=j.fromTimezone(b,u.timezone),w=w.replace(/M!/,"MM").replace(/d!/,"dd"),j.filter(a.date,w))})),D&&(angular.isFunction(D)?t.$parsers.push(D):t.$parsers.push(h),angular.isFunction(E)?t.$formatters.push(E):t.$formatters.push(g)),t.$viewChangeListeners.push(function(){a.date=p(t.$viewValue)}),b.bind("keydown",n),v=d(l)(a),l.remove(),B?f.find("body").append(v):b.after(v)},a.getText=function(b){return a.buttonBar[b].text||k.buttonBar[b].text},a.keydown=function(c){27===c.which&&(a.close(!1),b[0].focus())},a.doShow=function(b){return angular.isDefined(a.buttonBar[b].show)?a.buttonBar[b].show:k.buttonBar[b].show},a.dateSelection=function(d,e){if(a.enableTime&&"time"===a.showPicker&&(d||null!=d)&&(angular.isDefined(a.date)&&null!=a.date||(a.date=new Date),d&&null!=d)){var f=new Date(a.date);f.setHours(d.getHours()),f.setMinutes(d.getMinutes()),f.setSeconds(d.getSeconds()),f.setMilliseconds(d.getMilliseconds()),d=f}if(angular.isDefined(d)){if(!a.date){var g=angular.isDefined(c.defaultTime)?c.defaultTime:k.defaultTime,h=new Date("2001-01-01 "+g);isNaN(h)||null==d||(d.setHours(h.getHours()),d.setMinutes(h.getMinutes()),d.setSeconds(h.getSeconds()),d.setMilliseconds(h.getMilliseconds()))}a.date=d}var f=a.date?i(a.date,w):null;b.val(f),t.$setViewValue(f),z&&("time"!=a.showPicker&&null!=f?a.enableTime?a.open("time"):a.close(!1):A&&"time"===a.showPicker&&null!=f&&"now"===e&&a.close(!1))},a.$watch("isOpen",function(c){if(a.dropdownStyle={display:c?"block":"none"},c){x.openDate=a.date;var d=B?h.offset(b):h.position(b);B?a.dropdownStyle.top=d.top+b.prop("offsetHeight")+"px":a.dropdownStyle.top=void 0,a.dropdownStyle.left=d.left+"px",g(function(){a.$broadcast("uib:datepicker.focus"),f.bind("click",m)},0,!1),a.open(a.showPicker)}else f.unbind("click",m)}),a.isDisabled=function(b){("today"===b||"now"===b)&&(b=j.fromTimezone(new Date,timezone));var c={};return angular.forEach(["minDate","maxDate"],function(b){a.datepickerOptions[b]?angular.isDate(a.datepickerOptions[b])?c[b]=j.fromTimezone(new Date(a.datepickerOptions[b]),timezone):c[b]=new Date(i(a.datepickerOptions[b],"medium")):c[b]=null}),a.datepickerOptions&&c.minDate&&a.compare(b,c.minDate)<0||c.maxDate&&a.compare(b,c.maxDate)>0},a.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())},a.select=function(b,c){angular.isDefined(c)&&(c.preventDefault(),c.stopPropagation());var d=null;if("today"===b||"now"==b){var e=new Date;angular.isDate(a.date)?(d=new Date(a.date),d.setFullYear(e.getFullYear(),e.getMonth(),e.getDate()),d.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())):d=e}a.dateSelection(d,b)},a.open=function(b,c){angular.isDefined(c)&&(c.preventDefault(),c.stopPropagation()),g(function(){a.showPicker=b},0),"time"==b&&g(function(){a.date=p(t.$viewValue)},50)},a.close=function(c,d){angular.isDefined(d)&&(d.preventDefault(),d.stopPropagation()),a.isOpen=!1,a.enableDate&&a.enableTime&&(a.showPicker=a.reOpenDefault===!1?"date":a.reOpenDefault),angular.isDefined(c)?a.whenClosed({args:{closePressed:c,openDate:x.openDate||null,closeDate:a.date}}):b[0].focus()},a.$on("$destroy",function(){a.isOpen===!0&&(l.$$phase||a.$apply(function(){a.close()})),y.forEach(function(a){a()}),v.remove(),b.unbind("keydown",n),f.unbind("click",m)})}]).directive("datetimePicker",function(){return{restrict:"A",require:["ngModel","datetimePicker"],controller:"DateTimePickerController",scope:{isOpen:"=?",datepickerOptions:"=?",timepickerOptions:"=?",enableDate:"=?",enableTime:"=?",initialPicker:"=?",reOpenDefault:"=?",whenClosed:"&"},link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("datePickerWrap",function(){return{restrict:"EA",replace:!0,transclude:!0,templateUrl:"template/date-picker.html"}}).directive("timePickerWrap",function(){return{restrict:"EA",replace:!0,transclude:!0,templateUrl:"template/time-picker.html"}}),angular.module("ui.bootstrap.datetimepicker").run(["$templateCache",function(a){"use strict";a.put("template/date-picker.html",'<ul class="dropdown-menu dropdown-menu-left datetime-picker-dropdown" ng-if="isOpen && showPicker == \'date\'" ng-style=dropdownStyle style=left:inherit ng-keydown=keydown($event) ng-click="$event.preventDefault(); $event.stopPropagation()"><li style="padding:0 5px 5px 5px" class=date-picker-menu><div ng-transclude></div></li><li style=padding:5px ng-if=buttonBar.show><span class="btn-group pull-left" style=margin-right:10px ng-if="doShow(\'today\') || doShow(\'clear\')"><button type=button class="btn btn-sm btn-info" ng-if="doShow(\'today\')" ng-click="select(\'today\', $event)" ng-disabled="isDisabled(\'today\')">{{ getText(\'today\') }}</button> <button type=button class="btn btn-sm btn-danger" ng-if="doShow(\'clear\')" ng-click="select(\'clear\', $event)">{{ getText(\'clear\') }}</button></span> <span class="btn-group pull-right" ng-if="(doShow(\'time\') && enableTime) || doShow(\'close\')"><button type=button class="btn btn-sm btn-default" ng-if="doShow(\'time\') && enableTime" ng-click="open(\'time\', $event)">{{ getText(\'time\')}}</button> <button type=button class="btn btn-sm btn-success" ng-if="doShow(\'close\')" ng-click="close(true, $event)">{{ getText(\'close\') }}</button></span> <span class=clearfix></span></li></ul>'),a.put("template/time-picker.html",'<ul class="dropdown-menu dropdown-menu-left datetime-picker-dropdown" ng-if="isOpen && showPicker == \'time\'" ng-style=dropdownStyle style=left:inherit ng-keydown=keydown($event) ng-click="$event.preventDefault(); $event.stopPropagation()"><li style="padding:0 5px 5px 5px" class=time-picker-menu><div ng-transclude></div></li><li style=padding:5px ng-if=buttonBar.show><span class="btn-group pull-left" style=margin-right:10px ng-if="doShow(\'now\') || doShow(\'clear\')"><button type=button class="btn btn-sm btn-info" ng-if="doShow(\'now\')" ng-click="select(\'now\', $event)" ng-disabled="isDisabled(\'now\')">{{ getText(\'now\') }}</button> <button type=button class="btn btn-sm btn-danger" ng-if="doShow(\'clear\')" ng-click="select(\'clear\', $event)">{{ getText(\'clear\') }}</button></span> <span class="btn-group pull-right" ng-if="(doShow(\'date\') && enableDate) || doShow(\'close\')"><button type=button class="btn btn-sm btn-default" ng-if="doShow(\'date\') && enableDate" ng-click="open(\'date\', $event)">{{ getText(\'date\')}}</button> <button type=button class="btn btn-sm btn-success" ng-if="doShow(\'close\')" ng-click="close(true, $event)">{{ getText(\'close\') }}</button></span> <span class=clearfix></span></li></ul>')}]),function(a,b,c){"use strict";function d(){function a(a,b,d,e){return function(f,h,i){var j=i.$normalize(b);!c[j]||g(h,d)||i[j]||f.$watch(i[a],function(a){a=e?!a:!!a,h.attr(b,a)})}}var c={ariaHidden:!0,ariaChecked:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaValue:!0,tabindex:!0,bindKeypress:!0,bindRoleForClick:!0};this.config=function(a){c=b.extend(c,a)},this.$get=function(){return{config:function(a){return c[a]},$$watchExpr:a}}}var e=b.module("ngAria",["ng"]).provider("$aria",d),f=["BUTTON","A","INPUT","TEXTAREA","SELECT","DETAILS","SUMMARY"],g=function(a,b){return-1!==b.indexOf(a[0].nodeName)?!0:void 0};e.directive("ngShow",["$aria",function(a){return a.$$watchExpr("ngShow","aria-hidden",[],!0)}]).directive("ngHide",["$aria",function(a){return a.$$watchExpr("ngHide","aria-hidden",[],!1)}]).directive("ngValue",["$aria",function(a){return a.$$watchExpr("ngValue","aria-checked",f,!1)}]).directive("ngChecked",["$aria",function(a){return a.$$watchExpr("ngChecked","aria-checked",f,!1)}]).directive("ngRequired",["$aria",function(a){return a.$$watchExpr("ngRequired","aria-required",f,!1)}]).directive("ngModel",["$aria",function(a){function b(b,c,d,e){return a.config(c)&&!d.attr(b)&&(e||!g(d,f))}function c(a,b){return!b.attr("role")&&b.attr("type")===a&&"INPUT"!==b[0].nodeName}function d(a,b){var c=a.type,d=a.role;return"checkbox"===(c||d)||"menuitemcheckbox"===d?"checkbox":"radio"===(c||d)||"menuitemradio"===d?"radio":"range"===c||"progressbar"===d||"slider"===d?"range":""}return{restrict:"A",require:"ngModel",priority:200,compile:function(e,f){var g=d(f,e);return{pre:function(a,b,c,d){"checkbox"===g&&(d.$isEmpty=function(a){return a===!1})},post:function(d,e,f,h){function i(){return h.$modelValue}function j(a){var b=f.value==h.$viewValue;e.attr("aria-checked",b)}function k(){e.attr("aria-checked",!h.$isEmpty(h.$viewValue))}var l=b("tabindex","tabindex",e,!1);switch(g){case"radio":case"checkbox":c(g,e)&&e.attr("role",g),b("aria-checked","ariaChecked",e,!1)&&d.$watch(i,"radio"===g?j:k),l&&e.attr("tabindex",0);break;case"range":if(c(g,e)&&e.attr("role","slider"),a.config("ariaValue")){var m=!e.attr("aria-valuemin")&&(f.hasOwnProperty("min")||f.hasOwnProperty("ngMin")),n=!e.attr("aria-valuemax")&&(f.hasOwnProperty("max")||f.hasOwnProperty("ngMax")),o=!e.attr("aria-valuenow");m&&f.$observe("min",function(a){e.attr("aria-valuemin",a)}),n&&f.$observe("max",function(a){e.attr("aria-valuemax",a)}),o&&d.$watch(i,function(a){e.attr("aria-valuenow",a)})}l&&e.attr("tabindex",0)}!f.hasOwnProperty("ngRequired")&&h.$validators.required&&b("aria-required","ariaRequired",e,!1)&&f.$observe("required",function(){e.attr("aria-required",!!f.required)}),b("aria-invalid","ariaInvalid",e,!0)&&d.$watch(function(){return h.$invalid},function(a){e.attr("aria-invalid",!!a)})}}}}}]).directive("ngDisabled",["$aria",function(a){return a.$$watchExpr("ngDisabled","aria-disabled",f,!1)}]).directive("ngMessages",function(){return{restrict:"A",require:"?ngMessages",link:function(a,b,c,d){b.attr("aria-live")||b.attr("aria-live","assertive")}}}).directive("ngClick",["$aria","$parse",function(a,b){return{restrict:"A",compile:function(c,d){var e=b(d.ngClick,null,!0);return function(b,c,d){g(c,f)||(a.config("bindRoleForClick")&&!c.attr("role")&&c.attr("role","button"),a.config("tabindex")&&!c.attr("tabindex")&&c.attr("tabindex",0),a.config("bindKeypress")&&!d.ngKeypress&&c.on("keypress",function(a){function c(){e(b,{$event:a})}var d=a.which||a.keyCode;(32===d||13===d)&&b.$apply(c)}))}}}}]).directive("ngDblclick",["$aria",function(a){return function(b,c,d){!a.config("tabindex")||c.attr("tabindex")||g(c,f)||c.attr("tabindex",0)}}])}(window,window.angular),function(a,b,c){"use strict";function d(){function a(a,b){return a?e(a)?a.indexOf(b)>=0:a.hasOwnProperty(b):void 0}return["$animate",function(b){return{restrict:"AE",transclude:"element",priority:1,terminal:!0,require:"^^ngMessages",link:function(c,d,f,g,h){var i,j=d[0],k=f.ngMessage||f.when,l=f.ngMessageExp||f.whenExp,m=function(a){i=a?e(a)?a:a.split(/[\s,]+/):null,g.reRender()};l?(m(c.$eval(l)),c.$watchCollection(l,m)):m(k);var n,o;g.register(j,o={test:function(b){return a(i,b)},attach:function(){n||h(c,function(a){b.enter(a,null,d),n=a;var c=n.$$attachId=g.getAttachId();n.on("$destroy",function(){n&&n.$$attachId===c&&(g.deregister(j),o.detach())})})},detach:function(){if(n){var a=n;n=null,b.leave(a)}}})}}}]}var e=b.isArray,f=b.forEach,g=b.isString,h=b.element;b.module("ngMessages",[]).directive("ngMessages",["$animate",function(a){function b(a,b){return g(b)&&0===b.length||c(a.$eval(b))}function c(a){return g(a)?a.length:!!a}var d="ng-active",e="ng-inactive";return{require:"ngMessages",restrict:"AE",controller:["$element","$scope","$attrs",function(g,h,i){function j(a,b){for(var c=b,d=[];c&&c!==a;){var e=c.$$ngMessageNode;if(e&&e.length)return r[e];c.childNodes.length&&-1==d.indexOf(c)?(d.push(c),c=c.childNodes[c.childNodes.length-1]):c=c.previousSibling||c.parentNode}}function k(a,b,c){var d=r[c];if(m.head){var e=j(a,b);e?(d.next=e.next,e.next=d):(d.next=m.head,m.head=d)}else m.head=d}function l(a,b,c){var d=r[c],e=j(a,b);e?e.next=d.next:m.head=d.next}var m=this,n=0,o=0;this.getAttachId=function(){return o++};var p,q,r=this.messages={};this.render=function(j){j=j||{},p=!1,q=j;for(var k=b(h,i.ngMessagesMultiple)||b(h,i.multiple),l=[],n={},o=m.head,r=!1,s=0;null!=o;){s++;var t=o.message,u=!1;r||f(j,function(a,b){if(!u&&c(a)&&t.test(b)){if(n[b])return;n[b]=!0,u=!0,t.attach()}}),u?r=!k:l.push(t),o=o.next}f(l,function(a){a.detach()}),l.length!==s?a.setClass(g,d,e):a.setClass(g,e,d)},h.$watchCollection(i.ngMessages||i["for"],m.render),this.reRender=function(){p||(p=!0,h.$evalAsync(function(){p&&q&&m.render(q)}))},this.register=function(a,b){var c=n.toString();r[c]={message:b},k(g[0],a,c),a.$$ngMessageNode=c,n++,m.reRender()},this.deregister=function(a){var b=a.$$ngMessageNode;delete a.$$ngMessageNode,l(g[0],a,b),delete r[b],m.reRender()}}]}}]).directive("ngMessagesInclude",["$templateRequest","$document","$compile",function(a,b,c){return{restrict:"AE",require:"^^ngMessages",link:function(d,e,f){var g=f.ngMessagesInclude||f.src;a(g).then(function(a){c(a)(d,function(a){e.after(a);var c=h(b[0].createComment(" ngMessagesInclude: "+g+" "));e.after(c),e.remove()})})}}}]).directive("ngMessage",d()).directive("ngMessageExp",d())}(window,window.angular),function(a,b,c){"use strict";!function(){b.module("ngMaterial",["ng","ngAnimate","ngAria","material.core","material.core.gestures","material.core.layout","material.core.meta","material.core.theming.palette","material.core.theming","material.core.animate","material.components.autocomplete","material.components.backdrop","material.components.bottomSheet","material.components.button","material.components.card","material.components.chips","material.components.checkbox","material.components.colors","material.components.content","material.components.datepicker","material.components.dialog","material.components.divider","material.components.fabActions","material.components.fabShared","material.components.fabSpeedDial","material.components.fabToolbar","material.components.gridList","material.components.icon","material.components.input","material.components.list","material.components.menu","material.components.menuBar","material.components.navBar","material.components.panel","material.components.progressCircular","material.components.progressLinear","material.components.radioButton","material.components.select","material.components.showHide","material.components.sidenav","material.components.slider","material.components.sticky","material.components.subheader","material.components.swipe","material.components.switch","material.components.tabs","material.components.toast","material.components.toolbar","material.components.tooltip","material.components.virtualRepeat","material.components.whiteframe"])}(),function(){function a(a,b){if(b.has("$swipe")){var c="You are using the ngTouch module. \nAngular Material already has mobile click, tap, and swipe support... \nngTouch is not supported with Angular Material!";a.warn(c)}}function c(a,b){a.decorator("$$rAF",["$delegate",d]),b.theme("default").primaryPalette("indigo").accentPalette("pink").warnPalette("deep-orange").backgroundPalette("grey")}function d(a){return a.throttle=function(b){var c,d,e,f;return function(){c=arguments,f=this,e=b,d||(d=!0,a(function(){e.apply(f,Array.prototype.slice.call(c)),d=!1}))}},a}a.$inject=["$log","$injector"],c.$inject=["$provide","$mdThemingProvider"],d.$inject=["$delegate"],b.module("material.core",["ngAnimate","material.core.animate","material.core.layout","material.core.gestures","material.core.theming"]).config(c).run(a)}(),function(){function a(){return{restrict:"A",link:c}}function c(a,b,c){var d=c.mdAutoFocus||c.mdAutofocus||c.mdSidenavFocus;a.$watch(d,function(a){b.toggleClass("md-autofocus",a)})}b.module("material.core").directive("mdAutofocus",a).directive("mdAutoFocus",a).directive("mdSidenavFocus",a)}(),function(){function a(){function a(a){var b="#"===a[0]?a.substr(1):a,c=b.length/3,d=b.substr(0,c),e=b.substr(c,c),f=b.substr(2*c);return 1===c&&(d+=d,e+=e,f+=f),"rgba("+parseInt(d,16)+","+parseInt(e,16)+","+parseInt(f,16)+",0.1)"}function b(a){a=a.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);var b=a&&4===a.length?"#"+("0"+parseInt(a[1],10).toString(16)).slice(-2)+("0"+parseInt(a[2],10).toString(16)).slice(-2)+("0"+parseInt(a[3],10).toString(16)).slice(-2):"";return b.toUpperCase()}function c(a){return a.replace(")",", 0.1)").replace("(","a(")}function d(a){return a?a.replace("rgba","rgb").replace(/,[^\),]+\)/,")"):"rgb(0,0,0)"}return{rgbaToHex:b,hexToRgba:a,rgbToRgba:c,rgbaToRgb:d}}b.module("material.core").factory("$mdColorUtil",a)}(),function(){function a(a,c,d){function e(a){var b=h+"-"+a,c=g(b),d=c.charAt(0).toLowerCase()+c.substring(1);return f(a)?a:f(c)?c:f(d)?d:a}function f(a){return b.isDefined(k.style[a])}function g(a){return a.replace(j,function(a,b,c,d){return d?c.toUpperCase():c})}var h=a.vendorPrefix,i=/webkit/i.test(h),j=/([:\-_]+(.))/g,k=document.createElement("div"),l={isInputKey:function(a){return a.keyCode>=31&&a.keyCode<=90},isNumPadKey:function(a){return 3===a.location&&a.keyCode>=97&&a.keyCode<=105},isNavigationKey:function(a){var b=l.KEY_CODE,c=[b.SPACE,b.ENTER,b.UP_ARROW,b.DOWN_ARROW];return-1!=c.indexOf(a.keyCode)},KEY_CODE:{COMMA:188,SEMICOLON:186,ENTER:13,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,TAB:9,BACKSPACE:8,DELETE:46},CSS:{TRANSITIONEND:"transitionend"+(i?" webkitTransitionEnd":""),ANIMATIONEND:"animationend"+(i?" webkitAnimationEnd":""),TRANSFORM:e("transform"),TRANSFORM_ORIGIN:e("transformOrigin"),TRANSITION:e("transition"),TRANSITION_DURATION:e("transitionDuration"),ANIMATION_PLAY_STATE:e("animationPlayState"),ANIMATION_DURATION:e("animationDuration"),ANIMATION_NAME:e("animationName"),ANIMATION_TIMING:e("animationTimingFunction"),ANIMATION_DIRECTION:e("animationDirection")},MEDIA:{xs:"(max-width: 599px)","gt-xs":"(min-width: 600px)",sm:"(min-width: 600px) and (max-width: 959px)","gt-sm":"(min-width: 960px)",md:"(min-width: 960px) and (max-width: 1279px)","gt-md":"(min-width: 1280px)",lg:"(min-width: 1280px) and (max-width: 1919px)","gt-lg":"(min-width: 1920px)",xl:"(min-width: 1920px)",landscape:"(orientation: landscape)",portrait:"(orientation: portrait)",print:"print"},MEDIA_PRIORITY:["xl","gt-lg","lg","gt-md","md","gt-sm","sm","gt-xs","xs","landscape","portrait","print"]};return l}a.$inject=["$sniffer","$window","$document"],b.module("material.core").factory("$mdConstant",a)}(),function(){function a(a,c){function d(){return[].concat(s)}function e(){return s.length}function f(a){return s.length&&a>-1&&a<s.length}function g(a){return a?f(m(a)+1):!1}function h(a){return a?f(m(a)-1):!1}function i(a){return f(a)?s[a]:null}function j(a,b){return s.filter(function(c){return c[a]===b})}function k(a,c){return a?(b.isNumber(c)||(c=s.length),s.splice(c,0,a),m(a)):-1}function l(a){n(a)&&s.splice(m(a),1)}function m(a){return s.indexOf(a)}function n(a){return a&&m(a)>-1}function o(){return s.length?s[0]:null}function p(){return s.length?s[s.length-1]:null}function q(a,d,e,g){e=e||r;for(var h=m(d);;){if(!f(h))return null;var i=h+(a?-1:1),j=null;if(f(i)?j=s[i]:c&&(j=a?p():o(),i=m(j)),null===j||i===g)return null;if(e(j))return j;b.isUndefined(g)&&(g=i),h=i}}var r=function(){return!0};a&&!b.isArray(a)&&(a=Array.prototype.slice.call(a)),c=!!c;var s=a||[];return{items:d,count:e,inRange:f,contains:n,indexOf:m,itemAt:i,findBy:j,add:k,remove:l,first:o,last:p,next:b.bind(null,q,!1),previous:b.bind(null,q,!0),hasPrevious:h,hasNext:g}}b.module("material.core").config(["$provide",function(b){b.decorator("$mdUtil",["$delegate",function(b){return b.iterator=a,b}])}])}(),function(){function a(a,c,d){function e(a){var c=m[a];b.isUndefined(c)&&(c=m[a]=f(a));var d=o[c];return b.isUndefined(d)&&(d=g(c)),d}function f(b){return a.MEDIA[b]||("("!==b.charAt(0)?"("+b+")":b)}function g(a){var b=n[a];return b||(b=n[a]=d.matchMedia(a)),b.addListener(h),o[b.media]=!!b.matches}function h(a){c.$evalAsync(function(){o[a.media]=!!a.matches})}function i(a){return n[a]}function j(b,c){for(var d=0;d<a.MEDIA_PRIORITY.length;d++){var e=a.MEDIA_PRIORITY[d];if(n[m[e]].matches){var f=l(b,c+"-"+e);if(b[f])return b[f]}}return b[l(b,c)]}function k(c,d,e){var f=[];return c.forEach(function(c){