vcomply-workflow-engine 3.1.30 → 3.1.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -329,7 +329,7 @@ export class WorkflowRiskComponent {
329
329
  this.riskForm.groupsList = this.setList(this.groupsList, res?.usergroup_ids, '_id');
330
330
  this.riskForm.mitigationDescriptionPlan = res.mitigationDescriptionPlan;
331
331
  const type = this.setCategoryType(res.category_type[0]);
332
- const categoryIndex = this.categoryList[type]?.data.findIndex((element) => element.category_id == res.category[0]);
332
+ const categoryIndex = this.categoryList[type]?.data?.findIndex((element) => element.category_id == res.category[0]);
333
333
  if (categoryIndex != -1) {
334
334
  this.riskForm.category = {
335
335
  type,
@@ -380,6 +380,7 @@ export class WorkflowRiskComponent {
380
380
  ...this.getCurrentlyLoggedInUser(),
381
381
  ]));
382
382
  }
383
+ this.rcSelected.emit(1);
383
384
  this.saveSelectedList(res.linkedGrcDetails);
384
385
  this.getOtherGRCTabCount({ rc_ids: '' });
385
386
  this.getOtherGRCObjects({ rc_ids: '' });
@@ -411,7 +412,7 @@ export class WorkflowRiskComponent {
411
412
  activatedOptions.push('RISK_LABEL');
412
413
  }
413
414
  if (this.riskForm.selectedGRCObjects?.length) {
414
- activatedOptions.push('GRC');
415
+ activatedOptions.push('GRC_OBJECTS');
415
416
  this.riskForm.GRC = true;
416
417
  }
417
418
  this.populateOption.emit(activatedOptions);
@@ -901,6 +902,8 @@ export class WorkflowRiskComponent {
901
902
  },
902
903
  riskLabelValue: 1,
903
904
  addRiskLabel: false,
905
+ GRC: false,
906
+ selectedGRCObjects: [],
904
907
  };
905
908
  this.nonRemovableUsersList = [];
906
909
  this.organizationId = this.authService.getOrganizationId();
@@ -909,6 +912,7 @@ export class WorkflowRiskComponent {
909
912
  this.date = new Date();
910
913
  this.submitted = false;
911
914
  this.refreshForm.emit(true);
915
+ this.rcSelected.emit(false);
912
916
  this.frequencyDetails = {
913
917
  frequency: '',
914
918
  started_at: '',
@@ -1547,10 +1551,10 @@ export class WorkflowRiskComponent {
1547
1551
  }
1548
1552
  }
1549
1553
  WorkflowRiskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WorkflowRiskComponent, deps: [{ token: i1.AddRiskService }, { token: i2.AuthService }, { token: i3.UiKitService }, { token: i4.SnackBarService }, { token: i5.FrequencyService }, { token: i6.GrcService }, { token: i7.Configurations, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1550
- WorkflowRiskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: WorkflowRiskComponent, selector: "app-workflow-risk", inputs: { feature: "feature", mode: "mode", riskId: "riskId", defaultRiskType: "defaultRiskType", moveToRegisterMode: "moveToRegisterMode", secondaryOpenPortal: "secondaryOpenPortal", openedFrom: "openedFrom" }, outputs: { showConfirmationAlert: "showConfirmationAlert", pickerChanged: "pickerChanged", populateOption: "populateOption", closeWorkflow: "closeWorkflow", disconnectRefresh: "disconnectRefresh", refreshForm: "refreshForm", hideElementsFromMoreOptions: "hideElementsFromMoreOptions", rcSelected: "rcSelected" }, ngImport: i0, template: "<div class=\"workflw-risk\" *ngIf=\"!showSmiley\">\r\n <!-- Risk Type -->\r\n <div class=\"form-group-row\" [class.active]=\"false\" [class.disabled]=\"false\">\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/type.svg\"\r\n alt=\"im\"\r\n *ngIf=\"true\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"false\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Type <span class=\"required\">*</span></label\r\n >\r\n <div class=\"risk-type-field\">\r\n <div\r\n class=\"type-item\"\r\n [class.active]=\"riskForm?.riskType === 'NORMAL'\"\r\n >\r\n <button\r\n [class.disabled]=\"!riskTypeChangeAllowed\"\r\n (click)=\"changeRisk('NORMAL')\"\r\n >\r\n ADD TO RISK REGISTER\r\n </button>\r\n <i\r\n class=\"icons info\"\r\n [appTooltip]=\"\r\n 'This option lets you add a risk directly to the Risk Register. The risk owners will receive an alert and they can begin the the risk assessment process.'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe932;</i\r\n >\r\n </div>\r\n <div\r\n class=\"type-item\"\r\n [class.active]=\"riskForm?.riskType === 'REPORTED'\"\r\n >\r\n <button\r\n [class.disabled]=\"!riskTypeChangeAllowed\"\r\n (click)=\"changeRisk('REPORTED')\"\r\n >\r\n REPORT A RISK\r\n </button>\r\n <i\r\n class=\"icons info\"\r\n [appTooltip]=\"\r\n 'This options lets you report a risk and assign it to the risk owners. The risk owners will have the option to either add the risk to the Risk Register or flag it for a follow-up at a later date.'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe932;</i\r\n >\r\n </div>\r\n <span class=\"background-glider\"></span>\r\n </div>\r\n <p *ngIf=\"false\" class=\"error-message\">Add a risk type</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Name -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'name' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm.title\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n alt=\"im\"\r\n *ngIf=\"\r\n riskForm?.title?.trim()?.length === 0 || activeSelector === 'name'\r\n \"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.title?.trim()?.length > 0 && activeSelector !== 'name'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >WHAT RISK WOULD YOU LIKE TO MANAGE?\r\n <span class=\"required\">*</span></label\r\n >\r\n <input\r\n spaceTrim\r\n type=\"text\"\r\n (keydown)=\"activeSelector = 'name'\"\r\n (focusin)=\"activateSelector('name', true)\"\r\n (focusout)=\"activateSelector('name', false)\"\r\n [(ngModel)]=\"riskForm.title\"\r\n placeholder=\"Add a risk name\"\r\n *ngIf=\"riskForm?.title?.trim() == '' || activeSelector === 'name'\"\r\n />\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"riskForm?.title?.trim() != '' && activeSelector !== 'name'\"\r\n >\r\n <div class=\"chip-container\">\r\n <span class=\"value\">{{ riskForm.title }}</span>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n (click)=\"activateSelector('name', true)\"\r\n type=\"button\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p *ngIf=\"submitted && !riskForm.title\" class=\"error-message\">\r\n Add a risk name\r\n </p>\r\n <vcomply-editor\r\n [(ngModel)]=\"riskForm.description\"\r\n [editorConfig]=\"description\"\r\n (clickOutside)=\"checkDescription()\"\r\n ></vcomply-editor>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n riskForm.riskType === 'REPORTED' &&\r\n !riskForm?.description?.trim()?.length\r\n \"\r\n class=\"error-message\"\r\n >\r\n Add a risk description\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Owner -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'owner'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'owner' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.ownersList?.length > 0\">\r\n <img\r\n *ngIf=\"riskForm?.ownersList?.length == 0 || activeSelector === 'owner'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/im-creating.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.ownersList?.length > 0 && activeSelector !== 'owner'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >WHO IS RESPONSIBLE FOR MANAGING THIS RISK?\r\n <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the person that is responsible for managing the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <div class=\"select\" *ngIf=\"riskForm?.ownersList?.length == 0\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('owner', true)\"\r\n placeholder=\"Select Risk Owner(s)\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n riskForm?.ownersList?.length > 0 || riskForm?.groupsList.length > 0\r\n \"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"!featureflag_groups\"\r\n >\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerList\r\n \"\r\n >\r\n <ng-container *ngFor=\"let owner of ownerList?.slice(0, 1)\">\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"!nonRemovableUsersList.includes(owner?.member_id)\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"owner?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ owner?.member_name }}</span\r\n >\r\n </ng-container>\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverOwner.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"riskForm?.ownersList?.length > 1\"\r\n >\r\n +{{ riskForm?.ownersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" *ngIf=\"!featureflag_groups\" [class.more-one]=\"riskForm?.ownersList?.length>1\" [class.plus]=\"riskForm?.ownersList?.length>2\">\r\n <ng-container *ngIf=\"(riskForm?.ownersList|shortMerge : nonRemovableUsersList) as ownerList\">\r\n <span class=\"chip\" *ngFor=\"let owner of ownerList?.slice(0,2)\"><i class=\"icons\" *ngIf=\"!nonRemovableUsersList.includes(owner?.member_id)\" (click)=\"remove('owner',owner)\">&#xe90d;</i> {{owner?.member_name}}</span>\r\n <button class=\"count\" *ngIf=\"riskForm?.ownersList?.length > 2\" type=\"button\" appPopover (click)=\"popoverOwner.popover()\" placement=\"right\">+{{riskForm?.ownersList?.slice(2).length}}</button>\r\n </ng-container>\r\n </div> -->\r\n\r\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(\r\n riskForm?.ownersList[0]?.member_id\r\n )\r\n \"\r\n (click)=\"remove('owner', riskForm?.ownersList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.ownersList[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.ownersList[0]?.member_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\r\n appPopover\r\n (click)=\"popoverUser.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.ownersList.length > 1\"\r\n >\r\n +{{ riskForm?.ownersList.length - 1 }}\r\n </button>\r\n </div>\r\n <span\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"riskForm?.groupsList.length > 0\"\r\n >&</span\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"riskForm?.groupsList.length > 0\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('Ownergroup', riskForm?.groupsList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.groupsList[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.groupsList[0]?.group_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"group.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.groupsList?.length > 1\"\r\n >\r\n +{{ riskForm?.groupsList?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" *ngIf=\"featureflag_groups\">\r\n <div class=\"chip-inner\" >\r\n <i class=\"icons cross vx-mr-1\" *ngIf=\"!nonRemovableUsersList.includes(riskForm?.ownersList[0]?.member_id)\" (click)=\"remove('owner',riskForm?.ownersList[0])\" >&#xe90d;</i>\r\n <span class=\"chip\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{riskForm?.ownersList[0]?.member_name}}</span></span>\r\n <button *ngIf=\"riskForm?.ownersList.length > 1\" class=\"count user\" appPopover (click)=\"popoverUser.popover()\" placement=\"right\">+{{riskForm?.ownersList.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"riskForm?.groupsList.length > 0\" >&</span>\r\n <div class=\"chip-inner\" *ngIf=\"riskForm?.groupsList.length > 0\" >\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove('Ownergroup', riskForm?.groupsList[0])\" >&#xe90d;</i>\r\n <span class=\"chip\" [appTooltip]=\"riskForm?.groupsList[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\"><span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{riskForm?.groupsList[0]?.group_name}}</span></span>\r\n <button *ngIf=\"riskForm?.groupsList?.length > 1\" class=\"count\" appPopover (click)=\"group.popover()\" placement=\"right\">+{{riskForm?.groupsList?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'owner'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('owner', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.ownersList?.length === 0\"\r\n class=\"error-message\"\r\n >\r\n Select Owner(s) for this risk.\r\n </p>\r\n <app-popover #popoverOwner [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerPop\r\n \"\r\n >\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of ownerPop | slice : 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(owner?.member_id)\r\n \"\r\n class=\"icons\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </app-popover>\r\n <app-popover #popoverUser [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerPop\r\n \"\r\n >\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of ownerPop | slice : 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(owner?.member_id)\r\n \"\r\n class=\"icons\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </app-popover>\r\n <app-popover #group [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of riskForm?.groupsList | slice : 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('Ownergroup', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.group_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Responsibility Center -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'rc'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'rc' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"riskForm?.responsibilityCentersList?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n riskForm?.responsibilityCentersList?.length == 0 ||\r\n activeSelector === 'rc'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n riskForm?.responsibilityCentersList?.length > 0 &&\r\n activeSelector !== 'rc'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Responsibility Center <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'Responsibility Centers represent the corporate and operational infrastructure of an organization. One or more Responsibility Centers can be exposed to a risk and accordingly, the risk must be assessed against each Responsibility Center.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length == 0\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('rc', true)\"\r\n placeholder=\"Select Responsibility Center(s)\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length > 0\"\r\n >\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <ng-container\r\n *ngFor=\"\r\n let rcName of riskForm?.responsibilityCentersList?.slice(0, 1)\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('rc', rcName)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"rcName.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rcName.item_name }}</span\r\n >\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverRC.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length > 1\"\r\n >\r\n +{{ riskForm?.responsibilityCentersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" [class.more-one]=\"riskForm?.responsibilityCentersList?.length>1\" [class.plus]=\"riskForm?.responsibilityCentersList?.length>2\">\r\n <span class=\"chip\" *ngFor=\"let rcName of riskForm?.responsibilityCentersList?.slice(0,2)\"><i class=\"icons\" (click)=\"remove('rc',rcName)\">&#xe90d;</i> {{rcName.item_name}}</span>\r\n <button class=\"count\" *ngIf=\"riskForm?.responsibilityCentersList?.length > 2\" type=\"button\" appPopover (click)=\"popoverRC.popover()\" placement=\"right\">+{{riskForm?.responsibilityCentersList?.slice(2).length}}</button>\r\n </div> -->\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'rc'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('rc', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.responsibilityCentersList?.length == 0\"\r\n class=\"error-message\"\r\n >\r\n Assign this risk to a Responsibility Center(s)\r\n </p>\r\n <app-popover #popoverRC [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rcName of riskForm?.responsibilityCentersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('rc', rcName)\">&#xe90d;</i>\r\n {{ rcName.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Frequency -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'frequency'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'frequency' &&\r\n sideSelectorElements?.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.riskType !== 'REPORTED'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.category?.selectedCategory\">\r\n <img\r\n *ngIf=\"\r\n !riskForm?.frequency_details?.frequency ||\r\n riskForm?.frequency_details?.frequency === '' ||\r\n activeSelector === 'frequency'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n (riskForm?.frequency_details?.frequency &&\r\n riskForm?.frequency_details?.frequency !== '') ||\r\n activeSelector !== 'frequency'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >HOW OFTEN DOES THIS RISK NEED TO BE REASSESSED?\r\n <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'The option lets you specify the risk reassessment frequency.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div\r\n class=\"select\"\r\n *ngIf=\"!riskForm?.frequency_details?.frequency\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <input\r\n type=\"text\"\r\n placeholder=\"Set a Reassessment Frequency\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected button-sec\"\r\n *ngIf=\"riskForm?.frequency_details?.frequency\"\r\n >\r\n <span\r\n class=\"chip\"\r\n [appTooltip]=\"frequencyPlaceholder\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ frequencyPlaceholder }}</span\r\n >\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <div class=\"vx-mt-1\">\r\n <app-cs-switch\r\n [ngValue]=\"riskForm?.enableAllFutureBusinessCycle\"\r\n (ngValueChange)=\"riskForm.enableAllFutureBusinessCycle = $event\"\r\n >DO YOU WANT THIS TO SHOW IN ALL FUTURE BUSINESS CYCLES?\r\n </app-cs-switch>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n (!riskForm?.frequency_details?.frequency ||\r\n riskForm?.frequency_details?.frequency === '')\r\n \"\r\n class=\"error-message\"\r\n >\r\n Please select the frequency of occurrence for this risk.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Category -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'category'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'category' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.category?.selectedCategory\">\r\n <img\r\n *ngIf=\"\r\n !riskForm?.category?.selectedCategory || activeSelector === 'category'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.category?.selectedCategory && activeSelector !== 'category'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Category\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"'Risk Categories are used to group similar risks.'\"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div class=\"select\" *ngIf=\"!riskForm?.category?.selectedCategory\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('category', true)\"\r\n placeholder=\"Select Risk Category\"\r\n readonly\r\n />\r\n </div>\r\n <div class=\"selected\" *ngIf=\"riskForm?.category?.selectedCategory\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('category', riskForm.category.selectedCategory)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.category?.selectedCategory?.category_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.category?.selectedCategory?.category_name }}</span\r\n >\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove('category',riskForm.category.selectedCategory)\">&#xe90d;</i>{{riskForm?.category?.selectedCategory?.category_name}}</span>\r\n </div> -->\r\n <button\r\n *ngIf=\"activeSelector !== 'category'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('category', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"riskForm?.categoryCustomTags?.length > 0\">\r\n <div\r\n class=\"vx-form-group\"\r\n *ngFor=\"let tag of riskForm.categoryCustomTags\"\r\n >\r\n <label class=\"vx-control-panel\">{{ tag.custom_tag_name }}</label>\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"tag.custom_tag_value\"\r\n [placeholder]=\"tag.custom_tag_name\"\r\n />\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- Assessment Deadline -->\r\n <!-- !settingsInfo?.assessment_deadline_enable && riskForm?.riskType !== 'REPORTED' && ((currentTimeStamp < editDetails?.assessment_date_timestamp) || !editDetails?.IfAssessmentDone ) -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'assessment'\"\r\n id=\"deadline\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'assessment' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"false\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.assessment_deadline_days >= 1\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n *ngIf=\"\r\n riskForm?.assessment_deadline_days < 1 ||\r\n activeSelector === 'assessment'\r\n \"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.assessment_deadline_days >= 1 &&\r\n activeSelector !== 'assessment'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Assessment Deadline <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the date that the inherent risk assessment must be completed by.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div class=\"input\">\r\n <span class=\"text\">Set Number of days</span>\r\n <div class=\"input-group counter\">\r\n <button (click)=\"changeRiskAssessment('subtract')\">\r\n <i class=\"icons\">&#xea53;</i>\r\n </button>\r\n <input\r\n type=\"number\"\r\n [(ngModel)]=\"riskForm.assessment_deadline_days\"\r\n (focusin)=\"activateSelector('assessment', true)\"\r\n (focusout)=\"activateSelector('assessment', false)\"\r\n name=\"riskAssessmentDeadline\"\r\n validateAssessment\r\n #deadline=\"ngModel\"\r\n (ngModelChange)=\"changeRiskAssessmentDeadline($event)\"\r\n onkeydown=\"return event.keyCode !== 190\"\r\n min=\"0\"\r\n oninput=\"this.value = Math.abs(this.value)\"\r\n />\r\n <button (click)=\"changeRiskAssessment('add')\">\r\n <i class=\"icons\">&#xe915;</i>\r\n </button>\r\n </div>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.assessment_deadline_days < 1\"\r\n class=\"error-message\"\r\n >\r\n Enter a value greater than 0.\r\n </p>\r\n <label\r\n class=\"vx-control-panel\"\r\n *ngIf=\"riskForm?.assessment_deadline_days >= 1\"\r\n >\r\n This risk assessment needs to be completed by\r\n {{ date | date : \"dd MMM yyyy\" }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Overseer -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'overseer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'overseer' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm.addOverseer\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.overseersList?.length > 0\">\r\n <img\r\n *ngIf=\"\r\n riskForm?.overseersList?.length == 0 || activeSelector === 'overseer'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length > 0 && activeSelector !== 'overseer'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Oversight<i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the person that is responsible for overseeing the risk but who is not responsible for managing the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div\r\n class=\"select\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length == 0 &&\r\n riskForm?.overseersGroupList?.length == 0\r\n \"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('overseer', true)\"\r\n placeholder=\"Select Risk Oversight(s)\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length > 0 ||\r\n riskForm?.overseersGroupList.length > 0\r\n \"\r\n >\r\n <ng-container *ngIf=\"!featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <ng-container\r\n *ngFor=\"let owner of riskForm?.overseersList?.slice(0, 1)\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('overseer', owner)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"owner.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ owner.member_name }}</span\r\n >\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverOverseer.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersList?.length > 1\"\r\n >\r\n +{{ riskForm?.overseersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('overseer', riskForm?.overseersList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.overseersList[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n *ngIf=\"riskForm?.overseersList.length > 0\"\r\n >{{ riskForm?.overseersList[0]?.member_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\r\n appPopover\r\n (click)=\"overseer.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersList.length > 1\"\r\n >\r\n +{{ riskForm?.overseersList.length - 1 }}\r\n </button>\r\n </div>\r\n <span\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n riskForm?.overseersList.length > 0 &&\r\n riskForm?.overseersGroupList.length > 0\r\n \"\r\n >&</span\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"riskForm?.overseersGroupList.length > 0\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"\r\n remove('overseergroup', riskForm?.overseersGroupList[0])\r\n \"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.overseersGroupList[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.overseersGroupList[0]?.group_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"overseerGroup.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersGroupList?.length > 1\"\r\n >\r\n +{{ riskForm?.overseersGroupList?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n <button\r\n *ngIf=\"activeSelector !== 'overseer'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('overseer', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <app-popover #popoverOverseer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let owner of riskForm?.overseersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseer', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let owner of riskForm?.overseersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseer', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of riskForm?.overseersGroupList | slice : 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseergroup', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.group_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Mitigation Priority -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm.addMitigation\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm.mitigation\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/priority.svg\"\r\n *ngIf=\"!riskForm.mitigation\"\r\n alt=\"\"\r\n />\r\n <!-- <svg viewBox=\"25 25 50 50\" class=\"edit-loader\">\r\n <circle cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke=\"#1e5dd3\" stroke-width=\"3\" class=\"loader-path\"></circle>\r\n </svg> -->\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"riskForm.mitigation\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Mitigation Priority\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This sets the priority level for the mitigation of each risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n\r\n <cs-select\r\n [(ngModel)]=\"riskForm.mitigation\"\r\n [placeholder]=\"'Select a mitigation priority'\"\r\n name=\"riskForm.mitigation\"\r\n >\r\n <cs-option\r\n *ngFor=\"let data of mitigationDetails\"\r\n [value]=\"data?.mitigation_id\"\r\n [color]=\"data?.mitigation_color\"\r\n >\r\n {{ data.mitigation_name }}\r\n </cs-option>\r\n </cs-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Recommended Mitigation Plan -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n *ngIf=\"riskForm?.addMitigationPlan\"\r\n >\r\n <div\r\n id=\"riskSpace\"\r\n class=\"left\"\r\n [class.checked]=\"(riskForm.mitigationDescriptionPlan | spaceTrim) !== ''\"\r\n >\r\n <img\r\n *ngIf=\"(riskForm.mitigationDescriptionPlan | spaceTrim) === ''\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/objectives.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"(riskForm.mitigationDescriptionPlan | spaceTrim) !== ''\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label for=\"\" class=\"vx-control-panel\"\r\n >Recommended Mitigation Plans<link\r\n rel=\"manifest\"\r\n href=\"./manifest.json\"\r\n />\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'Specify the mitigation plan that can be undertaken to mitigate the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <vcomply-editor\r\n [(ngModel)]=\"riskForm.mitigationDescriptionPlan\"\r\n [editorConfig]=\"mitigationDescriptionPlan\"\r\n (clickOutside)=\"checkMitigationPlan()\"\r\n >\r\n </vcomply-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Label -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.addRiskLabel\"\r\n >\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <!-- <img *ngIf=\"true\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\" alt=\"\" /> -->\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"true\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >RISK LABEL\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"'Risk label info text here...'\"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <cs-select\r\n [(ngModel)]=\"riskForm.riskLabelValue\"\r\n [placeholder]=\"'Select a risk label'\"\r\n name=\"riskForm?.riskLabelValue\"\r\n >\r\n <cs-option *ngFor=\"let data of riskLabelList\" [value]=\"data?.value\">\r\n {{ data?.name }}\r\n </cs-option>\r\n </cs-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Link with GRC -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'GRC'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'GRC' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.GRC\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.ownersList?.length > 0\">\r\n <img\r\n *ngIf=\"riskForm?.ownersList?.length == 0 || activeSelector === 'owner'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/link-items.svg alt=\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.ownersList?.length > 0 && activeSelector !== 'owner'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">LINK GRC OBJECT(S) </label>\r\n <div class=\"select\" *ngIf=\"riskForm?.selectedGRCObjects?.length === 0\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('GRC', true)\"\r\n placeholder=\"Select GRC object(s) to link with this risk.\"\r\n readonly\r\n />\r\n </div>\r\n <ng-container *ngIf=\"riskForm?.selectedGRCObjects?.length\">\r\n <ng-container\r\n *ngFor=\"\r\n let selectedGRC of grcDataWithTypes | keyvalue : originalOrder;\r\n let i = index\r\n \"\r\n >\r\n <div *ngIf=\"selectedGRC?.value?.length\" class=\"selected\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <ng-container\r\n *ngFor=\"let grc of selectedGRC?.value?.slice(0, 1)\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('GRC', grc, 0)\"\r\n >&#xe9ae;</i\r\n >\r\n <div\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >\r\n {{ selectedGRC?.key | titlecase }}\r\n </div>\r\n\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"grc?.name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ grc?.name }}</span\r\n >\r\n </ng-container>\r\n\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverGRC.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"selectedGRC?.value?.length > 1\"\r\n >\r\n +{{ selectedGRC?.value.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'GRC'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"\r\n selectedGRCTab = selectedGRC?.value[0]?.type;\r\n getOtherGRCObjects();\r\n activateSelector('GRC', true)\r\n \"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <app-popover #popoverGRC [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let grc of selectedGRC?.value | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('GRC', grc, j + 1)\"\r\n >&#xe90d;</i\r\n >\r\n {{ grc.name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<app-responsibility-centers-list\r\n *ngIf=\"activeSelector === 'rc'\"\r\n [responsibilityCentersList]=\"responsibilityCentersList\"\r\n [selectedResponsibilityCenters]=\"riskForm.responsibilityCentersList\"\r\n [rcIdKey]=\"'rc_id'\"\r\n (saveSelectedList)=\"saveSelectedRCList($event)\"\r\n (closeRcList)=\"activateSelector('rc', false)\"\r\n [singularText]=\"'Responsibility Center selected'\"\r\n [pluralText]=\"'Responsibility Centers selected'\"\r\n>\r\n</app-responsibility-centers-list>\r\n\r\n<app-owner-list\r\n *ngIf=\"!featureflag_groups && activeSelector === 'owner'\"\r\n [usersList]=\"ownersList\"\r\n [selectedUsers]=\"riskForm.ownersList\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedOwnersList($event)\"\r\n [nonRemovableUsersList]=\"nonRemovableUsersList\"\r\n (closeUsersList)=\"activateSelector('owner', false)\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n></app-owner-list>\r\n\r\n<user-group-list\r\n *ngIf=\"featureflag_groups && activeSelector === 'owner'\"\r\n [userlist]=\"ownersList\"\r\n [selectedUsers]=\"riskForm.ownersList\"\r\n [groupList]=\"groupsList\"\r\n [nonRemovableUserIds]=\"nonRemovableUsersList\"\r\n (save)=\"saveSelectedOwnersList($event)\"\r\n [selectedGroups]=\"riskForm.groupsList\"\r\n (cancel)=\"activateSelector('owner', false)\"\r\n [groupEnabled]=\"true\"\r\n [featureflag]=\"featureflag_groups\"\r\n>\r\n</user-group-list>\r\n\r\n<user-group-list\r\n *ngIf=\"featureflag_groups && activeSelector === 'overseer'\"\r\n [userlist]=\"overseersList\"\r\n [selectedUsers]=\"riskForm.overseersList\"\r\n [groupList]=\"overseersGroupList\"\r\n (save)=\"saveSelectedOverseersList($event)\"\r\n [selectedGroups]=\"riskForm.overseersGroupList\"\r\n (cancel)=\"activateSelector('overseer', false)\"\r\n [groupEnabled]=\"true\"\r\n [featureflag]=\"featureflag_groups\"\r\n>\r\n</user-group-list>\r\n\r\n<app-category-list\r\n *ngIf=\"activeSelector === 'category'\"\r\n [categoryList]=\"categoryList\"\r\n [selectedCategory]=\"riskForm.category\"\r\n (saveSelectedCategory)=\"saveSelectedCategory($event)\"\r\n (closeCategoriesList)=\"activateSelector('category', false)\"\r\n></app-category-list>\r\n<app-owner-list\r\n *ngIf=\"!featureflag_groups && activeSelector === 'overseer'\"\r\n [usersList]=\"overseersList\"\r\n [selectedUsers]=\"riskForm.overseersList\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemNameKey]=\"'member_name'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n (saveSelectedList)=\"saveSelectedOverseersList($event)\"\r\n (closeUsersList)=\"activateSelector('overseer', false)\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n>\r\n</app-owner-list>\r\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n\r\n<app-frequency-dialog-container\r\n *ngIf=\"activeSelector === 'frequency'\"\r\n [frequencyDetails]=\"frequencyDetails\"\r\n (selectedFrequency)=\"frequencyData($event)\"\r\n (closeFrequency)=\"activateSelector('frequency', false)\"\r\n>\r\n</app-frequency-dialog-container>\r\n\r\n<app-grc-object-list\r\n *ngIf=\"activeSelector === 'GRC'\"\r\n [grcObject]=\"grcList\"\r\n [selectedGRC]=\"riskForm.selectedGRCObjects | refDisconnect\"\r\n [loader]=\"grcLoader\"\r\n [tableCard]=\"otherGRCCard | refDisconnect\"\r\n [selectedTab]=\"selectedGRCTab\"\r\n (getOtherGRCObjects)=\"getOtherGRCObjects($event)\"\r\n (saveOtherGRC)=\"saveSelectedList($event)\"\r\n (closeOtherGRC)=\"activateSelector('GRC', false)\"\r\n></app-grc-object-list>\r\n\r\n<app-smiley-dialog-inline\r\n *ngIf=\"showSmiley\"\r\n [message]=\"smileyMessage\"\r\n [actionButtons]=\"actionButtons\"\r\n (action)=\"action($event)\"\r\n (closeSmiley)=\"closeSmiley($event)\"\r\n>\r\n</app-smiley-dialog-inline>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .workflw-risk{display:block;position:relative}\n", "@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.withBtn:after{display:none}::ng-deep .selectBoxEnable.withBtn button.setBtn{background:transparent;border-radius:0;border:none;min-width:98px}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#ffffff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#ffffff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#ffffff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group vcomply-editor{margin-top:8px;display:block}::ng-deep .vx-form-group vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#ffffff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:208px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#ffffff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#ffffff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#ffffff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}dp-date-picker input:focus{outline:none}dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}dp-date-picker .dp-popup dp-day-calendar,dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}dp-date-picker .dp-popup dp-day-calendar button,dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000000;display:inline-flex}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:rgba(0,0,0,.3)}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#ffffff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0%,#747576 1%,#747576 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#ffffff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0%,#f31c39 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0%,#34aa44 1%,#34aa44 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0%,#1e5dd3 1%,#1e5dd3 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0%,#f6882f 1%,#f6882f 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0%,#7aa6f7 1%,#7aa6f7 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}\n"], dependencies: [{ kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "component", type: i9.MarxEditorComponent, selector: "vcomply-editor", inputs: ["editorConfig"], outputs: ["comment", "sendSavedFiles", "popup"] }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i11.CsSwitchComponent, selector: "app-cs-switch", inputs: ["disabled", "ngValue", "value", "tooltipMessage", "position"], outputs: ["ngValueChange"] }, { kind: "directive", type: i12.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i13.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i14.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i15.CsSelectComponent, selector: "cs-select", inputs: ["dropdownLabel", "dropdownSubLabel", "isRequired", "placeholder", "setMaxWidth"], outputs: ["valueChanged"] }, { kind: "component", type: i16.CsOptionComponent, selector: "cs-option", inputs: ["value", "color", "backgroundColor", "optionTooltip"] }, { kind: "component", type: i17.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i18.SmileyDialogInlineComponent, selector: "app-smiley-dialog-inline", inputs: ["message", "actionButtons"], outputs: ["action", "closeSmiley"] }, { kind: "directive", type: i19.ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { kind: "component", type: i20.UserGroupListComponent, selector: "user-group-list", inputs: ["groupEnabled", "panelTitle", "singleSelect", "selectedReviewer", "featureflag", "reviewerWorkflowType", "mode", "fieldType", "fromResponsibility", "assignorId", "assigneeIds", "reviewerIds", "overseerIds", "FromProgram", "userListInfo", "groupListInfo", "fromApprovalWorkflow", "approvalType", "showFutureUsersSwitch", "futureUsersWillSelect", "isAllDisabled", "isGroupTabShow", "disabledIds", "nonRemovableUserIds", "allUserSelectedDisabled", "nonRemovableGroupIds", "loading", "userlist", "selectedUsers", "defaultSelectedUsers", "userType", "groupList", "selectedGroups"], outputs: ["save", "cancel", "reviewerWorkflowTypeChange", "fetchUserData"] }, { kind: "component", type: i21.ResponsibilityCentersListComponent, selector: "app-responsibility-centers-list", inputs: ["responsibilityCentersList", "selectedResponsibilityCenters", "rcIdKey", "radioSelection", "pluralText", "singularText"], outputs: ["saveSelectedList", "closeRcList"] }, { kind: "component", type: i22.GrcObjectListComponent, selector: "app-grc-object-list", inputs: ["grcObject", "currentPage", "loader", "tableCard", "selectedTab", "cardLoader", "selectedGRC"], outputs: ["saveOtherGRC", "closeOtherGRC", "getOtherGRCObjects"] }, { kind: "component", type: i23.OwnerListComponent, selector: "app-owner-list", inputs: ["usersList", "selectedUsers", "userIdKey", "itemNameKey", "itemEmailKey", "showWorkflow", "listHeading", "searchPlaceholder", "pluralText", "singularText", "reviewerWorkflowType", "mode", "noDataText", "workflowList", "workflowText", "disabledIds", "nonRemovableUsersList", "fromResponsibility", "assignorId", "assigneeIds", "reviewerIds", "overseerIds"], outputs: ["saveSelectedList", "closeUsersList", "reviewerWorkflowTypeChange"] }, { kind: "component", type: i24.CategoryListComponent, selector: "app-category-list", inputs: ["categoryList", "selectedCategory"], outputs: ["saveSelectedCategory", "closeList", "closeCategoriesList"] }, { kind: "directive", type: i25.ScrollInViewDirective, selector: "[appScrollInView]", inputs: ["appScrollInView"] }, { kind: "directive", type: i26.spaceTrimDirective, selector: "[spaceTrim]" }, { kind: "component", type: i27.FrequencyDialogContainerComponent, selector: "app-frequency-dialog-container", inputs: ["mode", "frequencyDetails"], outputs: ["selectedFrequency", "closeFrequency"] }, { kind: "pipe", type: i10.SlicePipe, name: "slice" }, { kind: "pipe", type: i10.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i10.DatePipe, name: "date" }, { kind: "pipe", type: i10.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i28.RefDisconnectPipe, name: "refDisconnect" }, { kind: "pipe", type: i29.ShortMergePipe, name: "shortMerge" }, { kind: "pipe", type: i30.SpaceTrimPipe, name: "spaceTrim" }] });
1554
+ WorkflowRiskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: WorkflowRiskComponent, selector: "app-workflow-risk", inputs: { feature: "feature", mode: "mode", riskId: "riskId", defaultRiskType: "defaultRiskType", moveToRegisterMode: "moveToRegisterMode", secondaryOpenPortal: "secondaryOpenPortal", openedFrom: "openedFrom" }, outputs: { showConfirmationAlert: "showConfirmationAlert", pickerChanged: "pickerChanged", populateOption: "populateOption", closeWorkflow: "closeWorkflow", disconnectRefresh: "disconnectRefresh", refreshForm: "refreshForm", hideElementsFromMoreOptions: "hideElementsFromMoreOptions", rcSelected: "rcSelected" }, ngImport: i0, template: "<div class=\"workflw-risk\" *ngIf=\"!showSmiley\">\r\n <!-- Risk Type -->\r\n <div class=\"form-group-row\" [class.active]=\"false\" [class.disabled]=\"false\">\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/type.svg\"\r\n alt=\"im\"\r\n *ngIf=\"true\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"false\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Type <span class=\"required\">*</span></label\r\n >\r\n <div class=\"risk-type-field\">\r\n <div\r\n class=\"type-item\"\r\n [class.active]=\"riskForm?.riskType === 'NORMAL'\"\r\n >\r\n <button\r\n [class.disabled]=\"!riskTypeChangeAllowed\"\r\n (click)=\"changeRisk('NORMAL')\"\r\n >\r\n ADD TO RISK REGISTER\r\n </button>\r\n <i\r\n class=\"icons info\"\r\n [appTooltip]=\"\r\n 'This option lets you add a risk directly to the Risk Register. The risk owners will receive an alert and they can begin the the risk assessment process.'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe932;</i\r\n >\r\n </div>\r\n <div\r\n class=\"type-item\"\r\n [class.active]=\"riskForm?.riskType === 'REPORTED'\"\r\n >\r\n <button\r\n [class.disabled]=\"!riskTypeChangeAllowed\"\r\n (click)=\"changeRisk('REPORTED')\"\r\n >\r\n REPORT A RISK\r\n </button>\r\n <i\r\n class=\"icons info\"\r\n [appTooltip]=\"\r\n 'This options lets you report a risk and assign it to the risk owners. The risk owners will have the option to either add the risk to the Risk Register or flag it for a follow-up at a later date.'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe932;</i\r\n >\r\n </div>\r\n <span class=\"background-glider\"></span>\r\n </div>\r\n <p *ngIf=\"false\" class=\"error-message\">Add a risk type</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Name -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'name' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm.title\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n alt=\"im\"\r\n *ngIf=\"\r\n riskForm?.title?.trim()?.length === 0 || activeSelector === 'name'\r\n \"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.title?.trim()?.length > 0 && activeSelector !== 'name'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >WHAT RISK WOULD YOU LIKE TO MANAGE?\r\n <span class=\"required\">*</span></label\r\n >\r\n <input\r\n spaceTrim\r\n type=\"text\"\r\n (keydown)=\"activeSelector = 'name'\"\r\n (focusin)=\"activateSelector('name', true)\"\r\n (focusout)=\"activateSelector('name', false)\"\r\n [(ngModel)]=\"riskForm.title\"\r\n placeholder=\"Add a risk name\"\r\n *ngIf=\"riskForm?.title?.trim() == '' || activeSelector === 'name'\"\r\n />\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"riskForm?.title?.trim() != '' && activeSelector !== 'name'\"\r\n >\r\n <div class=\"chip-container\">\r\n <span class=\"value\">{{ riskForm.title }}</span>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n (click)=\"activateSelector('name', true)\"\r\n type=\"button\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p *ngIf=\"submitted && !riskForm.title\" class=\"error-message\">\r\n Add a risk name\r\n </p>\r\n <vcomply-editor\r\n [(ngModel)]=\"riskForm.description\"\r\n [editorConfig]=\"description\"\r\n (clickOutside)=\"checkDescription()\"\r\n ></vcomply-editor>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n riskForm.riskType === 'REPORTED' &&\r\n !riskForm?.description?.trim()?.length\r\n \"\r\n class=\"error-message\"\r\n >\r\n Add a risk description\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Owner -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'owner'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'owner' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.ownersList?.length > 0\">\r\n <img\r\n *ngIf=\"riskForm?.ownersList?.length == 0 || activeSelector === 'owner'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/im-creating.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.ownersList?.length > 0 && activeSelector !== 'owner'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >WHO IS RESPONSIBLE FOR MANAGING THIS RISK?\r\n <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the person that is responsible for managing the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <div class=\"select\" *ngIf=\"riskForm?.ownersList?.length == 0\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('owner', true)\"\r\n placeholder=\"Select Risk Owner(s)\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n riskForm?.ownersList?.length > 0 || riskForm?.groupsList.length > 0\r\n \"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"!featureflag_groups\"\r\n >\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerList\r\n \"\r\n >\r\n <ng-container *ngFor=\"let owner of ownerList?.slice(0, 1)\">\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"!nonRemovableUsersList.includes(owner?.member_id)\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"owner?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ owner?.member_name }}</span\r\n >\r\n </ng-container>\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverOwner.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"riskForm?.ownersList?.length > 1\"\r\n >\r\n +{{ riskForm?.ownersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" *ngIf=\"!featureflag_groups\" [class.more-one]=\"riskForm?.ownersList?.length>1\" [class.plus]=\"riskForm?.ownersList?.length>2\">\r\n <ng-container *ngIf=\"(riskForm?.ownersList|shortMerge : nonRemovableUsersList) as ownerList\">\r\n <span class=\"chip\" *ngFor=\"let owner of ownerList?.slice(0,2)\"><i class=\"icons\" *ngIf=\"!nonRemovableUsersList.includes(owner?.member_id)\" (click)=\"remove('owner',owner)\">&#xe90d;</i> {{owner?.member_name}}</span>\r\n <button class=\"count\" *ngIf=\"riskForm?.ownersList?.length > 2\" type=\"button\" appPopover (click)=\"popoverOwner.popover()\" placement=\"right\">+{{riskForm?.ownersList?.slice(2).length}}</button>\r\n </ng-container>\r\n </div> -->\r\n\r\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(\r\n riskForm?.ownersList[0]?.member_id\r\n )\r\n \"\r\n (click)=\"remove('owner', riskForm?.ownersList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.ownersList[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.ownersList[0]?.member_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\r\n appPopover\r\n (click)=\"popoverUser.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.ownersList.length > 1\"\r\n >\r\n +{{ riskForm?.ownersList.length - 1 }}\r\n </button>\r\n </div>\r\n <span\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"riskForm?.groupsList.length > 0\"\r\n >&</span\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"riskForm?.groupsList.length > 0\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('Ownergroup', riskForm?.groupsList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.groupsList[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.groupsList[0]?.group_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"group.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.groupsList?.length > 1\"\r\n >\r\n +{{ riskForm?.groupsList?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" *ngIf=\"featureflag_groups\">\r\n <div class=\"chip-inner\" >\r\n <i class=\"icons cross vx-mr-1\" *ngIf=\"!nonRemovableUsersList.includes(riskForm?.ownersList[0]?.member_id)\" (click)=\"remove('owner',riskForm?.ownersList[0])\" >&#xe90d;</i>\r\n <span class=\"chip\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{riskForm?.ownersList[0]?.member_name}}</span></span>\r\n <button *ngIf=\"riskForm?.ownersList.length > 1\" class=\"count user\" appPopover (click)=\"popoverUser.popover()\" placement=\"right\">+{{riskForm?.ownersList.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"riskForm?.groupsList.length > 0\" >&</span>\r\n <div class=\"chip-inner\" *ngIf=\"riskForm?.groupsList.length > 0\" >\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove('Ownergroup', riskForm?.groupsList[0])\" >&#xe90d;</i>\r\n <span class=\"chip\" [appTooltip]=\"riskForm?.groupsList[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\"><span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{riskForm?.groupsList[0]?.group_name}}</span></span>\r\n <button *ngIf=\"riskForm?.groupsList?.length > 1\" class=\"count\" appPopover (click)=\"group.popover()\" placement=\"right\">+{{riskForm?.groupsList?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'owner'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('owner', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.ownersList?.length === 0\"\r\n class=\"error-message\"\r\n >\r\n Select Owner(s) for this risk.\r\n </p>\r\n <app-popover #popoverOwner [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerPop\r\n \"\r\n >\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of ownerPop | slice : 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(owner?.member_id)\r\n \"\r\n class=\"icons\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </app-popover>\r\n <app-popover #popoverUser [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerPop\r\n \"\r\n >\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of ownerPop | slice : 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(owner?.member_id)\r\n \"\r\n class=\"icons\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </app-popover>\r\n <app-popover #group [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of riskForm?.groupsList | slice : 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('Ownergroup', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.group_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Responsibility Center -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'rc'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'rc' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"riskForm?.responsibilityCentersList?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n riskForm?.responsibilityCentersList?.length == 0 ||\r\n activeSelector === 'rc'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n riskForm?.responsibilityCentersList?.length > 0 &&\r\n activeSelector !== 'rc'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Responsibility Center <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'Responsibility Centers represent the corporate and operational infrastructure of an organization. One or more Responsibility Centers can be exposed to a risk and accordingly, the risk must be assessed against each Responsibility Center.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length == 0\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('rc', true)\"\r\n placeholder=\"Select Responsibility Center(s)\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length > 0\"\r\n >\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <ng-container\r\n *ngFor=\"\r\n let rcName of riskForm?.responsibilityCentersList?.slice(0, 1)\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('rc', rcName)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"rcName.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rcName.item_name }}</span\r\n >\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverRC.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length > 1\"\r\n >\r\n +{{ riskForm?.responsibilityCentersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" [class.more-one]=\"riskForm?.responsibilityCentersList?.length>1\" [class.plus]=\"riskForm?.responsibilityCentersList?.length>2\">\r\n <span class=\"chip\" *ngFor=\"let rcName of riskForm?.responsibilityCentersList?.slice(0,2)\"><i class=\"icons\" (click)=\"remove('rc',rcName)\">&#xe90d;</i> {{rcName.item_name}}</span>\r\n <button class=\"count\" *ngIf=\"riskForm?.responsibilityCentersList?.length > 2\" type=\"button\" appPopover (click)=\"popoverRC.popover()\" placement=\"right\">+{{riskForm?.responsibilityCentersList?.slice(2).length}}</button>\r\n </div> -->\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'rc'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('rc', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.responsibilityCentersList?.length == 0\"\r\n class=\"error-message\"\r\n >\r\n Assign this risk to a Responsibility Center(s)\r\n </p>\r\n <app-popover #popoverRC [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rcName of riskForm?.responsibilityCentersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('rc', rcName)\">&#xe90d;</i>\r\n {{ rcName.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Frequency -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'frequency'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'frequency' &&\r\n sideSelectorElements?.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.riskType !== 'REPORTED'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.category?.selectedCategory\">\r\n <img\r\n *ngIf=\"\r\n !riskForm?.frequency_details?.frequency ||\r\n riskForm?.frequency_details?.frequency === '' ||\r\n activeSelector === 'frequency'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n (riskForm?.frequency_details?.frequency &&\r\n riskForm?.frequency_details?.frequency !== '') ||\r\n activeSelector !== 'frequency'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >HOW OFTEN DOES THIS RISK NEED TO BE REASSESSED?\r\n <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'The option lets you specify the risk reassessment frequency.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div\r\n class=\"select\"\r\n *ngIf=\"!riskForm?.frequency_details?.frequency\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <input\r\n type=\"text\"\r\n placeholder=\"Set a Reassessment Frequency\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected button-sec\"\r\n *ngIf=\"riskForm?.frequency_details?.frequency\"\r\n >\r\n <span\r\n class=\"chip\"\r\n [appTooltip]=\"frequencyPlaceholder\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ frequencyPlaceholder }}</span\r\n >\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <div class=\"vx-mt-1\">\r\n <app-cs-switch\r\n [ngValue]=\"riskForm?.enableAllFutureBusinessCycle\"\r\n (ngValueChange)=\"riskForm.enableAllFutureBusinessCycle = $event\"\r\n >DO YOU WANT THIS TO SHOW IN ALL FUTURE BUSINESS CYCLES?\r\n </app-cs-switch>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n (!riskForm?.frequency_details?.frequency ||\r\n riskForm?.frequency_details?.frequency === '')\r\n \"\r\n class=\"error-message\"\r\n >\r\n Please select the frequency of occurrence for this risk.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Category -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'category'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'category' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.category?.selectedCategory\">\r\n <img\r\n *ngIf=\"\r\n !riskForm?.category?.selectedCategory || activeSelector === 'category'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.category?.selectedCategory && activeSelector !== 'category'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Category\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"'Risk Categories are used to group similar risks.'\"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div class=\"select\" *ngIf=\"!riskForm?.category?.selectedCategory\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('category', true)\"\r\n placeholder=\"Select Risk Category\"\r\n readonly\r\n />\r\n </div>\r\n <div class=\"selected\" *ngIf=\"riskForm?.category?.selectedCategory\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('category', riskForm.category.selectedCategory)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.category?.selectedCategory?.category_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.category?.selectedCategory?.category_name }}</span\r\n >\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove('category',riskForm.category.selectedCategory)\">&#xe90d;</i>{{riskForm?.category?.selectedCategory?.category_name}}</span>\r\n </div> -->\r\n <button\r\n *ngIf=\"activeSelector !== 'category'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('category', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"riskForm?.categoryCustomTags?.length > 0\">\r\n <div\r\n class=\"vx-form-group\"\r\n *ngFor=\"let tag of riskForm.categoryCustomTags\"\r\n >\r\n <label class=\"vx-control-panel\">{{ tag.custom_tag_name }}</label>\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"tag.custom_tag_value\"\r\n [placeholder]=\"tag.custom_tag_name\"\r\n />\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- Assessment Deadline -->\r\n <!-- !settingsInfo?.assessment_deadline_enable && riskForm?.riskType !== 'REPORTED' && ((currentTimeStamp < editDetails?.assessment_date_timestamp) || !editDetails?.IfAssessmentDone ) -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'assessment'\"\r\n id=\"deadline\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'assessment' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"false\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.assessment_deadline_days >= 1\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n *ngIf=\"\r\n riskForm?.assessment_deadline_days < 1 ||\r\n activeSelector === 'assessment'\r\n \"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.assessment_deadline_days >= 1 &&\r\n activeSelector !== 'assessment'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Assessment Deadline <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the date that the inherent risk assessment must be completed by.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div class=\"input\">\r\n <span class=\"text\">Set Number of days</span>\r\n <div class=\"input-group counter\">\r\n <button (click)=\"changeRiskAssessment('subtract')\">\r\n <i class=\"icons\">&#xea53;</i>\r\n </button>\r\n <input\r\n type=\"number\"\r\n [(ngModel)]=\"riskForm.assessment_deadline_days\"\r\n (focusin)=\"activateSelector('assessment', true)\"\r\n (focusout)=\"activateSelector('assessment', false)\"\r\n name=\"riskAssessmentDeadline\"\r\n validateAssessment\r\n #deadline=\"ngModel\"\r\n (ngModelChange)=\"changeRiskAssessmentDeadline($event)\"\r\n onkeydown=\"return event.keyCode !== 190\"\r\n min=\"0\"\r\n oninput=\"this.value = Math.abs(this.value)\"\r\n />\r\n <button (click)=\"changeRiskAssessment('add')\">\r\n <i class=\"icons\">&#xe915;</i>\r\n </button>\r\n </div>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.assessment_deadline_days < 1\"\r\n class=\"error-message\"\r\n >\r\n Enter a value greater than 0.\r\n </p>\r\n <label\r\n class=\"vx-control-panel\"\r\n *ngIf=\"riskForm?.assessment_deadline_days >= 1\"\r\n >\r\n This risk assessment needs to be completed by\r\n {{ date | date : \"dd MMM yyyy\" }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Overseer -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'overseer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'overseer' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm.addOverseer\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.overseersList?.length > 0\">\r\n <img\r\n *ngIf=\"\r\n riskForm?.overseersList?.length == 0 || activeSelector === 'overseer'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length > 0 && activeSelector !== 'overseer'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Oversight<i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the person that is responsible for overseeing the risk but who is not responsible for managing the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div\r\n class=\"select\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length == 0 &&\r\n riskForm?.overseersGroupList?.length == 0\r\n \"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('overseer', true)\"\r\n placeholder=\"Select Risk Oversight(s)\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length > 0 ||\r\n riskForm?.overseersGroupList.length > 0\r\n \"\r\n >\r\n <ng-container *ngIf=\"!featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <ng-container\r\n *ngFor=\"let owner of riskForm?.overseersList?.slice(0, 1)\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('overseer', owner)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"owner.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ owner.member_name }}</span\r\n >\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverOverseer.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersList?.length > 1\"\r\n >\r\n +{{ riskForm?.overseersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('overseer', riskForm?.overseersList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.overseersList[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n *ngIf=\"riskForm?.overseersList.length > 0\"\r\n >{{ riskForm?.overseersList[0]?.member_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\r\n appPopover\r\n (click)=\"overseer.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersList.length > 1\"\r\n >\r\n +{{ riskForm?.overseersList.length - 1 }}\r\n </button>\r\n </div>\r\n <span\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n riskForm?.overseersList.length > 0 &&\r\n riskForm?.overseersGroupList.length > 0\r\n \"\r\n >&</span\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"riskForm?.overseersGroupList.length > 0\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"\r\n remove('overseergroup', riskForm?.overseersGroupList[0])\r\n \"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.overseersGroupList[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.overseersGroupList[0]?.group_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"overseerGroup.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersGroupList?.length > 1\"\r\n >\r\n +{{ riskForm?.overseersGroupList?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n <button\r\n *ngIf=\"activeSelector !== 'overseer'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('overseer', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <app-popover #popoverOverseer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let owner of riskForm?.overseersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseer', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let owner of riskForm?.overseersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseer', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of riskForm?.overseersGroupList | slice : 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseergroup', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.group_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Mitigation Priority -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm.addMitigation\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm.mitigation\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/priority.svg\"\r\n *ngIf=\"!riskForm.mitigation\"\r\n alt=\"\"\r\n />\r\n <!-- <svg viewBox=\"25 25 50 50\" class=\"edit-loader\">\r\n <circle cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke=\"#1e5dd3\" stroke-width=\"3\" class=\"loader-path\"></circle>\r\n </svg> -->\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"riskForm.mitigation\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Mitigation Priority\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This sets the priority level for the mitigation of each risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n\r\n <cs-select\r\n [(ngModel)]=\"riskForm.mitigation\"\r\n [placeholder]=\"'Select a mitigation priority'\"\r\n name=\"riskForm.mitigation\"\r\n >\r\n <cs-option\r\n *ngFor=\"let data of mitigationDetails\"\r\n [value]=\"data?.mitigation_id\"\r\n [color]=\"data?.mitigation_color\"\r\n >\r\n {{ data.mitigation_name }}\r\n </cs-option>\r\n </cs-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Recommended Mitigation Plan -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n *ngIf=\"riskForm?.addMitigationPlan\"\r\n >\r\n <div\r\n id=\"riskSpace\"\r\n class=\"left\"\r\n [class.checked]=\"(riskForm.mitigationDescriptionPlan | spaceTrim) !== ''\"\r\n >\r\n <img\r\n *ngIf=\"(riskForm.mitigationDescriptionPlan | spaceTrim) === ''\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/objectives.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"(riskForm.mitigationDescriptionPlan | spaceTrim) !== ''\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label for=\"\" class=\"vx-control-panel\"\r\n >Recommended Mitigation Plans<link\r\n rel=\"manifest\"\r\n href=\"./manifest.json\"\r\n />\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'Specify the mitigation plan that can be undertaken to mitigate the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <vcomply-editor\r\n [(ngModel)]=\"riskForm.mitigationDescriptionPlan\"\r\n [editorConfig]=\"mitigationDescriptionPlan\"\r\n (clickOutside)=\"checkMitigationPlan()\"\r\n >\r\n </vcomply-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Label -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.addRiskLabel\"\r\n >\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <!-- <img *ngIf=\"true\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\" alt=\"\" /> -->\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"true\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >RISK LABEL\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"'Risk label info text here...'\"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <cs-select\r\n [(ngModel)]=\"riskForm.riskLabelValue\"\r\n [placeholder]=\"'Select a risk label'\"\r\n name=\"riskForm?.riskLabelValue\"\r\n >\r\n <cs-option *ngFor=\"let data of riskLabelList\" [value]=\"data?.value\">\r\n {{ data?.name }}\r\n </cs-option>\r\n </cs-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Link with GRC -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'GRC'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'GRC' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.GRC\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.ownersList?.length > 0\">\r\n <img\r\n *ngIf=\"riskForm?.ownersList?.length == 0 || activeSelector === 'owner'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/link-items.svg alt=\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.ownersList?.length > 0 && activeSelector !== 'owner'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">LINK GRC OBJECT(S) </label>\r\n <div class=\"select\" *ngIf=\"riskForm?.selectedGRCObjects?.length === 0\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('GRC', true)\"\r\n placeholder=\"Select GRC object(s) to link with this risk.\"\r\n readonly\r\n />\r\n </div>\r\n <ng-container *ngIf=\"riskForm?.selectedGRCObjects?.length\">\r\n <ng-container\r\n *ngFor=\"\r\n let selectedGRC of grcDataWithTypes | keyvalue : originalOrder;\r\n let i = index\r\n \"\r\n >\r\n <div *ngIf=\"selectedGRC?.value?.length\" class=\"selected vx-mb-2\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <ng-container\r\n *ngFor=\"let grc of selectedGRC?.value?.slice(0, 1)\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('GRC', grc, 0)\"\r\n >&#xe9ae;</i\r\n >\r\n <div\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >\r\n {{ selectedGRC?.key | titlecase }}\r\n </div>\r\n\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"grc?.name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ grc?.name }}</span\r\n >\r\n </ng-container>\r\n\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverGRC.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"selectedGRC?.value?.length > 1\"\r\n >\r\n +{{ selectedGRC?.value.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'GRC'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"\r\n selectedGRCTab = selectedGRC?.value[0]?.type;\r\n getOtherGRCObjects();\r\n activateSelector('GRC', true)\r\n \"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <app-popover #popoverGRC [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let grc of selectedGRC?.value | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('GRC', grc, j + 1)\"\r\n >&#xe90d;</i\r\n >\r\n {{ grc.name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<app-responsibility-centers-list\r\n *ngIf=\"activeSelector === 'rc'\"\r\n [responsibilityCentersList]=\"responsibilityCentersList\"\r\n [selectedResponsibilityCenters]=\"riskForm.responsibilityCentersList\"\r\n [rcIdKey]=\"'rc_id'\"\r\n (saveSelectedList)=\"saveSelectedRCList($event)\"\r\n (closeRcList)=\"activateSelector('rc', false)\"\r\n [singularText]=\"'Responsibility Center selected'\"\r\n [pluralText]=\"'Responsibility Centers selected'\"\r\n>\r\n</app-responsibility-centers-list>\r\n\r\n<app-owner-list\r\n *ngIf=\"!featureflag_groups && activeSelector === 'owner'\"\r\n [usersList]=\"ownersList\"\r\n [selectedUsers]=\"riskForm.ownersList\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedOwnersList($event)\"\r\n [nonRemovableUsersList]=\"nonRemovableUsersList\"\r\n (closeUsersList)=\"activateSelector('owner', false)\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n></app-owner-list>\r\n\r\n<user-group-list\r\n *ngIf=\"featureflag_groups && activeSelector === 'owner'\"\r\n [userlist]=\"ownersList\"\r\n [selectedUsers]=\"riskForm.ownersList\"\r\n [groupList]=\"groupsList\"\r\n [nonRemovableUserIds]=\"nonRemovableUsersList\"\r\n (save)=\"saveSelectedOwnersList($event)\"\r\n [selectedGroups]=\"riskForm.groupsList\"\r\n (cancel)=\"activateSelector('owner', false)\"\r\n [groupEnabled]=\"true\"\r\n [featureflag]=\"featureflag_groups\"\r\n>\r\n</user-group-list>\r\n\r\n<user-group-list\r\n *ngIf=\"featureflag_groups && activeSelector === 'overseer'\"\r\n [userlist]=\"overseersList\"\r\n [selectedUsers]=\"riskForm.overseersList\"\r\n [groupList]=\"overseersGroupList\"\r\n (save)=\"saveSelectedOverseersList($event)\"\r\n [selectedGroups]=\"riskForm.overseersGroupList\"\r\n (cancel)=\"activateSelector('overseer', false)\"\r\n [groupEnabled]=\"true\"\r\n [featureflag]=\"featureflag_groups\"\r\n>\r\n</user-group-list>\r\n\r\n<app-category-list\r\n *ngIf=\"activeSelector === 'category'\"\r\n [categoryList]=\"categoryList\"\r\n [selectedCategory]=\"riskForm.category\"\r\n (saveSelectedCategory)=\"saveSelectedCategory($event)\"\r\n (closeCategoriesList)=\"activateSelector('category', false)\"\r\n></app-category-list>\r\n<app-owner-list\r\n *ngIf=\"!featureflag_groups && activeSelector === 'overseer'\"\r\n [usersList]=\"overseersList\"\r\n [selectedUsers]=\"riskForm.overseersList\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemNameKey]=\"'member_name'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n (saveSelectedList)=\"saveSelectedOverseersList($event)\"\r\n (closeUsersList)=\"activateSelector('overseer', false)\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n>\r\n</app-owner-list>\r\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n\r\n<app-frequency-dialog-container\r\n *ngIf=\"activeSelector === 'frequency'\"\r\n [frequencyDetails]=\"frequencyDetails\"\r\n (selectedFrequency)=\"frequencyData($event)\"\r\n (closeFrequency)=\"activateSelector('frequency', false)\"\r\n>\r\n</app-frequency-dialog-container>\r\n\r\n<app-grc-object-list\r\n *ngIf=\"activeSelector === 'GRC'\"\r\n [grcObject]=\"grcList\"\r\n [selectedGRC]=\"riskForm.selectedGRCObjects | refDisconnect\"\r\n [loader]=\"grcLoader\"\r\n [tableCard]=\"otherGRCCard | refDisconnect\"\r\n [selectedTab]=\"selectedGRCTab\"\r\n (getOtherGRCObjects)=\"getOtherGRCObjects($event)\"\r\n (saveOtherGRC)=\"saveSelectedList($event)\"\r\n (closeOtherGRC)=\"activateSelector('GRC', false)\"\r\n></app-grc-object-list>\r\n\r\n<app-smiley-dialog-inline\r\n *ngIf=\"showSmiley\"\r\n [message]=\"smileyMessage\"\r\n [actionButtons]=\"actionButtons\"\r\n (action)=\"action($event)\"\r\n (closeSmiley)=\"closeSmiley($event)\"\r\n>\r\n</app-smiley-dialog-inline>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .workflw-risk{display:block;position:relative}\n", "@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.withBtn:after{display:none}::ng-deep .selectBoxEnable.withBtn button.setBtn{background:transparent;border-radius:0;border:none;min-width:98px}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#ffffff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#ffffff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#ffffff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group vcomply-editor{margin-top:8px;display:block}::ng-deep .vx-form-group vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#ffffff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:208px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#ffffff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#ffffff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#ffffff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}dp-date-picker input:focus{outline:none}dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}dp-date-picker .dp-popup dp-day-calendar,dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}dp-date-picker .dp-popup dp-day-calendar button,dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000000;display:inline-flex}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:rgba(0,0,0,.3)}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#ffffff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0%,#747576 1%,#747576 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#ffffff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0%,#f31c39 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0%,#34aa44 1%,#34aa44 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0%,#1e5dd3 1%,#1e5dd3 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0%,#f6882f 1%,#f6882f 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0%,#7aa6f7 1%,#7aa6f7 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}\n"], dependencies: [{ kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "component", type: i9.MarxEditorComponent, selector: "vcomply-editor", inputs: ["editorConfig"], outputs: ["comment", "sendSavedFiles", "popup"] }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i11.CsSwitchComponent, selector: "app-cs-switch", inputs: ["disabled", "ngValue", "value", "tooltipMessage", "position"], outputs: ["ngValueChange"] }, { kind: "directive", type: i12.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i13.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i14.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i15.CsSelectComponent, selector: "cs-select", inputs: ["dropdownLabel", "dropdownSubLabel", "isRequired", "placeholder", "setMaxWidth"], outputs: ["valueChanged"] }, { kind: "component", type: i16.CsOptionComponent, selector: "cs-option", inputs: ["value", "color", "backgroundColor", "optionTooltip"] }, { kind: "component", type: i17.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i18.SmileyDialogInlineComponent, selector: "app-smiley-dialog-inline", inputs: ["message", "actionButtons"], outputs: ["action", "closeSmiley"] }, { kind: "directive", type: i19.ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { kind: "component", type: i20.UserGroupListComponent, selector: "user-group-list", inputs: ["groupEnabled", "panelTitle", "singleSelect", "selectedReviewer", "featureflag", "reviewerWorkflowType", "mode", "fieldType", "fromResponsibility", "assignorId", "assigneeIds", "reviewerIds", "overseerIds", "FromProgram", "userListInfo", "groupListInfo", "fromApprovalWorkflow", "approvalType", "showFutureUsersSwitch", "futureUsersWillSelect", "isAllDisabled", "isGroupTabShow", "disabledIds", "nonRemovableUserIds", "allUserSelectedDisabled", "nonRemovableGroupIds", "loading", "userlist", "selectedUsers", "defaultSelectedUsers", "userType", "groupList", "selectedGroups"], outputs: ["save", "cancel", "reviewerWorkflowTypeChange", "fetchUserData"] }, { kind: "component", type: i21.ResponsibilityCentersListComponent, selector: "app-responsibility-centers-list", inputs: ["responsibilityCentersList", "selectedResponsibilityCenters", "rcIdKey", "radioSelection", "pluralText", "singularText"], outputs: ["saveSelectedList", "closeRcList"] }, { kind: "component", type: i22.GrcObjectListComponent, selector: "app-grc-object-list", inputs: ["grcObject", "currentPage", "loader", "tableCard", "selectedTab", "cardLoader", "selectedGRC"], outputs: ["saveOtherGRC", "closeOtherGRC", "getOtherGRCObjects"] }, { kind: "component", type: i23.OwnerListComponent, selector: "app-owner-list", inputs: ["usersList", "selectedUsers", "userIdKey", "itemNameKey", "itemEmailKey", "showWorkflow", "listHeading", "searchPlaceholder", "pluralText", "singularText", "reviewerWorkflowType", "mode", "noDataText", "workflowList", "workflowText", "disabledIds", "nonRemovableUsersList", "fromResponsibility", "assignorId", "assigneeIds", "reviewerIds", "overseerIds"], outputs: ["saveSelectedList", "closeUsersList", "reviewerWorkflowTypeChange"] }, { kind: "component", type: i24.CategoryListComponent, selector: "app-category-list", inputs: ["categoryList", "selectedCategory"], outputs: ["saveSelectedCategory", "closeList", "closeCategoriesList"] }, { kind: "directive", type: i25.ScrollInViewDirective, selector: "[appScrollInView]", inputs: ["appScrollInView"] }, { kind: "directive", type: i26.spaceTrimDirective, selector: "[spaceTrim]" }, { kind: "component", type: i27.FrequencyDialogContainerComponent, selector: "app-frequency-dialog-container", inputs: ["mode", "frequencyDetails"], outputs: ["selectedFrequency", "closeFrequency"] }, { kind: "pipe", type: i10.SlicePipe, name: "slice" }, { kind: "pipe", type: i10.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i10.DatePipe, name: "date" }, { kind: "pipe", type: i10.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i28.RefDisconnectPipe, name: "refDisconnect" }, { kind: "pipe", type: i29.ShortMergePipe, name: "shortMerge" }, { kind: "pipe", type: i30.SpaceTrimPipe, name: "spaceTrim" }] });
1551
1555
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WorkflowRiskComponent, decorators: [{
1552
1556
  type: Component,
1553
- args: [{ selector: 'app-workflow-risk', template: "<div class=\"workflw-risk\" *ngIf=\"!showSmiley\">\r\n <!-- Risk Type -->\r\n <div class=\"form-group-row\" [class.active]=\"false\" [class.disabled]=\"false\">\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/type.svg\"\r\n alt=\"im\"\r\n *ngIf=\"true\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"false\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Type <span class=\"required\">*</span></label\r\n >\r\n <div class=\"risk-type-field\">\r\n <div\r\n class=\"type-item\"\r\n [class.active]=\"riskForm?.riskType === 'NORMAL'\"\r\n >\r\n <button\r\n [class.disabled]=\"!riskTypeChangeAllowed\"\r\n (click)=\"changeRisk('NORMAL')\"\r\n >\r\n ADD TO RISK REGISTER\r\n </button>\r\n <i\r\n class=\"icons info\"\r\n [appTooltip]=\"\r\n 'This option lets you add a risk directly to the Risk Register. The risk owners will receive an alert and they can begin the the risk assessment process.'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe932;</i\r\n >\r\n </div>\r\n <div\r\n class=\"type-item\"\r\n [class.active]=\"riskForm?.riskType === 'REPORTED'\"\r\n >\r\n <button\r\n [class.disabled]=\"!riskTypeChangeAllowed\"\r\n (click)=\"changeRisk('REPORTED')\"\r\n >\r\n REPORT A RISK\r\n </button>\r\n <i\r\n class=\"icons info\"\r\n [appTooltip]=\"\r\n 'This options lets you report a risk and assign it to the risk owners. The risk owners will have the option to either add the risk to the Risk Register or flag it for a follow-up at a later date.'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe932;</i\r\n >\r\n </div>\r\n <span class=\"background-glider\"></span>\r\n </div>\r\n <p *ngIf=\"false\" class=\"error-message\">Add a risk type</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Name -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'name' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm.title\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n alt=\"im\"\r\n *ngIf=\"\r\n riskForm?.title?.trim()?.length === 0 || activeSelector === 'name'\r\n \"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.title?.trim()?.length > 0 && activeSelector !== 'name'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >WHAT RISK WOULD YOU LIKE TO MANAGE?\r\n <span class=\"required\">*</span></label\r\n >\r\n <input\r\n spaceTrim\r\n type=\"text\"\r\n (keydown)=\"activeSelector = 'name'\"\r\n (focusin)=\"activateSelector('name', true)\"\r\n (focusout)=\"activateSelector('name', false)\"\r\n [(ngModel)]=\"riskForm.title\"\r\n placeholder=\"Add a risk name\"\r\n *ngIf=\"riskForm?.title?.trim() == '' || activeSelector === 'name'\"\r\n />\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"riskForm?.title?.trim() != '' && activeSelector !== 'name'\"\r\n >\r\n <div class=\"chip-container\">\r\n <span class=\"value\">{{ riskForm.title }}</span>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n (click)=\"activateSelector('name', true)\"\r\n type=\"button\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p *ngIf=\"submitted && !riskForm.title\" class=\"error-message\">\r\n Add a risk name\r\n </p>\r\n <vcomply-editor\r\n [(ngModel)]=\"riskForm.description\"\r\n [editorConfig]=\"description\"\r\n (clickOutside)=\"checkDescription()\"\r\n ></vcomply-editor>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n riskForm.riskType === 'REPORTED' &&\r\n !riskForm?.description?.trim()?.length\r\n \"\r\n class=\"error-message\"\r\n >\r\n Add a risk description\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Owner -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'owner'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'owner' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.ownersList?.length > 0\">\r\n <img\r\n *ngIf=\"riskForm?.ownersList?.length == 0 || activeSelector === 'owner'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/im-creating.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.ownersList?.length > 0 && activeSelector !== 'owner'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >WHO IS RESPONSIBLE FOR MANAGING THIS RISK?\r\n <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the person that is responsible for managing the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <div class=\"select\" *ngIf=\"riskForm?.ownersList?.length == 0\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('owner', true)\"\r\n placeholder=\"Select Risk Owner(s)\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n riskForm?.ownersList?.length > 0 || riskForm?.groupsList.length > 0\r\n \"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"!featureflag_groups\"\r\n >\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerList\r\n \"\r\n >\r\n <ng-container *ngFor=\"let owner of ownerList?.slice(0, 1)\">\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"!nonRemovableUsersList.includes(owner?.member_id)\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"owner?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ owner?.member_name }}</span\r\n >\r\n </ng-container>\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverOwner.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"riskForm?.ownersList?.length > 1\"\r\n >\r\n +{{ riskForm?.ownersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" *ngIf=\"!featureflag_groups\" [class.more-one]=\"riskForm?.ownersList?.length>1\" [class.plus]=\"riskForm?.ownersList?.length>2\">\r\n <ng-container *ngIf=\"(riskForm?.ownersList|shortMerge : nonRemovableUsersList) as ownerList\">\r\n <span class=\"chip\" *ngFor=\"let owner of ownerList?.slice(0,2)\"><i class=\"icons\" *ngIf=\"!nonRemovableUsersList.includes(owner?.member_id)\" (click)=\"remove('owner',owner)\">&#xe90d;</i> {{owner?.member_name}}</span>\r\n <button class=\"count\" *ngIf=\"riskForm?.ownersList?.length > 2\" type=\"button\" appPopover (click)=\"popoverOwner.popover()\" placement=\"right\">+{{riskForm?.ownersList?.slice(2).length}}</button>\r\n </ng-container>\r\n </div> -->\r\n\r\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(\r\n riskForm?.ownersList[0]?.member_id\r\n )\r\n \"\r\n (click)=\"remove('owner', riskForm?.ownersList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.ownersList[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.ownersList[0]?.member_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\r\n appPopover\r\n (click)=\"popoverUser.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.ownersList.length > 1\"\r\n >\r\n +{{ riskForm?.ownersList.length - 1 }}\r\n </button>\r\n </div>\r\n <span\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"riskForm?.groupsList.length > 0\"\r\n >&</span\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"riskForm?.groupsList.length > 0\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('Ownergroup', riskForm?.groupsList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.groupsList[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.groupsList[0]?.group_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"group.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.groupsList?.length > 1\"\r\n >\r\n +{{ riskForm?.groupsList?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" *ngIf=\"featureflag_groups\">\r\n <div class=\"chip-inner\" >\r\n <i class=\"icons cross vx-mr-1\" *ngIf=\"!nonRemovableUsersList.includes(riskForm?.ownersList[0]?.member_id)\" (click)=\"remove('owner',riskForm?.ownersList[0])\" >&#xe90d;</i>\r\n <span class=\"chip\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{riskForm?.ownersList[0]?.member_name}}</span></span>\r\n <button *ngIf=\"riskForm?.ownersList.length > 1\" class=\"count user\" appPopover (click)=\"popoverUser.popover()\" placement=\"right\">+{{riskForm?.ownersList.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"riskForm?.groupsList.length > 0\" >&</span>\r\n <div class=\"chip-inner\" *ngIf=\"riskForm?.groupsList.length > 0\" >\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove('Ownergroup', riskForm?.groupsList[0])\" >&#xe90d;</i>\r\n <span class=\"chip\" [appTooltip]=\"riskForm?.groupsList[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\"><span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{riskForm?.groupsList[0]?.group_name}}</span></span>\r\n <button *ngIf=\"riskForm?.groupsList?.length > 1\" class=\"count\" appPopover (click)=\"group.popover()\" placement=\"right\">+{{riskForm?.groupsList?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'owner'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('owner', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.ownersList?.length === 0\"\r\n class=\"error-message\"\r\n >\r\n Select Owner(s) for this risk.\r\n </p>\r\n <app-popover #popoverOwner [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerPop\r\n \"\r\n >\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of ownerPop | slice : 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(owner?.member_id)\r\n \"\r\n class=\"icons\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </app-popover>\r\n <app-popover #popoverUser [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerPop\r\n \"\r\n >\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of ownerPop | slice : 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(owner?.member_id)\r\n \"\r\n class=\"icons\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </app-popover>\r\n <app-popover #group [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of riskForm?.groupsList | slice : 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('Ownergroup', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.group_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Responsibility Center -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'rc'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'rc' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"riskForm?.responsibilityCentersList?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n riskForm?.responsibilityCentersList?.length == 0 ||\r\n activeSelector === 'rc'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n riskForm?.responsibilityCentersList?.length > 0 &&\r\n activeSelector !== 'rc'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Responsibility Center <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'Responsibility Centers represent the corporate and operational infrastructure of an organization. One or more Responsibility Centers can be exposed to a risk and accordingly, the risk must be assessed against each Responsibility Center.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length == 0\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('rc', true)\"\r\n placeholder=\"Select Responsibility Center(s)\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length > 0\"\r\n >\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <ng-container\r\n *ngFor=\"\r\n let rcName of riskForm?.responsibilityCentersList?.slice(0, 1)\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('rc', rcName)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"rcName.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rcName.item_name }}</span\r\n >\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverRC.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length > 1\"\r\n >\r\n +{{ riskForm?.responsibilityCentersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" [class.more-one]=\"riskForm?.responsibilityCentersList?.length>1\" [class.plus]=\"riskForm?.responsibilityCentersList?.length>2\">\r\n <span class=\"chip\" *ngFor=\"let rcName of riskForm?.responsibilityCentersList?.slice(0,2)\"><i class=\"icons\" (click)=\"remove('rc',rcName)\">&#xe90d;</i> {{rcName.item_name}}</span>\r\n <button class=\"count\" *ngIf=\"riskForm?.responsibilityCentersList?.length > 2\" type=\"button\" appPopover (click)=\"popoverRC.popover()\" placement=\"right\">+{{riskForm?.responsibilityCentersList?.slice(2).length}}</button>\r\n </div> -->\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'rc'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('rc', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.responsibilityCentersList?.length == 0\"\r\n class=\"error-message\"\r\n >\r\n Assign this risk to a Responsibility Center(s)\r\n </p>\r\n <app-popover #popoverRC [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rcName of riskForm?.responsibilityCentersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('rc', rcName)\">&#xe90d;</i>\r\n {{ rcName.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Frequency -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'frequency'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'frequency' &&\r\n sideSelectorElements?.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.riskType !== 'REPORTED'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.category?.selectedCategory\">\r\n <img\r\n *ngIf=\"\r\n !riskForm?.frequency_details?.frequency ||\r\n riskForm?.frequency_details?.frequency === '' ||\r\n activeSelector === 'frequency'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n (riskForm?.frequency_details?.frequency &&\r\n riskForm?.frequency_details?.frequency !== '') ||\r\n activeSelector !== 'frequency'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >HOW OFTEN DOES THIS RISK NEED TO BE REASSESSED?\r\n <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'The option lets you specify the risk reassessment frequency.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div\r\n class=\"select\"\r\n *ngIf=\"!riskForm?.frequency_details?.frequency\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <input\r\n type=\"text\"\r\n placeholder=\"Set a Reassessment Frequency\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected button-sec\"\r\n *ngIf=\"riskForm?.frequency_details?.frequency\"\r\n >\r\n <span\r\n class=\"chip\"\r\n [appTooltip]=\"frequencyPlaceholder\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ frequencyPlaceholder }}</span\r\n >\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <div class=\"vx-mt-1\">\r\n <app-cs-switch\r\n [ngValue]=\"riskForm?.enableAllFutureBusinessCycle\"\r\n (ngValueChange)=\"riskForm.enableAllFutureBusinessCycle = $event\"\r\n >DO YOU WANT THIS TO SHOW IN ALL FUTURE BUSINESS CYCLES?\r\n </app-cs-switch>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n (!riskForm?.frequency_details?.frequency ||\r\n riskForm?.frequency_details?.frequency === '')\r\n \"\r\n class=\"error-message\"\r\n >\r\n Please select the frequency of occurrence for this risk.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Category -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'category'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'category' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.category?.selectedCategory\">\r\n <img\r\n *ngIf=\"\r\n !riskForm?.category?.selectedCategory || activeSelector === 'category'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.category?.selectedCategory && activeSelector !== 'category'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Category\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"'Risk Categories are used to group similar risks.'\"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div class=\"select\" *ngIf=\"!riskForm?.category?.selectedCategory\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('category', true)\"\r\n placeholder=\"Select Risk Category\"\r\n readonly\r\n />\r\n </div>\r\n <div class=\"selected\" *ngIf=\"riskForm?.category?.selectedCategory\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('category', riskForm.category.selectedCategory)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.category?.selectedCategory?.category_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.category?.selectedCategory?.category_name }}</span\r\n >\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove('category',riskForm.category.selectedCategory)\">&#xe90d;</i>{{riskForm?.category?.selectedCategory?.category_name}}</span>\r\n </div> -->\r\n <button\r\n *ngIf=\"activeSelector !== 'category'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('category', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"riskForm?.categoryCustomTags?.length > 0\">\r\n <div\r\n class=\"vx-form-group\"\r\n *ngFor=\"let tag of riskForm.categoryCustomTags\"\r\n >\r\n <label class=\"vx-control-panel\">{{ tag.custom_tag_name }}</label>\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"tag.custom_tag_value\"\r\n [placeholder]=\"tag.custom_tag_name\"\r\n />\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- Assessment Deadline -->\r\n <!-- !settingsInfo?.assessment_deadline_enable && riskForm?.riskType !== 'REPORTED' && ((currentTimeStamp < editDetails?.assessment_date_timestamp) || !editDetails?.IfAssessmentDone ) -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'assessment'\"\r\n id=\"deadline\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'assessment' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"false\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.assessment_deadline_days >= 1\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n *ngIf=\"\r\n riskForm?.assessment_deadline_days < 1 ||\r\n activeSelector === 'assessment'\r\n \"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.assessment_deadline_days >= 1 &&\r\n activeSelector !== 'assessment'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Assessment Deadline <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the date that the inherent risk assessment must be completed by.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div class=\"input\">\r\n <span class=\"text\">Set Number of days</span>\r\n <div class=\"input-group counter\">\r\n <button (click)=\"changeRiskAssessment('subtract')\">\r\n <i class=\"icons\">&#xea53;</i>\r\n </button>\r\n <input\r\n type=\"number\"\r\n [(ngModel)]=\"riskForm.assessment_deadline_days\"\r\n (focusin)=\"activateSelector('assessment', true)\"\r\n (focusout)=\"activateSelector('assessment', false)\"\r\n name=\"riskAssessmentDeadline\"\r\n validateAssessment\r\n #deadline=\"ngModel\"\r\n (ngModelChange)=\"changeRiskAssessmentDeadline($event)\"\r\n onkeydown=\"return event.keyCode !== 190\"\r\n min=\"0\"\r\n oninput=\"this.value = Math.abs(this.value)\"\r\n />\r\n <button (click)=\"changeRiskAssessment('add')\">\r\n <i class=\"icons\">&#xe915;</i>\r\n </button>\r\n </div>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.assessment_deadline_days < 1\"\r\n class=\"error-message\"\r\n >\r\n Enter a value greater than 0.\r\n </p>\r\n <label\r\n class=\"vx-control-panel\"\r\n *ngIf=\"riskForm?.assessment_deadline_days >= 1\"\r\n >\r\n This risk assessment needs to be completed by\r\n {{ date | date : \"dd MMM yyyy\" }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Overseer -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'overseer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'overseer' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm.addOverseer\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.overseersList?.length > 0\">\r\n <img\r\n *ngIf=\"\r\n riskForm?.overseersList?.length == 0 || activeSelector === 'overseer'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length > 0 && activeSelector !== 'overseer'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Oversight<i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the person that is responsible for overseeing the risk but who is not responsible for managing the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div\r\n class=\"select\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length == 0 &&\r\n riskForm?.overseersGroupList?.length == 0\r\n \"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('overseer', true)\"\r\n placeholder=\"Select Risk Oversight(s)\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length > 0 ||\r\n riskForm?.overseersGroupList.length > 0\r\n \"\r\n >\r\n <ng-container *ngIf=\"!featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <ng-container\r\n *ngFor=\"let owner of riskForm?.overseersList?.slice(0, 1)\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('overseer', owner)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"owner.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ owner.member_name }}</span\r\n >\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverOverseer.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersList?.length > 1\"\r\n >\r\n +{{ riskForm?.overseersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('overseer', riskForm?.overseersList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.overseersList[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n *ngIf=\"riskForm?.overseersList.length > 0\"\r\n >{{ riskForm?.overseersList[0]?.member_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\r\n appPopover\r\n (click)=\"overseer.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersList.length > 1\"\r\n >\r\n +{{ riskForm?.overseersList.length - 1 }}\r\n </button>\r\n </div>\r\n <span\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n riskForm?.overseersList.length > 0 &&\r\n riskForm?.overseersGroupList.length > 0\r\n \"\r\n >&</span\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"riskForm?.overseersGroupList.length > 0\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"\r\n remove('overseergroup', riskForm?.overseersGroupList[0])\r\n \"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.overseersGroupList[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.overseersGroupList[0]?.group_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"overseerGroup.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersGroupList?.length > 1\"\r\n >\r\n +{{ riskForm?.overseersGroupList?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n <button\r\n *ngIf=\"activeSelector !== 'overseer'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('overseer', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <app-popover #popoverOverseer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let owner of riskForm?.overseersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseer', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let owner of riskForm?.overseersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseer', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of riskForm?.overseersGroupList | slice : 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseergroup', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.group_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Mitigation Priority -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm.addMitigation\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm.mitigation\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/priority.svg\"\r\n *ngIf=\"!riskForm.mitigation\"\r\n alt=\"\"\r\n />\r\n <!-- <svg viewBox=\"25 25 50 50\" class=\"edit-loader\">\r\n <circle cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke=\"#1e5dd3\" stroke-width=\"3\" class=\"loader-path\"></circle>\r\n </svg> -->\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"riskForm.mitigation\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Mitigation Priority\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This sets the priority level for the mitigation of each risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n\r\n <cs-select\r\n [(ngModel)]=\"riskForm.mitigation\"\r\n [placeholder]=\"'Select a mitigation priority'\"\r\n name=\"riskForm.mitigation\"\r\n >\r\n <cs-option\r\n *ngFor=\"let data of mitigationDetails\"\r\n [value]=\"data?.mitigation_id\"\r\n [color]=\"data?.mitigation_color\"\r\n >\r\n {{ data.mitigation_name }}\r\n </cs-option>\r\n </cs-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Recommended Mitigation Plan -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n *ngIf=\"riskForm?.addMitigationPlan\"\r\n >\r\n <div\r\n id=\"riskSpace\"\r\n class=\"left\"\r\n [class.checked]=\"(riskForm.mitigationDescriptionPlan | spaceTrim) !== ''\"\r\n >\r\n <img\r\n *ngIf=\"(riskForm.mitigationDescriptionPlan | spaceTrim) === ''\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/objectives.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"(riskForm.mitigationDescriptionPlan | spaceTrim) !== ''\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label for=\"\" class=\"vx-control-panel\"\r\n >Recommended Mitigation Plans<link\r\n rel=\"manifest\"\r\n href=\"./manifest.json\"\r\n />\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'Specify the mitigation plan that can be undertaken to mitigate the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <vcomply-editor\r\n [(ngModel)]=\"riskForm.mitigationDescriptionPlan\"\r\n [editorConfig]=\"mitigationDescriptionPlan\"\r\n (clickOutside)=\"checkMitigationPlan()\"\r\n >\r\n </vcomply-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Label -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.addRiskLabel\"\r\n >\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <!-- <img *ngIf=\"true\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\" alt=\"\" /> -->\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"true\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >RISK LABEL\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"'Risk label info text here...'\"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <cs-select\r\n [(ngModel)]=\"riskForm.riskLabelValue\"\r\n [placeholder]=\"'Select a risk label'\"\r\n name=\"riskForm?.riskLabelValue\"\r\n >\r\n <cs-option *ngFor=\"let data of riskLabelList\" [value]=\"data?.value\">\r\n {{ data?.name }}\r\n </cs-option>\r\n </cs-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Link with GRC -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'GRC'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'GRC' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.GRC\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.ownersList?.length > 0\">\r\n <img\r\n *ngIf=\"riskForm?.ownersList?.length == 0 || activeSelector === 'owner'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/link-items.svg alt=\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.ownersList?.length > 0 && activeSelector !== 'owner'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">LINK GRC OBJECT(S) </label>\r\n <div class=\"select\" *ngIf=\"riskForm?.selectedGRCObjects?.length === 0\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('GRC', true)\"\r\n placeholder=\"Select GRC object(s) to link with this risk.\"\r\n readonly\r\n />\r\n </div>\r\n <ng-container *ngIf=\"riskForm?.selectedGRCObjects?.length\">\r\n <ng-container\r\n *ngFor=\"\r\n let selectedGRC of grcDataWithTypes | keyvalue : originalOrder;\r\n let i = index\r\n \"\r\n >\r\n <div *ngIf=\"selectedGRC?.value?.length\" class=\"selected\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <ng-container\r\n *ngFor=\"let grc of selectedGRC?.value?.slice(0, 1)\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('GRC', grc, 0)\"\r\n >&#xe9ae;</i\r\n >\r\n <div\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >\r\n {{ selectedGRC?.key | titlecase }}\r\n </div>\r\n\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"grc?.name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ grc?.name }}</span\r\n >\r\n </ng-container>\r\n\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverGRC.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"selectedGRC?.value?.length > 1\"\r\n >\r\n +{{ selectedGRC?.value.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'GRC'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"\r\n selectedGRCTab = selectedGRC?.value[0]?.type;\r\n getOtherGRCObjects();\r\n activateSelector('GRC', true)\r\n \"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <app-popover #popoverGRC [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let grc of selectedGRC?.value | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('GRC', grc, j + 1)\"\r\n >&#xe90d;</i\r\n >\r\n {{ grc.name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<app-responsibility-centers-list\r\n *ngIf=\"activeSelector === 'rc'\"\r\n [responsibilityCentersList]=\"responsibilityCentersList\"\r\n [selectedResponsibilityCenters]=\"riskForm.responsibilityCentersList\"\r\n [rcIdKey]=\"'rc_id'\"\r\n (saveSelectedList)=\"saveSelectedRCList($event)\"\r\n (closeRcList)=\"activateSelector('rc', false)\"\r\n [singularText]=\"'Responsibility Center selected'\"\r\n [pluralText]=\"'Responsibility Centers selected'\"\r\n>\r\n</app-responsibility-centers-list>\r\n\r\n<app-owner-list\r\n *ngIf=\"!featureflag_groups && activeSelector === 'owner'\"\r\n [usersList]=\"ownersList\"\r\n [selectedUsers]=\"riskForm.ownersList\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedOwnersList($event)\"\r\n [nonRemovableUsersList]=\"nonRemovableUsersList\"\r\n (closeUsersList)=\"activateSelector('owner', false)\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n></app-owner-list>\r\n\r\n<user-group-list\r\n *ngIf=\"featureflag_groups && activeSelector === 'owner'\"\r\n [userlist]=\"ownersList\"\r\n [selectedUsers]=\"riskForm.ownersList\"\r\n [groupList]=\"groupsList\"\r\n [nonRemovableUserIds]=\"nonRemovableUsersList\"\r\n (save)=\"saveSelectedOwnersList($event)\"\r\n [selectedGroups]=\"riskForm.groupsList\"\r\n (cancel)=\"activateSelector('owner', false)\"\r\n [groupEnabled]=\"true\"\r\n [featureflag]=\"featureflag_groups\"\r\n>\r\n</user-group-list>\r\n\r\n<user-group-list\r\n *ngIf=\"featureflag_groups && activeSelector === 'overseer'\"\r\n [userlist]=\"overseersList\"\r\n [selectedUsers]=\"riskForm.overseersList\"\r\n [groupList]=\"overseersGroupList\"\r\n (save)=\"saveSelectedOverseersList($event)\"\r\n [selectedGroups]=\"riskForm.overseersGroupList\"\r\n (cancel)=\"activateSelector('overseer', false)\"\r\n [groupEnabled]=\"true\"\r\n [featureflag]=\"featureflag_groups\"\r\n>\r\n</user-group-list>\r\n\r\n<app-category-list\r\n *ngIf=\"activeSelector === 'category'\"\r\n [categoryList]=\"categoryList\"\r\n [selectedCategory]=\"riskForm.category\"\r\n (saveSelectedCategory)=\"saveSelectedCategory($event)\"\r\n (closeCategoriesList)=\"activateSelector('category', false)\"\r\n></app-category-list>\r\n<app-owner-list\r\n *ngIf=\"!featureflag_groups && activeSelector === 'overseer'\"\r\n [usersList]=\"overseersList\"\r\n [selectedUsers]=\"riskForm.overseersList\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemNameKey]=\"'member_name'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n (saveSelectedList)=\"saveSelectedOverseersList($event)\"\r\n (closeUsersList)=\"activateSelector('overseer', false)\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n>\r\n</app-owner-list>\r\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n\r\n<app-frequency-dialog-container\r\n *ngIf=\"activeSelector === 'frequency'\"\r\n [frequencyDetails]=\"frequencyDetails\"\r\n (selectedFrequency)=\"frequencyData($event)\"\r\n (closeFrequency)=\"activateSelector('frequency', false)\"\r\n>\r\n</app-frequency-dialog-container>\r\n\r\n<app-grc-object-list\r\n *ngIf=\"activeSelector === 'GRC'\"\r\n [grcObject]=\"grcList\"\r\n [selectedGRC]=\"riskForm.selectedGRCObjects | refDisconnect\"\r\n [loader]=\"grcLoader\"\r\n [tableCard]=\"otherGRCCard | refDisconnect\"\r\n [selectedTab]=\"selectedGRCTab\"\r\n (getOtherGRCObjects)=\"getOtherGRCObjects($event)\"\r\n (saveOtherGRC)=\"saveSelectedList($event)\"\r\n (closeOtherGRC)=\"activateSelector('GRC', false)\"\r\n></app-grc-object-list>\r\n\r\n<app-smiley-dialog-inline\r\n *ngIf=\"showSmiley\"\r\n [message]=\"smileyMessage\"\r\n [actionButtons]=\"actionButtons\"\r\n (action)=\"action($event)\"\r\n (closeSmiley)=\"closeSmiley($event)\"\r\n>\r\n</app-smiley-dialog-inline>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .workflw-risk{display:block;position:relative}\n", "@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.withBtn:after{display:none}::ng-deep .selectBoxEnable.withBtn button.setBtn{background:transparent;border-radius:0;border:none;min-width:98px}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#ffffff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#ffffff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#ffffff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group vcomply-editor{margin-top:8px;display:block}::ng-deep .vx-form-group vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#ffffff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:208px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#ffffff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#ffffff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#ffffff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}dp-date-picker input:focus{outline:none}dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}dp-date-picker .dp-popup dp-day-calendar,dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}dp-date-picker .dp-popup dp-day-calendar button,dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000000;display:inline-flex}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:rgba(0,0,0,.3)}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#ffffff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0%,#747576 1%,#747576 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#ffffff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0%,#f31c39 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0%,#34aa44 1%,#34aa44 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0%,#1e5dd3 1%,#1e5dd3 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0%,#f6882f 1%,#f6882f 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0%,#7aa6f7 1%,#7aa6f7 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}\n"] }]
1557
+ args: [{ selector: 'app-workflow-risk', template: "<div class=\"workflw-risk\" *ngIf=\"!showSmiley\">\r\n <!-- Risk Type -->\r\n <div class=\"form-group-row\" [class.active]=\"false\" [class.disabled]=\"false\">\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/type.svg\"\r\n alt=\"im\"\r\n *ngIf=\"true\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"false\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Type <span class=\"required\">*</span></label\r\n >\r\n <div class=\"risk-type-field\">\r\n <div\r\n class=\"type-item\"\r\n [class.active]=\"riskForm?.riskType === 'NORMAL'\"\r\n >\r\n <button\r\n [class.disabled]=\"!riskTypeChangeAllowed\"\r\n (click)=\"changeRisk('NORMAL')\"\r\n >\r\n ADD TO RISK REGISTER\r\n </button>\r\n <i\r\n class=\"icons info\"\r\n [appTooltip]=\"\r\n 'This option lets you add a risk directly to the Risk Register. The risk owners will receive an alert and they can begin the the risk assessment process.'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe932;</i\r\n >\r\n </div>\r\n <div\r\n class=\"type-item\"\r\n [class.active]=\"riskForm?.riskType === 'REPORTED'\"\r\n >\r\n <button\r\n [class.disabled]=\"!riskTypeChangeAllowed\"\r\n (click)=\"changeRisk('REPORTED')\"\r\n >\r\n REPORT A RISK\r\n </button>\r\n <i\r\n class=\"icons info\"\r\n [appTooltip]=\"\r\n 'This options lets you report a risk and assign it to the risk owners. The risk owners will have the option to either add the risk to the Risk Register or flag it for a follow-up at a later date.'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe932;</i\r\n >\r\n </div>\r\n <span class=\"background-glider\"></span>\r\n </div>\r\n <p *ngIf=\"false\" class=\"error-message\">Add a risk type</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Name -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'name' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm.title\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n alt=\"im\"\r\n *ngIf=\"\r\n riskForm?.title?.trim()?.length === 0 || activeSelector === 'name'\r\n \"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.title?.trim()?.length > 0 && activeSelector !== 'name'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >WHAT RISK WOULD YOU LIKE TO MANAGE?\r\n <span class=\"required\">*</span></label\r\n >\r\n <input\r\n spaceTrim\r\n type=\"text\"\r\n (keydown)=\"activeSelector = 'name'\"\r\n (focusin)=\"activateSelector('name', true)\"\r\n (focusout)=\"activateSelector('name', false)\"\r\n [(ngModel)]=\"riskForm.title\"\r\n placeholder=\"Add a risk name\"\r\n *ngIf=\"riskForm?.title?.trim() == '' || activeSelector === 'name'\"\r\n />\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"riskForm?.title?.trim() != '' && activeSelector !== 'name'\"\r\n >\r\n <div class=\"chip-container\">\r\n <span class=\"value\">{{ riskForm.title }}</span>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n (click)=\"activateSelector('name', true)\"\r\n type=\"button\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p *ngIf=\"submitted && !riskForm.title\" class=\"error-message\">\r\n Add a risk name\r\n </p>\r\n <vcomply-editor\r\n [(ngModel)]=\"riskForm.description\"\r\n [editorConfig]=\"description\"\r\n (clickOutside)=\"checkDescription()\"\r\n ></vcomply-editor>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n riskForm.riskType === 'REPORTED' &&\r\n !riskForm?.description?.trim()?.length\r\n \"\r\n class=\"error-message\"\r\n >\r\n Add a risk description\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Owner -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'owner'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'owner' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.ownersList?.length > 0\">\r\n <img\r\n *ngIf=\"riskForm?.ownersList?.length == 0 || activeSelector === 'owner'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/im-creating.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.ownersList?.length > 0 && activeSelector !== 'owner'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >WHO IS RESPONSIBLE FOR MANAGING THIS RISK?\r\n <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the person that is responsible for managing the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <div class=\"select\" *ngIf=\"riskForm?.ownersList?.length == 0\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('owner', true)\"\r\n placeholder=\"Select Risk Owner(s)\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n riskForm?.ownersList?.length > 0 || riskForm?.groupsList.length > 0\r\n \"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"!featureflag_groups\"\r\n >\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerList\r\n \"\r\n >\r\n <ng-container *ngFor=\"let owner of ownerList?.slice(0, 1)\">\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"!nonRemovableUsersList.includes(owner?.member_id)\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"owner?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ owner?.member_name }}</span\r\n >\r\n </ng-container>\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverOwner.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"riskForm?.ownersList?.length > 1\"\r\n >\r\n +{{ riskForm?.ownersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" *ngIf=\"!featureflag_groups\" [class.more-one]=\"riskForm?.ownersList?.length>1\" [class.plus]=\"riskForm?.ownersList?.length>2\">\r\n <ng-container *ngIf=\"(riskForm?.ownersList|shortMerge : nonRemovableUsersList) as ownerList\">\r\n <span class=\"chip\" *ngFor=\"let owner of ownerList?.slice(0,2)\"><i class=\"icons\" *ngIf=\"!nonRemovableUsersList.includes(owner?.member_id)\" (click)=\"remove('owner',owner)\">&#xe90d;</i> {{owner?.member_name}}</span>\r\n <button class=\"count\" *ngIf=\"riskForm?.ownersList?.length > 2\" type=\"button\" appPopover (click)=\"popoverOwner.popover()\" placement=\"right\">+{{riskForm?.ownersList?.slice(2).length}}</button>\r\n </ng-container>\r\n </div> -->\r\n\r\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(\r\n riskForm?.ownersList[0]?.member_id\r\n )\r\n \"\r\n (click)=\"remove('owner', riskForm?.ownersList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.ownersList[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.ownersList[0]?.member_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\r\n appPopover\r\n (click)=\"popoverUser.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.ownersList.length > 1\"\r\n >\r\n +{{ riskForm?.ownersList.length - 1 }}\r\n </button>\r\n </div>\r\n <span\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"riskForm?.groupsList.length > 0\"\r\n >&</span\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"riskForm?.groupsList.length > 0\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('Ownergroup', riskForm?.groupsList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.groupsList[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.groupsList[0]?.group_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"group.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.groupsList?.length > 1\"\r\n >\r\n +{{ riskForm?.groupsList?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" *ngIf=\"featureflag_groups\">\r\n <div class=\"chip-inner\" >\r\n <i class=\"icons cross vx-mr-1\" *ngIf=\"!nonRemovableUsersList.includes(riskForm?.ownersList[0]?.member_id)\" (click)=\"remove('owner',riskForm?.ownersList[0])\" >&#xe90d;</i>\r\n <span class=\"chip\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{riskForm?.ownersList[0]?.member_name}}</span></span>\r\n <button *ngIf=\"riskForm?.ownersList.length > 1\" class=\"count user\" appPopover (click)=\"popoverUser.popover()\" placement=\"right\">+{{riskForm?.ownersList.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"riskForm?.groupsList.length > 0\" >&</span>\r\n <div class=\"chip-inner\" *ngIf=\"riskForm?.groupsList.length > 0\" >\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove('Ownergroup', riskForm?.groupsList[0])\" >&#xe90d;</i>\r\n <span class=\"chip\" [appTooltip]=\"riskForm?.groupsList[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\"><span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{riskForm?.groupsList[0]?.group_name}}</span></span>\r\n <button *ngIf=\"riskForm?.groupsList?.length > 1\" class=\"count\" appPopover (click)=\"group.popover()\" placement=\"right\">+{{riskForm?.groupsList?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'owner'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('owner', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.ownersList?.length === 0\"\r\n class=\"error-message\"\r\n >\r\n Select Owner(s) for this risk.\r\n </p>\r\n <app-popover #popoverOwner [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerPop\r\n \"\r\n >\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of ownerPop | slice : 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(owner?.member_id)\r\n \"\r\n class=\"icons\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </app-popover>\r\n <app-popover #popoverUser [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ng-container\r\n *ngIf=\"\r\n riskForm?.ownersList\r\n | shortMerge : nonRemovableUsersList as ownerPop\r\n \"\r\n >\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of ownerPop | slice : 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i\r\n *ngIf=\"\r\n !nonRemovableUsersList.includes(owner?.member_id)\r\n \"\r\n class=\"icons\"\r\n (click)=\"remove('owner', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </app-popover>\r\n <app-popover #group [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of riskForm?.groupsList | slice : 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('Ownergroup', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.group_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Responsibility Center -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'rc'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'rc' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"riskForm?.responsibilityCentersList?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n riskForm?.responsibilityCentersList?.length == 0 ||\r\n activeSelector === 'rc'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n riskForm?.responsibilityCentersList?.length > 0 &&\r\n activeSelector !== 'rc'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Responsibility Center <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'Responsibility Centers represent the corporate and operational infrastructure of an organization. One or more Responsibility Centers can be exposed to a risk and accordingly, the risk must be assessed against each Responsibility Center.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length == 0\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('rc', true)\"\r\n placeholder=\"Select Responsibility Center(s)\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length > 0\"\r\n >\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <ng-container\r\n *ngFor=\"\r\n let rcName of riskForm?.responsibilityCentersList?.slice(0, 1)\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('rc', rcName)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"rcName.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rcName.item_name }}</span\r\n >\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverRC.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"riskForm?.responsibilityCentersList?.length > 1\"\r\n >\r\n +{{ riskForm?.responsibilityCentersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" [class.more-one]=\"riskForm?.responsibilityCentersList?.length>1\" [class.plus]=\"riskForm?.responsibilityCentersList?.length>2\">\r\n <span class=\"chip\" *ngFor=\"let rcName of riskForm?.responsibilityCentersList?.slice(0,2)\"><i class=\"icons\" (click)=\"remove('rc',rcName)\">&#xe90d;</i> {{rcName.item_name}}</span>\r\n <button class=\"count\" *ngIf=\"riskForm?.responsibilityCentersList?.length > 2\" type=\"button\" appPopover (click)=\"popoverRC.popover()\" placement=\"right\">+{{riskForm?.responsibilityCentersList?.slice(2).length}}</button>\r\n </div> -->\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'rc'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('rc', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.responsibilityCentersList?.length == 0\"\r\n class=\"error-message\"\r\n >\r\n Assign this risk to a Responsibility Center(s)\r\n </p>\r\n <app-popover #popoverRC [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rcName of riskForm?.responsibilityCentersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('rc', rcName)\">&#xe90d;</i>\r\n {{ rcName.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Frequency -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'frequency'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'frequency' &&\r\n sideSelectorElements?.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.riskType !== 'REPORTED'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.category?.selectedCategory\">\r\n <img\r\n *ngIf=\"\r\n !riskForm?.frequency_details?.frequency ||\r\n riskForm?.frequency_details?.frequency === '' ||\r\n activeSelector === 'frequency'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n (riskForm?.frequency_details?.frequency &&\r\n riskForm?.frequency_details?.frequency !== '') ||\r\n activeSelector !== 'frequency'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >HOW OFTEN DOES THIS RISK NEED TO BE REASSESSED?\r\n <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'The option lets you specify the risk reassessment frequency.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div\r\n class=\"select\"\r\n *ngIf=\"!riskForm?.frequency_details?.frequency\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <input\r\n type=\"text\"\r\n placeholder=\"Set a Reassessment Frequency\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected button-sec\"\r\n *ngIf=\"riskForm?.frequency_details?.frequency\"\r\n >\r\n <span\r\n class=\"chip\"\r\n [appTooltip]=\"frequencyPlaceholder\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ frequencyPlaceholder }}</span\r\n >\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <div class=\"vx-mt-1\">\r\n <app-cs-switch\r\n [ngValue]=\"riskForm?.enableAllFutureBusinessCycle\"\r\n (ngValueChange)=\"riskForm.enableAllFutureBusinessCycle = $event\"\r\n >DO YOU WANT THIS TO SHOW IN ALL FUTURE BUSINESS CYCLES?\r\n </app-cs-switch>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n (!riskForm?.frequency_details?.frequency ||\r\n riskForm?.frequency_details?.frequency === '')\r\n \"\r\n class=\"error-message\"\r\n >\r\n Please select the frequency of occurrence for this risk.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Category -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'category'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'category' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.category?.selectedCategory\">\r\n <img\r\n *ngIf=\"\r\n !riskForm?.category?.selectedCategory || activeSelector === 'category'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.category?.selectedCategory && activeSelector !== 'category'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Category\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"'Risk Categories are used to group similar risks.'\"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div class=\"select\" *ngIf=\"!riskForm?.category?.selectedCategory\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('category', true)\"\r\n placeholder=\"Select Risk Category\"\r\n readonly\r\n />\r\n </div>\r\n <div class=\"selected\" *ngIf=\"riskForm?.category?.selectedCategory\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('category', riskForm.category.selectedCategory)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.category?.selectedCategory?.category_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.category?.selectedCategory?.category_name }}</span\r\n >\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove('category',riskForm.category.selectedCategory)\">&#xe90d;</i>{{riskForm?.category?.selectedCategory?.category_name}}</span>\r\n </div> -->\r\n <button\r\n *ngIf=\"activeSelector !== 'category'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('category', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"riskForm?.categoryCustomTags?.length > 0\">\r\n <div\r\n class=\"vx-form-group\"\r\n *ngFor=\"let tag of riskForm.categoryCustomTags\"\r\n >\r\n <label class=\"vx-control-panel\">{{ tag.custom_tag_name }}</label>\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"tag.custom_tag_value\"\r\n [placeholder]=\"tag.custom_tag_name\"\r\n />\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- Assessment Deadline -->\r\n <!-- !settingsInfo?.assessment_deadline_enable && riskForm?.riskType !== 'REPORTED' && ((currentTimeStamp < editDetails?.assessment_date_timestamp) || !editDetails?.IfAssessmentDone ) -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'assessment'\"\r\n id=\"deadline\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'assessment' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"false\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.assessment_deadline_days >= 1\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n *ngIf=\"\r\n riskForm?.assessment_deadline_days < 1 ||\r\n activeSelector === 'assessment'\r\n \"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.assessment_deadline_days >= 1 &&\r\n activeSelector !== 'assessment'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Assessment Deadline <span class=\"required\">*</span>\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the date that the inherent risk assessment must be completed by.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div class=\"input\">\r\n <span class=\"text\">Set Number of days</span>\r\n <div class=\"input-group counter\">\r\n <button (click)=\"changeRiskAssessment('subtract')\">\r\n <i class=\"icons\">&#xea53;</i>\r\n </button>\r\n <input\r\n type=\"number\"\r\n [(ngModel)]=\"riskForm.assessment_deadline_days\"\r\n (focusin)=\"activateSelector('assessment', true)\"\r\n (focusout)=\"activateSelector('assessment', false)\"\r\n name=\"riskAssessmentDeadline\"\r\n validateAssessment\r\n #deadline=\"ngModel\"\r\n (ngModelChange)=\"changeRiskAssessmentDeadline($event)\"\r\n onkeydown=\"return event.keyCode !== 190\"\r\n min=\"0\"\r\n oninput=\"this.value = Math.abs(this.value)\"\r\n />\r\n <button (click)=\"changeRiskAssessment('add')\">\r\n <i class=\"icons\">&#xe915;</i>\r\n </button>\r\n </div>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && riskForm?.assessment_deadline_days < 1\"\r\n class=\"error-message\"\r\n >\r\n Enter a value greater than 0.\r\n </p>\r\n <label\r\n class=\"vx-control-panel\"\r\n *ngIf=\"riskForm?.assessment_deadline_days >= 1\"\r\n >\r\n This risk assessment needs to be completed by\r\n {{ date | date : \"dd MMM yyyy\" }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Overseer -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'overseer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'overseer' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm.addOverseer\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.overseersList?.length > 0\">\r\n <img\r\n *ngIf=\"\r\n riskForm?.overseersList?.length == 0 || activeSelector === 'overseer'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length > 0 && activeSelector !== 'overseer'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Oversight<i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This is the person that is responsible for overseeing the risk but who is not responsible for managing the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <div\r\n class=\"select\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length == 0 &&\r\n riskForm?.overseersGroupList?.length == 0\r\n \"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('overseer', true)\"\r\n placeholder=\"Select Risk Oversight(s)\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n riskForm?.overseersList?.length > 0 ||\r\n riskForm?.overseersGroupList.length > 0\r\n \"\r\n >\r\n <ng-container *ngIf=\"!featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <ng-container\r\n *ngFor=\"let owner of riskForm?.overseersList?.slice(0, 1)\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('overseer', owner)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"owner.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ owner.member_name }}</span\r\n >\r\n </ng-container>\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverOverseer.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersList?.length > 1\"\r\n >\r\n +{{ riskForm?.overseersList?.slice(1).length }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"featureflag_groups\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('overseer', riskForm?.overseersList[0])\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.overseersList[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n *ngIf=\"riskForm?.overseersList.length > 0\"\r\n >{{ riskForm?.overseersList[0]?.member_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\r\n appPopover\r\n (click)=\"overseer.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersList.length > 1\"\r\n >\r\n +{{ riskForm?.overseersList.length - 1 }}\r\n </button>\r\n </div>\r\n <span\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n riskForm?.overseersList.length > 0 &&\r\n riskForm?.overseersGroupList.length > 0\r\n \"\r\n >&</span\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"riskForm?.overseersGroupList.length > 0\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"\r\n remove('overseergroup', riskForm?.overseersGroupList[0])\r\n \"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"riskForm?.overseersGroupList[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskForm?.overseersGroupList[0]?.group_name }}</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"overseerGroup.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"riskForm?.overseersGroupList?.length > 1\"\r\n >\r\n +{{ riskForm?.overseersGroupList?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n <button\r\n *ngIf=\"activeSelector !== 'overseer'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('overseer', true)\"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <app-popover #popoverOverseer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let owner of riskForm?.overseersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseer', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let owner of riskForm?.overseersList | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseer', owner)\"\r\n >&#xe90d;</i\r\n >\r\n {{ owner.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of riskForm?.overseersGroupList | slice : 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('overseergroup', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.group_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Mitigation Priority -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm.addMitigation\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm.mitigation\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/priority.svg\"\r\n *ngIf=\"!riskForm.mitigation\"\r\n alt=\"\"\r\n />\r\n <!-- <svg viewBox=\"25 25 50 50\" class=\"edit-loader\">\r\n <circle cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke=\"#1e5dd3\" stroke-width=\"3\" class=\"loader-path\"></circle>\r\n </svg> -->\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"riskForm.mitigation\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >Risk Mitigation Priority\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'This sets the priority level for the mitigation of each risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n\r\n <cs-select\r\n [(ngModel)]=\"riskForm.mitigation\"\r\n [placeholder]=\"'Select a mitigation priority'\"\r\n name=\"riskForm.mitigation\"\r\n >\r\n <cs-option\r\n *ngFor=\"let data of mitigationDetails\"\r\n [value]=\"data?.mitigation_id\"\r\n [color]=\"data?.mitigation_color\"\r\n >\r\n {{ data.mitigation_name }}\r\n </cs-option>\r\n </cs-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Recommended Mitigation Plan -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n *ngIf=\"riskForm?.addMitigationPlan\"\r\n >\r\n <div\r\n id=\"riskSpace\"\r\n class=\"left\"\r\n [class.checked]=\"(riskForm.mitigationDescriptionPlan | spaceTrim) !== ''\"\r\n >\r\n <img\r\n *ngIf=\"(riskForm.mitigationDescriptionPlan | spaceTrim) === ''\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/objectives.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"(riskForm.mitigationDescriptionPlan | spaceTrim) !== ''\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label for=\"\" class=\"vx-control-panel\"\r\n >Recommended Mitigation Plans<link\r\n rel=\"manifest\"\r\n href=\"./manifest.json\"\r\n />\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'Specify the mitigation plan that can be undertaken to mitigate the risk.'\r\n \"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n >\r\n </label>\r\n <vcomply-editor\r\n [(ngModel)]=\"riskForm.mitigationDescriptionPlan\"\r\n [editorConfig]=\"mitigationDescriptionPlan\"\r\n (clickOutside)=\"checkMitigationPlan()\"\r\n >\r\n </vcomply-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Label -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.addRiskLabel\"\r\n >\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <!-- <img *ngIf=\"true\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\" alt=\"\" /> -->\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"true\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\"\r\n >RISK LABEL\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"'Risk label info text here...'\"\r\n placement=\"bottom\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n >&#xe91f;</i\r\n ></label\r\n >\r\n <cs-select\r\n [(ngModel)]=\"riskForm.riskLabelValue\"\r\n [placeholder]=\"'Select a risk label'\"\r\n name=\"riskForm?.riskLabelValue\"\r\n >\r\n <cs-option *ngFor=\"let data of riskLabelList\" [value]=\"data?.value\">\r\n {{ data?.name }}\r\n </cs-option>\r\n </cs-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Link with GRC -->\r\n <div\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'GRC'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'GRC' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n *ngIf=\"riskForm?.GRC\"\r\n >\r\n <div class=\"left\" [class.checked]=\"riskForm?.ownersList?.length > 0\">\r\n <img\r\n *ngIf=\"riskForm?.ownersList?.length == 0 || activeSelector === 'owner'\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/link-items.svg alt=\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"riskForm?.ownersList?.length > 0 && activeSelector !== 'owner'\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">LINK GRC OBJECT(S) </label>\r\n <div class=\"select\" *ngIf=\"riskForm?.selectedGRCObjects?.length === 0\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('GRC', true)\"\r\n placeholder=\"Select GRC object(s) to link with this risk.\"\r\n readonly\r\n />\r\n </div>\r\n <ng-container *ngIf=\"riskForm?.selectedGRCObjects?.length\">\r\n <ng-container\r\n *ngFor=\"\r\n let selectedGRC of grcDataWithTypes | keyvalue : originalOrder;\r\n let i = index\r\n \"\r\n >\r\n <div *ngIf=\"selectedGRC?.value?.length\" class=\"selected vx-mb-2\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <ng-container\r\n *ngFor=\"let grc of selectedGRC?.value?.slice(0, 1)\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('GRC', grc, 0)\"\r\n >&#xe9ae;</i\r\n >\r\n <div\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >\r\n {{ selectedGRC?.key | titlecase }}\r\n </div>\r\n\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"grc?.name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ grc?.name }}</span\r\n >\r\n </ng-container>\r\n\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"popoverGRC.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"selectedGRC?.value?.length > 1\"\r\n >\r\n +{{ selectedGRC?.value.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'GRC'\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"\r\n selectedGRCTab = selectedGRC?.value[0]?.type;\r\n getOtherGRCObjects();\r\n activateSelector('GRC', true)\r\n \"\r\n >\r\n <i class=\"icons\">&#xe9ba;</i> Edit\r\n </button>\r\n </div>\r\n <app-popover #popoverGRC [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let grc of selectedGRC?.value | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('GRC', grc, j + 1)\"\r\n >&#xe90d;</i\r\n >\r\n {{ grc.name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<app-responsibility-centers-list\r\n *ngIf=\"activeSelector === 'rc'\"\r\n [responsibilityCentersList]=\"responsibilityCentersList\"\r\n [selectedResponsibilityCenters]=\"riskForm.responsibilityCentersList\"\r\n [rcIdKey]=\"'rc_id'\"\r\n (saveSelectedList)=\"saveSelectedRCList($event)\"\r\n (closeRcList)=\"activateSelector('rc', false)\"\r\n [singularText]=\"'Responsibility Center selected'\"\r\n [pluralText]=\"'Responsibility Centers selected'\"\r\n>\r\n</app-responsibility-centers-list>\r\n\r\n<app-owner-list\r\n *ngIf=\"!featureflag_groups && activeSelector === 'owner'\"\r\n [usersList]=\"ownersList\"\r\n [selectedUsers]=\"riskForm.ownersList\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedOwnersList($event)\"\r\n [nonRemovableUsersList]=\"nonRemovableUsersList\"\r\n (closeUsersList)=\"activateSelector('owner', false)\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n></app-owner-list>\r\n\r\n<user-group-list\r\n *ngIf=\"featureflag_groups && activeSelector === 'owner'\"\r\n [userlist]=\"ownersList\"\r\n [selectedUsers]=\"riskForm.ownersList\"\r\n [groupList]=\"groupsList\"\r\n [nonRemovableUserIds]=\"nonRemovableUsersList\"\r\n (save)=\"saveSelectedOwnersList($event)\"\r\n [selectedGroups]=\"riskForm.groupsList\"\r\n (cancel)=\"activateSelector('owner', false)\"\r\n [groupEnabled]=\"true\"\r\n [featureflag]=\"featureflag_groups\"\r\n>\r\n</user-group-list>\r\n\r\n<user-group-list\r\n *ngIf=\"featureflag_groups && activeSelector === 'overseer'\"\r\n [userlist]=\"overseersList\"\r\n [selectedUsers]=\"riskForm.overseersList\"\r\n [groupList]=\"overseersGroupList\"\r\n (save)=\"saveSelectedOverseersList($event)\"\r\n [selectedGroups]=\"riskForm.overseersGroupList\"\r\n (cancel)=\"activateSelector('overseer', false)\"\r\n [groupEnabled]=\"true\"\r\n [featureflag]=\"featureflag_groups\"\r\n>\r\n</user-group-list>\r\n\r\n<app-category-list\r\n *ngIf=\"activeSelector === 'category'\"\r\n [categoryList]=\"categoryList\"\r\n [selectedCategory]=\"riskForm.category\"\r\n (saveSelectedCategory)=\"saveSelectedCategory($event)\"\r\n (closeCategoriesList)=\"activateSelector('category', false)\"\r\n></app-category-list>\r\n<app-owner-list\r\n *ngIf=\"!featureflag_groups && activeSelector === 'overseer'\"\r\n [usersList]=\"overseersList\"\r\n [selectedUsers]=\"riskForm.overseersList\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemNameKey]=\"'member_name'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n (saveSelectedList)=\"saveSelectedOverseersList($event)\"\r\n (closeUsersList)=\"activateSelector('overseer', false)\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n>\r\n</app-owner-list>\r\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n\r\n<app-frequency-dialog-container\r\n *ngIf=\"activeSelector === 'frequency'\"\r\n [frequencyDetails]=\"frequencyDetails\"\r\n (selectedFrequency)=\"frequencyData($event)\"\r\n (closeFrequency)=\"activateSelector('frequency', false)\"\r\n>\r\n</app-frequency-dialog-container>\r\n\r\n<app-grc-object-list\r\n *ngIf=\"activeSelector === 'GRC'\"\r\n [grcObject]=\"grcList\"\r\n [selectedGRC]=\"riskForm.selectedGRCObjects | refDisconnect\"\r\n [loader]=\"grcLoader\"\r\n [tableCard]=\"otherGRCCard | refDisconnect\"\r\n [selectedTab]=\"selectedGRCTab\"\r\n (getOtherGRCObjects)=\"getOtherGRCObjects($event)\"\r\n (saveOtherGRC)=\"saveSelectedList($event)\"\r\n (closeOtherGRC)=\"activateSelector('GRC', false)\"\r\n></app-grc-object-list>\r\n\r\n<app-smiley-dialog-inline\r\n *ngIf=\"showSmiley\"\r\n [message]=\"smileyMessage\"\r\n [actionButtons]=\"actionButtons\"\r\n (action)=\"action($event)\"\r\n (closeSmiley)=\"closeSmiley($event)\"\r\n>\r\n</app-smiley-dialog-inline>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .workflw-risk{display:block;position:relative}\n", "@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.withBtn:after{display:none}::ng-deep .selectBoxEnable.withBtn button.setBtn{background:transparent;border-radius:0;border:none;min-width:98px}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#ffffff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#ffffff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#ffffff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group vcomply-editor{margin-top:8px;display:block}::ng-deep .vx-form-group vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#ffffff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:208px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#ffffff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#ffffff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#ffffff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}dp-date-picker input:focus{outline:none}dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}dp-date-picker .dp-popup dp-day-calendar,dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}dp-date-picker .dp-popup dp-day-calendar button,dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000000;display:inline-flex}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:rgba(0,0,0,.3)}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#ffffff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0%,#747576 1%,#747576 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#ffffff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0%,#f31c39 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0%,#34aa44 1%,#34aa44 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0%,#1e5dd3 1%,#1e5dd3 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0%,#f6882f 1%,#f6882f 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0%,#7aa6f7 1%,#7aa6f7 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}\n"] }]
1554
1558
  }], ctorParameters: function () { return [{ type: i1.AddRiskService }, { type: i2.AuthService }, { type: i3.UiKitService }, { type: i4.SnackBarService }, { type: i5.FrequencyService }, { type: i6.GrcService }, { type: i7.Configurations, decorators: [{
1555
1559
  type: Optional
1556
1560
  }] }]; }, propDecorators: { feature: [{
@@ -1584,4 +1588,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1584
1588
  }], openedFrom: [{
1585
1589
  type: Input
1586
1590
  }] } });
1587
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcmlzay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1yaXNrL3dvcmtmbG93LXJpc2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcmlzay93b3JrZmxvdy1yaXNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFlBQVksRUFFWixRQUFRLEVBQ1IsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFVbkMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTakYsTUFBTSxPQUFPLHFCQUFxQjtJQTRJaEMsWUFDVSxXQUEyQixFQUMzQixXQUF3QixFQUN4QixZQUEwQixFQUMxQixRQUF5QixFQUN6QixnQkFBa0MsRUFDbEMsVUFBc0IsRUFDbEIsTUFBdUI7UUFOM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWpKaEMsOEJBQXlCLEdBQVEsRUFBRSxDQUFDO1FBQ3BDLGtDQUE2QixHQUFRLEVBQUUsQ0FBQztRQUN4QyxzQkFBaUIsR0FBUSxFQUFFLENBQUM7UUFDNUIsZUFBVSxHQUFRLEVB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LGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixjQUFjO3dCQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUMxRCxNQUFNO3dCQUNOLGFBQWEsQ0FBQzthQUNqQjtpQkFBTSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLG9CQUFvQjtvQkFDdkIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixjQUFjO3dCQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUMxRCxNQUFNO3dCQUNOLGFBQWEsQ0FBQzthQUNqQjtpQkFBTSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLG9CQUFvQjtvQkFDdkIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixjQUFjO3dCQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUMxRCxNQUFNO3dCQUNOLGFBQWEsQ0FBQzthQUNqQjtpQkFBTSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLG9CQUFvQjtvQkFDdkIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixjQUFjO3dCQUNk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RUFBRSxFQUFFO1lBQ2IsT0FBTyxFQUFFLEVBQUU7WUFDWCxTQUFTLEVBQUUsRUFBRTtTQUNkLENBQUM7SUFDSixDQUFDOztrSEFqcURVLHFCQUFxQjtzR0FBckIscUJBQXFCLHNrQkM1QmxDLDJ1MURBNGhEQTsyRkRoZ0RhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUI7OzBCQXVKMUIsUUFBUTs0Q0E5SEYsT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNJLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRywyQkFBMkI7c0JBQXBDLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRSxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ3Zjb21wbHktZWRpdG9yJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnMgfSBmcm9tICcuLi9jb25maWd1cmF0aW9ucyc7XHJcbmltcG9ydCB7IENhdGVnb3J5TGlzdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY2F0ZWdvcnlMaXN0JztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uQWxlcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpcm1hdGlvbi1hbGVydCc7XHJcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZGRSaXNrU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2FkZC1yaXNrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcclxuaW1wb3J0IHsgT1RIRVJfR1JDX0NBUkQgfSBmcm9tICcuLi93b3JrZmxvdy9zaGFyZWQvY29uc3RhbnRzL2dyY09iamVjdC5jb25zdGFudCc7XHJcbmltcG9ydCB7IEdyY1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy9zaGFyZWQvc2VydmljZXMvZ3JjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXdvcmtmbG93LXJpc2snLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1yaXNrLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1yaXNrLmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtmbG93Umlza0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdDogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnM6IGFueSA9IFtdO1xyXG4gIG1pdGlnYXRpb25EZXRhaWxzOiBhbnkgPSBbXTtcclxuICBvd25lcnNMaXN0OiBhbnkgPSBbXTtcclxuICBub25SZW1vdmFibGVVc2Vyc0xpc3Q6IGFueSA9IFtdO1xyXG4gIGVkaXREZXRhaWxzITogYW55O1xyXG4gIHNtaWxleU1lc3NhZ2UgPSBgWW91J3JlIEFsbCBTZXQhYDtcclxuICByaXNrRGF0YSE6IGFueTtcclxuICBhY3Rpb25CdXR0b25zID0gW1xyXG4gICAgeyBidXR0b25UZXh0OiAnQWRkIE1vcmUgUmlza3MnLCBjbGFzczogJ3doaXRlLWJ0bicsIGlkOiAnYWRkTW9yZScgfSxcclxuICAgIHsgYnV0dG9uVGV4dDogJ1ZpZXcgUmlzaycsIGNsYXNzOiAnYmx1ZS1idG4nLCBpZDogJ3ZpZXdSaXNrcycgfSxcclxuICBdO1xyXG4gIHNpZGVTZWxlY3RvckVsZW1lbnRzOiBhbnkgPSBbXHJcbiAgICAncmMnLFxyXG4gICAgJ293bmVyJyxcclxuICAgICdvdmVyc2VlcicsXHJcbiAgICAnY2F0ZWdvcnknLFxyXG4gICAgJ2ZyZXF1ZW5jeScsXHJcbiAgXTtcclxuICBzaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZmVhdHVyZSE6IGFueTtcclxuICBASW5wdXQoKSBtb2RlID0gJ0VESVQnO1xyXG4gIEBJbnB1dCgpIHJpc2tJZCA9ICcnO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRSaXNrVHlwZSA9ICdOT1JNQUwnO1xyXG4gIEBJbnB1dCgpIG1vdmVUb1JlZ2lzdGVyTW9kZSA9ICcnO1xyXG4gIEBJbnB1dCgpIHNlY29uZGFyeU9wZW5Qb3J0YWwgPSAnJztcclxuICBAT3V0cHV0KCkgc2hvd0NvbmZpcm1hdGlvbkFsZXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwaWNrZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwb3B1bGF0ZU9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2xvc2VXb3JrZmxvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlZnJlc2hGb3JtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJjU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgb3BlbmVkRnJvbSA9ICcnO1xyXG4gIHNjcm9sbFRvQm90dG9tID0gZmFsc2U7XHJcbiAgY2F0ZWdvcnlMaXN0OiBDYXRlZ29yeUxpc3QgPSB7XHJcbiAgICBzdHJhdGVnaWM6IHtcclxuICAgICAgbmFtZTogJ1NUUkFURUdJQycsXHJcbiAgICAgIGRhdGE6IFtdLFxyXG4gICAgfSxcclxuICAgIG9wZXJhdGlvbmFsOiB7XHJcbiAgICAgIG5hbWU6ICdPUEVSQVRJT05BTCcsXHJcbiAgICAgIGRhdGE6IFtdLFxyXG4gICAgfSxcclxuICAgIGNvbXBsaWFuY2U6IHtcclxuICAgICAgbmFtZTogJ0NPTVBMSUFOQ0UnLFxyXG4gICAgICBkYXRhOiBbXSxcclxuICAgIH0sXHJcbiAgICBvdGhlcnM6IHtcclxuICAgICAgbmFtZTogJ09USEVSUycsXHJcbiAgICAgIGRhdGE6IFtdLFxyXG4gICAgfSxcclxuICB9O1xyXG4gIG92ZXJzZWVyc0xpc3Q6IGFueSA9IFtdO1xyXG4gIG92ZXJzZWVyc0dyb3VwTGlzdDogYW55ID0gW107XHJcbiAgYWRtaW5zTGlzdDogYW55ID0gW107XHJcbiAgb3ZlcnNlZXJzSWRMaXN0OiBhbnkgPSBbXTtcclxuICB0aW1lem9uZSE6IHN0cmluZztcclxuICBkYXRlITogRGF0ZTtcclxuICByaXNrTmFtZUZvY3VzID0gZmFsc2U7XHJcbiAgYXNzZXNzbWVudEZvY3VzID0gZmFsc2U7XHJcbiAgcmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gZmFsc2U7XHJcbiAgcmlza0Zvcm06IGFueSA9IHtcclxuICAgIHJpc2tUeXBlOiAnTk9STUFMJyxcclxuICAgIHRpdGxlOiAnJyxcclxuICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q6IFtdLFxyXG4gICAgb3duZXJzTGlzdDogW10sXHJcbiAgICBncm91cHNMaXN0OiBbXSxcclxuICAgIGNhdGVnb3J5OiB7XHJcbiAgICAgIHR5cGU6ICdzdHJhdGVnaWMnLFxyXG4gICAgICBzZWxlY3RlZENhdGVnb3J5OiAnJyxcclxuICAgIH0sXHJcbiAgICBjYXRlZ29yeUN1c3RvbVRhZ3M6IFtdLFxyXG4gICAgb3ZlcnNlZXJzTGlzdDogW10sXHJcbiAgICBvdmVyc2VlcnNHcm91cExpc3Q6IFtdLFxyXG4gICAgbWl0aWdhdGlvbjogMCxcclxuICAgIGFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5czogMCxcclxuICAgIGhlYWRfaWRzOiBbXSxcclxuICAgIGFkZE92ZXJzZWVyOiBmYWxzZSxcclxuICAgIGFkZE1pdGlnYXRpb246IGZhbHNlLFxyXG4gICAgYWRkTWl0aWdhdGlvblBsYW46IGZhbHNlLFxyXG4gICAgbWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhbjogJycsXHJcbiAgICBmcmVxdWVuY3lfZGV0YWlsczoge1xyXG4gICAgICBmcmVxdWVuY3k6ICcnLFxyXG4gICAgICBzdGFydGVkX2F0OiAnJyxcclxuICAgICAgZnJlcXVlbmN5X3RpbWU6ICcnLFxyXG4gICAgICByZW1pbmRfYmVmb3JlX2RheXM6IDAsXHJcbiAgICB9LFxyXG4gICAgYWRkUmlza0xhYmVsOiBmYWxzZSxcclxuICAgIHJpc2tMYWJlbFZhbHVlOiAxLFxyXG4gICAgZW5hYmxlQWxsRnV0dXJlQnVzaW5lc3NDeWNsZTogdHJ1ZSxcclxuICAgIEdSQzogZmFsc2UsXHJcbiAgICBzZWxlY3RlZEdSQ09iamVjdHM6IFtdLFxyXG4gIH07XHJcbiAgYXBpVXJsID0gJyc7XHJcbiAgbWVtYmVySWQgPSAwO1xyXG4gIG9yZ2FuaXphdGlvbklkID0gMDtcclxuXHJcbiAgdXNlcnNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgYWRtaW5zTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIGNhdGVnb3J5TGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIHJjTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIHN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gIGZyZXF1ZW5jeURldGFpbHMgPSB7XHJcbiAgICBmcmVxdWVuY3k6ICcnLFxyXG4gICAgc3RhcnRlZF9hdDogJycsXHJcbiAgICBmcmVxdWVuY3lfdGltZTogJycsXHJcbiAgICByZW1pbmRfYmVmb3JlX2RheXM6IDAsXHJcbiAgICBmYWlsZWRfYWZ0ZXJfZGF5czogMCxcclxuICAgIGNhbl9hc3Nlc3NfYmVmb3JlX2RheXM6IDAsXHJcbiAgfTtcclxuICBmcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdTZXQgYSBSZWFzc2Vzc21lbnQgRnJlcXVlbmN5JztcclxuICBzaG9ydE1vbnRoOiBBcnJheTxzdHJpbmc+ID0gW107XHJcbiAgc2V0dGluZ3NJbmZvITogYW55O1xyXG4gIGxvYWRlciA9IGZhbHNlO1xyXG4gIGFjdGl2ZVNlbGVjdG9yID0gJyc7XHJcbiAgY3VycmVudFRpbWVTdGFtcCA9IE1hdGgucm91bmQoRGF0ZS5ub3coKSAvIDEwMDApO1xyXG4gIGZlYXR1cmVmbGFnX2dyb3VwczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdyb3Vwc0xpc3Q6IGFueSA9IFtdO1xyXG4gIG90aGVyR1JDQ2FyZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoT1RIRVJfR1JDX0NBUkQpKTtcclxuXHJcbiAgLyogQ3JlYXRpbmcgYW4gYXJyYXkgZm9yIHJpc2sgbGFiZWwgd2l0aCBpdCdzIHZhbHVlLiAqL1xyXG4gIHJpc2tMYWJlbExpc3Q6IGFueSA9IFtcclxuICAgIHsgbmFtZTogJ05ld2x5IElkZW50aWZpZWQgUmlzaycsIHZhbHVlOiAxIH0sXHJcbiAgICB7IG5hbWU6ICdSYXBpZGx5IENoYW5naW5nIFJpc2snLCB2YWx1ZTogMiB9LFxyXG4gIF07XHJcbiAgb3RoZXJHUkNTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgZ3JjTGlzdDogYW55O1xyXG4gIGdyY0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkR1JDVGFiOiBudW1iZXIgPSAwO1xyXG4gIGdyY0RhdGFXaXRoVHlwZXM6IGFueSA9IHtcclxuICAgIGFzc2V0czogW10sXHJcbiAgICBwcm9jZXNzZXM6IFtdLFxyXG4gICAgdmVuZG9yczogW10sXHJcbiAgICBpbnZlbnRvcnk6IFtdLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByaXNrU2VydmljZTogQWRkUmlza1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgdWlLaXRTZXJ2aWNlOiBVaUtpdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdyY1NlcnZpY2U6IEdyY1NlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBjb25maWc/OiBDb25maWd1cmF0aW9uc1xyXG4gICkge1xyXG4gICAgdGhpcy50aW1lem9uZSA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlclRpbWVab25lKCk7XHJcbiAgfVxyXG5cclxuICBkZXNjcmlwdGlvbjogRWRpdG9yQ29uZmlnID0ge1xyXG4gICAgbW9kZTogJ3ByaW1lJyxcclxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcclxuICAgIGxpbms6IHRydWUsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0FkZCBhIGRlc2NyaXB0aW9uIGZvciB0aGlzIHJpc2snLFxyXG4gIH07XHJcblxyXG4gIG1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW46IEVkaXRvckNvbmZpZyA9IHtcclxuICAgIG1vZGU6ICdwcmltZScsXHJcbiAgICBjb2xvclBhbGV0dGU6IHRydWUsXHJcbiAgICBsaW5rOiB0cnVlLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdEZXNjcmliZSB0aGUgcmVjb21tZW5kZWQgbWl0aWdhdGlvbiBwbGFucycsXHJcbiAgfTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZlYXR1cmVmbGFnX2dyb3VwcyA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9yaXNrX2dyb3VwcycpO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5nZXRBZG1pbnNMaXN0KCk7XHJcbiAgICB0aGlzLmdldFJDTGlzdCgpO1xyXG4gICAgdGhpcy5nZXRPd25lcnNMaXN0KCk7XHJcbiAgICBpZiAodGhpcy5mZWF0dXJlZmxhZ19ncm91cHMpIHtcclxuICAgICAgdGhpcy5nZXRHcm91cExpc3QoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0Q2F0ZWdvcnlMaXN0KCk7XHJcbiAgICB0aGlzLmdldFNldHRpbmdzSW5mbygpO1xyXG5cclxuICAgIHRoaXMuc2hvcnRNb250aCA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5tb250aEFycmF5Lm1hcCgobW9udGgpID0+XHJcbiAgICAgIG1vbnRoLnN1YnN0cmluZygwLCAzKVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdDUkVBVEUnKSB7XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1lbWJlcklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpO1xyXG4gICAgaWYgKHRoaXMuc2Vjb25kYXJ5T3BlblBvcnRhbCAhPT0gJ09USEVSJyAmJiB0aGlzLm1vZGUgIT09ICdFRElUJykge1xyXG4gICAgICB0aGlzLm5vblJlbW92YWJsZVVzZXJzTGlzdC5wdXNoKHRoaXMubWVtYmVySWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpO1xyXG4gICAgaWYgKHRoaXMub3BlbmVkRnJvbSA9PT0gJ1JFUE9SVEVEX1JJU0snKSB7XHJcbiAgICAgIHRoaXMucmlza0Zvcm0ucmlza1R5cGUgPSAnUkVQT1JURUQnO1xyXG4gICAgICB0aGlzLnJpc2tUeXBlQ2hhbmdlQWxsb3dlZCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdNT1ZFX1RPX1JFR0lTVEVSJykge1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID0gJ05PUk1BTCc7XHJcbiAgICAgIHRoaXMucmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFJpc2tUeXBlQmFzZWRPblN1YnNjcmlwdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9UTyBnZXQgZ3JvdXBMaXN0IGRhdGFcclxuICBnZXRHcm91cExpc3QoKSB7XHJcbiAgICB0aGlzLnJpc2tTZXJ2aWNlLmdldEdyb3Vwc0xpc3QoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ3JvdXBzTGlzdCA9IHJlcz8uZGF0YTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNldFJpc2tUeXBlQmFzZWRPblN1YnNjcmlwdGlvbigpIHtcclxuICAgIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdSRVBPUlRFRF9SSVNLJykge1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID0gJ1JFUE9SVEVEJztcclxuICAgIH1cclxuICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckluZm8oKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8ucGVybWlzc2lvbikge1xyXG4gICAgICAgICAgY29uc3QgcGVybWlzc2lvbiA9IEpTT04ucGFyc2UocmVzPy5wZXJtaXNzaW9uKTtcclxuICAgICAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlPy5pc0FkbWluKCkgfHwgdGhpcy5hdXRoU2VydmljZT8uaXNLZXlBZG1pbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hdXRoU2VydmljZS5pc01hbmFnZXIoKSkge1xyXG4gICAgICAgICAgICBpZiAocGVybWlzc2lvbj8uTVJJU0sgPT09IDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJpc2tUeXBlQ2hhbmdlQWxsb3dlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yaXNrVHlwZUNoYW5nZUFsbG93ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID0gJ1JFUE9SVEVEJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmlzVXNlcigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmlza0Zvcm0ucmlza1R5cGUgPSAnUkVQT1JURUQnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJpc2tUeXBlQ2hhbmdlQWxsb3dlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5yaXNrRm9ybS5yaXNrVHlwZSA9ICdSRVBPUlRFRCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVzICYmIHJlcz8ucm9sZUFjdGlvbnMpIHtcclxuICAgICAgICAgIGNvbnN0IG1vZHVsZUluZGV4ID0gcmVzLnJvbGVBY3Rpb25zLmZpbmRJbmRleChcclxuICAgICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5tb2R1bGVOYW1lID09ICdyaXNrJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IHJpc2tQZXJtaXNzaW9ucyA9XHJcbiAgICAgICAgICAgIHJlcy5yb2xlQWN0aW9uc1ttb2R1bGVJbmRleF0uc3ViTW9kdWxlWzFdLnBlcm1pc3Npb25zO1xyXG4gICAgICAgICAgcmlza1Blcm1pc3Npb25zLmZvckVhY2goKHBlcm1pc3Npb246IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocGVybWlzc2lvbi5uYW1lID09ICdtYW5hZ2Ugcmlza3MnICYmIHBlcm1pc3Npb24uZW5hYmxlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yaXNrVHlwZUNoYW5nZUFsbG93ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMucmlza0Zvcm0ucmlza1R5cGUgPSAnTk9STUFMJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICAgICAgdGhpcy5yaXNrRm9ybS5yaXNrVHlwZSA9ICdOT1JNQUwnO1xyXG4gICAgICAgICAgdGhpcy5yaXNrVHlwZUNoYW5nZUFsbG93ZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVJpc2sodHlwZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJpc2tGb3JtID0geyAuLi50aGlzLnJpc2tGb3JtLCAuLi57IHJpc2tUeXBlOiB0eXBlIH0gfTtcclxuICAgIHRoaXMuc2V0UG9wdXBCdXR0b25zKCk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ1JFUE9SVEVEJykge1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50bHlMb2dnZWRJblVzZXIoKSB7XHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgY29uc3Qgb3duZXJzTGlzdCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICB0aGlzLm93bmVyc0xpc3QsXHJcbiAgICAgICAgdGhpcy5lZGl0RGV0YWlscz8ub3duZXIsXHJcbiAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgKT8ubWFwKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQpO1xyXG4gICAgICBpZiAob3duZXJzTGlzdC5pbmNsdWRlcyh0aGlzLm1lbWJlcklkKSkge1xyXG4gICAgICAgIHJldHVybiBbdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBbdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFBvcHVwQnV0dG9ucygpIHtcclxuICAgIGlmICh0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID09PSAnUkVQT1JURUQnKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uQnV0dG9ucyA9IFtcclxuICAgICAgICB7IGJ1dHRvblRleHQ6ICdBZGQgTW9yZSBSaXNrcycsIGNsYXNzOiAnd2hpdGUtYnRuJywgaWQ6ICdhZGRNb3JlJyB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGJ1dHRvblRleHQ6ICdWaWV3IFJlcG9ydGVkIFJpc2tzJyxcclxuICAgICAgICAgIGNsYXNzOiAnYmx1ZS1idG4nLFxyXG4gICAgICAgICAgaWQ6ICdtYW5hZ2VSZXBvcnRlZFJpc2snLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFjdGlvbkJ1dHRvbnMgPSBbXHJcbiAgICAgICAgeyBidXR0b25UZXh0OiAnQWRkIE1vcmUgUmlza3MnLCBjbGFzczogJ3doaXRlLWJ0bicsIGlkOiAnYWRkTW9yZScgfSxcclxuICAgICAgICB7IGJ1dHRvblRleHQ6ICdWaWV3IFJpc2snLCBjbGFzczogJ2JsdWUtYnRuJywgaWQ6ICd2aWV3Umlza3MnIH0sXHJcbiAgICAgIF07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFJpc2tEZXRhaWxzKHJpc2tJZDogYW55KSB7XHJcbiAgICB0aGlzLnJpc2tTZXJ2aWNlLmdldFJpc2tEZXRhaWwocmlza0lkKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVkaXREZXRhaWxzID0gY2xvbmVEZWVwKHJlcyk7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS50aXRsZSA9IHJlcy50aXRsZTtcclxuICAgICAgICBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnTU9WRV9UT19SRUdJU1RFUicpIHtcclxuICAgICAgICAgIHRoaXMucmlza0Zvcm0ucmlza1R5cGUgPSAnTk9STUFMJztcclxuICAgICAgICAgIHRoaXMucmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmlza0Zvcm0ucmlza1R5cGUgPSByZXM/LnJpc2tfdHlwZSA/PyAnUkVQT1JURUQnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5kZXNjcmlwdGlvbiA9IHJlcy5kZXNjcmlwdGlvbjtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QsXHJcbiAgICAgICAgICByZXMucmNfaWQsXHJcbiAgICAgICAgICAnaXRlbV9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0ub3duZXJzTGlzdCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgIHRoaXMub3duZXJzTGlzdCxcclxuICAgICAgICAgIHJlcy5vd25lcixcclxuICAgICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmdyb3Vwc0xpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLmdyb3Vwc0xpc3QsXHJcbiAgICAgICAgICByZXM/LnVzZXJncm91cF9pZHMsXHJcbiAgICAgICAgICAnX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5taXRpZ2F0aW9uRGVzY3JpcHRpb25QbGFuID0gcmVzLm1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW47XHJcbiAgICAgICAgY29uc3QgdHlwZSA9IHRoaXMuc2V0Q2F0ZWdvcnlUeXBlKHJlcy5jYXRlZ29yeV90eXBlWzBdKTtcclxuICAgICAgICBjb25zdCBjYXRlZ29yeUluZGV4ID0gdGhpcy5jYXRlZ29yeUxpc3RbdHlwZV0/LmRhdGEuZmluZEluZGV4KFxyXG4gICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5jYXRlZ29yeV9pZCA9PSByZXMuY2F0ZWdvcnlbMF1cclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChjYXRlZ29yeUluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLnJpc2tGb3JtLmNhdGVnb3J5ID0ge1xyXG4gICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICBzZWxlY3RlZENhdGVnb3J5OiB0aGlzLmNhdGVnb3J5TGlzdFt0eXBlXT8uZGF0YVtjYXRlZ29yeUluZGV4XSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLnJpc2tGb3JtLmNhdGVnb3J5Q3VzdG9tVGFncyA9IHJlcy5jYXRlZ29yeV9jdXN0b21fdGFnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5vdmVyc2VlcnNMaXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5vd25lcnNMaXN0LFxyXG4gICAgICAgICAgcmVzLm1hbmFnZV9vdmVyc2lnaHQsXHJcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5vdmVyc2VlcnNHcm91cExpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLmdyb3Vwc0xpc3QsXHJcbiAgICAgICAgICByZXM/Lm92ZXJzZWVyZ3JvdXBfaWRzLFxyXG4gICAgICAgICAgJ19pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0ubWl0aWdhdGlvbiA9IHJlcz8ubWl0aWdhdGlvblxyXG4gICAgICAgICAgPyByZXM/Lm1pdGlnYXRpb25cclxuICAgICAgICAgIDogdGhpcy5yaXNrRm9ybT8ubWl0aWdhdGlvbjtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyA9IHJlcy5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXM7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5hZGRPdmVyc2VlciA9XHJcbiAgICAgICAgICByZXMubWFuYWdlX292ZXJzaWdodC5sZW5ndGggPiAwIHx8IHJlcz8ub3ZlcnNlZXJncm91cF9pZHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5hZGRNaXRpZ2F0aW9uID0gcmVzLm1pdGlnYXRpb24gPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vcmdhbml6YXRpb25JZCA9IHJlcy5vcmdhbmlzYXRpb25faWQ7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5oZWFkX2lkcyA9IHJlcz8uaGVhZF9pZHMgPyByZXM/LmhlYWRfaWRzIDogW107XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5taXRpZ2F0aW9uRGVzY3JpcHRpb25QbGFuID1cclxuICAgICAgICAgIHJlcz8ubWl0aWdhdGlvbl9wbGFuX3JlY29tbWVuZGF0aW9uID8/ICcnO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uYWRkTWl0aWdhdGlvblBsYW4gPVxyXG4gICAgICAgICAgcmVzPy5taXRpZ2F0aW9uX3BsYW5fcmVjb21tZW5kYXRpb24udHJpbSgpPy5sZW5ndGggPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5hZGRSaXNrTGFiZWwgPSByZXMucmlza19sYWJlbCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICBpZiAocmVzLmFzc2Vzc21lbnRfZGF0ZV90aW1lc3RhbXApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZSA9IG5ldyBEYXRlKHJlcy5hc3Nlc3NtZW50X2RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzLklmQXNzZXNzbWVudERvbmUgPiAwKSB7XHJcbiAgICAgICAgICByZXMuYWxsX293bmVyX2Fyci5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXNzZXNzbWVudF9kb25lID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMubm9uUmVtb3ZhYmxlVXNlcnNMaXN0LnB1c2goZWxlbWVudC5tZW1iZXJfaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuc2Vjb25kYXJ5T3BlblBvcnRhbCA9PT0gJ09USEVSJyAmJiB0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICAgICAgdGhpcy5ub25SZW1vdmFibGVVc2Vyc0xpc3QgPSBBcnJheS5mcm9tKFxyXG4gICAgICAgICAgICBuZXcgU2V0PGFueVtdPihbLi4udGhpcy5ub25SZW1vdmFibGVVc2Vyc0xpc3QsIC4uLnJlcz8ub3duZXJdKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuc2Vjb25kYXJ5T3BlblBvcnRhbCAhPT0gJ09USEVSJyAmJiB0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICAgICAgdGhpcy5ub25SZW1vdmFibGVVc2Vyc0xpc3QgPSBBcnJheS5mcm9tKFxyXG4gICAgICAgICAgICBuZXcgU2V0PGFueVtdPihbXHJcbiAgICAgICAgICAgICAgLi4udGhpcy5ub25SZW1vdmFibGVVc2Vyc0xpc3QsXHJcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXRDdXJyZW50bHlMb2dnZWRJblVzZXIoKSxcclxuICAgICAgICAgICAgXSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXM/LnJpc2tfdHlwZSA9PT0gJ05PUk1BTCcpIHtcclxuICAgICAgICAgIHRoaXMubm9uUmVtb3ZhYmxlVXNlcnNMaXN0ID0gQXJyYXkuZnJvbShcclxuICAgICAgICAgICAgbmV3IFNldDxhbnlbXT4oW1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMubm9uUmVtb3ZhYmxlVXNlcnNMaXN0LFxyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q3VycmVudGx5TG9nZ2VkSW5Vc2VyKCksXHJcbiAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNhdmVTZWxlY3RlZExpc3QocmVzLmxpbmtlZEdyY0RldGFpbHMpO1xyXG4gICAgICAgIHRoaXMuZ2V0T3RoZXJHUkNUYWJDb3VudCh7IHJjX2lkczogJycgfSk7XHJcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyByY19pZHM6ICcnIH0pO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uZW5hYmxlQWxsRnV0dXJlQnVzaW5lc3NDeWNsZSA9XHJcbiAgICAgICAgICByZXM/LmZ1dHVyZV9idXNpbmVzc2N5Y2xlX3Zpc2liaWxpdHk7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhUG9wdWxhdGUocmVzPy5mcmVxdWVuY3lfZGV0YWlscyk7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5mcmVxdWVuY3lfZGV0YWlscyA9IHJlcz8uZnJlcXVlbmN5X2RldGFpbHM7XHJcbiAgICAgICAgdGhpcy5nZXRGcmVxdWVuY3lQbGFjZWhvbGRlcihyZXMuZnJlcXVlbmN5X2RldGFpbHMpO1xyXG4gICAgICAgIHRoaXMuc2V0T3ZlcnNlZXJzTGlzdCgpO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCkge1xyXG4gICAgY29uc3QgYWN0aXZhdGVkT3B0aW9ucyA9IFtdO1xyXG4gICAgaWYgKHRoaXMucmlza0Zvcm0uYWRkTWl0aWdhdGlvbikge1xyXG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ01JVElHQVRJT04nKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJpc2tGb3JtLmFkZE92ZXJzZWVyKSB7XHJcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnT1ZFUlNFRVInKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJpc2tGb3JtLmFkZE1pdGlnYXRpb25QbGFuKSB7XHJcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnTUlUSUdBVElPTl9QTEFOJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5yaXNrRm9ybS5hZGRSaXNrTGFiZWwpIHtcclxuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdSSVNLX0xBQkVMJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmlza0Zvcm0uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGgpIHtcclxuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdHUkMnKTtcclxuICAgICAgdGhpcy5yaXNrRm9ybS5HUkMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGFjdGl2YXRlZE9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2F0ZWdvcnlUeXBlKHR5cGU6IGFueSkge1xyXG4gICAgaWYgKHR5cGUgPT09IDEpIHtcclxuICAgICAgcmV0dXJuICdzdHJhdGVnaWMnO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAyKSB7XHJcbiAgICAgIHJldHVybiAnb3BlcmF0aW9uYWwnO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAzKSB7XHJcbiAgICAgIHJldHVybiAnY29tcGxpYW5jZSc7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IDApIHtcclxuICAgICAgcmV0dXJuICdvdGhlcnMnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdzdHJhdGVnaWMnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UkNMaXN0KCkge1xyXG4gICAgY29uc3QgcmNBcnJheTogYW55W10gPSBbXTtcclxuICAgIHRoaXMucmlza1NlcnZpY2VcclxuICAgICAgLmdldFJlc3BvbnNpYmlsaXR5Q2VudGVyTGlzdChcclxuICAgICAgICByY0FycmF5LFxyXG4gICAgICAgIHRoaXMubW9kZSA9PT0gJ0VESVQnID8gdGhpcy5yaXNrSWQgOiAnJ1xyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0ID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGdldENhdGVnb3J5TGlzdCgpIHtcclxuICAgIHRoaXMucmlza1NlcnZpY2UuZ2V0Q2F0ZWdvcnlMaXN0KCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdC5zdHJhdGVnaWMuZGF0YSA9IHJlcy5zdHJhdGVnaWNfYXJyO1xyXG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0Lm9wZXJhdGlvbmFsLmRhdGEgPSByZXMub3BlcmF0aW9uYWxfYXJyO1xyXG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0LmNvbXBsaWFuY2UuZGF0YSA9IHJlcy5jb21wbGlhbmNlX2FycjtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdC5vdGhlcnMuZGF0YSA9IHJlcy5vdGhlcnNfYXJyO1xyXG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRPd25lcnNMaXN0KCkge1xyXG4gICAgdGhpcy5yaXNrU2VydmljZS5nZXRPcmdhbml6YXRpb25Vc2VycygpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vd25lcnNMaXN0ID0gcmVzO1xyXG5cclxuICAgICAgICB0aGlzLnVzZXJzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHJlcy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAodXNlcjogYW55KSA9PiB1c2VyLm1lbWJlcl9pZCA9PT0gdGhpcy5tZW1iZXJJZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2Vjb25kYXJ5T3BlblBvcnRhbCAhPT0gJ09USEVSJyAmJiB0aGlzLm1vZGUgIT09ICdFRElUJykge1xyXG4gICAgICAgICAgICB0aGlzLnJpc2tGb3JtLm93bmVyc0xpc3QucHVzaChyZXNbaW5kZXhdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgdGhpcy51c2Vyc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICBnZXRBZG1pbnNMaXN0KCkge1xyXG4gICAgdGhpcy5yaXNrU2VydmljZS5nZXRBZG1pbktleUFkbWluTGlzdCgpLnN1YnNjcmliZShcclxuICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuYWRtaW5zTGlzdCA9IHJlcztcclxuICAgICAgICB0aGlzLmFkbWluc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMuYWRtaW5zTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTZXR0aW5nc0luZm8oKSB7XHJcbiAgICB0aGlzLnJpc2tTZXJ2aWNlLmdldFJpc2tTZXR0aW5nRGV0YWlscygpLnN1YnNjcmliZShcclxuICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvID0gcmVzO1xyXG4gICAgICAgIHRoaXMuaGlkZU9wdGlvbmFsRmllbGRzKHJlcyk7XHJcbiAgICAgICAgdGhpcy5taXRpZ2F0aW9uRGV0YWlscyA9IHJlcz8ucmlza19taXRpZ2F0aW9uX3ByaW9yaXR5Py5taXRpZ2F0aW9uX2RhdGE7XHJcbiAgICAgICAgbGV0IGRlZmF1bHRNaXRpZ2F0aW9uID0gdGhpcy5taXRpZ2F0aW9uRGV0YWlscz8uZmlsdGVyKFxyXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1pdGlnYXRpb25fbmFtZSA9PT0gJ0xPVydcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChkZWZhdWx0TWl0aWdhdGlvbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnJpc2tGb3JtLm1pdGlnYXRpb24gPSBkZWZhdWx0TWl0aWdhdGlvblswXT8ubWl0aWdhdGlvbl9pZDtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBoaWRlT3B0aW9uYWxGaWVsZHMocmVzOiBhbnkpIHtcclxuICAgIGlmIChyZXM/LnJpc2tfYXV0b21hdGlvbl9lbmFibGUgPT09IDEpIHtcclxuICAgICAgdGhpcy5oaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMuZW1pdChbJ01JVElHQVRJT04nXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgJiZcclxuICAgICAgdGhpcy51c2Vyc0xpc3RMb2FkZWQgJiZcclxuICAgICAgdGhpcy5hZG1pbnNMaXN0TG9hZGVkICYmXHJcbiAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0TG9hZGVkXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zZXRPdmVyc2VlcnNMaXN0KCk7XHJcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICAgIHRoaXMuZ2V0Umlza0RldGFpbHModGhpcy5yaXNrSWQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpO1xyXG4gICAgICB9LCAzMDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0T3ZlcnNlZXJzTGlzdCgpIHtcclxuICAgIGxldCBpZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IHJjT3duZXJJZHM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgdXNlcnMgPSBjbG9uZURlZXAodGhpcy5yaXNrRm9ybS5vd25lcnNMaXN0KTtcclxuICAgIGNvbnN0IHJlc3BvbnNpYmlsaXR5Q2VudGVycyA9IGNsb25lRGVlcChcclxuICAgICAgdGhpcy5yaXNrRm9ybS5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0XHJcbiAgICApO1xyXG4gICAgY29uc3QgYWRtaW5zID0gY2xvbmVEZWVwKHRoaXMuYWRtaW5zTGlzdCk7XHJcbiAgICBjb25zdCBhbGxVc2VycyA9IGNsb25lRGVlcCh0aGlzLm93bmVyc0xpc3QpO1xyXG4gICAgdXNlcnMuZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIGlkcy5wdXNoKHVzZXIubWVtYmVyX2lkKTtcclxuICAgIH0pO1xyXG4gICAgYWRtaW5zLmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICBpZHMucHVzaCh1c2VyLm1lbWJlcl9pZCk7XHJcbiAgICB9KTtcclxuICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVycy5mb3JFYWNoKChyYzogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGFyeSA9IFsuLi5yYy5vd25lciwgLi4ucmMucGFyZW50X293bmVyc107XHJcbiAgICAgIGlkcyA9IFsuLi5pZHMsIC4uLmFyeV07XHJcbiAgICAgIHJjT3duZXJJZHMgPSBbLi4ucmNPd25lcklkcywgLi4uYXJ5XTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlkcyA9IFsuLi5uZXcgU2V0KGlkcyldO1xyXG4gICAgcmNPd25lcklkcyA9IFsuLi5uZXcgU2V0KHJjT3duZXJJZHMpXTtcclxuICAgIHRoaXMucmlza0Zvcm0uaGVhZF9pZHMgPSByY093bmVySWRzO1xyXG4gICAgdGhpcy5vdmVyc2VlcnNMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxyXG4gICAgICAodXNlcjogYW55KSA9PiAhaWRzLmluY2x1ZGVzKHVzZXIubWVtYmVyX2lkKVxyXG4gICAgKTtcclxuICAgIHRoaXMucmlza0Zvcm0ub3ZlcnNlZXJzTGlzdCA9IHRoaXMucmlza0Zvcm0ub3ZlcnNlZXJzTGlzdC5maWx0ZXIoXHJcbiAgICAgICh1c2VyOiBhbnkpID0+ICFpZHMuaW5jbHVkZXModXNlci5tZW1iZXJfaWQpXHJcbiAgICApO1xyXG4gICAgLy9Hcm91cHMgd2hpY2ggYXJlIHNlbGVjdGVkIGluIE93bmVycyBmaWVsZCBzaG91bGQgbm90IGJlIHZpc2libGUgT3ZlcnNlZXJcclxuICAgIGxldCBncm91cGlkczogYW55ID0gW107XHJcbiAgICBjb25zdCBncm91cHMgPSBjbG9uZURlZXAodGhpcy5yaXNrRm9ybS5ncm91cHNMaXN0KTtcclxuICAgIGNvbnN0IGFsbGdyb3VwcyA9IGNsb25lRGVlcCh0aGlzLmdyb3Vwc0xpc3QpO1xyXG4gICAgZ3JvdXBzLmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcclxuICAgICAgZ3JvdXBpZHMucHVzaChncm91cC5ncm91cF9pZCk7XHJcbiAgICB9KTtcclxuICAgIGdyb3VwaWRzID0gWy4uLm5ldyBTZXQoZ3JvdXBpZHMpXTtcclxuICAgIHRoaXMub3ZlcnNlZXJzR3JvdXBMaXN0ID0gYWxsZ3JvdXBzLmZpbHRlcihcclxuICAgICAgKGdyb3VwOiBhbnkpID0+ICFncm91cGlkcy5pbmNsdWRlcyhncm91cC5ncm91cF9pZClcclxuICAgICk7XHJcbiAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0dyb3VwTGlzdCA9IHRoaXMucmlza0Zvcm0ub3ZlcnNlZXJzR3JvdXBMaXN0LmZpbHRlcihcclxuICAgICAgKHVzZXI6IGFueSkgPT4gIWdyb3VwaWRzLmluY2x1ZGVzKHVzZXIuZ3JvdXBfaWQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGVTZWxlY3Rvcih0eXBlOiBhbnksIGV2ZW50OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gZXZlbnQgPyB0eXBlIDogJyc7XHJcbiAgICBpZiAoXHJcbiAgICAgIFsncmMnLCAnb3duZXInLCAnb3ZlcnNlZXInLCAnY2F0ZWdvcnknLCAnZnJlcXVlbmN5JywgJ0dSQyddLmluY2x1ZGVzKHR5cGUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aXZlRGVzZWxlY3RvcigpIHtcclxuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSAnJztcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZSh0eXBlOiBhbnksIGV2ZW50OiBhbnksIGluZGV4PzogbnVtYmVyKSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAncmMnOlxyXG4gICAgICAgIGNvbnN0IHJjSW5kZXggPSB0aGlzLnJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QuZmluZEluZGV4KFxyXG4gICAgICAgICAgKHJjOiBhbnkpID0+IHJjLnJjX2lkID09IGV2ZW50LnJjX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Quc3BsaWNlKHJjSW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuc2F2ZVNlbGVjdGVkTGlzdChbXSk7XHJcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ1RhYkNvdW50KHsgcmNfaWRzOiAnJyB9KTtcclxuICAgICAgICB0aGlzLmdldE90aGVyR1JDT2JqZWN0cyh7IHJjX2lkczogJycsIHR5cGU6IHRoaXMuc2VsZWN0ZWRHUkNUYWIgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ293bmVyJzpcclxuICAgICAgICBjb25zdCBvd25lckluZGV4ID0gdGhpcy5yaXNrRm9ybS5vd25lcnNMaXN0LmZpbmRJbmRleChcclxuICAgICAgICAgIChvd25lcjogYW55KSA9PiBvd25lci5tZW1iZXJfaWQgPT0gZXZlbnQubWVtYmVyX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLm93bmVyc0xpc3Quc3BsaWNlKG93bmVySW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuc2V0T3ZlcnNlZXJzTGlzdCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdPd25lcmdyb3VwJzpcclxuICAgICAgICBjb25zdCBncm91cEluZGV4ID0gdGhpcy5yaXNrRm9ybT8uZ3JvdXBzTGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgICAob3duZXI6IGFueSkgPT4gb3duZXIuZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uZ3JvdXBzTGlzdC5zcGxpY2UoZ3JvdXBJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ292ZXJzZWVyJzpcclxuICAgICAgICBjb25zdCBvdmVyc2VlckluZGV4ID0gdGhpcy5yaXNrRm9ybS5vdmVyc2VlcnNMaXN0LmZpbmRJbmRleChcclxuICAgICAgICAgIChvdmVyc2VlcjogYW55KSA9PiBvdmVyc2Vlci5tZW1iZXJfaWQgPT0gZXZlbnQubWVtYmVyX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0xpc3Quc3BsaWNlKG92ZXJzZWVySW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvdmVyc2Vlcmdyb3VwJzpcclxuICAgICAgICBjb25zdCBvdmVyc2Vlcmdyb3VwSW5kZXggPSB0aGlzLnJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3QuZmluZEluZGV4KFxyXG4gICAgICAgICAgKG92ZXJzZWVyOiBhbnkpID0+IG92ZXJzZWVyLmdyb3VwX2lkID09IGV2ZW50Lmdyb3VwX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0dyb3VwTGlzdC5zcGxpY2Uob3ZlcnNlZXJncm91cEluZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2F0ZWdvcnknOlxyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uY2F0ZWdvcnkgPSB7XHJcbiAgICAgICAgICB0eXBlOiAnc3RyYXRlZ2ljJyxcclxuICAgICAgICAgIHNlbGVjdGVkQ2F0ZWdvcnk6ICcnLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5jYXRlZ29yeUN1c3RvbVRhZ3MgPSBbXTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnR1JDJzpcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuc2F2ZVNlbGVjdGVkTGlzdCh0aGlzLnJpc2tGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlU2VsZWN0ZWRSQ0xpc3QocmNJZHM6IGFueSkge1xyXG4gICAgdGhpcy5zYXZlU2VsZWN0ZWRMaXN0KFtdKTtcclxuICAgIHRoaXMuYWN0aXZlRGVzZWxlY3RvcigpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSQyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LFxyXG4gICAgICByY0lkcyxcclxuICAgICAgJ2l0ZW1faWQnXHJcbiAgICApO1xyXG4gICAgdGhpcy5yY1NlbGVjdGVkLmVtaXQoc2VsZWN0ZWRSQz8ubGVuZ3RoKTtcclxuXHJcbiAgICB0aGlzLnJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QgPSBzZWxlY3RlZFJDO1xyXG4gICAgdGhpcy5nZXRPdGhlckdSQ1RhYkNvdW50KHsgcmNfaWRzOiAnJyB9KTtcclxuICAgIHRoaXMuZ2V0T3RoZXJHUkNPYmplY3RzKHsgcmNfaWRzOiAnJywgdHlwZTogdGhpcy5zZWxlY3RlZEdSQ1RhYiB9KTtcclxuICAgIHRoaXMuc2V0T3ZlcnNlZXJzTGlzdCgpO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVNlbGVjdGVkQ2F0ZWdvcnkoY2F0ZWdvcnk6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XHJcbiAgICB0aGlzLnJpc2tGb3JtLmNhdGVnb3J5ID0gY2F0ZWdvcnk7XHJcbiAgICBjb25zdCBjdXN0b21UYWdzOiBhbnkgPSBbXTtcclxuICAgIGNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkuY3VzdG9tX3RhZy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgdGFnID0ge1xyXG4gICAgICAgIGN1c3RvbV90YWdfbmFtZTogZWxlbWVudC50YWdOYW1lLFxyXG4gICAgICAgIGN1c3RvbV90YWdfdmFsdWU6ICcnLFxyXG4gICAgICB9O1xyXG4gICAgICBjdXN0b21UYWdzLnB1c2godGFnKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yaXNrRm9ybS5jYXRlZ29yeUN1c3RvbVRhZ3MgPSBjdXN0b21UYWdzO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVNlbGVjdGVkT3duZXJzTGlzdChpZHM6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XHJcbiAgICBpZiAodGhpcy5mZWF0dXJlZmxhZ19ncm91cHMpIHtcclxuICAgICAgbGV0IG93bmVyaWRzO1xyXG4gICAgICBsZXQgZ3JvdXBJZHM7XHJcbiAgICAgIG93bmVyaWRzID0gdGhpcy5yZXR1cm5JZHMoaWRzLnVzZXJzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgIGdyb3VwSWRzID0gdGhpcy5yZXR1cm5JZHMoaWRzLmdyb3VwcywgJ2dyb3VwX2lkJyk7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkT3duZXJzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgIHRoaXMub3duZXJzTGlzdCxcclxuICAgICAgICBvd25lcmlkcyxcclxuICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEdyb3VwcyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICB0aGlzLmdyb3Vwc0xpc3QsXHJcbiAgICAgICAgZ3JvdXBJZHMsXHJcbiAgICAgICAgJ2dyb3VwX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNldExpc3QodGhpcy5ncm91cHNMaXN0LCBncm91cElkcywgJ2dyb3VwX2lkJyk7XHJcbiAgICAgIHRoaXMucmlza0Zvcm0ub3duZXJzTGlzdCA9IHNlbGVjdGVkT3duZXJzO1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLmdyb3Vwc0xpc3QgPSBzZWxlY3RlZEdyb3VwcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkT3duZXJzID0gdGhpcy5zZXRMaXN0KHRoaXMub3duZXJzTGlzdCwgaWRzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgIHRoaXMucmlza0Zvcm0ub3duZXJzTGlzdCA9IHNlbGVjdGVkT3duZXJzO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRPdmVyc2VlcnNMaXN0KCk7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBzYXZlU2VsZWN0ZWRPdmVyc2VlcnNMaXN0KGlkczogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcclxuICAgIGlmICghdGhpcy5mZWF0dXJlZmxhZ19ncm91cHMpIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRPdmVyc2VlcnMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0LFxyXG4gICAgICAgIGlkcyxcclxuICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0xpc3QgPSBzZWxlY3RlZE92ZXJzZWVycztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBvdmVyc2VlcmlkcztcclxuICAgICAgbGV0IG92ZXJzZWVyR3JvdXBJZHM7XHJcbiAgICAgIG92ZXJzZWVyaWRzID0gdGhpcy5yZXR1cm5JZHMoaWRzLnVzZXJzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgIG92ZXJzZWVyR3JvdXBJZHMgPSB0aGlzLnJldHVybklkcyhpZHMuZ3JvdXBzLCAnZ3JvdXBfaWQnKTtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRPdmVyc2VlcnMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0LFxyXG4gICAgICAgIG92ZXJzZWVyaWRzLFxyXG4gICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkT3ZlcnNlZXJHcm91cHMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgdGhpcy5vdmVyc2VlcnNHcm91cExpc3QsXHJcbiAgICAgICAgb3ZlcnNlZXJHcm91cElkcyxcclxuICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMucmlza0Zvcm0ub3ZlcnNlZXJzTGlzdCA9IHNlbGVjdGVkT3ZlcnNlZXJzO1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0dyb3VwTGlzdCA9IHNlbGVjdGVkT3ZlcnNlZXJHcm91cHM7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VSaXNrQXNzZXNzbWVudChuYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAobmFtZSkge1xyXG4gICAgICBjYXNlICdzdWJ0cmFjdCc6XHJcbiAgICAgICAgaWYgKHRoaXMucmlza0Zvcm0uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzID4gMSkge1xyXG4gICAgICAgICAgdGhpcy5yaXNrRm9ybS5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMgLT0gMTtcclxuICAgICAgICAgIHRoaXMuc2V0RGF0ZSh0aGlzLnJpc2tGb3JtLmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhZGQnOlxyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzICs9IDE7XHJcbiAgICAgICAgdGhpcy5zZXREYXRlKHRoaXMucmlza0Zvcm0uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERhdGUoZGF5czogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoZGF5cyA+PSAwKSB7XHJcbiAgICAgIGNvbnN0IG1pbGlzZWNvbmRzID0gZGF5cyAqIDg2NDAwICogMTAwMDtcclxuICAgICAgY29uc3QgZDogbnVtYmVyID0gbmV3IERhdGUoXHJcbiAgICAgICAgbmV3IERhdGUoRGF0ZS5ub3coKSkudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywge1xyXG4gICAgICAgICAgdGltZVpvbmU6IHRoaXMudGltZXpvbmUsXHJcbiAgICAgICAgfSlcclxuICAgICAgKS5nZXRUaW1lKCk7XHJcbiAgICAgIHRoaXMuZGF0ZSA9IG5ldyBEYXRlKGQgKyBtaWxpc2Vjb25kcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VSaXNrQXNzZXNzbWVudERlYWRsaW5lKGV2ZW50OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICghaXNOYU4oZXZlbnQpKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0ZShldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRMaXN0KGxpc3Q6IGFueVtdLCBpZHM6IGFueVtdLCBrZXk6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGF0YTogYW55ID0gW107XHJcbiAgICBsaXN0LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaWRzLmluY2x1ZGVzKGVsZW1lbnRba2V5XSkpIHtcclxuICAgICAgICBkYXRhLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICByZXR1cm5JZHMobGlzdDogYW55W10sIGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbGlzdC5tYXAoKGVsZSkgPT4ge1xyXG4gICAgICBpZiAoZWxlW2tleV0pIHtcclxuICAgICAgICByZXR1cm4gZWxlW2tleV07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0UmlzaygpIHtcclxuICAgIHRoaXMuc2V0UG9wdXBCdXR0b25zKCk7XHJcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVSaXNrKCk7XHJcbiAgICBpZiAoIXZhbGlkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnRURJVCcgJiYgdGhpcy5lZGl0RGV0YWlscy5JZkFzc2Vzc21lbnREb25lID4gMCkge1xyXG4gICAgICBjb25zdCBwcmV2UkNBcnIgPSB0aGlzLmVkaXREZXRhaWxzLnJjX2lkO1xyXG4gICAgICBjb25zdCBjdXJyUkNBcnIgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QsXHJcbiAgICAgICAgJ3JjX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcHJldlJDQXJyLmxlbmd0aCA9PT0gY3VyclJDQXJyLmxlbmd0aCAmJlxyXG4gICAgICAgIHByZXZSQ0FyclxyXG4gICAgICAgICAgLnNvcnQoKVxyXG4gICAgICAgICAgLmV2ZXJ5KCh2YWx1ZTogYW55LCBpbmRleDogYW55KSA9PiB2YWx1ZSA9PT0gY3VyclJDQXJyLnNvcnQoKVtpbmRleF0pXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlUmlzayh0aGlzLnJpc2tGb3JtKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBjb25maXJtYXRpb25EZXRhaWxzOiBDb25maXJtYXRpb25BbGVydCA9IHtcclxuICAgICAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICAgIG1lc3NhZ2U6IGBUaGUgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJpc2sgaGFzIGJlZW4gbW9kaWZpZWQuXHJcbiAgICAgICAgICAgICAgIEhlbmNlLCB0aGlzIHJpc2sgbmVlZHMgdG8gYmUgcmVhc3Nlc3NlZC4gT25jZSB5b3UgY29uZmlybSwgdGhlIGN1cnJlbnQgZHVlIGRhdGUgd2lsbCBiZSBjbG9zZWQgYW5kIGEgbmV3IHJpc2sgYXNzZXNzbWVudCBkdWUgZGF0ZSB3aWxsIGJlIGdlbmVyYXRlZC5gLFxyXG4gICAgICAgICAgYWN0aW9uOiAnRURJVF9SSVNLJyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbkFsZXJ0LmVtaXQoY29uZmlybWF0aW9uRGV0YWlscyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlUmlzayh0aGlzLnJpc2tGb3JtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZE1vcmVJbmZvKGV2ZW50OiBhbnkpIHtcclxuICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xyXG4gICAgICBjYXNlICdPVkVSU0VFUic6XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5hZGRPdmVyc2VlciA9IGV2ZW50Py5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdNSVRJR0FUSU9OJzpcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmFkZE1pdGlnYXRpb24gPSBldmVudD8uY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnTUlUSUdBVElPTl9QTEFOJzpcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmFkZE1pdGlnYXRpb25QbGFuID0gZXZlbnQ/LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1JJU0tfTEFCRUwnOlxyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uYWRkUmlza0xhYmVsID0gZXZlbnQ/LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0dSQ19PQkpFQ1RTJzpcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLkdSQyA9IGV2ZW50Py5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVJpc2soKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XHJcbiAgICBjb25zdCBldmVudCA9IHRoaXMucmlza0Zvcm0udGl0bGU7XHJcbiAgICBjb25zdCByZSA9IC8mbmJzcDt8PGJyPi9nO1xyXG4gICAgdGhpcy5yaXNrRm9ybS50aXRsZSA9IGV2ZW50LnJlcGxhY2UocmUsICcnKS50cmltKCk7XHJcbiAgICAvLyAoKCF0aGlzLnNldHRpbmdzSW5mby5hc3Nlc3NtZW50X2RlYWRsaW5lX2VuYWJsZSkgJiYgKHRoaXMucmlza0Zvcm0/LmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyA8IDEpICYmIHRoaXMucmlza0Zvcm0/LnJpc2tUeXBlICE9PSAnUkVQT1JURUQnKSB8fFxyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5yaXNrRm9ybS50aXRsZSB8fFxyXG4gICAgICB0aGlzLnJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QubGVuZ3RoID09IDAgfHxcclxuICAgICAgdGhpcy5yaXNrRm9ybS5vd25lcnNMaXN0Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICh0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID09PSAnUkVQT1JURUQnICYmXHJcbiAgICAgICAgIXRoaXMucmlza0Zvcm0/LmRlc2NyaXB0aW9uPy50cmltKCk/Lmxlbmd0aCkgfHxcclxuICAgICAgKHRoaXMucmlza0Zvcm0/LnJpc2tUeXBlICE9PSAnUkVQT1JURUQnICYmXHJcbiAgICAgICAgKCF0aGlzLnJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5IHx8XHJcbiAgICAgICAgICB0aGlzLnJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5ID09PSAnJykpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVSaXNrKHJpc2tGb3JtOiBhbnkpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIHRpdGxlOiByaXNrRm9ybS50aXRsZSxcclxuICAgICAgZGVzY3JpcHRpb246IHJpc2tGb3JtLmRlc2NyaXB0aW9uLFxyXG4gICAgICBjYXRlZ29yeV9jdXN0b21fdGFnOiByaXNrRm9ybS5jYXRlZ29yeUN1c3RvbVRhZ3MsXHJcbiAgICAgIGFzc2Vzc21lbnRfZGVhZGxpbmVfZW5hYmxlOiB0aGlzLnNldHRpbmdzSW5mby5hc3Nlc3NtZW50X2RlYWRsaW5lX2VuYWJsZSxcclxuICAgICAgb3duZXI6IHRoaXMucmV0dXJuSWRzKHJpc2tGb3JtLm93bmVyc0xpc3QsICdtZW1iZXJfaWQnKSxcclxuICAgICAgY2F0ZWdvcnk6IHJpc2tGb3JtLmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9pZFxyXG4gICAgICAgID8gW3Jpc2tGb3JtLmNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkuY2F0ZWdvcnlfaWRdXHJcbiAgICAgICAgOiBbXSxcclxuICAgICAgbWFuYWdlX292ZXJzaWdodDogcmlza0Zvcm0uYWRkT3ZlcnNlZXJcclxuICAgICAgICA/IHRoaXMucmV0dXJuSWRzKHJpc2tGb3JtLm92ZXJzZWVyc0xpc3QsICdtZW1iZXJfaWQnKVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIHJjX2lkOiB0aGlzLnJldHVybklkcyhyaXNrRm9ybS5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LCAnaXRlbV9pZCcpLFxyXG4gICAgICBoZWFkX2lkczogcmlza0Zvcm0uaGVhZF9pZHMsXHJcbiAgICAgIHJhdGluZ19hcnI6IFtdLFxyXG4gICAgICBtZW1iZXJfaWQ6IHRoaXMubWVtYmVySWQsXHJcbiAgICAgIG9yZ2FuaXNhdGlvbl9pZDogdGhpcy5vcmdhbml6YXRpb25JZCxcclxuICAgICAgcmlza19wcm9ncmVzc19mbGFnOlxyXG4gICAgICAgIHRoaXMubW9kZSA9PT0gJ0VESVQnID8gdGhpcy5lZGl0RGV0YWlscy5yaXNrX3Byb2dyZXNzX2ZsYWcgOiAxLFxyXG4gICAgICBJZkFzc2Vzc21lbnREb25lOlxyXG4gICAgICAgIHRoaXMubW9kZSA9PSAnRURJVCcgPyB0aGlzLmVkaXREZXRhaWxzLklmQXNzZXNzbWVudERvbmUgOiAwLFxyXG4gICAgICB3b3Jrc2hvcF9pZDogdGhpcy5tb2RlID09ICdFRElUJyA/IHRoaXMuZWRpdERldGFpbHMud29ya3Nob3BfaWQgOiAwLFxyXG4gICAgICBjb21wbGV0ZV9hc3Nlc3NtZW50OiAwLFxyXG4gICAgICBtaXRpZ2F0aW9uOiByaXNrRm9ybS5hZGRNaXRpZ2F0aW9uID8gcmlza0Zvcm0ubWl0aWdhdGlvbiA6IDAsXHJcbiAgICAgIHdlaWdodGFnZV9lbmFibGU6IHRoaXMuc2V0dGluZ3NJbmZvLndlaWdodGFnZV9lbmFibGUsXHJcbiAgICAgIHRyZWF0bWVudF90eXBlOiB0aGlzLnNldHRpbmdzSW5mby50cmVhdG1lbnRfY3JpdGVyaWEsXHJcbiAgICAgIHdlaWdodGFnZV9kZXRhaWxzOiB0aGlzLnNldHRpbmdzSW5mby53ZWlnaHRhZ2VfZGV0YWlscyxcclxuICAgICAgd2VpZ2h0YWdlX3NldF9ieTogdGhpcy5zZXR0aW5nc0luZm8ud2VpZ2h0YWdlX3NldF9ieSxcclxuICAgICAgd2VpZ2h0YWdlX3N0cjogW1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvLndlaWdodGFnZV9kZXRhaWxzLmltcGFjdC52YWx1ZSxcclxuICAgICAgICB0aGlzLnNldHRpbmdzSW5mby53ZWlnaHRhZ2VfZGV0YWlscy5saWtlbGlob29kLnZhbHVlLFxyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvLndlaWdodGFnZV9kZXRhaWxzLnZlbG9jaXR5LnZhbHVlLFxyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvLndlaWdodGFnZV9kZXRhaWxzLnZ1bG5lcmFiaWxpdHkudmFsdWUsXHJcbiAgICAgIF0sXHJcbiAgICAgIGFzc2Vzc21lbnRfZGVhZGxpbmVfc2V0X2J5OiB0aGlzLnNldHRpbmdzSW5mby5hc3Nlc3NtZW50X2RlYWRsaW5lX3NldF9ieSxcclxuICAgICAgLy8gYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzOiAodGhpcy5zZXR0aW5nc0luZm8uYXNzZXNzbWVudF9kZWFkbGluZV9lbmFibGUpID8gdGhpcy5zZXR0aW5nc0luZm8uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzIDogcmlza0Zvcm0uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzLFxyXG4gICAgICByaXNrX3R5cGU6IHRoaXMucmlza0Zvcm0/LnJpc2tUeXBlID8/ICdOT1JNQUwnLFxyXG4gICAgICBtaXRpZ2F0aW9uX3BsYW5fcmVjb21tZW5kYXRpb246IHRoaXMucmlza0Zvcm0/LmFkZE1pdGlnYXRpb25QbGFuXHJcbiAgICAgICAgPyB0aGlzLnJpc2tGb3JtPy5taXRpZ2F0aW9uRGVzY3JpcHRpb25QbGFuID8/ICcnXHJcbiAgICAgICAgOiAnJyxcclxuICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IHRoaXMucmlza0Zvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzLFxyXG4gICAgICByaXNrX2xhYmVsOiByaXNrRm9ybT8uYWRkUmlza0xhYmVsID8gcmlza0Zvcm0/LnJpc2tMYWJlbFZhbHVlIDogMSxcclxuICAgICAgZnV0dXJlX2J1c2luZXNzY3ljbGVfdmlzaWJpbGl0eTpcclxuICAgICAgICByaXNrRm9ybT8uZW5hYmxlQWxsRnV0dXJlQnVzaW5lc3NDeWNsZSA/PyB0cnVlLFxyXG4gICAgICBsaW5rZWRfR1JDX2lkczogdGhpcy5yaXNrRm9ybS5HUkNcclxuICAgICAgICA/IHRoaXMucmlza0Zvcm0uc2VsZWN0ZWRHUkNPYmplY3RzLm1hcCgoZ3JjOiBhbnkpID0+IGdyYz8uX2lkKVxyXG4gICAgICAgIDogW10sXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuZmVhdHVyZWZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgIHBheWxvYWRbJ3VzZXJncm91cF9pZHMnXSA9IHRoaXMucmV0dXJuSWRzKHJpc2tGb3JtLmdyb3Vwc0xpc3QsICdfaWQnKTtcclxuICAgICAgcGF5bG9hZFsnb3ZlcnNlZXJncm91cF9pZHMnXSA9IHJpc2tGb3JtLmFkZE92ZXJzZWVyXHJcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyhyaXNrRm9ybS5vdmVyc2VlcnNHcm91cExpc3QsICdfaWQnKVxyXG4gICAgICAgIDogW107XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdDUkVBVEUnKSB7XHJcbiAgICAgIHRoaXMucmlza1NlcnZpY2UuYWRkUmlzayhwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJpc2tEYXRhID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5yaXNrSWQgPSByZXMuX2lkO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAgICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLFxyXG4gICAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0VESVQnICYmIHRoaXMub3BlbmVkRnJvbSAhPT0gJ01PVkVfVE9fUkVHSVNURVInKSB7XHJcbiAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9IGBUaGUgcmlzayBoYXMgYmVlbiBtb2RpZmllZC5gO1xyXG4gICAgICB0aGlzLnJpc2tTZXJ2aWNlLnVwZGF0ZVJpc2sodGhpcy5yaXNrSWQsIHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMucmlza0RhdGEgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcclxuICAgICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXHJcbiAgICAgICAgICAgICdhbGVydCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdNT1ZFX1RPX1JFR0lTVEVSJykge1xyXG4gICAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7XHJcbiAgICAgICAgZXZ0OiB7IGFjdGlvbjogJ01PVkVfVE9fUkVHSVNURVInLCBwYXlsb2FkIH0sXHJcbiAgICAgICAgY29uZmlybTogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRGb3JtKCkge1xyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgICB0aGlzLnJpc2tGb3JtID0ge1xyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgcmlza1R5cGU6IHRoaXMucmlza0Zvcm0/LnJpc2tUeXBlLFxyXG4gICAgICBhZGRNaXRpZ2F0aW9uUGxhbjogZmFsc2UsXHJcbiAgICAgIG1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW46ICcnLFxyXG4gICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0OiBbXSxcclxuICAgICAgb3duZXJzTGlzdDogW10sXHJcbiAgICAgIGdyb3Vwc0xpc3Q6IFtdLFxyXG4gICAgICBjYXRlZ29yeToge1xyXG4gICAgICAgIHR5cGU6ICdzdHJhdGVnaWMnLFxyXG4gICAgICAgIHNlbGVjdGVkQ2F0ZWdvcnk6ICcnLFxyXG4gICAgICB9LFxyXG4gICAgICBjYXRlZ29yeUN1c3RvbVRhZ3M6IFtdLFxyXG4gICAgICBvdmVyc2VlcnNMaXN0OiBbXSxcclxuICAgICAgbWl0aWdhdGlvbjogMCxcclxuICAgICAgYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzOiAwLFxyXG4gICAgICBoZWFkX2lkczogW10sXHJcbiAgICAgIGFkZE92ZXJzZWVyOiBmYWxzZSxcclxuICAgICAgYWRkTWl0aWdhdGlvbjogZmFsc2UsXHJcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiB7XHJcbiAgICAgICAgZnJlcXVlbmN5OiAnJyxcclxuICAgICAgICBzdGFydGVkX2F0OiAnJyxcclxuICAgICAgICBmcmVxdWVuY3lfdGltZTogJycsXHJcbiAgICAgICAgcmVtaW5kX2JlZm9yZV9kYXlzOiAwLFxyXG4gICAgICB9LFxyXG4gICAgICByaXNrTGFiZWxWYWx1ZTogMSxcclxuICAgICAgYWRkUmlza0xhYmVsOiBmYWxzZSxcclxuICAgIH07XHJcbiAgICB0aGlzLm5vblJlbW92YWJsZVVzZXJzTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5vcmdhbml6YXRpb25JZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKTtcclxuICAgIHRoaXMubWVtYmVySWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE1lbWJlcklkKCk7XHJcbiAgICB0aGlzLm5vblJlbW92YWJsZVVzZXJzTGlzdCA9IHRoaXMuZ2V0Q3VycmVudGx5TG9nZ2VkSW5Vc2VyKCk7XHJcbiAgICB0aGlzLmRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMucmVmcmVzaEZvcm0uZW1pdCh0cnVlKTtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscyA9IHtcclxuICAgICAgZnJlcXVlbmN5OiAnJyxcclxuICAgICAgc3RhcnRlZF9hdDogJycsXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiAnJyxcclxuICAgICAgcmVtaW5kX2JlZm9yZV9kYXlzOiAwLFxyXG4gICAgICBmYWlsZWRfYWZ0ZXJfZGF5czogMCxcclxuICAgICAgY2FuX2Fzc2Vzc19iZWZvcmVfZGF5czogMCxcclxuICAgIH07XHJcbiAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gJ1NldCBhIFJlYXNzZXNzbWVudCBGcmVxdWVuY3knO1xyXG5cclxuICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgdGhpcy5nZXRPd25lcnNMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBhY3Rpb24oZXZlbnQ6IHN0cmluZykge1xyXG4gICAgc3dpdGNoIChldmVudCkge1xyXG4gICAgICBjYXNlICdhZGRNb3JlJzpcclxuICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd2aWV3Umlza3MnOlxyXG4gICAgICAgIHRoaXMudmlld1Jpc2tzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21hbmFnZVJlcG9ydGVkUmlzayc6XHJcbiAgICAgICAgdGhpcy5yZWRpcmVjdFRvUmVwb3J0ZWQoKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlU21pbGV5KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6IHRoaXMucmlza0RhdGEsIGNvbmZpcm06IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgdmlld1Jpc2tzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcclxuICAgIGxldCB1cmw6IHN0cmluZztcclxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICB1cmwgPSAnaHR0cDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVybCA9ICdodHRwczovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgdXJsICs9ICcvcmlzay13b3Jrcm9vbS8nICsgdGhpcy5yaXNrSWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9yaXNrdjInKSkge1xyXG4gICAgICAgIHVybCArPSAnL3Jpc2t2Mi9yaXNrLXdvcmtyb29tLycgKyB0aGlzLnJpc2tJZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1cmwgKz0gJy9yaXNrL3Jpc2std29ya3Jvb20vJyArIHRoaXMucmlza0lkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgIC8vdGhpcy5yZXNldEZvcm0oKTtcclxuICB9XHJcblxyXG4gIHJlZGlyZWN0VG9SZXBvcnRlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICBsZXQgdXJsOiBzdHJpbmc7XHJcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XHJcbiAgICAgIHVybCArPSAnL3JlcG9ydGVkLXJpc2snO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvcmlza3YyJykpIHtcclxuICAgICAgICB1cmwgKz0gJy9yaXNrdjIvcmVwb3J0ZWQtcmlzayc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdXJsICs9ICcvcmlzay9yZXBvcnRlZC1yaXNrJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICAvL3RoaXMucmVzZXRGb3JtKCk7XHJcbiAgfVxyXG4gIGNoZWNrRGVzY3JpcHRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5yaXNrRm9ybS5kZXNjcmlwdGlvbiA9PSAnPGJyPicpIHtcclxuICAgICAgdGhpcy5yaXNrRm9ybS5kZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tNaXRpZ2F0aW9uUGxhbigpIHtcclxuICAgIGlmICh0aGlzLnJpc2tGb3JtLm1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW4gPT0gJzxicj4nKSB7XHJcbiAgICAgIHRoaXMucmlza0Zvcm0ubWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhbiA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZnJlcXVlbmN5RGF0YShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGF0YVBvcHVsYXRlKGV2ZW50KTtcclxuICAgIHRoaXMucmlza0Zvcm0uZnJlcXVlbmN5X2RldGFpbHMgPSB7XHJcbiAgICAgIGZyZXF1ZW5jeTogZXZlbnQ/LmZyZXF1ZW5jeSxcclxuICAgICAgc3RhcnRlZF9hdDogZXZlbnQ/LnN0YXJ0ZWRfYXQsXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBldmVudD8uZnJlcXVlbmN5X3RpbWUsXHJcbiAgICAgIHJlbWluZF9iZWZvcmVfZGF5czogZXZlbnQ/LnJlbWluZF9iZWZvcmVfZGF5cyxcclxuICAgICAgY2FuX2Fzc2Vzc19iZWZvcmVfZGF5czogZXZlbnQ/LmNhbl9hc3Nlc3NfYmVmb3JlX2RheXMsXHJcbiAgICAgIGZhaWxlZF9hZnRlcl9kYXlzOiBldmVudD8uZmFpbGVkX2FmdGVyX2RheXMsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9IGV2ZW50Py5wbGFjZWhvbGRlcjtcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGdldEZyZXF1ZW5jeVBsYWNlaG9sZGVyKHJlczogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAocmVzPy5mcmVxdWVuY3kpIHtcclxuICAgICAgICBjb25zdCBmcmVxdWVuY3lEZXRhaWxzID0gcmVzPy5mcmVxdWVuY3kuc3BsaXQoJ34nKTtcclxuICAgICAgICBjb25zdCBmcmVxdWVuY3lUaW1lID1cclxuICAgICAgICAgIHJlcz8uZnJlcXVlbmN5X3RpbWUgPT09ICcwMDowMDowMCcgPyAnMTI6MDAgYW0nIDogcmVzPy5mcmVxdWVuY3lfdGltZTtcclxuICAgICAgICBzd2l0Y2ggKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMF0pKSB7XHJcbiAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0V2Vla2x5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICB0aGlzLmdldE1vbnRobHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIDQ6XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0WWVhcmx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA3OlxyXG4gICAgICAgICAgICB0aGlzLmdldFF1YXJ0ZXJseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgOTpcclxuICAgICAgICAgICAgdGhpcy5nZXRCaWFubnVhbFBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGRhdGVPYmplY3QgPSBuZXcgRGF0ZShcclxuICAgICAgICAgICAgICAgIG1vbWVudChcclxuICAgICAgICAgICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1sxXSArXHJcbiAgICAgICAgICAgICAgICAgICAgJy0nICtcclxuICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzJdICtcclxuICAgICAgICAgICAgICAgICAgICAnLScgK1xyXG4gICAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHNbM10gK1xyXG4gICAgICAgICAgICAgICAgICAgICcgMDA6MDA6MDAnLFxyXG4gICAgICAgICAgICAgICAgICAnWVlZWS1NTS1ERCBISDptbTpzcydcclxuICAgICAgICAgICAgICAgICkudW5peCgpICogMTAwMFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICAgICAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgICAgICdPbmUgVGltZSAnICtcclxuICAgICAgICAgICAgICAgIGRhdGVPYmplY3QuZ2V0RGF0ZSgpICtcclxuICAgICAgICAgICAgICAgICcgJyArXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbZGF0ZU9iamVjdC5nZXRNb250aCgpXSArXHJcbiAgICAgICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICAgICAgZGF0ZU9iamVjdC5nZXRGdWxsWWVhcigpICtcclxuICAgICAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyBhIGZyZXF1ZW5jeURldGFpbHMgYXJyYXkgYW5kIGEgZnJlcXVlbmN5VGltZSBzdHJpbmcgYW5kIHJldHVybnMgYSBmcmVxdWVuY3lQbGFjZWhvbGRlclxyXG4gICAqIHN0cmluZy5cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFtcIjFcIiwgXCIxLDIsMyw0LDVcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIixcclxuICAgKiBcIjFcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIiwgXCIxXCIsIFwiMVwiLCBcIlxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMDowMCBBTVwiXHJcbiAgICovXHJcbiAgZ2V0V2Vla2x5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcclxuICAgIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWREYXkgPSBmcmVxdWVuY3lEZXRhaWxzWzFdLnNwbGl0KCcsJykubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZGF5TmFtZVtwYXJzZUludChlbGUpIC0gMV07XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID09PSAxKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnRXZlcnkgJyArIHNlbGVjdGVkRGF5LmpvaW4oKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID09PSAyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnRXZlcnkgYWx0ZXJuYXRlICcgKyBzZWxlY3RlZERheS5qb2luKCkgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA9PT0gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJ0V2ZXJ5IDNyZCAnICsgc2VsZWN0ZWREYXkuam9pbigpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnRXZlcnkgJyArXHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSArXHJcbiAgICAgICAgICAndGggJyArXHJcbiAgICAgICAgICBzZWxlY3RlZERheS5qb2luKCkgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBudW1iZXJzIGFuZCByZXR1cm5zIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBtb250aCBuYW1lcy5cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFtcIjFcIiwgXCIxXCIsIFwiMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJcIl1cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxyXG4gICAqL1xyXG4gIGdldE1vbnRobHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xyXG4gICAge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZE1vbnRoID0gZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGVsZSkgLSAxXTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzFzdCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMikge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzJuZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzNyZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjEgfHxcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzFcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAnbmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAndGggb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzFdIGlzIGxlc3MgdGhhbiAyLCB0aGVuIHRoZSBmcmVxdWVuY3lQbGFjZWhvbGRlciBpcyBzZXQgdG8gdGhlIDFzdCwgMm5kLFxyXG4gICAqIDNyZCwgb3IgbnRoIG9mIGV2ZXJ5IG1vbnRoIGJ5IGZyZXF1ZW5jeVRpbWUuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBpcyBncmVhdGVyIHRoYW4gMSwgdGhlbiB0aGUgZnJlcXVlbmN5UGxhY2Vob2xkZXIgaXMgc2V0IHRvIHRoZSAxc3QsXHJcbiAgICogMm5kLCAzcmQsIG9yIG50aCBvZiBldmVyeSBtb250aCwgSW50ZXJ2YWw6IGV2ZXJ5IHllYXJTZXF1ZW5jZSB5ZWFycyBieSBmcmVxdWVuY3lUaW1lLlxyXG4gICAqXHJcbiAgICogSSdtIHRyeWluZyB0byB3cml0ZSBhIHRlc3QgdGhhdCB3aWxsIHRlc3QgdGhlIGFib3ZlIGZ1bmN0aW9uLlxyXG4gICAqXHJcbiAgICogSGVyZSdzIHdoYXQgSSBoYXZlIHNvIGZhcjpcclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFswXSA9IFwiWWVhcmx5XCJcclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxyXG4gICAqL1xyXG4gIGdldFllYXJseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XHJcbiAgICB7XHJcbiAgICAgIGNvbnN0IHllYXJTZXF1ZW5jZSA9XHJcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAwID8gcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgOiAxO1xyXG4gICAgICBpZiAoeWVhclNlcXVlbmNlIDwgMikge1xyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICcxc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgJzJuZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA+IDMpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICd0aCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzEgfHxcclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICduZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh5ZWFyU2VxdWVuY2UgPiAxKSB7XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAxKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICcxc3Qgb2YgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xyXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcclxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgJzJuZCBvZicgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcclxuICAgICAgICAgICAgeWVhclNlcXVlbmNlICtcclxuICAgICAgICAgICAgJyB5ZWFycyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICczcmQgb2YgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xyXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICAgJ3RoIG9mICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcclxuICAgICAgICAgICAgeWVhclNlcXVlbmNlICtcclxuICAgICAgICAgICAgJyB5ZWFycyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMxIHx8XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICdzdCBvZiAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXHJcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICduZCBvZiAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXHJcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICdyZCBvZiAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXHJcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBpcyAxLCAyLCAzLCAyMSwgMjIsIDIzLCBvciBncmVhdGVyIHRoYW4gMywgdGhlbiBzZXQgdGhlXHJcbiAgICogZnJlcXVlbmN5UGxhY2Vob2xkZXIgdG8gYSBzdHJpbmcgdGhhdCBpbmNsdWRlcyB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBhbmQgdGhlIGZyZXF1ZW5jeVRpbWUuXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCIzXCIsIFwiMVwiLCBcIjEsMiwzXCJdXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEwOjAwIEFNXCJcclxuICAgKi9cclxuICBnZXRRdWFydGVybHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xyXG4gICAge1xyXG4gICAgICBjb25zdCBxdWFydGVybHkgPSBbXHJcbiAgICAgICAgJ0phbnVhcnksIEFwcmlsLCBKdWx5LCBPY3RvYmVyJyxcclxuICAgICAgICAnRmVicnVhcnksIE1heSwgQXVndXN0LCBOb3ZlbWJlcicsXHJcbiAgICAgICAgJyBNYXJjaCwgSnVuZSwgU2VwdGVtYmVyLCBEZWNlbWJlcicsXHJcbiAgICAgIF07XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzFzdCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICcybmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjEgfHxcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzFcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMikge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ25kIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICdyZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAndGggb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbnVtYmVycyBhbmQgcmV0dXJucyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbW9udGggbmFtZXMuXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCIxXCIsIFwiMVwiLCBcIjEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyXCJdXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEwOjAwIEFNXCJcclxuICAgKi9cclxuICBnZXRCaWFubnVhbFBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XHJcbiAgICB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkTW9udGggPSBmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJykubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZWxlKSAtIDFdO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAxKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnMXN0IG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnMm5kIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMSB8fFxyXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzMVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICdzdCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICduZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICdyZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA+IDMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICd0aCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgdGFrZXMgYW4gZXZlbnQgb2JqZWN0LCBhbmQgaWYgaXQgZXhpc3RzLCBpdCBjcmVhdGVzIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMgYXNcclxuICAgKiB0aGUgZXZlbnQgb2JqZWN0LCBhbmQgYXNzaWducyBpdCB0byB0aGUgZnJlcXVlbmN5RGV0YWlscyBwcm9wZXJ0eS5cclxuICAgKlxyXG4gICAqIElmIHRoZSBldmVudCBvYmplY3QgaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSBmcmVxdWVuY3lEZXRhaWxzIHByb3BlcnR5IHdpbGwgYmUgdW5kZWZpbmVkLlxyXG4gICAqXHJcbiAgICogSWYgdGhlIGV2ZW50IG9iamVjdCBpcyBudWxsLCB0aGVuIHRoZSBmcmVxdWVuY3lEZXRhaWxzIHByb3BlcnR5IHdpbGwgYmUgbnVsbC5cclxuICAgKlxyXG4gICAqIElmIHRoZSBldmVudCBvYmplY3QgaXMgYW4gZW1wdHkgb2JqZWN0LCB0aGVuIHRoZSBmcmVxdWVuY3lEZXRhaWxzIHByb3BlcnR5IHdpbGwgYmUgYW4gZW1wdHlcclxuICAgKiBvYmplY3QuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgZXZlbnQgb2JqZWN0IGlzIGFuIG9iamVjdCB3aXRoIHByb3BlcnRpZXMsIHRoZW4gdGhlIGZyZXF1ZW5jeURldGFpbHMgcHJvcGVydHkgd2lsbCBiZSBhblxyXG4gICAqIG9iamVjdCB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgZXZlbnQgb2JqZWN0IGlzIGFuIG9iamVjdCB3aXRoIHByb3BlcnRpZXMsIGJ1dCBzb21lIG9mIHRob3NlIHByb3BlcnRpZXMgYXJlIHVuZGVmaW5lZCwgdGhlblxyXG4gICAqIHRoZSBmcmVxdWVuY3lEZXRhaWxzIHByb3BlcnR5IHdpbGwgYmUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgcHJvcGVydGllcywgYnV0IHNvbWUgb2YgdGhvc2VcclxuICAgKiBwcm9wZXJ0aWVzIHdpbGwgYmUgdW5kZWZpbmVkLlxyXG4gICAqXHJcbiAgICogSWYgdGhlIGV2ZW50IG9iamVjdCBpcyBhbiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzLCBidXQgc29tZSBvZiB0aG9zZSBwcm9wZXJ0aWVzIGFyZSBudWxsLCB0aGVuIHRoZVxyXG4gICAqIEBwYXJhbSB7YW55fSBldmVudCAtIGFueSA9IHtcclxuICAgKi9cclxuICBmcmVxdWVuY3lEYXRhUG9wdWxhdGUoZXZlbnQ6IGFueSkge1xyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgIGZyZXF1ZW5jeTogZXZlbnQ/LmZyZXF1ZW5jeSxcclxuICAgICAgc3RhcnRlZF9hdDogZXZlbnQ/LnN0YXJ0ZWRfYXQsXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBldmVudD8uZnJlcXVlbmN5X3RpbWUsXHJcbiAgICAgIHJlbWluZF9iZWZvcmVfZGF5czogZXZlbnQ/LnJlbWluZF9iZWZvcmVfZGF5cyxcclxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IGV2ZW50Py5mYWlsZWRfYWZ0ZXJfZGF5cyxcclxuICAgICAgY2FuX2Fzc2Vzc19iZWZvcmVfZGF5czogZXZlbnQ/LmNhbl9hc3Nlc3NfYmVmb3JlX2RheXMsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzID0gZGF0YTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBmdW5jdGlvbiBgZ2V0T3RoZXJHUkNUYWJDb3VudGAgcmV0cmlldmVzIHRoZSBjb3VudCBvZiBkaWZmZXJlbnQgdHlwZXMgb2YgaXRlbXMgKGFzc2V0cyxcclxuICAgKiBwcm9jZXNzZXMsIHZlbmRvcnMsIGludmVudG9yeSkgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgdGFicyB3aXRoIHRoZSBjb3VudC5cclxuICAgKiBAcGFyYW0ge2FueX0gW2V2ZW50XSAtIFRoZSBcImV2ZW50XCIgcGFyYW1ldGVyIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlXHJcbiAgICogXCJnZXRPdGhlckdSQ1RhYkNvdW50XCIgZnVuY3Rpb24uIEl0IGlzIG9mIHR5cGUgXCJhbnlcIiwgd2hpY2ggbWVhbnMgaXQgY2FuIGFjY2VwdCBhbnkgZGF0YSB0eXBlLlxyXG4gICAqL1xyXG4gIGdldE90aGVyR1JDVGFiQ291bnQoZXZlbnQ/OiBhbnkpIHtcclxuICAgIGV2ZW50WydyY19pZHMnXSA9IHRoaXMucmlza0Zvcm0ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdFxyXG4gICAgICAubWFwKChyYzogYW55KSA9PiByYz8uX2lkKVxyXG4gICAgICAuam9pbignLCcpO1xyXG5cclxuICAgIHRoaXMuZ3JjU2VydmljZS5nZXRHUkNUYWJzQ291bnQoZXZlbnQpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMub3RoZXJHUkNDYXJkLmZvckVhY2goKHRhYjogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgT0JKRUNUX0xBQkVMOiBhbnkgPSB7XHJcbiAgICAgICAgICBBU1NFVDogJ0Fzc2V0cycsXHJcbiAgICAgICAgICBQUk9DRVNTOiAnUHJvY2Vzc2VzJyxcclxuICAgICAgICAgIFZFTkRPUjogJ1ZlbmRvcnMnLFxyXG4gICAgICAgICAgSU5WRU5UT1JZOiAnSW52ZW50b3J5JyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IFRBQl9OQU1FID0gT0JKRUNUX0xBQkVMW3RhYj8udGl0bGU/LnRvVXBwZXJDYXNlKCldO1xyXG4gICAgICAgIGlmIChUQUJfTkFNRSkge1xyXG4gICAgICAgICAgdGFiLnRpdGxlID0gVEFCX05BTUU7XHJcbiAgICAgICAgICB0YWIudmFsdWUgPSBpbmRleDtcclxuICAgICAgICAgIHRhYi5zZWxlY3RlZENvdW50ID0gMDtcclxuICAgICAgICAgIHRhYi5rZXkgPSBUQUJfTkFNRT8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qga2V5ID0gYCR7dGFiLmtleX1fdHlwZV9jb3VudGA7XHJcbiAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgdGFiLmNvdW50ID0gZGF0YVtrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldE90aGVyR1JDT2JqZWN0cyhldmVudD86IGFueSkge1xyXG4gICAgaWYgKHRoaXMub3RoZXJHUkNTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5vdGhlckdSQ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFldmVudCkge1xyXG4gICAgICBldmVudCA9IHtcclxuICAgICAgICByY19pZHM6ICcnLFxyXG4gICAgICAgIHR5cGU6IHRoaXMuc2VsZWN0ZWRHUkNUYWIsXHJcbiAgICAgICAgc3RhdGU6IDEsXHJcbiAgICAgICAgcGFnZTogMSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHRoaXMuZ3JjTG9hZGVyID0gdHJ1ZTtcclxuICAgIGV2ZW50WydyY19pZHMnXSA9IHRoaXMucmlza0Zvcm0ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdFxyXG4gICAgICAubWFwKChyYzogYW55KSA9PiByYz8uX2lkKVxyXG4gICAgICAuam9pbignLCcpO1xyXG4gICAgZXZlbnRbJ2dyY1R5cGUnXSA9IHRoaXMuc2VsZWN0ZWRHUkNUYWI7XHJcbiAgICB0aGlzLm90aGVyR1JDU3Vic2NyaXB0aW9uID0gdGhpcy5ncmNTZXJ2aWNlXHJcbiAgICAgIC5nZXRHUkNMaXN0KGV2ZW50KVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmdyY0xpc3QgPSBkYXRhO1xyXG4gICAgICAgIHRoaXMuZ3JjTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgLy8gaWYgKHRoaXMuTU9ERSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgLy8gICAvLyB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuc2VsZWN0ZWREYXRhID0gZGF0YS5maWx0ZXIoXHJcbiAgICAgICAgLy8gICAvLyAgIChpdGVtOiBhbnkpID0+IHRoaXMuZ3JjUGF5bG9hZC5saW5rZWRfR1JDX2lkcy5pbmNsdWRlcyhpdGVtPy5faWQpXHJcbiAgICAgICAgLy8gICAvLyApO1xyXG4gICAgICAgIC8vICAgaWYgKHRoaXMuZ3JjUGF5bG9hZC5saW5rZWRfR1JDX2lkcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgLy8gICAgIHRoaXMuZ3JjRm9ybS5vdGhlckdyY09iamVjdHMgPSB0cnVlO1xyXG4gICAgICAgIC8vICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1RIRVJfR1JDX09CSkVDVFMgPSB0cnVlO1xyXG4gICAgICAgIC8vICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVNlbGVjdGVkTGlzdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJpc2tGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cyA9IGV2ZW50O1xyXG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdHUkMnLCBmYWxzZSk7XHJcbiAgICB0aGlzLnNldE90aGVyR1JDVHlwZXNGb3JtYXRlKCk7XHJcbiAgfVxyXG4gIHNldE90aGVyR1JDVHlwZXNGb3JtYXRlKCkge1xyXG4gICAgY29uc3QgZ3JjVHlwZXMgPSBbJ2Fzc2V0cycsICdwcm9jZXNzZXMnLCAndmVuZG9ycycsICdpbnZlbnRvcnknXTtcclxuICAgIHRoaXMucmVzZXRHUkNEYXRhV2l0aFR5cGVzKCk7XHJcbiAgICBpZiAodGhpcy5yaXNrRm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucmlza0Zvcm0/LnNlbGVjdGVkR1JDT2JqZWN0cz8uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5ncmNEYXRhV2l0aFR5cGVzW2dyY1R5cGVzW2l0ZW0/LnR5cGVdXT8ucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldEdSQ0RhdGFXaXRoVHlwZXMoKSB7XHJcbiAgICB0aGlzLmdyY0RhdGFXaXRoVHlwZXMgPSB7XHJcbiAgICAgIGFzc2V0czogW10sXHJcbiAgICAgIHByb2Nlc3NlczogW10sXHJcbiAgICAgIHZlbmRvcnM6IFtdLFxyXG4gICAgICBpbnZlbnRvcnk6IFtdLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIndvcmtmbHctcmlza1wiICpuZ0lmPVwiIXNob3dTbWlsZXlcIj5cclxuICA8IS0tIFJpc2sgVHlwZSAtLT5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiBbY2xhc3MuYWN0aXZlXT1cImZhbHNlXCIgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvdHlwZS5zdmdcIlxyXG4gICAgICAgIGFsdD1cImltXCJcclxuICAgICAgICAqbmdJZj1cInRydWVcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgICpuZ0lmPVwiZmFsc2VcIlxyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgID5SaXNrIFR5cGUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxyXG4gICAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmlzay10eXBlLWZpZWxkXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidHlwZS1pdGVtXCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJyaXNrRm9ybT8ucmlza1R5cGUgPT09ICdOT1JNQUwnXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhcmlza1R5cGVDaGFuZ2VBbGxvd2VkXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlUmlzaygnTk9STUFMJylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgQUREIFRPIFJJU0sgUkVHSVNURVJcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBpbmZvXCJcclxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICdUaGlzIG9wdGlvbiBsZXRzIHlvdSBhZGQgYSByaXNrIGRpcmVjdGx5IHRvIHRoZSBSaXNrIFJlZ2lzdGVyLiBUaGUgcmlzayBvd25lcnMgd2lsbCByZWNlaXZlIGFuIGFsZXJ0IGFuZCB0aGV5IGNhbiBiZWdpbiB0aGUgdGhlIHJpc2sgYXNzZXNzbWVudCBwcm9jZXNzLidcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXHJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgID4mI3hlOTMyOzwvaVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJ0eXBlLWl0ZW1cIlxyXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInJpc2tGb3JtPy5yaXNrVHlwZSA9PT0gJ1JFUE9SVEVEJ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIXJpc2tUeXBlQ2hhbmdlQWxsb3dlZFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVJpc2soJ1JFUE9SVEVEJylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgUkVQT1JUIEEgUklTS1xyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm9cIlxyXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgJ1RoaXMgb3B0aW9ucyBsZXRzIHlvdSByZXBvcnQgYSByaXNrIGFuZCBhc3NpZ24gaXQgdG8gdGhlIHJpc2sgb3duZXJzLiBUaGUgcmlzayBvd25lcnMgd2lsbCBoYXZlIHRoZSBvcHRpb24gdG8gZWl0aGVyIGFkZCB0aGUgcmlzayB0byB0aGUgUmlzayBSZWdpc3RlciBvciBmbGFnIGl0IGZvciBhIGZvbGxvdy11cCBhdCBhIGxhdGVyIGRhdGUuJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcclxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgPiYjeGU5MzI7PC9pXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWNrZ3JvdW5kLWdsaWRlclwiPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8cCAqbmdJZj1cImZhbHNlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+QWRkIGEgcmlzayB0eXBlPC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIFJpc2sgTmFtZSAtLT5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiZmFsc2VcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtLnRpdGxlXCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hhdC5zdmdcIlxyXG4gICAgICAgIGFsdD1cImltXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmlza0Zvcm0/LnRpdGxlPy50cmltKCk/Lmxlbmd0aCA9PT0gMCB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ25hbWUnXHJcbiAgICAgICAgXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy50aXRsZT8udHJpbSgpPy5sZW5ndGggPiAwICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgID5XSEFUIFJJU0sgV09VTEQgWU9VIExJS0UgVE8gTUFOQUdFP1xyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxyXG4gICAgICAgID5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHNwYWNlVHJpbVxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgKGtleWRvd24pPVwiYWN0aXZlU2VsZWN0b3IgPSAnbmFtZSdcIlxyXG4gICAgICAgICAgKGZvY3VzaW4pPVwiYWN0aXZhdGVTZWxlY3RvcignbmFtZScsIHRydWUpXCJcclxuICAgICAgICAgIChmb2N1c291dCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJywgZmFsc2UpXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicmlza0Zvcm0udGl0bGVcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJBZGQgYSByaXNrIG5hbWVcIlxyXG4gICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8udGl0bGU/LnRyaW0oKSA9PSAnJyB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ25hbWUnXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8udGl0bGU/LnRyaW0oKSAhPSAnJyAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPnt7IHJpc2tGb3JtLnRpdGxlIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8cCAqbmdJZj1cInN1Ym1pdHRlZCAmJiAhcmlza0Zvcm0udGl0bGVcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cclxuICAgICAgICAgIEFkZCBhIHJpc2sgbmFtZVxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8dmNvbXBseS1lZGl0b3JcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicmlza0Zvcm0uZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJkZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAoY2xpY2tPdXRzaWRlKT1cImNoZWNrRGVzY3JpcHRpb24oKVwiXHJcbiAgICAgICAgPjwvdmNvbXBseS1lZGl0b3I+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHN1Ym1pdHRlZCAmJlxyXG4gICAgICAgICAgICByaXNrRm9ybS5yaXNrVHlwZSA9PT0gJ1JFUE9SVEVEJyAmJlxyXG4gICAgICAgICAgICAhcmlza0Zvcm0/LmRlc2NyaXB0aW9uPy50cmltKCk/Lmxlbmd0aFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgQWRkIGEgcmlzayBkZXNjcmlwdGlvblxyXG4gICAgICAgIDwvcD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSaXNrIE93bmVyIC0tPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ293bmVyJ1wiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnb3duZXInICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPiAwXCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPT0gMCB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ293bmVyJ1wiXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2ltLWNyZWF0aW5nLnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPiAwICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnb3duZXInXCJcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXHJcbiAgICAgICAgICA+V0hPIElTIFJFU1BPTlNJQkxFIEZPUiBNQU5BR0lORyBUSElTIFJJU0s/XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAnVGhpcyBpcyB0aGUgcGVyc29uIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSByaXNrLidcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwicmlza0Zvcm0/Lm93bmVyc0xpc3Q/Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcignb3duZXInLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJpc2sgT3duZXIocylcIlxyXG4gICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICByaXNrRm9ybT8ub3duZXJzTGlzdD8ubGVuZ3RoID4gMCB8fCByaXNrRm9ybT8uZ3JvdXBzTGlzdC5sZW5ndGggPiAwXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhZmVhdHVyZWZsYWdfZ3JvdXBzXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICByaXNrRm9ybT8ub3duZXJzTGlzdFxyXG4gICAgICAgICAgICAgICAgICB8IHNob3J0TWVyZ2UgOiBub25SZW1vdmFibGVVc2Vyc0xpc3QgYXMgb3duZXJMaXN0XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG93bmVyIG9mIG93bmVyTGlzdD8uc2xpY2UoMCwgMSlcIj5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbm9uUmVtb3ZhYmxlVXNlcnNMaXN0LmluY2x1ZGVzKG93bmVyPy5tZW1iZXJfaWQpXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3duZXInLCBvd25lcilcIlxyXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwib3duZXI/Lm1lbWJlcl9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgID57eyBvd25lcj8ubWVtYmVyX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicG9wb3Zlck93bmVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8ub3duZXJzTGlzdD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAre3sgcmlza0Zvcm0/Lm93bmVyc0xpc3Q/LnNsaWNlKDEpLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgKm5nSWY9XCIhZmVhdHVyZWZsYWdfZ3JvdXBzXCIgW2NsYXNzLm1vcmUtb25lXT1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGg+MVwiIFtjbGFzcy5wbHVzXT1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGg+MlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHJpc2tGb3JtPy5vd25lcnNMaXN0fHNob3J0TWVyZ2UgOiBub25SZW1vdmFibGVVc2Vyc0xpc3QpIGFzIG93bmVyTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IG93bmVyIG9mIG93bmVyTGlzdD8uc2xpY2UoMCwyKVwiPjxpIGNsYXNzPVwiaWNvbnNcIiAqbmdJZj1cIiFub25SZW1vdmFibGVVc2Vyc0xpc3QuaW5jbHVkZXMob3duZXI/Lm1lbWJlcl9pZClcIiAoY2xpY2spPVwicmVtb3ZlKCdvd25lcicsb3duZXIpXCI+JiN4ZTkwZDs8L2k+IHt7b3duZXI/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInBvcG92ZXJPd25lci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jpc2tGb3JtPy5vd25lcnNMaXN0Py5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIiAqbmdJZj1cImZlYXR1cmVmbGFnX2dyb3Vwc1wiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAhbm9uUmVtb3ZhYmxlVXNlcnNMaXN0LmluY2x1ZGVzKFxyXG4gICAgICAgICAgICAgICAgICAgIHJpc2tGb3JtPy5vd25lcnNMaXN0WzBdPy5tZW1iZXJfaWRcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ293bmVyJywgcmlza0Zvcm0/Lm93bmVyc0xpc3RbMF0pXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmlza0Zvcm0/Lm93bmVyc0xpc3RbMF0/Lm1lbWJlcl9uYW1lXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7IHJpc2tGb3JtPy5vd25lcnNMaXN0WzBdPy5tZW1iZXJfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiXHJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicG9wb3ZlclVzZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/Lm93bmVyc0xpc3QubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgK3t7IHJpc2tGb3JtPy5vd25lcnNMaXN0Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8uZ3JvdXBzTGlzdC5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICA+Jjwvc3BhblxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/Lmdyb3Vwc0xpc3QubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnT3duZXJncm91cCcsIHJpc2tGb3JtPy5ncm91cHNMaXN0WzBdKVwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInJpc2tGb3JtPy5ncm91cHNMaXN0WzBdPy5ncm91cF9uYW1lXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7IHJpc2tGb3JtPy5ncm91cHNMaXN0WzBdPy5ncm91cF9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/Lmdyb3Vwc0xpc3Q/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyByaXNrRm9ybT8uZ3JvdXBzTGlzdD8ubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgKm5nSWY9XCJmZWF0dXJlZmxhZ19ncm91cHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKm5nSWY9XCIhbm9uUmVtb3ZhYmxlVXNlcnNMaXN0LmluY2x1ZGVzKHJpc2tGb3JtPy5vd25lcnNMaXN0WzBdPy5tZW1iZXJfaWQpXCIgKGNsaWNrKT1cInJlbW92ZSgnb3duZXInLHJpc2tGb3JtPy5vd25lcnNMaXN0WzBdKVwiID4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tyaXNrRm9ybT8ub3duZXJzTGlzdFswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmlza0Zvcm0/Lm93bmVyc0xpc3QubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInBvcG92ZXJVc2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmlza0Zvcm0/Lm93bmVyc0xpc3QubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJyaXNrRm9ybT8uZ3JvdXBzTGlzdC5sZW5ndGggPiAwXCIgPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyaXNrRm9ybT8uZ3JvdXBzTGlzdC5sZW5ndGggPiAwXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ093bmVyZ3JvdXAnLCByaXNrRm9ybT8uZ3JvdXBzTGlzdFswXSlcIiA+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJyaXNrRm9ybT8uZ3JvdXBzTGlzdFswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj48c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7cmlza0Zvcm0/Lmdyb3Vwc0xpc3RbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmlza0Zvcm0/Lmdyb3Vwc0xpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyaXNrRm9ybT8uZ3JvdXBzTGlzdD8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ293bmVyJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcignb3duZXInLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIHJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBTZWxlY3QgT3duZXIocykgZm9yIHRoaXMgcmlzay5cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNwb3BvdmVyT3duZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgcmlza0Zvcm0/Lm93bmVyc0xpc3RcclxuICAgICAgICAgICAgICAgICAgfCBzaG9ydE1lcmdlIDogbm9uUmVtb3ZhYmxlVXNlcnNMaXN0IGFzIG93bmVyUG9wXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG93bmVyIG9mIG93bmVyUG9wIHwgc2xpY2UgOiAxOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIW5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyhvd25lcj8ubWVtYmVyX2lkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3duZXInLCBvd25lcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IG93bmVyLm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjcG9wb3ZlclVzZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgcmlza0Zvcm0/Lm93bmVyc0xpc3RcclxuICAgICAgICAgICAgICAgICAgfCBzaG9ydE1lcmdlIDogbm9uUmVtb3ZhYmxlVXNlcnNMaXN0IGFzIG93bmVyUG9wXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG93bmVyIG9mIG93bmVyUG9wIHwgc2xpY2UgOiAxOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIW5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyhvd25lcj8ubWVtYmVyX2lkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3duZXInLCBvd25lcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IG93bmVyLm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjZ3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIHJpc2tGb3JtPy5ncm91cHNMaXN0IHwgc2xpY2UgOiAxXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdPd25lcmdyb3VwJywgZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGRhdGEuZ3JvdXBfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgLS0+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmMnXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyYycgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJsZWZ0XCJcclxuICAgICAgW2NsYXNzLmNoZWNrZWRdPVwicmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aCA+IDBcIlxyXG4gICAgPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJpc2tGb3JtPy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0Py5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcclxuICAgICAgICBcIlxyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9yZXNwb25zaWJpbGl0eS1jZW50ZXIuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyYydcclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgID5SZXNwb25zaWJpbGl0eSBDZW50ZXIgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgICAgICAgICA8aVxyXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcnMgcmVwcmVzZW50IHRoZSBjb3Jwb3JhdGUgYW5kIG9wZXJhdGlvbmFsIGluZnJhc3RydWN0dXJlIG9mIGFuIG9yZ2FuaXphdGlvbi4gT25lIG9yIG1vcmUgUmVzcG9uc2liaWxpdHkgQ2VudGVycyBjYW4gYmUgZXhwb3NlZCB0byBhIHJpc2sgYW5kIGFjY29yZGluZ2x5LCB0aGUgcmlzayBtdXN0IGJlIGFzc2Vzc2VkIGFnYWluc3QgZWFjaCBSZXNwb25zaWJpbGl0eSBDZW50ZXIuJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXHJcbiAgICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0Py5sZW5ndGggPT0gMFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSZXNwb25zaWJpbGl0eSBDZW50ZXIocylcIlxyXG4gICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcclxuICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgIGxldCByY05hbWUgb2Ygcmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/LnNsaWNlKDAsIDEpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyYycsIHJjTmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyY05hbWUuaXRlbV9uYW1lXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7IHJjTmFtZS5pdGVtX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInBvcG92ZXJSQy5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgK3t7IHJpc2tGb3JtPy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0Py5zbGljZSgxKS5sZW5ndGggfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8ubGVuZ3RoPjFcIiBbY2xhc3MucGx1c109XCJyaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8ubGVuZ3RoPjJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IHJjTmFtZSBvZiByaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8uc2xpY2UoMCwyKVwiPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyYycscmNOYW1lKVwiPiYjeGU5MGQ7PC9pPiB7e3JjTmFtZS5pdGVtX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJyaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJwb3BvdmVyUkMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAncmMnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyYycsIHRydWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgcmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aCA9PSAwXCJcclxuICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgQXNzaWduIHRoaXMgcmlzayB0byBhIFJlc3BvbnNpYmlsaXR5IENlbnRlcihzKVxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI3BvcG92ZXJSQyBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgcmNOYW1lIG9mIHJpc2tGb3JtPy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0IHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ3JjJywgcmNOYW1lKVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHJjTmFtZS5pdGVtX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gUmlzayBGcmVxdWVuY3kgLS0+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1wiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5JyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cz8uaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gICAgKm5nSWY9XCJyaXNrRm9ybT8ucmlza1R5cGUgIT09ICdSRVBPUlRFRCdcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicmlza0Zvcm0/LmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5XCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgIXJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5IHx8XHJcbiAgICAgICAgICByaXNrRm9ybT8uZnJlcXVlbmN5X2RldGFpbHM/LmZyZXF1ZW5jeSA9PT0gJycgfHxcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3doZW4uc3ZnXCJcclxuICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgKHJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5ICYmXHJcbiAgICAgICAgICAgIHJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5ICE9PSAnJykgfHxcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5J1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXHJcbiAgICAgICAgICA+SE9XIE9GVEVOIERPRVMgVEhJUyBSSVNLIE5FRUQgVE8gQkUgUkVBU1NFU1NFRD9cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgPGlcclxuICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICdUaGUgb3B0aW9uIGxldHMgeW91IHNwZWNpZnkgdGhlIHJpc2sgcmVhc3Nlc3NtZW50IGZyZXF1ZW5jeS4nXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICA+JiN4ZTkxZjs8L2lcclxuICAgICAgICAgID48L2xhYmVsXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcclxuICAgICAgICAgICpuZ0lmPVwiIXJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5XCJcclxuICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCB0cnVlKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZXQgYSBSZWFzc2Vzc21lbnQgRnJlcXVlbmN5XCJcclxuICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZCBidXR0b24tc2VjXCJcclxuICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzPy5mcmVxdWVuY3lcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcFwiXHJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImZyZXF1ZW5jeVBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgID57eyBmcmVxdWVuY3lQbGFjZWhvbGRlciB9fTwvc3BhblxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIHRydWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtbXQtMVwiPlxyXG4gICAgICAgICAgPGFwcC1jcy1zd2l0Y2hcclxuICAgICAgICAgICAgW25nVmFsdWVdPVwicmlza0Zvcm0/LmVuYWJsZUFsbEZ1dHVyZUJ1c2luZXNzQ3ljbGVcIlxyXG4gICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJyaXNrRm9ybS5lbmFibGVBbGxGdXR1cmVCdXNpbmVzc0N5Y2xlID0gJGV2ZW50XCJcclxuICAgICAgICAgICAgPkRPIFlPVSBXQU5UIFRISVMgVE8gU0hPVyBJTiBBTEwgRlVUVVJFIEJVU0lORVNTIENZQ0xFUz9cclxuICAgICAgICAgIDwvYXBwLWNzLXN3aXRjaD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgc3VibWl0dGVkICYmXHJcbiAgICAgICAgICAgICghcmlza0Zvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzPy5mcmVxdWVuY3kgfHxcclxuICAgICAgICAgICAgICByaXNrRm9ybT8uZnJlcXVlbmN5X2RldGFpbHM/LmZyZXF1ZW5jeSA9PT0gJycpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBQbGVhc2Ugc2VsZWN0IHRoZSBmcmVxdWVuY3kgb2Ygb2NjdXJyZW5jZSBmb3IgdGhpcyByaXNrLlxyXG4gICAgICAgIDwvcD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSaXNrIENhdGVnb3J5IC0tPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1wiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2F0ZWdvcnknICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtPy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeVwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICFyaXNrRm9ybT8uY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnkgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcclxuICAgICAgICBcIlxyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9jYXRlZ29yeS5zdmdcIlxyXG4gICAgICAgIGFsdD1cIlwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByaXNrRm9ybT8uY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnkgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdjYXRlZ29yeSdcclxuICAgICAgICBcIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgPlJpc2sgQ2F0ZWdvcnlcclxuICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCInUmlzayBDYXRlZ29yaWVzIGFyZSB1c2VkIHRvIGdyb3VwIHNpbWlsYXIgcmlza3MuJ1wiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICA+JiN4ZTkxZjs8L2lcclxuICAgICAgICAgID48L2xhYmVsXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cIiFyaXNrRm9ybT8uY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjYXRlZ29yeScsIHRydWUpXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUmlzayBDYXRlZ29yeVwiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwicmlza0Zvcm0/LmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdjYXRlZ29yeScsIHJpc2tGb3JtLmNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkpXCJcclxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyaXNrRm9ybT8uY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X25hbWVcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgID57eyByaXNrRm9ybT8uY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+PGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NhdGVnb3J5JyxyaXNrRm9ybS5jYXRlZ29yeS5zZWxlY3RlZENhdGVnb3J5KVwiPiYjeGU5MGQ7PC9pPnt7cmlza0Zvcm0/LmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnY2F0ZWdvcnknXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjYXRlZ29yeScsIHRydWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyaXNrRm9ybT8uY2F0ZWdvcnlDdXN0b21UYWdzPy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCJcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWcgb2Ygcmlza0Zvcm0uY2F0ZWdvcnlDdXN0b21UYWdzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+e3sgdGFnLmN1c3RvbV90YWdfbmFtZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhZy5jdXN0b21fdGFnX3ZhbHVlXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRhZy5jdXN0b21fdGFnX25hbWVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBBc3Nlc3NtZW50IERlYWRsaW5lIC0tPlxyXG4gIDwhLS0gIXNldHRpbmdzSW5mbz8uYXNzZXNzbWVudF9kZWFkbGluZV9lbmFibGUgJiYgcmlza0Zvcm0/LnJpc2tUeXBlICE9PSAnUkVQT1JURUQnICYmICgoY3VycmVudFRpbWVTdGFtcCA8IGVkaXREZXRhaWxzPy5hc3Nlc3NtZW50X2RhdGVfdGltZXN0YW1wKSB8fCAhZWRpdERldGFpbHM/LklmQXNzZXNzbWVudERvbmUgKSAtLT5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3Nlc3NtZW50J1wiXHJcbiAgICBpZD1cImRlYWRsaW5lXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3Nlc3NtZW50JyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgICAqbmdJZj1cImZhbHNlXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtPy5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMgPj0gMVwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3doZW4uc3ZnXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmlza0Zvcm0/LmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyA8IDEgfHxcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnYXNzZXNzbWVudCdcclxuICAgICAgICBcIlxyXG4gICAgICAgIGFsdD1cIlwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJpc2tGb3JtPy5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMgPj0gMSAmJlxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3Nlc3NtZW50J1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXHJcbiAgICAgICAgICA+QXNzZXNzbWVudCBEZWFkbGluZSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAnVGhpcyBpcyB0aGUgZGF0ZSB0aGF0IHRoZSBpbmhlcmVudCByaXNrIGFzc2Vzc21lbnQgbXVzdCBiZSBjb21wbGV0ZWQgYnkuJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXHJcbiAgICAgICAgICA+PC9sYWJlbFxyXG4gICAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPlNldCBOdW1iZXIgb2YgZGF5czwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBjb3VudGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNoYW5nZVJpc2tBc3Nlc3NtZW50KCdzdWJ0cmFjdCcpXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGVhNTM7PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyaXNrRm9ybS5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXNcIlxyXG4gICAgICAgICAgICAgIChmb2N1c2luKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2Fzc2Vzc21lbnQnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cImFjdGl2YXRlU2VsZWN0b3IoJ2Fzc2Vzc21lbnQnLCBmYWxzZSlcIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJyaXNrQXNzZXNzbWVudERlYWRsaW5lXCJcclxuICAgICAgICAgICAgICB2YWxpZGF0ZUFzc2Vzc21lbnRcclxuICAgICAgICAgICAgICAjZGVhZGxpbmU9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VSaXNrQXNzZXNzbWVudERlYWRsaW5lKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXlDb2RlICE9PSAxOTBcIlxyXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxyXG4gICAgICAgICAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSlcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjaGFuZ2VSaXNrQXNzZXNzbWVudCgnYWRkJylcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxNTs8L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIHJpc2tGb3JtPy5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMgPCAxXCJcclxuICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgRW50ZXIgYSB2YWx1ZSBncmVhdGVyIHRoYW4gMC5cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzID49IDFcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIFRoaXMgcmlzayBhc3Nlc3NtZW50IG5lZWRzIHRvIGJlIGNvbXBsZXRlZCBieVxyXG4gICAgICAgICAge3sgZGF0ZSB8IGRhdGUgOiBcImRkIE1NTSB5eXl5XCIgfX1cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIFJpc2sgT3ZlcnNlZXIgLS0+XHJcbiAgPGRpdlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcidcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ292ZXJzZWVyJyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgICAqbmdJZj1cInJpc2tGb3JtLmFkZE92ZXJzZWVyXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0Py5sZW5ndGggPiAwXCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3Q/Lmxlbmd0aCA9PSAwIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXInXHJcbiAgICAgICAgXCJcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvb3ZlcnNpZ2h0LnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiXCJcclxuICAgICAgLz5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3Q/Lmxlbmd0aCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdvdmVyc2VlcidcclxuICAgICAgICBcIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgPlJpc2sgT3ZlcnNpZ2h0PGlcclxuICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICdUaGlzIGlzIHRoZSBwZXJzb24gdGhhdCBpcyByZXNwb25zaWJsZSBmb3Igb3ZlcnNlZWluZyB0aGUgcmlzayBidXQgd2hvIGlzIG5vdCByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIHJpc2suJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXHJcbiAgICAgICAgICA+PC9sYWJlbFxyXG4gICAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICByaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdD8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgICAgcmlza0Zvcm0/Lm92ZXJzZWVyc0dyb3VwTGlzdD8ubGVuZ3RoID09IDBcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ292ZXJzZWVyJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSaXNrIE92ZXJzaWdodChzKVwiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3Q/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgICAgICAgcmlza0Zvcm0/Lm92ZXJzZWVyc0dyb3VwTGlzdC5sZW5ndGggPiAwXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmVhdHVyZWZsYWdfZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG93bmVyIG9mIHJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0Py5zbGljZSgwLCAxKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicsIG93bmVyKVwiXHJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJvd25lci5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgb3duZXIubWVtYmVyX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInBvcG92ZXJPdmVyc2Vlci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgK3t7IHJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0Py5zbGljZSgxKS5sZW5ndGggfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiICpuZ0lmPVwiZmVhdHVyZWZsYWdfZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyJywgcmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3RbMF0pXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3RbMF0/Lm1lbWJlcl9uYW1lXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdC5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICAgID57eyByaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdFswXT8ubWVtYmVyX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxyXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyByaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdC5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICByaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdC5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICByaXNrRm9ybT8ub3ZlcnNlZXJzR3JvdXBMaXN0Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID4mPC9zcGFuXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8ub3ZlcnNlZXJzR3JvdXBMaXN0Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKCdvdmVyc2Vlcmdyb3VwJywgcmlza0Zvcm0/Lm92ZXJzZWVyc0dyb3VwTGlzdFswXSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3RbMF0/Lmdyb3VwX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+e3sgcmlza0Zvcm0/Lm92ZXJzZWVyc0dyb3VwTGlzdFswXT8uZ3JvdXBfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyR3JvdXAucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/Lm92ZXJzZWVyc0dyb3VwTGlzdD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgK3t7IHJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3Q/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ292ZXJzZWVyJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcignb3ZlcnNlZXInLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNwb3BvdmVyT3ZlcnNlZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IG93bmVyIG9mIHJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0IHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyJywgb3duZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBvd25lci5tZW1iZXJfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBvd25lciBvZiByaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdCB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicsIG93bmVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgb3duZXIubWVtYmVyX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2Vlckdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiByaXNrRm9ybT8ub3ZlcnNlZXJzR3JvdXBMaXN0IHwgc2xpY2UgOiAxXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlcmdyb3VwJywgZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGRhdGEuZ3JvdXBfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSaXNrIE1pdGlnYXRpb24gUHJpb3JpdHkgLS0+XHJcbiAgPGRpdlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiZmFsc2VcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJiBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgICAqbmdJZj1cInJpc2tGb3JtLmFkZE1pdGlnYXRpb25cIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicmlza0Zvcm0ubWl0aWdhdGlvblwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3ByaW9yaXR5LnN2Z1wiXHJcbiAgICAgICAgKm5nSWY9XCIhcmlza0Zvcm0ubWl0aWdhdGlvblwiXHJcbiAgICAgICAgYWx0PVwiXCJcclxuICAgICAgLz5cclxuICAgICAgPCEtLSA8c3ZnIHZpZXdCb3g9XCIyNSAyNSA1MCA1MFwiIGNsYXNzPVwiZWRpdC1sb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI1MFwiIGN5PVwiNTBcIiByPVwiMjBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMxZTVkZDNcIiBzdHJva2Utd2lkdGg9XCIzXCIgY2xhc3M9XCJsb2FkZXItcGF0aFwiPjwvY2lyY2xlPlxyXG4gICAgICAgICAgICA8L3N2Zz4gLS0+XHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgKm5nSWY9XCJyaXNrRm9ybS5taXRpZ2F0aW9uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgID5SaXNrIE1pdGlnYXRpb24gUHJpb3JpdHlcclxuICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAnVGhpcyBzZXRzIHRoZSBwcmlvcml0eSBsZXZlbCBmb3IgdGhlIG1pdGlnYXRpb24gb2YgZWFjaCByaXNrLidcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgPjwvbGFiZWxcclxuICAgICAgICA+XHJcblxyXG4gICAgICAgIDxjcy1zZWxlY3RcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicmlza0Zvcm0ubWl0aWdhdGlvblwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBhIG1pdGlnYXRpb24gcHJpb3JpdHknXCJcclxuICAgICAgICAgIG5hbWU9XCJyaXNrRm9ybS5taXRpZ2F0aW9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y3Mtb3B0aW9uXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIG1pdGlnYXRpb25EZXRhaWxzXCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGE/Lm1pdGlnYXRpb25faWRcIlxyXG4gICAgICAgICAgICBbY29sb3JdPVwiZGF0YT8ubWl0aWdhdGlvbl9jb2xvclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGRhdGEubWl0aWdhdGlvbl9uYW1lIH19XHJcbiAgICAgICAgICA8L2NzLW9wdGlvbj5cclxuICAgICAgICA8L2NzLXNlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSZWNvbW1lbmRlZCBNaXRpZ2F0aW9uIFBsYW4gLS0+XHJcbiAgPGRpdlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICpuZ0lmPVwicmlza0Zvcm0/LmFkZE1pdGlnYXRpb25QbGFuXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGlkPVwicmlza1NwYWNlXCJcclxuICAgICAgY2xhc3M9XCJsZWZ0XCJcclxuICAgICAgW2NsYXNzLmNoZWNrZWRdPVwiKHJpc2tGb3JtLm1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW4gfCBzcGFjZVRyaW0pICE9PSAnJ1wiXHJcbiAgICA+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICAqbmdJZj1cIihyaXNrRm9ybS5taXRpZ2F0aW9uRGVzY3JpcHRpb25QbGFuIHwgc3BhY2VUcmltKSA9PT0gJydcIlxyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9vYmplY3RpdmVzLnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiXCJcclxuICAgICAgLz5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgICpuZ0lmPVwiKHJpc2tGb3JtLm1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW4gfCBzcGFjZVRyaW0pICE9PSAnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgPlJlY29tbWVuZGVkIE1pdGlnYXRpb24gUGxhbnM8bGlua1xyXG4gICAgICAgICAgICByZWw9XCJtYW5pZmVzdFwiXHJcbiAgICAgICAgICAgIGhyZWY9XCIuL21hbmlmZXN0Lmpzb25cIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAnU3BlY2lmeSB0aGUgbWl0aWdhdGlvbiBwbGFuIHRoYXQgY2FuIGJlIHVuZGVydGFrZW4gdG8gbWl0aWdhdGUgdGhlIHJpc2suJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8dmNvbXBseS1lZGl0b3JcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicmlza0Zvcm0ubWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhblwiXHJcbiAgICAgICAgICBbZWRpdG9yQ29uZmlnXT1cIm1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW5cIlxyXG4gICAgICAgICAgKGNsaWNrT3V0c2lkZSk9XCJjaGVja01pdGlnYXRpb25QbGFuKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L3Zjb21wbHktZWRpdG9yPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIFJpc2sgTGFiZWwgLS0+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImZhbHNlXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiYgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gICAgKm5nSWY9XCJyaXNrRm9ybT8uYWRkUmlza0xhYmVsXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XHJcbiAgICAgIDwhLS0gPGltZyAqbmdJZj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L292ZXJzaWdodC5zdmdcIiBhbHQ9XCJcIiAvPiAtLT5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgKm5nSWY9XCJ0cnVlXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgID5SSVNLIExBQkVMXHJcbiAgICAgICAgICA8aVxyXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ1Jpc2sgbGFiZWwgaW5mbyB0ZXh0IGhlcmUuLi4nXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgPjwvbGFiZWxcclxuICAgICAgICA+XHJcbiAgICAgICAgPGNzLXNlbGVjdFxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJyaXNrRm9ybS5yaXNrTGFiZWxWYWx1ZVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBhIHJpc2sgbGFiZWwnXCJcclxuICAgICAgICAgIG5hbWU9XCJyaXNrRm9ybT8ucmlza0xhYmVsVmFsdWVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjcy1vcHRpb24gKm5nRm9yPVwibGV0IGRhdGEgb2Ygcmlza0xhYmVsTGlzdFwiIFt2YWx1ZV09XCJkYXRhPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICB7eyBkYXRhPy5uYW1lIH19XHJcbiAgICAgICAgICA8L2NzLW9wdGlvbj5cclxuICAgICAgICA8L2NzLXNlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBMaW5rIHdpdGggIEdSQyAtLT5cclxuICA8ZGl2XHJcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ0dSQydcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ0dSQycgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gICAgKm5nSWY9XCJyaXNrRm9ybT8uR1JDXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPiAwXCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPT0gMCB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ293bmVyJ1wiXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2xpbmstaXRlbXMuc3ZnIGFsdD1cIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgICpuZ0lmPVwicmlza0Zvcm0/Lm93bmVyc0xpc3Q/Lmxlbmd0aCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdvd25lcidcIlxyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+TElOSyBHUkMgT0JKRUNUKFMpIDwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwicmlza0Zvcm0/LnNlbGVjdGVkR1JDT2JqZWN0cz8ubGVuZ3RoID09PSAwXCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignR1JDJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBHUkMgb2JqZWN0KHMpIHRvIGxpbmsgd2l0aCB0aGlzIHJpc2suXCJcclxuICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJpc2tGb3JtPy5zZWxlY3RlZEdSQ09iamVjdHM/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRHUkMgb2YgZ3JjRGF0YVdpdGhUeXBlcyB8IGtleXZhbHVlIDogb3JpZ2luYWxPcmRlcjtcclxuICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEdSQz8udmFsdWU/Lmxlbmd0aFwiIGNsYXNzPVwic2VsZWN0ZWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGdyYyBvZiBzZWxlY3RlZEdSQz8udmFsdWU/LnNsaWNlKDAsIDEpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnR1JDJywgZ3JjLCAwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid29ya2Zsb3dMYXZlbCB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTQgdngtbXItMSB2eC10ZXh0LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZEdSQz8ua2V5IHwgdGl0bGVjYXNlIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiZ3JjPy5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICA+e3sgZ3JjPy5uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicG9wb3ZlckdSQy5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZEdSQz8udmFsdWU/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAre3sgc2VsZWN0ZWRHUkM/LnZhbHVlLmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnR1JDJ1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkR1JDVGFiID0gc2VsZWN0ZWRHUkM/LnZhbHVlWzBdPy50eXBlO1xyXG4gICAgICAgICAgICAgICAgICBnZXRPdGhlckdSQ09iamVjdHMoKTtcclxuICAgICAgICAgICAgICAgICAgYWN0aXZhdGVTZWxlY3RvcignR1JDJywgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3BvcG92ZXJHUkMgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JjIG9mIHNlbGVjdGVkR1JDPy52YWx1ZSB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdHUkMnLCBncmMsIGogKyAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ3JjLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxhcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0XHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3JjJ1wiXHJcbiAgW3Jlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RdPVwicmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdFwiXHJcbiAgW3NlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzXT1cInJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RcIlxyXG4gIFtyY0lkS2V5XT1cIidyY19pZCdcIlxyXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZFJDTGlzdCgkZXZlbnQpXCJcclxuICAoY2xvc2VSY0xpc3QpPVwiYWN0aXZhdGVTZWxlY3RvcigncmMnLCBmYWxzZSlcIlxyXG4gIFtzaW5ndWxhclRleHRdPVwiJ1Jlc3BvbnNpYmlsaXR5IENlbnRlciBzZWxlY3RlZCdcIlxyXG4gIFtwbHVyYWxUZXh0XT1cIidSZXNwb25zaWJpbGl0eSBDZW50ZXJzIHNlbGVjdGVkJ1wiXHJcbj5cclxuPC9hcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0PlxyXG5cclxuPGFwcC1vd25lci1saXN0XHJcbiAgKm5nSWY9XCIhZmVhdHVyZWZsYWdfZ3JvdXBzICYmIGFjdGl2ZVNlbGVjdG9yID09PSAnb3duZXInXCJcclxuICBbdXNlcnNMaXN0XT1cIm93bmVyc0xpc3RcIlxyXG4gIFtzZWxlY3RlZFVzZXJzXT1cInJpc2tGb3JtLm93bmVyc0xpc3RcIlxyXG4gIFt1c2VySWRLZXldPVwiJ21lbWJlcl9pZCdcIlxyXG4gIFtpdGVtRW1haWxLZXldPVwiJ21lbWJlcl9lbWFpbCdcIlxyXG4gIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCJcclxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRPd25lcnNMaXN0KCRldmVudClcIlxyXG4gIFtub25SZW1vdmFibGVVc2Vyc0xpc3RdPVwibm9uUmVtb3ZhYmxlVXNlcnNMaXN0XCJcclxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZhdGVTZWxlY3Rvcignb3duZXInLCBmYWxzZSlcIlxyXG4gIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCJcclxuICBbcGx1cmFsVGV4dF09XCInVXNlcnMgc2VsZWN0ZWQnXCJcclxuPjwvYXBwLW93bmVyLWxpc3Q+XHJcblxyXG48dXNlci1ncm91cC1saXN0XHJcbiAgKm5nSWY9XCJmZWF0dXJlZmxhZ19ncm91cHMgJiYgYWN0aXZlU2VsZWN0b3IgPT09ICdvd25lcidcIlxyXG4gIFt1c2VybGlzdF09XCJvd25lcnNMaXN0XCJcclxuICBbc2VsZWN0ZWRVc2Vyc109XCJyaXNrRm9ybS5vd25lcnNMaXN0XCJcclxuICBbZ3JvdXBMaXN0XT1cImdyb3Vwc0xpc3RcIlxyXG4gIFtub25SZW1vdmFibGVVc2VySWRzXT1cIm5vblJlbW92YWJsZVVzZXJzTGlzdFwiXHJcbiAgKHNhdmUpPVwic2F2ZVNlbGVjdGVkT3duZXJzTGlzdCgkZXZlbnQpXCJcclxuICBbc2VsZWN0ZWRHcm91cHNdPVwicmlza0Zvcm0uZ3JvdXBzTGlzdFwiXHJcbiAgKGNhbmNlbCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvd25lcicsIGZhbHNlKVwiXHJcbiAgW2dyb3VwRW5hYmxlZF09XCJ0cnVlXCJcclxuICBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZWZsYWdfZ3JvdXBzXCJcclxuPlxyXG48L3VzZXItZ3JvdXAtbGlzdD5cclxuXHJcbjx1c2VyLWdyb3VwLWxpc3RcclxuICAqbmdJZj1cImZlYXR1cmVmbGFnX2dyb3VwcyAmJiBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyJ1wiXHJcbiAgW3VzZXJsaXN0XT1cIm92ZXJzZWVyc0xpc3RcIlxyXG4gIFtzZWxlY3RlZFVzZXJzXT1cInJpc2tGb3JtLm92ZXJzZWVyc0xpc3RcIlxyXG4gIFtncm91cExpc3RdPVwib3ZlcnNlZXJzR3JvdXBMaXN0XCJcclxuICAoc2F2ZSk9XCJzYXZlU2VsZWN0ZWRPdmVyc2VlcnNMaXN0KCRldmVudClcIlxyXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJyaXNrRm9ybS5vdmVyc2VlcnNHcm91cExpc3RcIlxyXG4gIChjYW5jZWwpPVwiYWN0aXZhdGVTZWxlY3Rvcignb3ZlcnNlZXInLCBmYWxzZSlcIlxyXG4gIFtncm91cEVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnX2dyb3Vwc1wiXHJcbj5cclxuPC91c2VyLWdyb3VwLWxpc3Q+XHJcblxyXG48YXBwLWNhdGVnb3J5LWxpc3RcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2F0ZWdvcnknXCJcclxuICBbY2F0ZWdvcnlMaXN0XT1cImNhdGVnb3J5TGlzdFwiXHJcbiAgW3NlbGVjdGVkQ2F0ZWdvcnldPVwicmlza0Zvcm0uY2F0ZWdvcnlcIlxyXG4gIChzYXZlU2VsZWN0ZWRDYXRlZ29yeSk9XCJzYXZlU2VsZWN0ZWRDYXRlZ29yeSgkZXZlbnQpXCJcclxuICAoY2xvc2VDYXRlZ29yaWVzTGlzdCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjYXRlZ29yeScsIGZhbHNlKVwiXHJcbj48L2FwcC1jYXRlZ29yeS1saXN0PlxyXG48YXBwLW93bmVyLWxpc3RcclxuICAqbmdJZj1cIiFmZWF0dXJlZmxhZ19ncm91cHMgJiYgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcidcIlxyXG4gIFt1c2Vyc0xpc3RdPVwib3ZlcnNlZXJzTGlzdFwiXHJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicmlza0Zvcm0ub3ZlcnNlZXJzTGlzdFwiXHJcbiAgW3VzZXJJZEtleV09XCInbWVtYmVyX2lkJ1wiXHJcbiAgW2l0ZW1OYW1lS2V5XT1cIidtZW1iZXJfbmFtZSdcIlxyXG4gIFtpdGVtRW1haWxLZXldPVwiJ21lbWJlcl9lbWFpbCdcIlxyXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZE92ZXJzZWVyc0xpc3QoJGV2ZW50KVwiXHJcbiAgKGNsb3NlVXNlcnNMaXN0KT1cImFjdGl2YXRlU2VsZWN0b3IoJ292ZXJzZWVyJywgZmFsc2UpXCJcclxuICBbc2luZ3VsYXJUZXh0XT1cIidVc2VyIHNlbGVjdGVkJ1wiXHJcbiAgW3BsdXJhbFRleHRdPVwiJ1VzZXJzIHNlbGVjdGVkJ1wiXHJcbj5cclxuPC9hcHAtb3duZXItbGlzdD5cclxuPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwibG9hZGVyXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cclxuXHJcbjxhcHAtZnJlcXVlbmN5LWRpYWxvZy1jb250YWluZXJcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1wiXHJcbiAgW2ZyZXF1ZW5jeURldGFpbHNdPVwiZnJlcXVlbmN5RGV0YWlsc1wiXHJcbiAgKHNlbGVjdGVkRnJlcXVlbmN5KT1cImZyZXF1ZW5jeURhdGEoJGV2ZW50KVwiXHJcbiAgKGNsb3NlRnJlcXVlbmN5KT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIGZhbHNlKVwiXHJcbj5cclxuPC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1jb250YWluZXI+XHJcblxyXG48YXBwLWdyYy1vYmplY3QtbGlzdFxyXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdHUkMnXCJcclxuICBbZ3JjT2JqZWN0XT1cImdyY0xpc3RcIlxyXG4gIFtzZWxlY3RlZEdSQ109XCJyaXNrRm9ybS5zZWxlY3RlZEdSQ09iamVjdHMgfCByZWZEaXNjb25uZWN0XCJcclxuICBbbG9hZGVyXT1cImdyY0xvYWRlclwiXHJcbiAgW3RhYmxlQ2FyZF09XCJvdGhlckdSQ0NhcmQgfCByZWZEaXNjb25uZWN0XCJcclxuICBbc2VsZWN0ZWRUYWJdPVwic2VsZWN0ZWRHUkNUYWJcIlxyXG4gIChnZXRPdGhlckdSQ09iamVjdHMpPVwiZ2V0T3RoZXJHUkNPYmplY3RzKCRldmVudClcIlxyXG4gIChzYXZlT3RoZXJHUkMpPVwic2F2ZVNlbGVjdGVkTGlzdCgkZXZlbnQpXCJcclxuICAoY2xvc2VPdGhlckdSQyk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdHUkMnLCBmYWxzZSlcIlxyXG4+PC9hcHAtZ3JjLW9iamVjdC1saXN0PlxyXG5cclxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxyXG4gICpuZ0lmPVwic2hvd1NtaWxleVwiXHJcbiAgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiXHJcbiAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXHJcbiAgKGFjdGlvbik9XCJhY3Rpb24oJGV2ZW50KVwiXHJcbiAgKGNsb3NlU21pbGV5KT1cImNsb3NlU21pbGV5KCRldmVudClcIlxyXG4+XHJcbjwvYXBwLXNtaWxleS1kaWFsb2ctaW5saW5lPlxyXG4iXX0=
1591
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcmlzay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1yaXNrL3dvcmtmbG93LXJpc2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcmlzay93b3JrZmxvdy1yaXNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFlBQVksRUFFWixRQUFRLEVBQ1IsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFVbkMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTakYsTUFBTSxPQUFPLHFCQUFxQjtJQTRJaEMsWUFDVSxXQUEyQixFQUMzQixXQUF3QixFQUN4QixZQUEwQixFQUMxQixRQUF5QixFQUN6QixnQkFBa0MsRUFDbEMsVUFBc0IsRUFDbEIsTUFBdUI7UUFOM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWpKaEMsOEJBQXlCLEdBQVEsRUFBRSxDQUFDO1FBQ3BDLGtDQUE2QixHQUFRLEVBQUUsQ0FBQztRQUN4QyxzQkFBaUIsR0FBUSxFQUFFLENBQUM7UUFDNUIsZUFBVSxHQUFRLEVB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QUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxRCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDdEIsTUFBTSxFQUFFLEVBQUU7WUFDVixTQUFTLEVBQUUsRUFBRTtZQUNiLE9BQU8sRUFBRSxFQUFFO1lBQ1gsU0FBUyxFQUFFLEVBQUU7U0FDZCxDQUFDO0lBQ0osQ0FBQzs7a0hBcnFEVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixza0JDNUJsQyxtdjFEQTRoREE7MkZEaGdEYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1COzswQkF1SjFCLFFBQVE7NENBOUhGLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDSSxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csMkJBQTJCO3NCQUFwQyxNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0UsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkluaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBFZGl0b3JDb25maWcgfSBmcm9tICd2Y29tcGx5LWVkaXRvcic7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vY29uZmlndXJhdGlvbnMnO1xyXG5pbXBvcnQgeyBDYXRlZ29yeUxpc3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NhdGVnb3J5TGlzdCc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkFsZXJ0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maXJtYXRpb24tYWxlcnQnO1xyXG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWRkUmlza1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hZGQtcmlzay5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XHJcbmltcG9ydCB7IE9USEVSX0dSQ19DQVJEIH0gZnJvbSAnLi4vd29ya2Zsb3cvc2hhcmVkL2NvbnN0YW50cy9ncmNPYmplY3QuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBHcmNTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3cvc2hhcmVkL3NlcnZpY2VzL2dyYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC13b3JrZmxvdy1yaXNrJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctcmlzay5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctcmlzay5jb21wb25lbnQubGVzcycsICcuLi9mb3Jtcy5sZXNzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd1Jpc2tDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q6IGFueSA9IFtdO1xyXG4gIHNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzOiBhbnkgPSBbXTtcclxuICBtaXRpZ2F0aW9uRGV0YWlsczogYW55ID0gW107XHJcbiAgb3duZXJzTGlzdDogYW55ID0gW107XHJcbiAgbm9uUmVtb3ZhYmxlVXNlcnNMaXN0OiBhbnkgPSBbXTtcclxuICBlZGl0RGV0YWlscyE6IGFueTtcclxuICBzbWlsZXlNZXNzYWdlID0gYFlvdSdyZSBBbGwgU2V0IWA7XHJcbiAgcmlza0RhdGEhOiBhbnk7XHJcbiAgYWN0aW9uQnV0dG9ucyA9IFtcclxuICAgIHsgYnV0dG9uVGV4dDogJ0FkZCBNb3JlIFJpc2tzJywgY2xhc3M6ICd3aGl0ZS1idG4nLCBpZDogJ2FkZE1vcmUnIH0sXHJcbiAgICB7IGJ1dHRvblRleHQ6ICdWaWV3IFJpc2snLCBjbGFzczogJ2JsdWUtYnRuJywgaWQ6ICd2aWV3Umlza3MnIH0sXHJcbiAgXTtcclxuICBzaWRlU2VsZWN0b3JFbGVtZW50czogYW55ID0gW1xyXG4gICAgJ3JjJyxcclxuICAgICdvd25lcicsXHJcbiAgICAnb3ZlcnNlZXInLFxyXG4gICAgJ2NhdGVnb3J5JyxcclxuICAgICdmcmVxdWVuY3knLFxyXG4gIF07XHJcbiAgc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZlYXR1cmUhOiBhbnk7XHJcbiAgQElucHV0KCkgbW9kZSA9ICdFRElUJztcclxuICBASW5wdXQoKSByaXNrSWQgPSAnJztcclxuICBASW5wdXQoKSBkZWZhdWx0Umlza1R5cGUgPSAnTk9STUFMJztcclxuICBASW5wdXQoKSBtb3ZlVG9SZWdpc3Rlck1vZGUgPSAnJztcclxuICBASW5wdXQoKSBzZWNvbmRhcnlPcGVuUG9ydGFsID0gJyc7XHJcbiAgQE91dHB1dCgpIHNob3dDb25maXJtYXRpb25BbGVydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcG9wdWxhdGVPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZWZyZXNoRm9ybSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByY1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIG9wZW5lZEZyb20gPSAnJztcclxuICBzY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xyXG4gIGNhdGVnb3J5TGlzdDogQ2F0ZWdvcnlMaXN0ID0ge1xyXG4gICAgc3RyYXRlZ2ljOiB7XHJcbiAgICAgIG5hbWU6ICdTVFJBVEVHSUMnLFxyXG4gICAgICBkYXRhOiBbXSxcclxuICAgIH0sXHJcbiAgICBvcGVyYXRpb25hbDoge1xyXG4gICAgICBuYW1lOiAnT1BFUkFUSU9OQUwnLFxyXG4gICAgICBkYXRhOiBbXSxcclxuICAgIH0sXHJcbiAgICBjb21wbGlhbmNlOiB7XHJcbiAgICAgIG5hbWU6ICdDT01QTElBTkNFJyxcclxuICAgICAgZGF0YTogW10sXHJcbiAgICB9LFxyXG4gICAgb3RoZXJzOiB7XHJcbiAgICAgIG5hbWU6ICdPVEhFUlMnLFxyXG4gICAgICBkYXRhOiBbXSxcclxuICAgIH0sXHJcbiAgfTtcclxuICBvdmVyc2VlcnNMaXN0OiBhbnkgPSBbXTtcclxuICBvdmVyc2VlcnNHcm91cExpc3Q6IGFueSA9IFtdO1xyXG4gIGFkbWluc0xpc3Q6IGFueSA9IFtdO1xyXG4gIG92ZXJzZWVyc0lkTGlzdDogYW55ID0gW107XHJcbiAgdGltZXpvbmUhOiBzdHJpbmc7XHJcbiAgZGF0ZSE6IERhdGU7XHJcbiAgcmlza05hbWVGb2N1cyA9IGZhbHNlO1xyXG4gIGFzc2Vzc21lbnRGb2N1cyA9IGZhbHNlO1xyXG4gIHJpc2tUeXBlQ2hhbmdlQWxsb3dlZCA9IGZhbHNlO1xyXG4gIHJpc2tGb3JtOiBhbnkgPSB7XHJcbiAgICByaXNrVHlwZTogJ05PUk1BTCcsXHJcbiAgICB0aXRsZTogJycsXHJcbiAgICBkZXNjcmlwdGlvbjogJycsXHJcbiAgICByZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0OiBbXSxcclxuICAgIG93bmVyc0xpc3Q6IFtdLFxyXG4gICAgZ3JvdXBzTGlzdDogW10sXHJcbiAgICBjYXRlZ29yeToge1xyXG4gICAgICB0eXBlOiAnc3RyYXRlZ2ljJyxcclxuICAgICAgc2VsZWN0ZWRDYXRlZ29yeTogJycsXHJcbiAgICB9LFxyXG4gICAgY2F0ZWdvcnlDdXN0b21UYWdzOiBbXSxcclxuICAgIG92ZXJzZWVyc0xpc3Q6IFtdLFxyXG4gICAgb3ZlcnNlZXJzR3JvdXBMaXN0OiBbXSxcclxuICAgIG1pdGlnYXRpb246IDAsXHJcbiAgICBhc3Nlc3NtZW50X2RlYWRsaW5lX2RheXM6IDAsXHJcbiAgICBoZWFkX2lkczogW10sXHJcbiAgICBhZGRPdmVyc2VlcjogZmFsc2UsXHJcbiAgICBhZGRNaXRpZ2F0aW9uOiBmYWxzZSxcclxuICAgIGFkZE1pdGlnYXRpb25QbGFuOiBmYWxzZSxcclxuICAgIG1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW46ICcnLFxyXG4gICAgZnJlcXVlbmN5X2RldGFpbHM6IHtcclxuICAgICAgZnJlcXVlbmN5OiAnJyxcclxuICAgICAgc3RhcnRlZF9hdDogJycsXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiAnJyxcclxuICAgICAgcmVtaW5kX2JlZm9yZV9kYXlzOiAwLFxyXG4gICAgfSxcclxuICAgIGFkZFJpc2tMYWJlbDogZmFsc2UsXHJcbiAgICByaXNrTGFiZWxWYWx1ZTogMSxcclxuICAgIGVuYWJsZUFsbEZ1dHVyZUJ1c2luZXNzQ3ljbGU6IHRydWUsXHJcbiAgICBHUkM6IGZhbHNlLFxyXG4gICAgc2VsZWN0ZWRHUkNPYmplY3RzOiBbXSxcclxuICB9O1xyXG4gIGFwaVVybCA9ICcnO1xyXG4gIG1lbWJlcklkID0gMDtcclxuICBvcmdhbml6YXRpb25JZCA9IDA7XHJcblxyXG4gIHVzZXJzTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIGFkbWluc0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBjYXRlZ29yeUxpc3RMb2FkZWQgPSBmYWxzZTtcclxuICByY0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBzdWJtaXR0ZWQgPSBmYWxzZTtcclxuICBmcmVxdWVuY3lEZXRhaWxzID0ge1xyXG4gICAgZnJlcXVlbmN5OiAnJyxcclxuICAgIHN0YXJ0ZWRfYXQ6ICcnLFxyXG4gICAgZnJlcXVlbmN5X3RpbWU6ICcnLFxyXG4gICAgcmVtaW5kX2JlZm9yZV9kYXlzOiAwLFxyXG4gICAgZmFpbGVkX2FmdGVyX2RheXM6IDAsXHJcbiAgICBjYW5fYXNzZXNzX2JlZm9yZV9kYXlzOiAwLFxyXG4gIH07XHJcbiAgZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAnU2V0IGEgUmVhc3Nlc3NtZW50IEZyZXF1ZW5jeSc7XHJcbiAgc2hvcnRNb250aDogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gIHNldHRpbmdzSW5mbyE6IGFueTtcclxuICBsb2FkZXIgPSBmYWxzZTtcclxuICBhY3RpdmVTZWxlY3RvciA9ICcnO1xyXG4gIGN1cnJlbnRUaW1lU3RhbXAgPSBNYXRoLnJvdW5kKERhdGUubm93KCkgLyAxMDAwKTtcclxuICBmZWF0dXJlZmxhZ19ncm91cHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBncm91cHNMaXN0OiBhbnkgPSBbXTtcclxuICBvdGhlckdSQ0NhcmQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KE9USEVSX0dSQ19DQVJEKSk7XHJcblxyXG4gIC8qIENyZWF0aW5nIGFuIGFycmF5IGZvciByaXNrIGxhYmVsIHdpdGggaXQncyB2YWx1ZS4gKi9cclxuICByaXNrTGFiZWxMaXN0OiBhbnkgPSBbXHJcbiAgICB7IG5hbWU6ICdOZXdseSBJZGVudGlmaWVkIFJpc2snLCB2YWx1ZTogMSB9LFxyXG4gICAgeyBuYW1lOiAnUmFwaWRseSBDaGFuZ2luZyBSaXNrJywgdmFsdWU6IDIgfSxcclxuICBdO1xyXG4gIG90aGVyR1JDU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG4gIGdyY0xpc3Q6IGFueTtcclxuICBncmNMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZEdSQ1RhYjogbnVtYmVyID0gMDtcclxuICBncmNEYXRhV2l0aFR5cGVzOiBhbnkgPSB7XHJcbiAgICBhc3NldHM6IFtdLFxyXG4gICAgcHJvY2Vzc2VzOiBbXSxcclxuICAgIHZlbmRvcnM6IFtdLFxyXG4gICAgaW52ZW50b3J5OiBbXSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmlza1NlcnZpY2U6IEFkZFJpc2tTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVpS2l0U2VydmljZTogVWlLaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBncmNTZXJ2aWNlOiBHcmNTZXJ2aWNlLFxyXG4gICAgQE9wdGlvbmFsKCkgY29uZmlnPzogQ29uZmlndXJhdGlvbnNcclxuICApIHtcclxuICAgIHRoaXMudGltZXpvbmUgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJUaW1lWm9uZSgpO1xyXG4gIH1cclxuXHJcbiAgZGVzY3JpcHRpb246IEVkaXRvckNvbmZpZyA9IHtcclxuICAgIG1vZGU6ICdwcmltZScsXHJcbiAgICBjb2xvclBhbGV0dGU6IHRydWUsXHJcbiAgICBsaW5rOiB0cnVlLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdBZGQgYSBkZXNjcmlwdGlvbiBmb3IgdGhpcyByaXNrJyxcclxuICB9O1xyXG5cclxuICBtaXRpZ2F0aW9uRGVzY3JpcHRpb25QbGFuOiBFZGl0b3JDb25maWcgPSB7XHJcbiAgICBtb2RlOiAncHJpbWUnLFxyXG4gICAgY29sb3JQYWxldHRlOiB0cnVlLFxyXG4gICAgbGluazogdHJ1ZSxcclxuICAgIHBsYWNlaG9sZGVyOiAnRGVzY3JpYmUgdGhlIHJlY29tbWVuZGVkIG1pdGlnYXRpb24gcGxhbnMnLFxyXG4gIH07XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5mZWF0dXJlZmxhZ19ncm91cHMgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfcmlza19ncm91cHMnKTtcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMuZ2V0QWRtaW5zTGlzdCgpO1xyXG4gICAgdGhpcy5nZXRSQ0xpc3QoKTtcclxuICAgIHRoaXMuZ2V0T3duZXJzTGlzdCgpO1xyXG4gICAgaWYgKHRoaXMuZmVhdHVyZWZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgIHRoaXMuZ2V0R3JvdXBMaXN0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldENhdGVnb3J5TGlzdCgpO1xyXG4gICAgdGhpcy5nZXRTZXR0aW5nc0luZm8oKTtcclxuXHJcbiAgICB0aGlzLnNob3J0TW9udGggPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UubW9udGhBcnJheS5tYXAoKG1vbnRoKSA9PlxyXG4gICAgICBtb250aC5zdWJzdHJpbmcoMCwgMylcclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnQ1JFQVRFJykge1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcclxuICAgIGlmICh0aGlzLnNlY29uZGFyeU9wZW5Qb3J0YWwgIT09ICdPVEhFUicgJiYgdGhpcy5tb2RlICE9PSAnRURJVCcpIHtcclxuICAgICAgdGhpcy5ub25SZW1vdmFibGVVc2Vyc0xpc3QucHVzaCh0aGlzLm1lbWJlcklkKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcclxuICAgIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdSRVBPUlRFRF9SSVNLJykge1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID0gJ1JFUE9SVEVEJztcclxuICAgICAgdGhpcy5yaXNrVHlwZUNoYW5nZUFsbG93ZWQgPSBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnTU9WRV9UT19SRUdJU1RFUicpIHtcclxuICAgICAgdGhpcy5yaXNrRm9ybS5yaXNrVHlwZSA9ICdOT1JNQUwnO1xyXG4gICAgICB0aGlzLnJpc2tUeXBlQ2hhbmdlQWxsb3dlZCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRSaXNrVHlwZUJhc2VkT25TdWJzY3JpcHRpb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vVE8gZ2V0IGdyb3VwTGlzdCBkYXRhXHJcbiAgZ2V0R3JvdXBMaXN0KCkge1xyXG4gICAgdGhpcy5yaXNrU2VydmljZS5nZXRHcm91cHNMaXN0KCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmdyb3Vwc0xpc3QgPSByZXM/LmRhdGE7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzZXRSaXNrVHlwZUJhc2VkT25TdWJzY3JpcHRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnUkVQT1JURURfUklTSycpIHtcclxuICAgICAgdGhpcy5yaXNrRm9ybS5yaXNrVHlwZSA9ICdSRVBPUlRFRCc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJJbmZvKCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LnBlcm1pc3Npb24pIHtcclxuICAgICAgICAgIGNvbnN0IHBlcm1pc3Npb24gPSBKU09OLnBhcnNlKHJlcz8ucGVybWlzc2lvbik7XHJcbiAgICAgICAgICBpZiAodGhpcy5hdXRoU2VydmljZT8uaXNBZG1pbigpIHx8IHRoaXMuYXV0aFNlcnZpY2U/LmlzS2V5QWRtaW4oKSkge1xyXG4gICAgICAgICAgICB0aGlzLnJpc2tUeXBlQ2hhbmdlQWxsb3dlZCA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXV0aFNlcnZpY2UuaXNNYW5hZ2VyKCkpIHtcclxuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24/Lk1SSVNLID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yaXNrVHlwZUNoYW5nZUFsbG93ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5yaXNrRm9ybS5yaXNrVHlwZSA9ICdSRVBPUlRFRCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hdXRoU2VydmljZS5pc1VzZXIoKSkge1xyXG4gICAgICAgICAgICB0aGlzLnJpc2tUeXBlQ2hhbmdlQWxsb3dlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID0gJ1JFUE9SVEVEJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yaXNrVHlwZUNoYW5nZUFsbG93ZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucmlza0Zvcm0ucmlza1R5cGUgPSAnUkVQT1JURUQnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LnJvbGVBY3Rpb25zKSB7XHJcbiAgICAgICAgICBjb25zdCBtb2R1bGVJbmRleCA9IHJlcy5yb2xlQWN0aW9ucy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQubW9kdWxlTmFtZSA9PSAncmlzaydcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCByaXNrUGVybWlzc2lvbnMgPVxyXG4gICAgICAgICAgICByZXMucm9sZUFjdGlvbnNbbW9kdWxlSW5kZXhdLnN1Yk1vZHVsZVsxXS5wZXJtaXNzaW9ucztcclxuICAgICAgICAgIHJpc2tQZXJtaXNzaW9ucy5mb3JFYWNoKChwZXJtaXNzaW9uOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24ubmFtZSA9PSAnbWFuYWdlIHJpc2tzJyAmJiBwZXJtaXNzaW9uLmVuYWJsZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID0gJ05PUk1BTCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICAgIHRoaXMucmlza0Zvcm0ucmlza1R5cGUgPSAnTk9STUFMJztcclxuICAgICAgICAgIHRoaXMucmlza1R5cGVDaGFuZ2VBbGxvd2VkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VSaXNrKHR5cGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5yaXNrRm9ybSA9IHsgLi4udGhpcy5yaXNrRm9ybSwgLi4ueyByaXNrVHlwZTogdHlwZSB9IH07XHJcbiAgICB0aGlzLnNldFBvcHVwQnV0dG9ucygpO1xyXG4gICAgaWYgKHR5cGUgPT09ICdSRVBPUlRFRCcpIHtcclxuICAgICAgdGhpcy5yaXNrRm9ybS5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMgPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q3VycmVudGx5TG9nZ2VkSW5Vc2VyKCkge1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgIGNvbnN0IG93bmVyc0xpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgdGhpcy5vd25lcnNMaXN0LFxyXG4gICAgICAgIHRoaXMuZWRpdERldGFpbHM/Lm93bmVyLFxyXG4gICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICk/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkKTtcclxuICAgICAgaWYgKG93bmVyc0xpc3QuaW5jbHVkZXModGhpcy5tZW1iZXJJZCkpIHtcclxuICAgICAgICByZXR1cm4gW3RoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gW3RoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRQb3B1cEJ1dHRvbnMoKSB7XHJcbiAgICBpZiAodGhpcy5yaXNrRm9ybS5yaXNrVHlwZSA9PT0gJ1JFUE9SVEVEJykge1xyXG4gICAgICB0aGlzLmFjdGlvbkJ1dHRvbnMgPSBbXHJcbiAgICAgICAgeyBidXR0b25UZXh0OiAnQWRkIE1vcmUgUmlza3MnLCBjbGFzczogJ3doaXRlLWJ0bicsIGlkOiAnYWRkTW9yZScgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBidXR0b25UZXh0OiAnVmlldyBSZXBvcnRlZCBSaXNrcycsXHJcbiAgICAgICAgICBjbGFzczogJ2JsdWUtYnRuJyxcclxuICAgICAgICAgIGlkOiAnbWFuYWdlUmVwb3J0ZWRSaXNrJyxcclxuICAgICAgICB9LFxyXG4gICAgICBdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hY3Rpb25CdXR0b25zID0gW1xyXG4gICAgICAgIHsgYnV0dG9uVGV4dDogJ0FkZCBNb3JlIFJpc2tzJywgY2xhc3M6ICd3aGl0ZS1idG4nLCBpZDogJ2FkZE1vcmUnIH0sXHJcbiAgICAgICAgeyBidXR0b25UZXh0OiAnVmlldyBSaXNrJywgY2xhc3M6ICdibHVlLWJ0bicsIGlkOiAndmlld1Jpc2tzJyB9LFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRSaXNrRGV0YWlscyhyaXNrSWQ6IGFueSkge1xyXG4gICAgdGhpcy5yaXNrU2VydmljZS5nZXRSaXNrRGV0YWlsKHJpc2tJZCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lZGl0RGV0YWlscyA9IGNsb25lRGVlcChyZXMpO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0udGl0bGUgPSByZXMudGl0bGU7XHJcbiAgICAgICAgaWYgKHRoaXMub3BlbmVkRnJvbSA9PT0gJ01PVkVfVE9fUkVHSVNURVInKSB7XHJcbiAgICAgICAgICB0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID0gJ05PUk1BTCc7XHJcbiAgICAgICAgICB0aGlzLnJpc2tUeXBlQ2hhbmdlQWxsb3dlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJpc2tGb3JtLnJpc2tUeXBlID0gcmVzPy5yaXNrX3R5cGUgPz8gJ1JFUE9SVEVEJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uZGVzY3JpcHRpb24gPSByZXMuZGVzY3JpcHRpb247XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LFxyXG4gICAgICAgICAgcmVzLnJjX2lkLFxyXG4gICAgICAgICAgJ2l0ZW1faWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLm93bmVyc0xpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLm93bmVyc0xpc3QsXHJcbiAgICAgICAgICByZXMub3duZXIsXHJcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5ncm91cHNMaXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5ncm91cHNMaXN0LFxyXG4gICAgICAgICAgcmVzPy51c2VyZ3JvdXBfaWRzLFxyXG4gICAgICAgICAgJ19pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0ubWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhbiA9IHJlcy5taXRpZ2F0aW9uRGVzY3JpcHRpb25QbGFuO1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLnNldENhdGVnb3J5VHlwZShyZXMuY2F0ZWdvcnlfdHlwZVswXSk7XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlJbmRleCA9IHRoaXMuY2F0ZWdvcnlMaXN0W3R5cGVdPy5kYXRhPy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50LmNhdGVnb3J5X2lkID09IHJlcy5jYXRlZ29yeVswXVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGNhdGVnb3J5SW5kZXggIT0gLTEpIHtcclxuICAgICAgICAgIHRoaXMucmlza0Zvcm0uY2F0ZWdvcnkgPSB7XHJcbiAgICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkQ2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcnlMaXN0W3R5cGVdPy5kYXRhW2NhdGVnb3J5SW5kZXhdLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHRoaXMucmlza0Zvcm0uY2F0ZWdvcnlDdXN0b21UYWdzID0gcmVzLmNhdGVnb3J5X2N1c3RvbV90YWc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0xpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLm93bmVyc0xpc3QsXHJcbiAgICAgICAgICByZXMubWFuYWdlX292ZXJzaWdodCxcclxuICAgICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0dyb3VwTGlzdCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgIHRoaXMuZ3JvdXBzTGlzdCxcclxuICAgICAgICAgIHJlcz8ub3ZlcnNlZXJncm91cF9pZHMsXHJcbiAgICAgICAgICAnX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5taXRpZ2F0aW9uID0gcmVzPy5taXRpZ2F0aW9uXHJcbiAgICAgICAgICA/IHJlcz8ubWl0aWdhdGlvblxyXG4gICAgICAgICAgOiB0aGlzLnJpc2tGb3JtPy5taXRpZ2F0aW9uO1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzID0gcmVzLmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cztcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmFkZE92ZXJzZWVyID1cclxuICAgICAgICAgIHJlcy5tYW5hZ2Vfb3ZlcnNpZ2h0Lmxlbmd0aCA+IDAgfHwgcmVzPy5vdmVyc2Vlcmdyb3VwX2lkcz8ubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmFkZE1pdGlnYXRpb24gPSByZXMubWl0aWdhdGlvbiA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLm9yZ2FuaXphdGlvbklkID0gcmVzLm9yZ2FuaXNhdGlvbl9pZDtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmhlYWRfaWRzID0gcmVzPy5oZWFkX2lkcyA/IHJlcz8uaGVhZF9pZHMgOiBbXTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLm1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW4gPVxyXG4gICAgICAgICAgcmVzPy5taXRpZ2F0aW9uX3BsYW5fcmVjb21tZW5kYXRpb24gPz8gJyc7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5hZGRNaXRpZ2F0aW9uUGxhbiA9XHJcbiAgICAgICAgICByZXM/Lm1pdGlnYXRpb25fcGxhbl9yZWNvbW1lbmRhdGlvbi50cmltKCk/Lmxlbmd0aCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmFkZFJpc2tMYWJlbCA9IHJlcy5yaXNrX2xhYmVsID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIGlmIChyZXMuYXNzZXNzbWVudF9kYXRlX3RpbWVzdGFtcCkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlID0gbmV3IERhdGUocmVzLmFzc2Vzc21lbnRfZGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXMuSWZBc3Nlc3NtZW50RG9uZSA+IDApIHtcclxuICAgICAgICAgIHJlcy5hbGxfb3duZXJfYXJyLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5hc3Nlc3NtZW50X2RvbmUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ub25SZW1vdmFibGVVc2Vyc0xpc3QucHVzaChlbGVtZW50Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zZWNvbmRhcnlPcGVuUG9ydGFsID09PSAnT1RIRVInICYmIHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgICB0aGlzLm5vblJlbW92YWJsZVVzZXJzTGlzdCA9IEFycmF5LmZyb20oXHJcbiAgICAgICAgICAgIG5ldyBTZXQ8YW55W10+KFsuLi50aGlzLm5vblJlbW92YWJsZVVzZXJzTGlzdCwgLi4ucmVzPy5vd25lcl0pXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zZWNvbmRhcnlPcGVuUG9ydGFsICE9PSAnT1RIRVInICYmIHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgICB0aGlzLm5vblJlbW92YWJsZVVzZXJzTGlzdCA9IEFycmF5LmZyb20oXHJcbiAgICAgICAgICAgIG5ldyBTZXQ8YW55W10+KFtcclxuICAgICAgICAgICAgICAuLi50aGlzLm5vblJlbW92YWJsZVVzZXJzTGlzdCxcclxuICAgICAgICAgICAgICAuLi50aGlzLmdldEN1cnJlbnRseUxvZ2dlZEluVXNlcigpLFxyXG4gICAgICAgICAgICBdKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlcz8ucmlza190eXBlID09PSAnTk9STUFMJykge1xyXG4gICAgICAgICAgdGhpcy5ub25SZW1vdmFibGVVc2Vyc0xpc3QgPSBBcnJheS5mcm9tKFxyXG4gICAgICAgICAgICBuZXcgU2V0PGFueVtdPihbXHJcbiAgICAgICAgICAgICAgLi4udGhpcy5ub25SZW1vdmFibGVVc2Vyc0xpc3QsXHJcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXRDdXJyZW50bHlMb2dnZWRJblVzZXIoKSxcclxuICAgICAgICAgICAgXSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmNTZWxlY3RlZC5lbWl0KDEpO1xyXG4gICAgICAgIHRoaXMuc2F2ZVNlbGVjdGVkTGlzdChyZXMubGlua2VkR3JjRGV0YWlscyk7XHJcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ1RhYkNvdW50KHsgcmNfaWRzOiAnJyB9KTtcclxuICAgICAgICB0aGlzLmdldE90aGVyR1JDT2JqZWN0cyh7IHJjX2lkczogJycgfSk7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5lbmFibGVBbGxGdXR1cmVCdXNpbmVzc0N5Y2xlID1cclxuICAgICAgICAgIHJlcz8uZnV0dXJlX2J1c2luZXNzY3ljbGVfdmlzaWJpbGl0eTtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeURhdGFQb3B1bGF0ZShyZXM/LmZyZXF1ZW5jeV9kZXRhaWxzKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmZyZXF1ZW5jeV9kZXRhaWxzID0gcmVzPy5mcmVxdWVuY3lfZGV0YWlscztcclxuICAgICAgICB0aGlzLmdldEZyZXF1ZW5jeVBsYWNlaG9sZGVyKHJlcy5mcmVxdWVuY3lfZGV0YWlscyk7XHJcbiAgICAgICAgdGhpcy5zZXRPdmVyc2VlcnNMaXN0KCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKSB7XHJcbiAgICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XHJcbiAgICBpZiAodGhpcy5yaXNrRm9ybS5hZGRNaXRpZ2F0aW9uKSB7XHJcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnTUlUSUdBVElPTicpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucmlza0Zvcm0uYWRkT3ZlcnNlZXIpIHtcclxuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdPVkVSU0VFUicpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucmlza0Zvcm0uYWRkTWl0aWdhdGlvblBsYW4pIHtcclxuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdNSVRJR0FUSU9OX1BMQU4nKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJpc2tGb3JtLmFkZFJpc2tMYWJlbCkge1xyXG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ1JJU0tfTEFCRUwnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yaXNrRm9ybS5zZWxlY3RlZEdSQ09iamVjdHM/Lmxlbmd0aCkge1xyXG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ0dSQ19PQkpFQ1RTJyk7XHJcbiAgICAgIHRoaXMucmlza0Zvcm0uR1JDID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChhY3RpdmF0ZWRPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHNldENhdGVnb3J5VHlwZSh0eXBlOiBhbnkpIHtcclxuICAgIGlmICh0eXBlID09PSAxKSB7XHJcbiAgICAgIHJldHVybiAnc3RyYXRlZ2ljJztcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gMikge1xyXG4gICAgICByZXR1cm4gJ29wZXJhdGlvbmFsJztcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gMykge1xyXG4gICAgICByZXR1cm4gJ2NvbXBsaWFuY2UnO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAwKSB7XHJcbiAgICAgIHJldHVybiAnb3RoZXJzJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnc3RyYXRlZ2ljJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFJDTGlzdCgpIHtcclxuICAgIGNvbnN0IHJjQXJyYXk6IGFueVtdID0gW107XHJcbiAgICB0aGlzLnJpc2tTZXJ2aWNlXHJcbiAgICAgIC5nZXRSZXNwb25zaWJpbGl0eUNlbnRlckxpc3QoXHJcbiAgICAgICAgcmNBcnJheSxcclxuICAgICAgICB0aGlzLm1vZGUgPT09ICdFRElUJyA/IHRoaXMucmlza0lkIDogJydcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCA9IHJlcztcclxuICAgICAgICAgIHRoaXMucmNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIHRoaXMucmNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRDYXRlZ29yeUxpc3QoKSB7XHJcbiAgICB0aGlzLnJpc2tTZXJ2aWNlLmdldENhdGVnb3J5TGlzdCgpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYXRlZ29yeUxpc3Quc3RyYXRlZ2ljLmRhdGEgPSByZXMuc3RyYXRlZ2ljX2FycjtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdC5vcGVyYXRpb25hbC5kYXRhID0gcmVzLm9wZXJhdGlvbmFsX2FycjtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdC5jb21wbGlhbmNlLmRhdGEgPSByZXMuY29tcGxpYW5jZV9hcnI7XHJcbiAgICAgICAgdGhpcy5jYXRlZ29yeUxpc3Qub3RoZXJzLmRhdGEgPSByZXMub3RoZXJzX2FycjtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgdGhpcy5jYXRlZ29yeUxpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3duZXJzTGlzdCgpIHtcclxuICAgIHRoaXMucmlza1NlcnZpY2UuZ2V0T3JnYW5pemF0aW9uVXNlcnMoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMub3duZXJzTGlzdCA9IHJlcztcclxuXHJcbiAgICAgICAgdGhpcy51c2Vyc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSByZXMuZmluZEluZGV4KFxyXG4gICAgICAgICAgKHVzZXI6IGFueSkgPT4gdXNlci5tZW1iZXJfaWQgPT09IHRoaXMubWVtYmVySWRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnNlY29uZGFyeU9wZW5Qb3J0YWwgIT09ICdPVEhFUicgJiYgdGhpcy5tb2RlICE9PSAnRURJVCcpIHtcclxuICAgICAgICAgICAgdGhpcy5yaXNrRm9ybS5vd25lcnNMaXN0LnB1c2gocmVzW2luZGV4XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMudXNlcnNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgZ2V0QWRtaW5zTGlzdCgpIHtcclxuICAgIHRoaXMucmlza1NlcnZpY2UuZ2V0QWRtaW5LZXlBZG1pbkxpc3QoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmFkbWluc0xpc3QgPSByZXM7XHJcbiAgICAgICAgdGhpcy5hZG1pbnNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLmFkbWluc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2V0dGluZ3NJbmZvKCkge1xyXG4gICAgdGhpcy5yaXNrU2VydmljZS5nZXRSaXNrU2V0dGluZ0RldGFpbHMoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzSW5mbyA9IHJlcztcclxuICAgICAgICB0aGlzLmhpZGVPcHRpb25hbEZpZWxkcyhyZXMpO1xyXG4gICAgICAgIHRoaXMubWl0aWdhdGlvbkRldGFpbHMgPSByZXM/LnJpc2tfbWl0aWdhdGlvbl9wcmlvcml0eT8ubWl0aWdhdGlvbl9kYXRhO1xyXG4gICAgICAgIGxldCBkZWZhdWx0TWl0aWdhdGlvbiA9IHRoaXMubWl0aWdhdGlvbkRldGFpbHM/LmZpbHRlcihcclxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5taXRpZ2F0aW9uX25hbWUgPT09ICdMT1cnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoZGVmYXVsdE1pdGlnYXRpb24/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5yaXNrRm9ybS5taXRpZ2F0aW9uID0gZGVmYXVsdE1pdGlnYXRpb25bMF0/Lm1pdGlnYXRpb25faWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaGlkZU9wdGlvbmFsRmllbGRzKHJlczogYW55KSB7XHJcbiAgICBpZiAocmVzPy5yaXNrX2F1dG9tYXRpb25fZW5hYmxlID09PSAxKSB7XHJcbiAgICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQoWydNSVRJR0FUSU9OJ10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmNMaXN0TG9hZGVkICYmXHJcbiAgICAgIHRoaXMudXNlcnNMaXN0TG9hZGVkICYmXHJcbiAgICAgIHRoaXMuYWRtaW5zTGlzdExvYWRlZCAmJlxyXG4gICAgICB0aGlzLmNhdGVnb3J5TGlzdExvYWRlZFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc2V0T3ZlcnNlZXJzTGlzdCgpO1xyXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLmdldFJpc2tEZXRhaWxzKHRoaXMucmlza0lkKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcclxuICAgICAgfSwgMzAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldE92ZXJzZWVyc0xpc3QoKSB7XHJcbiAgICBsZXQgaWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCByY093bmVySWRzOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHVzZXJzID0gY2xvbmVEZWVwKHRoaXMucmlza0Zvcm0ub3duZXJzTGlzdCk7XHJcbiAgICBjb25zdCByZXNwb25zaWJpbGl0eUNlbnRlcnMgPSBjbG9uZURlZXAoXHJcbiAgICAgIHRoaXMucmlza0Zvcm0ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGFkbWlucyA9IGNsb25lRGVlcCh0aGlzLmFkbWluc0xpc3QpO1xyXG4gICAgY29uc3QgYWxsVXNlcnMgPSBjbG9uZURlZXAodGhpcy5vd25lcnNMaXN0KTtcclxuICAgIHVzZXJzLmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICBpZHMucHVzaCh1c2VyLm1lbWJlcl9pZCk7XHJcbiAgICB9KTtcclxuICAgIGFkbWlucy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgaWRzLnB1c2godXNlci5tZW1iZXJfaWQpO1xyXG4gICAgfSk7XHJcbiAgICByZXNwb25zaWJpbGl0eUNlbnRlcnMuZm9yRWFjaCgocmM6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBhcnkgPSBbLi4ucmMub3duZXIsIC4uLnJjLnBhcmVudF9vd25lcnNdO1xyXG4gICAgICBpZHMgPSBbLi4uaWRzLCAuLi5hcnldO1xyXG4gICAgICByY093bmVySWRzID0gWy4uLnJjT3duZXJJZHMsIC4uLmFyeV07XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZHMgPSBbLi4ubmV3IFNldChpZHMpXTtcclxuICAgIHJjT3duZXJJZHMgPSBbLi4ubmV3IFNldChyY093bmVySWRzKV07XHJcbiAgICB0aGlzLnJpc2tGb3JtLmhlYWRfaWRzID0gcmNPd25lcklkcztcclxuICAgIHRoaXMub3ZlcnNlZXJzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcclxuICAgICAgKHVzZXI6IGFueSkgPT4gIWlkcy5pbmNsdWRlcyh1c2VyLm1lbWJlcl9pZClcclxuICAgICk7XHJcbiAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0xpc3QgPSB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0xpc3QuZmlsdGVyKFxyXG4gICAgICAodXNlcjogYW55KSA9PiAhaWRzLmluY2x1ZGVzKHVzZXIubWVtYmVyX2lkKVxyXG4gICAgKTtcclxuICAgIC8vR3JvdXBzIHdoaWNoIGFyZSBzZWxlY3RlZCBpbiBPd25lcnMgZmllbGQgc2hvdWxkIG5vdCBiZSB2aXNpYmxlIE92ZXJzZWVyXHJcbiAgICBsZXQgZ3JvdXBpZHM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZ3JvdXBzID0gY2xvbmVEZWVwKHRoaXMucmlza0Zvcm0uZ3JvdXBzTGlzdCk7XHJcbiAgICBjb25zdCBhbGxncm91cHMgPSBjbG9uZURlZXAodGhpcy5ncm91cHNMaXN0KTtcclxuICAgIGdyb3Vwcy5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XHJcbiAgICAgIGdyb3VwaWRzLnB1c2goZ3JvdXAuZ3JvdXBfaWQpO1xyXG4gICAgfSk7XHJcbiAgICBncm91cGlkcyA9IFsuLi5uZXcgU2V0KGdyb3VwaWRzKV07XHJcbiAgICB0aGlzLm92ZXJzZWVyc0dyb3VwTGlzdCA9IGFsbGdyb3Vwcy5maWx0ZXIoXHJcbiAgICAgIChncm91cDogYW55KSA9PiAhZ3JvdXBpZHMuaW5jbHVkZXMoZ3JvdXAuZ3JvdXBfaWQpXHJcbiAgICApO1xyXG4gICAgdGhpcy5yaXNrRm9ybS5vdmVyc2VlcnNHcm91cExpc3QgPSB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0dyb3VwTGlzdC5maWx0ZXIoXHJcbiAgICAgICh1c2VyOiBhbnkpID0+ICFncm91cGlkcy5pbmNsdWRlcyh1c2VyLmdyb3VwX2lkKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFjdGl2YXRlU2VsZWN0b3IodHlwZTogYW55LCBldmVudDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9IGV2ZW50ID8gdHlwZSA6ICcnO1xyXG4gICAgaWYgKFxyXG4gICAgICBbJ3JjJywgJ293bmVyJywgJ292ZXJzZWVyJywgJ2NhdGVnb3J5JywgJ2ZyZXF1ZW5jeScsICdHUkMnXS5pbmNsdWRlcyh0eXBlKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGl2ZURlc2VsZWN0b3IoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gJyc7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmUodHlwZTogYW55LCBldmVudDogYW55LCBpbmRleD86IG51bWJlcikge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ3JjJzpcclxuICAgICAgICBjb25zdCByY0luZGV4ID0gdGhpcy5yaXNrRm9ybS5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LmZpbmRJbmRleChcclxuICAgICAgICAgIChyYzogYW55KSA9PiByYy5yY19pZCA9PSBldmVudC5yY19pZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LnNwbGljZShyY0luZGV4LCAxKTtcclxuICAgICAgICB0aGlzLnNhdmVTZWxlY3RlZExpc3QoW10pO1xyXG4gICAgICAgIHRoaXMuZ2V0T3RoZXJHUkNUYWJDb3VudCh7IHJjX2lkczogJycgfSk7XHJcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyByY19pZHM6ICcnLCB0eXBlOiB0aGlzLnNlbGVjdGVkR1JDVGFiIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvd25lcic6XHJcbiAgICAgICAgY29uc3Qgb3duZXJJbmRleCA9IHRoaXMucmlza0Zvcm0ub3duZXJzTGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgICAob3duZXI6IGFueSkgPT4gb3duZXIubWVtYmVyX2lkID09IGV2ZW50Lm1lbWJlcl9pZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5vd25lcnNMaXN0LnNwbGljZShvd25lckluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLnNldE92ZXJzZWVyc0xpc3QoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnT3duZXJncm91cCc6XHJcbiAgICAgICAgY29uc3QgZ3JvdXBJbmRleCA9IHRoaXMucmlza0Zvcm0/Lmdyb3Vwc0xpc3QuZmluZEluZGV4KFxyXG4gICAgICAgICAgKG93bmVyOiBhbnkpID0+IG93bmVyLmdyb3VwX2lkID09IGV2ZW50Lmdyb3VwX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmdyb3Vwc0xpc3Quc3BsaWNlKGdyb3VwSW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvdmVyc2Vlcic6XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJJbmRleCA9IHRoaXMucmlza0Zvcm0ub3ZlcnNlZXJzTGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgICAob3ZlcnNlZXI6IGFueSkgPT4gb3ZlcnNlZXIubWVtYmVyX2lkID09IGV2ZW50Lm1lbWJlcl9pZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5vdmVyc2VlcnNMaXN0LnNwbGljZShvdmVyc2VlckluZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnb3ZlcnNlZXJncm91cCc6XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJncm91cEluZGV4ID0gdGhpcy5yaXNrRm9ybT8ub3ZlcnNlZXJzR3JvdXBMaXN0LmZpbmRJbmRleChcclxuICAgICAgICAgIChvdmVyc2VlcjogYW55KSA9PiBvdmVyc2Vlci5ncm91cF9pZCA9PSBldmVudC5ncm91cF9pZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5vdmVyc2VlcnNHcm91cExpc3Quc3BsaWNlKG92ZXJzZWVyZ3JvdXBJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmNhdGVnb3J5ID0ge1xyXG4gICAgICAgICAgdHlwZTogJ3N0cmF0ZWdpYycsXHJcbiAgICAgICAgICBzZWxlY3RlZENhdGVnb3J5OiAnJyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uY2F0ZWdvcnlDdXN0b21UYWdzID0gW107XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0dSQyc6XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5zZWxlY3RlZEdSQ09iamVjdHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLnNhdmVTZWxlY3RlZExpc3QodGhpcy5yaXNrRm9ybS5zZWxlY3RlZEdSQ09iamVjdHMpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2F2ZVNlbGVjdGVkUkNMaXN0KHJjSWRzOiBhbnkpIHtcclxuICAgIHRoaXMuc2F2ZVNlbGVjdGVkTGlzdChbXSk7XHJcbiAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkUkMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCxcclxuICAgICAgcmNJZHMsXHJcbiAgICAgICdpdGVtX2lkJ1xyXG4gICAgKTtcclxuICAgIHRoaXMucmNTZWxlY3RlZC5lbWl0KHNlbGVjdGVkUkM/Lmxlbmd0aCk7XHJcblxyXG4gICAgdGhpcy5yaXNrRm9ybS5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0ID0gc2VsZWN0ZWRSQztcclxuICAgIHRoaXMuZ2V0T3RoZXJHUkNUYWJDb3VudCh7IHJjX2lkczogJycgfSk7XHJcbiAgICB0aGlzLmdldE90aGVyR1JDT2JqZWN0cyh7IHJjX2lkczogJycsIHR5cGU6IHRoaXMuc2VsZWN0ZWRHUkNUYWIgfSk7XHJcbiAgICB0aGlzLnNldE92ZXJzZWVyc0xpc3QoKTtcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHNhdmVTZWxlY3RlZENhdGVnb3J5KGNhdGVnb3J5OiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aXZlRGVzZWxlY3RvcigpO1xyXG4gICAgdGhpcy5yaXNrRm9ybS5jYXRlZ29yeSA9IGNhdGVnb3J5O1xyXG4gICAgY29uc3QgY3VzdG9tVGFnczogYW55ID0gW107XHJcbiAgICBjYXRlZ29yeS5zZWxlY3RlZENhdGVnb3J5LmN1c3RvbV90YWcuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHRhZyA9IHtcclxuICAgICAgICBjdXN0b21fdGFnX25hbWU6IGVsZW1lbnQudGFnTmFtZSxcclxuICAgICAgICBjdXN0b21fdGFnX3ZhbHVlOiAnJyxcclxuICAgICAgfTtcclxuICAgICAgY3VzdG9tVGFncy5wdXNoKHRhZyk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucmlza0Zvcm0uY2F0ZWdvcnlDdXN0b21UYWdzID0gY3VzdG9tVGFncztcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHNhdmVTZWxlY3RlZE93bmVyc0xpc3QoaWRzOiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aXZlRGVzZWxlY3RvcigpO1xyXG4gICAgaWYgKHRoaXMuZmVhdHVyZWZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgIGxldCBvd25lcmlkcztcclxuICAgICAgbGV0IGdyb3VwSWRzO1xyXG4gICAgICBvd25lcmlkcyA9IHRoaXMucmV0dXJuSWRzKGlkcy51c2VycywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICBncm91cElkcyA9IHRoaXMucmV0dXJuSWRzKGlkcy5ncm91cHMsICdncm91cF9pZCcpO1xyXG4gICAgICBjb25zdCBzZWxlY3RlZE93bmVycyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICB0aGlzLm93bmVyc0xpc3QsXHJcbiAgICAgICAgb3duZXJpZHMsXHJcbiAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgKTtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRHcm91cHMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgdGhpcy5ncm91cHNMaXN0LFxyXG4gICAgICAgIGdyb3VwSWRzLFxyXG4gICAgICAgICdncm91cF9pZCdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zZXRMaXN0KHRoaXMuZ3JvdXBzTGlzdCwgZ3JvdXBJZHMsICdncm91cF9pZCcpO1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLm93bmVyc0xpc3QgPSBzZWxlY3RlZE93bmVycztcclxuICAgICAgdGhpcy5yaXNrRm9ybS5ncm91cHNMaXN0ID0gc2VsZWN0ZWRHcm91cHM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZE93bmVycyA9IHRoaXMuc2V0TGlzdCh0aGlzLm93bmVyc0xpc3QsIGlkcywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLm93bmVyc0xpc3QgPSBzZWxlY3RlZE93bmVycztcclxuICAgIH1cclxuICAgIHRoaXMuc2V0T3ZlcnNlZXJzTGlzdCgpO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVNlbGVjdGVkT3ZlcnNlZXJzTGlzdChpZHM6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XHJcbiAgICBpZiAoIXRoaXMuZmVhdHVyZWZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkT3ZlcnNlZXJzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCxcclxuICAgICAgICBpZHMsXHJcbiAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5yaXNrRm9ybS5vdmVyc2VlcnNMaXN0ID0gc2VsZWN0ZWRPdmVyc2VlcnM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgb3ZlcnNlZXJpZHM7XHJcbiAgICAgIGxldCBvdmVyc2Vlckdyb3VwSWRzO1xyXG4gICAgICBvdmVyc2VlcmlkcyA9IHRoaXMucmV0dXJuSWRzKGlkcy51c2VycywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICBvdmVyc2Vlckdyb3VwSWRzID0gdGhpcy5yZXR1cm5JZHMoaWRzLmdyb3VwcywgJ2dyb3VwX2lkJyk7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkT3ZlcnNlZXJzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCxcclxuICAgICAgICBvdmVyc2VlcmlkcyxcclxuICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICBjb25zdCBzZWxlY3RlZE92ZXJzZWVyR3JvdXBzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgIHRoaXMub3ZlcnNlZXJzR3JvdXBMaXN0LFxyXG4gICAgICAgIG92ZXJzZWVyR3JvdXBJZHMsXHJcbiAgICAgICAgJ2dyb3VwX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLm92ZXJzZWVyc0xpc3QgPSBzZWxlY3RlZE92ZXJzZWVycztcclxuICAgICAgdGhpcy5yaXNrRm9ybS5vdmVyc2VlcnNHcm91cExpc3QgPSBzZWxlY3RlZE92ZXJzZWVyR3JvdXBzO1xyXG4gICAgfVxyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUmlza0Fzc2Vzc21lbnQobmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKG5hbWUpIHtcclxuICAgICAgY2FzZSAnc3VidHJhY3QnOlxyXG4gICAgICAgIGlmICh0aGlzLnJpc2tGb3JtLmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucmlza0Zvcm0uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzIC09IDE7XHJcbiAgICAgICAgICB0aGlzLnNldERhdGUodGhpcy5yaXNrRm9ybS5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYWRkJzpcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyArPSAxO1xyXG4gICAgICAgIHRoaXMuc2V0RGF0ZSh0aGlzLnJpc2tGb3JtLmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREYXRlKGRheXM6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGRheXMgPj0gMCkge1xyXG4gICAgICBjb25zdCBtaWxpc2Vjb25kcyA9IGRheXMgKiA4NjQwMCAqIDEwMDA7XHJcbiAgICAgIGNvbnN0IGQ6IG51bWJlciA9IG5ldyBEYXRlKFxyXG4gICAgICAgIG5ldyBEYXRlKERhdGUubm93KCkpLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcclxuICAgICAgICAgIHRpbWVab25lOiB0aGlzLnRpbWV6b25lLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICkuZ2V0VGltZSgpO1xyXG4gICAgICB0aGlzLmRhdGUgPSBuZXcgRGF0ZShkICsgbWlsaXNlY29uZHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlUmlza0Fzc2Vzc21lbnREZWFkbGluZShldmVudDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoIWlzTmFOKGV2ZW50KSkge1xyXG4gICAgICB0aGlzLnNldERhdGUoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TGlzdChsaXN0OiBhbnlbXSwgaWRzOiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xyXG4gICAgbGlzdC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGlkcy5pbmNsdWRlcyhlbGVtZW50W2tleV0pKSB7XHJcbiAgICAgICAgZGF0YS5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuSWRzKGxpc3Q6IGFueVtdLCBrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGxpc3QubWFwKChlbGUpID0+IHtcclxuICAgICAgaWYgKGVsZVtrZXldKSB7XHJcbiAgICAgICAgcmV0dXJuIGVsZVtrZXldO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdFJpc2soKSB7XHJcbiAgICB0aGlzLnNldFBvcHVwQnV0dG9ucygpO1xyXG4gICAgY29uc3QgdmFsaWQgPSB0aGlzLnZhbGlkYXRlUmlzaygpO1xyXG4gICAgaWYgKCF2YWxpZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnICYmIHRoaXMuZWRpdERldGFpbHMuSWZBc3Nlc3NtZW50RG9uZSA+IDApIHtcclxuICAgICAgY29uc3QgcHJldlJDQXJyID0gdGhpcy5lZGl0RGV0YWlscy5yY19pZDtcclxuICAgICAgY29uc3QgY3VyclJDQXJyID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LFxyXG4gICAgICAgICdyY19pZCdcclxuICAgICAgKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHByZXZSQ0Fyci5sZW5ndGggPT09IGN1cnJSQ0Fyci5sZW5ndGggJiZcclxuICAgICAgICBwcmV2UkNBcnJcclxuICAgICAgICAgIC5zb3J0KClcclxuICAgICAgICAgIC5ldmVyeSgodmFsdWU6IGFueSwgaW5kZXg6IGFueSkgPT4gdmFsdWUgPT09IGN1cnJSQ0Fyci5zb3J0KClbaW5kZXhdKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmNyZWF0ZVJpc2sodGhpcy5yaXNrRm9ybSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY29uZmlybWF0aW9uRGV0YWlsczogQ29uZmlybWF0aW9uQWxlcnQgPSB7XHJcbiAgICAgICAgICBpc1Zpc2libGU6IHRydWUsXHJcbiAgICAgICAgICBtZXNzYWdlOiBgVGhlIFJlc3BvbnNpYmlsaXR5IENlbnRlcihzKSBhc3NvY2lhdGVkIHdpdGggdGhpcyByaXNrIGhhcyBiZWVuIG1vZGlmaWVkLlxyXG4gICAgICAgICAgICAgICBIZW5jZSwgdGhpcyByaXNrIG5lZWRzIHRvIGJlIHJlYXNzZXNzZWQuIE9uY2UgeW91IGNvbmZpcm0sIHRoZSBjdXJyZW50IGR1ZSBkYXRlIHdpbGwgYmUgY2xvc2VkIGFuZCBhIG5ldyByaXNrIGFzc2Vzc21lbnQgZHVlIGRhdGUgd2lsbCBiZSBnZW5lcmF0ZWQuYCxcclxuICAgICAgICAgIGFjdGlvbjogJ0VESVRfUklTSycsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnNob3dDb25maXJtYXRpb25BbGVydC5lbWl0KGNvbmZpcm1hdGlvbkRldGFpbHMpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0ZVJpc2sodGhpcy5yaXNrRm9ybSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRNb3JlSW5mbyhldmVudDogYW55KSB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcclxuICAgICAgY2FzZSAnT1ZFUlNFRVInOlxyXG4gICAgICAgIHRoaXMucmlza0Zvcm0uYWRkT3ZlcnNlZXIgPSBldmVudD8uY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnTUlUSUdBVElPTic6XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5hZGRNaXRpZ2F0aW9uID0gZXZlbnQ/LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ01JVElHQVRJT05fUExBTic6XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5hZGRNaXRpZ2F0aW9uUGxhbiA9IGV2ZW50Py5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdSSVNLX0xBQkVMJzpcclxuICAgICAgICB0aGlzLnJpc2tGb3JtLmFkZFJpc2tMYWJlbCA9IGV2ZW50Py5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdHUkNfT0JKRUNUUyc6XHJcbiAgICAgICAgdGhpcy5yaXNrRm9ybS5HUkMgPSBldmVudD8uY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVSaXNrKCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLnJpc2tGb3JtLnRpdGxlO1xyXG4gICAgY29uc3QgcmUgPSAvJm5ic3A7fDxicj4vZztcclxuICAgIHRoaXMucmlza0Zvcm0udGl0bGUgPSBldmVudC5yZXBsYWNlKHJlLCAnJykudHJpbSgpO1xyXG4gICAgLy8gKCghdGhpcy5zZXR0aW5nc0luZm8uYXNzZXNzbWVudF9kZWFkbGluZV9lbmFibGUpICYmICh0aGlzLnJpc2tGb3JtPy5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMgPCAxKSAmJiB0aGlzLnJpc2tGb3JtPy5yaXNrVHlwZSAhPT0gJ1JFUE9SVEVEJykgfHxcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMucmlza0Zvcm0udGl0bGUgfHxcclxuICAgICAgdGhpcy5yaXNrRm9ybS5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgIHRoaXMucmlza0Zvcm0ub3duZXJzTGlzdC5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAodGhpcy5yaXNrRm9ybS5yaXNrVHlwZSA9PT0gJ1JFUE9SVEVEJyAmJlxyXG4gICAgICAgICF0aGlzLnJpc2tGb3JtPy5kZXNjcmlwdGlvbj8udHJpbSgpPy5sZW5ndGgpIHx8XHJcbiAgICAgICh0aGlzLnJpc2tGb3JtPy5yaXNrVHlwZSAhPT0gJ1JFUE9SVEVEJyAmJlxyXG4gICAgICAgICghdGhpcy5yaXNrRm9ybT8uZnJlcXVlbmN5X2RldGFpbHM/LmZyZXF1ZW5jeSB8fFxyXG4gICAgICAgICAgdGhpcy5yaXNrRm9ybT8uZnJlcXVlbmN5X2RldGFpbHM/LmZyZXF1ZW5jeSA9PT0gJycpKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlUmlzayhyaXNrRm9ybTogYW55KSB7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICB0aXRsZTogcmlza0Zvcm0udGl0bGUsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiByaXNrRm9ybS5kZXNjcmlwdGlvbixcclxuICAgICAgY2F0ZWdvcnlfY3VzdG9tX3RhZzogcmlza0Zvcm0uY2F0ZWdvcnlDdXN0b21UYWdzLFxyXG4gICAgICBhc3Nlc3NtZW50X2RlYWRsaW5lX2VuYWJsZTogdGhpcy5zZXR0aW5nc0luZm8uYXNzZXNzbWVudF9kZWFkbGluZV9lbmFibGUsXHJcbiAgICAgIG93bmVyOiB0aGlzLnJldHVybklkcyhyaXNrRm9ybS5vd25lcnNMaXN0LCAnbWVtYmVyX2lkJyksXHJcbiAgICAgIGNhdGVnb3J5OiByaXNrRm9ybS5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlfaWRcclxuICAgICAgICA/IFtyaXNrRm9ybS5jYXRlZ29yeS5zZWxlY3RlZENhdGVnb3J5LmNhdGVnb3J5X2lkXVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIG1hbmFnZV9vdmVyc2lnaHQ6IHJpc2tGb3JtLmFkZE92ZXJzZWVyXHJcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyhyaXNrRm9ybS5vdmVyc2VlcnNMaXN0LCAnbWVtYmVyX2lkJylcclxuICAgICAgICA6IFtdLFxyXG4gICAgICByY19pZDogdGhpcy5yZXR1cm5JZHMocmlza0Zvcm0ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCwgJ2l0ZW1faWQnKSxcclxuICAgICAgaGVhZF9pZHM6IHJpc2tGb3JtLmhlYWRfaWRzLFxyXG4gICAgICByYXRpbmdfYXJyOiBbXSxcclxuICAgICAgbWVtYmVyX2lkOiB0aGlzLm1lbWJlcklkLFxyXG4gICAgICBvcmdhbmlzYXRpb25faWQ6IHRoaXMub3JnYW5pemF0aW9uSWQsXHJcbiAgICAgIHJpc2tfcHJvZ3Jlc3NfZmxhZzpcclxuICAgICAgICB0aGlzLm1vZGUgPT09ICdFRElUJyA/IHRoaXMuZWRpdERldGFpbHMucmlza19wcm9ncmVzc19mbGFnIDogMSxcclxuICAgICAgSWZBc3Nlc3NtZW50RG9uZTpcclxuICAgICAgICB0aGlzLm1vZGUgPT0gJ0VESVQnID8gdGhpcy5lZGl0RGV0YWlscy5JZkFzc2Vzc21lbnREb25lIDogMCxcclxuICAgICAgd29ya3Nob3BfaWQ6IHRoaXMubW9kZSA9PSAnRURJVCcgPyB0aGlzLmVkaXREZXRhaWxzLndvcmtzaG9wX2lkIDogMCxcclxuICAgICAgY29tcGxldGVfYXNzZXNzbWVudDogMCxcclxuICAgICAgbWl0aWdhdGlvbjogcmlza0Zvcm0uYWRkTWl0aWdhdGlvbiA/IHJpc2tGb3JtLm1pdGlnYXRpb24gOiAwLFxyXG4gICAgICB3ZWlnaHRhZ2VfZW5hYmxlOiB0aGlzLnNldHRpbmdzSW5mby53ZWlnaHRhZ2VfZW5hYmxlLFxyXG4gICAgICB0cmVhdG1lbnRfdHlwZTogdGhpcy5zZXR0aW5nc0luZm8udHJlYXRtZW50X2NyaXRlcmlhLFxyXG4gICAgICB3ZWlnaHRhZ2VfZGV0YWlsczogdGhpcy5zZXR0aW5nc0luZm8ud2VpZ2h0YWdlX2RldGFpbHMsXHJcbiAgICAgIHdlaWdodGFnZV9zZXRfYnk6IHRoaXMuc2V0dGluZ3NJbmZvLndlaWdodGFnZV9zZXRfYnksXHJcbiAgICAgIHdlaWdodGFnZV9zdHI6IFtcclxuICAgICAgICB0aGlzLnNldHRpbmdzSW5mby53ZWlnaHRhZ2VfZGV0YWlscy5pbXBhY3QudmFsdWUsXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc0luZm8ud2VpZ2h0YWdlX2RldGFpbHMubGlrZWxpaG9vZC52YWx1ZSxcclxuICAgICAgICB0aGlzLnNldHRpbmdzSW5mby53ZWlnaHRhZ2VfZGV0YWlscy52ZWxvY2l0eS52YWx1ZSxcclxuICAgICAgICB0aGlzLnNldHRpbmdzSW5mby53ZWlnaHRhZ2VfZGV0YWlscy52dWxuZXJhYmlsaXR5LnZhbHVlLFxyXG4gICAgICBdLFxyXG4gICAgICBhc3Nlc3NtZW50X2RlYWRsaW5lX3NldF9ieTogdGhpcy5zZXR0aW5nc0luZm8uYXNzZXNzbWVudF9kZWFkbGluZV9zZXRfYnksXHJcbiAgICAgIC8vIGFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5czogKHRoaXMuc2V0dGluZ3NJbmZvLmFzc2Vzc21lbnRfZGVhZGxpbmVfZW5hYmxlKSA/IHRoaXMuc2V0dGluZ3NJbmZvLmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyA6IHJpc2tGb3JtLmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyxcclxuICAgICAgcmlza190eXBlOiB0aGlzLnJpc2tGb3JtPy5yaXNrVHlwZSA/PyAnTk9STUFMJyxcclxuICAgICAgbWl0aWdhdGlvbl9wbGFuX3JlY29tbWVuZGF0aW9uOiB0aGlzLnJpc2tGb3JtPy5hZGRNaXRpZ2F0aW9uUGxhblxyXG4gICAgICAgID8gdGhpcy5yaXNrRm9ybT8ubWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhbiA/PyAnJ1xyXG4gICAgICAgIDogJycsXHJcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiB0aGlzLnJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyxcclxuICAgICAgcmlza19sYWJlbDogcmlza0Zvcm0/LmFkZFJpc2tMYWJlbCA/IHJpc2tGb3JtPy5yaXNrTGFiZWxWYWx1ZSA6IDEsXHJcbiAgICAgIGZ1dHVyZV9idXNpbmVzc2N5Y2xlX3Zpc2liaWxpdHk6XHJcbiAgICAgICAgcmlza0Zvcm0/LmVuYWJsZUFsbEZ1dHVyZUJ1c2luZXNzQ3ljbGUgPz8gdHJ1ZSxcclxuICAgICAgbGlua2VkX0dSQ19pZHM6IHRoaXMucmlza0Zvcm0uR1JDXHJcbiAgICAgICAgPyB0aGlzLnJpc2tGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cy5tYXAoKGdyYzogYW55KSA9PiBncmM/Ll9pZClcclxuICAgICAgICA6IFtdLFxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLmZlYXR1cmVmbGFnX2dyb3Vwcykge1xyXG4gICAgICBwYXlsb2FkWyd1c2VyZ3JvdXBfaWRzJ10gPSB0aGlzLnJldHVybklkcyhyaXNrRm9ybS5ncm91cHNMaXN0LCAnX2lkJyk7XHJcbiAgICAgIHBheWxvYWRbJ292ZXJzZWVyZ3JvdXBfaWRzJ10gPSByaXNrRm9ybS5hZGRPdmVyc2VlclxyXG4gICAgICAgID8gdGhpcy5yZXR1cm5JZHMocmlza0Zvcm0ub3ZlcnNlZXJzR3JvdXBMaXN0LCAnX2lkJylcclxuICAgICAgICA6IFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubW9kZSA9PSAnQ1JFQVRFJykge1xyXG4gICAgICB0aGlzLnJpc2tTZXJ2aWNlLmFkZFJpc2socGF5bG9hZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yaXNrRGF0YSA9IHJlcztcclxuICAgICAgICAgIHRoaXMucmlza0lkID0gcmVzLl9pZDtcclxuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcclxuICAgICAgICAgICAgJ2FsZXJ0J1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdFRElUJyAmJiB0aGlzLm9wZW5lZEZyb20gIT09ICdNT1ZFX1RPX1JFR0lTVEVSJykge1xyXG4gICAgICB0aGlzLnNtaWxleU1lc3NhZ2UgPSBgVGhlIHJpc2sgaGFzIGJlZW4gbW9kaWZpZWQuYDtcclxuICAgICAgdGhpcy5yaXNrU2VydmljZS51cGRhdGVSaXNrKHRoaXMucmlza0lkLCBwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJpc2tEYXRhID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAgICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLFxyXG4gICAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnTU9WRV9UT19SRUdJU1RFUicpIHtcclxuICAgICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoe1xyXG4gICAgICAgIGV2dDogeyBhY3Rpb246ICdNT1ZFX1RPX1JFR0lTVEVSJywgcGF5bG9hZCB9LFxyXG4gICAgICAgIGNvbmZpcm06IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0Rm9ybSgpIHtcclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5yaXNrRm9ybSA9IHtcclxuICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICBkZXNjcmlwdGlvbjogJycsXHJcbiAgICAgIHJpc2tUeXBlOiB0aGlzLnJpc2tGb3JtPy5yaXNrVHlwZSxcclxuICAgICAgYWRkTWl0aWdhdGlvblBsYW46IGZhbHNlLFxyXG4gICAgICBtaXRpZ2F0aW9uRGVzY3JpcHRpb25QbGFuOiAnJyxcclxuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdDogW10sXHJcbiAgICAgIG93bmVyc0xpc3Q6IFtdLFxyXG4gICAgICBncm91cHNMaXN0OiBbXSxcclxuICAgICAgY2F0ZWdvcnk6IHtcclxuICAgICAgICB0eXBlOiAnc3RyYXRlZ2ljJyxcclxuICAgICAgICBzZWxlY3RlZENhdGVnb3J5OiAnJyxcclxuICAgICAgfSxcclxuICAgICAgY2F0ZWdvcnlDdXN0b21UYWdzOiBbXSxcclxuICAgICAgb3ZlcnNlZXJzTGlzdDogW10sXHJcbiAgICAgIG1pdGlnYXRpb246IDAsXHJcbiAgICAgIGFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5czogMCxcclxuICAgICAgaGVhZF9pZHM6IFtdLFxyXG4gICAgICBhZGRPdmVyc2VlcjogZmFsc2UsXHJcbiAgICAgIGFkZE1pdGlnYXRpb246IGZhbHNlLFxyXG4gICAgICBmcmVxdWVuY3lfZGV0YWlsczoge1xyXG4gICAgICAgIGZyZXF1ZW5jeTogJycsXHJcbiAgICAgICAgc3RhcnRlZF9hdDogJycsXHJcbiAgICAgICAgZnJlcXVlbmN5X3RpbWU6ICcnLFxyXG4gICAgICAgIHJlbWluZF9iZWZvcmVfZGF5czogMCxcclxuICAgICAgfSxcclxuICAgICAgcmlza0xhYmVsVmFsdWU6IDEsXHJcbiAgICAgIGFkZFJpc2tMYWJlbDogZmFsc2UsXHJcbiAgICAgIEdSQzogZmFsc2UsXHJcbiAgICAgIHNlbGVjdGVkR1JDT2JqZWN0czogW10sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5ub25SZW1vdmFibGVVc2Vyc0xpc3QgPSBbXTtcclxuICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XHJcbiAgICB0aGlzLm1lbWJlcklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpO1xyXG4gICAgdGhpcy5ub25SZW1vdmFibGVVc2Vyc0xpc3QgPSB0aGlzLmdldEN1cnJlbnRseUxvZ2dlZEluVXNlcigpO1xyXG4gICAgdGhpcy5kYXRlID0gbmV3IERhdGUoKTtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnJlZnJlc2hGb3JtLmVtaXQodHJ1ZSk7XHJcbiAgICB0aGlzLnJjU2VsZWN0ZWQuZW1pdChmYWxzZSk7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMgPSB7XHJcbiAgICAgIGZyZXF1ZW5jeTogJycsXHJcbiAgICAgIHN0YXJ0ZWRfYXQ6ICcnLFxyXG4gICAgICBmcmVxdWVuY3lfdGltZTogJycsXHJcbiAgICAgIHJlbWluZF9iZWZvcmVfZGF5czogMCxcclxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IDAsXHJcbiAgICAgIGNhbl9hc3Nlc3NfYmVmb3JlX2RheXM6IDAsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdTZXQgYSBSZWFzc2Vzc21lbnQgRnJlcXVlbmN5JztcclxuXHJcbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgIHRoaXMuZ2V0T3duZXJzTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgYWN0aW9uKGV2ZW50OiBzdHJpbmcpIHtcclxuICAgIHN3aXRjaCAoZXZlbnQpIHtcclxuICAgICAgY2FzZSAnYWRkTW9yZSc6XHJcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndmlld1Jpc2tzJzpcclxuICAgICAgICB0aGlzLnZpZXdSaXNrcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtYW5hZ2VSZXBvcnRlZFJpc2snOlxyXG4gICAgICAgIHRoaXMucmVkaXJlY3RUb1JlcG9ydGVkKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZVNtaWxleShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHsgZXZ0OiB0aGlzLnJpc2tEYXRhLCBjb25maXJtOiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIHZpZXdSaXNrcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICBsZXQgdXJsOiBzdHJpbmc7XHJcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XHJcbiAgICAgIHVybCArPSAnL3Jpc2std29ya3Jvb20vJyArIHRoaXMucmlza0lkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvcmlza3YyJykpIHtcclxuICAgICAgICB1cmwgKz0gJy9yaXNrdjIvcmlzay13b3Jrcm9vbS8nICsgdGhpcy5yaXNrSWQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdXJsICs9ICcvcmlzay9yaXNrLXdvcmtyb29tLycgKyB0aGlzLnJpc2tJZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICAvL3RoaXMucmVzZXRGb3JtKCk7XHJcbiAgfVxyXG5cclxuICByZWRpcmVjdFRvUmVwb3J0ZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xyXG4gICAgbGV0IHVybDogc3RyaW5nO1xyXG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XHJcbiAgICAgIHVybCA9ICdodHRwOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdXJsID0gJ2h0dHBzOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICB1cmwgKz0gJy9yZXBvcnRlZC1yaXNrJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnL3Jpc2t2MicpKSB7XHJcbiAgICAgICAgdXJsICs9ICcvcmlza3YyL3JlcG9ydGVkLXJpc2snO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHVybCArPSAnL3Jpc2svcmVwb3J0ZWQtcmlzayc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xyXG4gICAgLy90aGlzLnJlc2V0Rm9ybSgpO1xyXG4gIH1cclxuICBjaGVja0Rlc2NyaXB0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMucmlza0Zvcm0uZGVzY3JpcHRpb24gPT0gJzxicj4nKSB7XHJcbiAgICAgIHRoaXMucmlza0Zvcm0uZGVzY3JpcHRpb24gPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrTWl0aWdhdGlvblBsYW4oKSB7XHJcbiAgICBpZiAodGhpcy5yaXNrRm9ybS5taXRpZ2F0aW9uRGVzY3JpcHRpb25QbGFuID09ICc8YnI+Jykge1xyXG4gICAgICB0aGlzLnJpc2tGb3JtLm1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW4gPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZyZXF1ZW5jeURhdGEoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURhdGFQb3B1bGF0ZShldmVudCk7XHJcbiAgICB0aGlzLnJpc2tGb3JtLmZyZXF1ZW5jeV9kZXRhaWxzID0ge1xyXG4gICAgICBmcmVxdWVuY3k6IGV2ZW50Py5mcmVxdWVuY3ksXHJcbiAgICAgIHN0YXJ0ZWRfYXQ6IGV2ZW50Py5zdGFydGVkX2F0LFxyXG4gICAgICBmcmVxdWVuY3lfdGltZTogZXZlbnQ/LmZyZXF1ZW5jeV90aW1lLFxyXG4gICAgICByZW1pbmRfYmVmb3JlX2RheXM6IGV2ZW50Py5yZW1pbmRfYmVmb3JlX2RheXMsXHJcbiAgICAgIGNhbl9hc3Nlc3NfYmVmb3JlX2RheXM6IGV2ZW50Py5jYW5fYXNzZXNzX2JlZm9yZV9kYXlzLFxyXG4gICAgICBmYWlsZWRfYWZ0ZXJfZGF5czogZXZlbnQ/LmZhaWxlZF9hZnRlcl9kYXlzLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSBldmVudD8ucGxhY2Vob2xkZXI7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBnZXRGcmVxdWVuY3lQbGFjZWhvbGRlcihyZXM6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHJlcz8uZnJlcXVlbmN5KSB7XHJcbiAgICAgICAgY29uc3QgZnJlcXVlbmN5RGV0YWlscyA9IHJlcz8uZnJlcXVlbmN5LnNwbGl0KCd+Jyk7XHJcbiAgICAgICAgY29uc3QgZnJlcXVlbmN5VGltZSA9XHJcbiAgICAgICAgICByZXM/LmZyZXF1ZW5jeV90aW1lID09PSAnMDA6MDA6MDAnID8gJzEyOjAwIGFtJyA6IHJlcz8uZnJlcXVlbmN5X3RpbWU7XHJcbiAgICAgICAgc3dpdGNoIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzBdKSkge1xyXG4gICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICB0aGlzLmdldFdlZWtseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgICAgdGhpcy5nZXRNb250aGx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA0OlxyXG4gICAgICAgICAgICB0aGlzLmdldFllYXJseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgNzpcclxuICAgICAgICAgICAgdGhpcy5nZXRRdWFydGVybHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIDk6XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Qmlhbm51YWxQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBjb25zdCBkYXRlT2JqZWN0ID0gbmV3IERhdGUoXHJcbiAgICAgICAgICAgICAgICBtb21lbnQoXHJcbiAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHNbMV0gK1xyXG4gICAgICAgICAgICAgICAgICAgICctJyArXHJcbiAgICAgICAgICAgICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1syXSArXHJcbiAgICAgICAgICAgICAgICAgICAgJy0nICtcclxuICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzNdICtcclxuICAgICAgICAgICAgICAgICAgICAnIDAwOjAwOjAwJyxcclxuICAgICAgICAgICAgICAgICAgJ1lZWVktTU0tREQgSEg6bW06c3MnXHJcbiAgICAgICAgICAgICAgICApLnVuaXgoKSAqIDEwMDBcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgICAgICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICAgICAnT25lIFRpbWUgJyArXHJcbiAgICAgICAgICAgICAgICBkYXRlT2JqZWN0LmdldERhdGUoKSArXHJcbiAgICAgICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW2RhdGVPYmplY3QuZ2V0TW9udGgoKV0gK1xyXG4gICAgICAgICAgICAgICAgJyAnICtcclxuICAgICAgICAgICAgICAgIGRhdGVPYmplY3QuZ2V0RnVsbFllYXIoKSArXHJcbiAgICAgICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgdGFrZXMgYSBmcmVxdWVuY3lEZXRhaWxzIGFycmF5IGFuZCBhIGZyZXF1ZW5jeVRpbWUgc3RyaW5nIGFuZCByZXR1cm5zIGEgZnJlcXVlbmN5UGxhY2Vob2xkZXJcclxuICAgKiBzdHJpbmcuXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCIxXCIsIFwiMSwyLDMsNCw1XCIsIFwiMVwiLCBcIjFcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIiwgXCIxXCIsXHJcbiAgICogXCIxXCIsIFwiMVwiLCBcIjFcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIiwgXCJcclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxyXG4gICAqL1xyXG4gIGdldFdlZWtseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XHJcbiAgICB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkRGF5ID0gZnJlcXVlbmN5RGV0YWlsc1sxXS5zcGxpdCgnLCcpLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmRheU5hbWVbcGFyc2VJbnQoZWxlKSAtIDFdO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJ0V2ZXJ5ICcgKyBzZWxlY3RlZERheS5qb2luKCkgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA9PT0gMikge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJ0V2ZXJ5IGFsdGVybmF0ZSAnICsgc2VsZWN0ZWREYXkuam9pbigpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPT09IDMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICdFdmVyeSAzcmQgJyArIHNlbGVjdGVkRGF5LmpvaW4oKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID4gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJ0V2ZXJ5ICcgK1xyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgK1xyXG4gICAgICAgICAgJ3RoICcgK1xyXG4gICAgICAgICAgc2VsZWN0ZWREYXkuam9pbigpICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbnVtYmVycyBhbmQgcmV0dXJucyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbW9udGggbmFtZXMuXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCIxXCIsIFwiMVwiLCBcIjEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyXCJdXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEwOjAwIEFNXCJcclxuICAgKi9cclxuICBnZXRNb250aGx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcclxuICAgIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRNb250aCA9IGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKS5tYXAoKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChlbGUpIC0gMV07XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDEpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICcxc3Qgb2YgZXZlcnkgJyArIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICcybmQgb2YgZXZlcnkgJyArIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICczcmQgb2YgZXZlcnkgJyArIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIxIHx8XHJcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMxXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMikge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ25kIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ3JkIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID4gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ3RoIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBpcyBsZXNzIHRoYW4gMiwgdGhlbiB0aGUgZnJlcXVlbmN5UGxhY2Vob2xkZXIgaXMgc2V0IHRvIHRoZSAxc3QsIDJuZCxcclxuICAgKiAzcmQsIG9yIG50aCBvZiBldmVyeSBtb250aCBieSBmcmVxdWVuY3lUaW1lLlxyXG4gICAqXHJcbiAgICogSWYgdGhlIGZyZXF1ZW5jeURldGFpbHNbMV0gaXMgZ3JlYXRlciB0aGFuIDEsIHRoZW4gdGhlIGZyZXF1ZW5jeVBsYWNlaG9sZGVyIGlzIHNldCB0byB0aGUgMXN0LFxyXG4gICAqIDJuZCwgM3JkLCBvciBudGggb2YgZXZlcnkgbW9udGgsIEludGVydmFsOiBldmVyeSB5ZWFyU2VxdWVuY2UgeWVhcnMgYnkgZnJlcXVlbmN5VGltZS5cclxuICAgKlxyXG4gICAqIEknbSB0cnlpbmcgdG8gd3JpdGUgYSB0ZXN0IHRoYXQgd2lsbCB0ZXN0IHRoZSBhYm92ZSBmdW5jdGlvbi5cclxuICAgKlxyXG4gICAqIEhlcmUncyB3aGF0IEkgaGF2ZSBzbyBmYXI6XHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbMF0gPSBcIlllYXJseVwiXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEwOjAwIEFNXCJcclxuICAgKi9cclxuICBnZXRZZWFybHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xyXG4gICAge1xyXG4gICAgICBjb25zdCB5ZWFyU2VxdWVuY2UgPVxyXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID4gMCA/IHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pIDogMTtcclxuICAgICAgaWYgKHllYXJTZXF1ZW5jZSA8IDIpIHtcclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDEpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICAnMXN0IG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMikge1xyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICcybmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgJzNyZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgICAndGggb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMxIHx8XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICdzdCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIyKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgICAnbmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMykge1xyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICAgJ3JkIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoeWVhclNlcXVlbmNlID4gMSkge1xyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xyXG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICAnMXN0IG9mICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcclxuICAgICAgICAgICAgeWVhclNlcXVlbmNlICtcclxuICAgICAgICAgICAgJyB5ZWFycyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICcybmQgb2YnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXHJcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xyXG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICAnM3JkIG9mICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcclxuICAgICAgICAgICAgeWVhclNlcXVlbmNlICtcclxuICAgICAgICAgICAgJyB5ZWFycyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID4gMykge1xyXG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICd0aCBvZiAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXHJcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzMSB8fFxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgICAnc3Qgb2YgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xyXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIyKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgICAnbmQgb2YgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xyXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgICAncmQgb2YgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xyXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSWYgdGhlIGZyZXF1ZW5jeURldGFpbHNbMV0gaXMgMSwgMiwgMywgMjEsIDIyLCAyMywgb3IgZ3JlYXRlciB0aGFuIDMsIHRoZW4gc2V0IHRoZVxyXG4gICAqIGZyZXF1ZW5jeVBsYWNlaG9sZGVyIHRvIGEgc3RyaW5nIHRoYXQgaW5jbHVkZXMgdGhlIGZyZXF1ZW5jeURldGFpbHNbMV0gYW5kIHRoZSBmcmVxdWVuY3lUaW1lLlxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gW1wiM1wiLCBcIjFcIiwgXCIxLDIsM1wiXVxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMDowMCBBTVwiXHJcbiAgICovXHJcbiAgZ2V0UXVhcnRlcmx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcclxuICAgIHtcclxuICAgICAgY29uc3QgcXVhcnRlcmx5ID0gW1xyXG4gICAgICAgICdKYW51YXJ5LCBBcHJpbCwgSnVseSwgT2N0b2JlcicsXHJcbiAgICAgICAgJ0ZlYnJ1YXJ5LCBNYXksIEF1Z3VzdCwgTm92ZW1iZXInLFxyXG4gICAgICAgICcgTWFyY2gsIEp1bmUsIFNlcHRlbWJlciwgRGVjZW1iZXInLFxyXG4gICAgICBdO1xyXG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDEpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICcxc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnMm5kIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzNyZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIxIHx8XHJcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMxXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICduZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID4gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ3RoIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgdGFrZXMgYSBzdHJpbmcgb2YgY29tbWEgc2VwYXJhdGVkIG51bWJlcnMgYW5kIHJldHVybnMgYSBzdHJpbmcgb2YgY29tbWEgc2VwYXJhdGVkIG1vbnRoIG5hbWVzLlxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gW1wiMVwiLCBcIjFcIiwgXCIxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMlwiXVxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMDowMCBBTVwiXHJcbiAgICovXHJcbiAgZ2V0Qmlhbm51YWxQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xyXG4gICAge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZE1vbnRoID0gZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGVsZSkgLSAxXTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzFzdCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMikge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzJuZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzNyZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjEgfHxcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzFcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAnbmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAndGggb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGFuIGV2ZW50IG9iamVjdCwgYW5kIGlmIGl0IGV4aXN0cywgaXQgY3JlYXRlcyBhIG5ldyBvYmplY3Qgd2l0aCB0aGUgc2FtZSBwcm9wZXJ0aWVzIGFzXHJcbiAgICogdGhlIGV2ZW50IG9iamVjdCwgYW5kIGFzc2lnbnMgaXQgdG8gdGhlIGZyZXF1ZW5jeURldGFpbHMgcHJvcGVydHkuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgZXZlbnQgb2JqZWN0IGlzIHVuZGVmaW5lZCwgdGhlbiB0aGUgZnJlcXVlbmN5RGV0YWlscyBwcm9wZXJ0eSB3aWxsIGJlIHVuZGVmaW5lZC5cclxuICAgKlxyXG4gICAqIElmIHRoZSBldmVudCBvYmplY3QgaXMgbnVsbCwgdGhlbiB0aGUgZnJlcXVlbmN5RGV0YWlscyBwcm9wZXJ0eSB3aWxsIGJlIG51bGwuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgZXZlbnQgb2JqZWN0IGlzIGFuIGVtcHR5IG9iamVjdCwgdGhlbiB0aGUgZnJlcXVlbmN5RGV0YWlscyBwcm9wZXJ0eSB3aWxsIGJlIGFuIGVtcHR5XHJcbiAgICogb2JqZWN0LlxyXG4gICAqXHJcbiAgICogSWYgdGhlIGV2ZW50IG9iamVjdCBpcyBhbiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzLCB0aGVuIHRoZSBmcmVxdWVuY3lEZXRhaWxzIHByb3BlcnR5IHdpbGwgYmUgYW5cclxuICAgKiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBwcm9wZXJ0aWVzLlxyXG4gICAqXHJcbiAgICogSWYgdGhlIGV2ZW50IG9iamVjdCBpcyBhbiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzLCBidXQgc29tZSBvZiB0aG9zZSBwcm9wZXJ0aWVzIGFyZSB1bmRlZmluZWQsIHRoZW5cclxuICAgKiB0aGUgZnJlcXVlbmN5RGV0YWlscyBwcm9wZXJ0eSB3aWxsIGJlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMsIGJ1dCBzb21lIG9mIHRob3NlXHJcbiAgICogcHJvcGVydGllcyB3aWxsIGJlIHVuZGVmaW5lZC5cclxuICAgKlxyXG4gICAqIElmIHRoZSBldmVudCBvYmplY3QgaXMgYW4gb2JqZWN0IHdpdGggcHJvcGVydGllcywgYnV0IHNvbWUgb2YgdGhvc2UgcHJvcGVydGllcyBhcmUgbnVsbCwgdGhlbiB0aGVcclxuICAgKiBAcGFyYW0ge2FueX0gZXZlbnQgLSBhbnkgPSB7XHJcbiAgICovXHJcbiAgZnJlcXVlbmN5RGF0YVBvcHVsYXRlKGV2ZW50OiBhbnkpIHtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBmcmVxdWVuY3k6IGV2ZW50Py5mcmVxdWVuY3ksXHJcbiAgICAgIHN0YXJ0ZWRfYXQ6IGV2ZW50Py5zdGFydGVkX2F0LFxyXG4gICAgICBmcmVxdWVuY3lfdGltZTogZXZlbnQ/LmZyZXF1ZW5jeV90aW1lLFxyXG4gICAgICByZW1pbmRfYmVmb3JlX2RheXM6IGV2ZW50Py5yZW1pbmRfYmVmb3JlX2RheXMsXHJcbiAgICAgIGZhaWxlZF9hZnRlcl9kYXlzOiBldmVudD8uZmFpbGVkX2FmdGVyX2RheXMsXHJcbiAgICAgIGNhbl9hc3Nlc3NfYmVmb3JlX2RheXM6IGV2ZW50Py5jYW5fYXNzZXNzX2JlZm9yZV9kYXlzLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscyA9IGRhdGE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgZnVuY3Rpb24gYGdldE90aGVyR1JDVGFiQ291bnRgIHJldHJpZXZlcyB0aGUgY291bnQgb2YgZGlmZmVyZW50IHR5cGVzIG9mIGl0ZW1zIChhc3NldHMsXHJcbiAgICogcHJvY2Vzc2VzLCB2ZW5kb3JzLCBpbnZlbnRvcnkpIGFuZCB1cGRhdGVzIHRoZSBjb3JyZXNwb25kaW5nIHRhYnMgd2l0aCB0aGUgY291bnQuXHJcbiAgICogQHBhcmFtIHthbnl9IFtldmVudF0gLSBUaGUgXCJldmVudFwiIHBhcmFtZXRlciBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZVxyXG4gICAqIFwiZ2V0T3RoZXJHUkNUYWJDb3VudFwiIGZ1bmN0aW9uLiBJdCBpcyBvZiB0eXBlIFwiYW55XCIsIHdoaWNoIG1lYW5zIGl0IGNhbiBhY2NlcHQgYW55IGRhdGEgdHlwZS5cclxuICAgKi9cclxuICBnZXRPdGhlckdSQ1RhYkNvdW50KGV2ZW50PzogYW55KSB7XHJcbiAgICBldmVudFsncmNfaWRzJ10gPSB0aGlzLnJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RcclxuICAgICAgLm1hcCgocmM6IGFueSkgPT4gcmM/Ll9pZClcclxuICAgICAgLmpvaW4oJywnKTtcclxuXHJcbiAgICB0aGlzLmdyY1NlcnZpY2UuZ2V0R1JDVGFic0NvdW50KGV2ZW50KS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm90aGVyR1JDQ2FyZC5mb3JFYWNoKCh0YWI6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IE9CSkVDVF9MQUJFTDogYW55ID0ge1xyXG4gICAgICAgICAgQVNTRVQ6ICdBc3NldHMnLFxyXG4gICAgICAgICAgUFJPQ0VTUzogJ1Byb2Nlc3NlcycsXHJcbiAgICAgICAgICBWRU5ET1I6ICdWZW5kb3JzJyxcclxuICAgICAgICAgIElOVkVOVE9SWTogJ0ludmVudG9yeScsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBUQUJfTkFNRSA9IE9CSkVDVF9MQUJFTFt0YWI/LnRpdGxlPy50b1VwcGVyQ2FzZSgpXTtcclxuICAgICAgICBpZiAoVEFCX05BTUUpIHtcclxuICAgICAgICAgIHRhYi50aXRsZSA9IFRBQl9OQU1FO1xyXG4gICAgICAgICAgdGFiLnZhbHVlID0gaW5kZXg7XHJcbiAgICAgICAgICB0YWIuc2VsZWN0ZWRDb3VudCA9IDA7XHJcbiAgICAgICAgICB0YWIua2V5ID0gVEFCX05BTUU/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGtleSA9IGAke3RhYi5rZXl9X3R5cGVfY291bnRgO1xyXG4gICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgIHRhYi5jb3VudCA9IGRhdGFba2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRPdGhlckdSQ09iamVjdHMoZXZlbnQ/OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLm90aGVyR1JDU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMub3RoZXJHUkNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICghZXZlbnQpIHtcclxuICAgICAgZXZlbnQgPSB7XHJcbiAgICAgICAgcmNfaWRzOiAnJyxcclxuICAgICAgICB0eXBlOiB0aGlzLnNlbGVjdGVkR1JDVGFiLFxyXG4gICAgICAgIHN0YXRlOiAxLFxyXG4gICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyY0xvYWRlciA9IHRydWU7XHJcbiAgICBldmVudFsncmNfaWRzJ10gPSB0aGlzLnJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RcclxuICAgICAgLm1hcCgocmM6IGFueSkgPT4gcmM/Ll9pZClcclxuICAgICAgLmpvaW4oJywnKTtcclxuICAgIGV2ZW50WydncmNUeXBlJ10gPSB0aGlzLnNlbGVjdGVkR1JDVGFiO1xyXG4gICAgdGhpcy5vdGhlckdSQ1N1YnNjcmlwdGlvbiA9IHRoaXMuZ3JjU2VydmljZVxyXG4gICAgICAuZ2V0R1JDTGlzdChldmVudClcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5ncmNMaXN0ID0gZGF0YTtcclxuICAgICAgICB0aGlzLmdyY0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIC8vIGlmICh0aGlzLk1PREUgPT09ICdFRElUJykge1xyXG4gICAgICAgIC8vICAgLy8gdGhpcy5saXN0T2JqZWN0Lk9USEVSX0dSQ19PQkpFQ1RTLnNlbGVjdGVkRGF0YSA9IGRhdGEuZmlsdGVyKFxyXG4gICAgICAgIC8vICAgLy8gICAoaXRlbTogYW55KSA9PiB0aGlzLmdyY1BheWxvYWQubGlua2VkX0dSQ19pZHMuaW5jbHVkZXMoaXRlbT8uX2lkKVxyXG4gICAgICAgIC8vICAgLy8gKTtcclxuICAgICAgICAvLyAgIGlmICh0aGlzLmdyY1BheWxvYWQubGlua2VkX0dSQ19pZHM/Lmxlbmd0aCkge1xyXG4gICAgICAgIC8vICAgICB0aGlzLmdyY0Zvcm0ub3RoZXJHcmNPYmplY3RzID0gdHJ1ZTtcclxuICAgICAgICAvLyAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9USEVSX0dSQ19PQkpFQ1RTID0gdHJ1ZTtcclxuICAgICAgICAvLyAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgICAgICAgLy8gICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNhdmVTZWxlY3RlZExpc3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5yaXNrRm9ybS5zZWxlY3RlZEdSQ09iamVjdHMgPSBldmVudDtcclxuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignR1JDJywgZmFsc2UpO1xyXG4gICAgdGhpcy5zZXRPdGhlckdSQ1R5cGVzRm9ybWF0ZSgpO1xyXG4gIH1cclxuICBzZXRPdGhlckdSQ1R5cGVzRm9ybWF0ZSgpIHtcclxuICAgIGNvbnN0IGdyY1R5cGVzID0gWydhc3NldHMnLCAncHJvY2Vzc2VzJywgJ3ZlbmRvcnMnLCAnaW52ZW50b3J5J107XHJcbiAgICB0aGlzLnJlc2V0R1JDRGF0YVdpdGhUeXBlcygpO1xyXG4gICAgaWYgKHRoaXMucmlza0Zvcm0/LnNlbGVjdGVkR1JDT2JqZWN0cz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJpc2tGb3JtPy5zZWxlY3RlZEdSQ09iamVjdHM/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ3JjRGF0YVdpdGhUeXBlc1tncmNUeXBlc1tpdGVtPy50eXBlXV0/LnB1c2goaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRHUkNEYXRhV2l0aFR5cGVzKCkge1xyXG4gICAgdGhpcy5ncmNEYXRhV2l0aFR5cGVzID0ge1xyXG4gICAgICBhc3NldHM6IFtdLFxyXG4gICAgICBwcm9jZXNzZXM6IFtdLFxyXG4gICAgICB2ZW5kb3JzOiBbXSxcclxuICAgICAgaW52ZW50b3J5OiBbXSxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ3b3JrZmx3LXJpc2tcIiAqbmdJZj1cIiFzaG93U21pbGV5XCI+XHJcbiAgPCEtLSBSaXNrIFR5cGUgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgW2NsYXNzLmFjdGl2ZV09XCJmYWxzZVwiIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3R5cGUuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJpbVwiXHJcbiAgICAgICAgKm5nSWY9XCJ0cnVlXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICAqbmdJZj1cImZhbHNlXCJcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXHJcbiAgICAgICAgICA+UmlzayBUeXBlIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWxcclxuICAgICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJpc2stdHlwZS1maWVsZFwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInR5cGUtaXRlbVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicmlza0Zvcm0/LnJpc2tUeXBlID09PSAnTk9STUFMJ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIXJpc2tUeXBlQ2hhbmdlQWxsb3dlZFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVJpc2soJ05PUk1BTCcpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIEFERCBUTyBSSVNLIFJFR0lTVEVSXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgaW5mb1wiXHJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAnVGhpcyBvcHRpb24gbGV0cyB5b3UgYWRkIGEgcmlzayBkaXJlY3RseSB0byB0aGUgUmlzayBSZWdpc3Rlci4gVGhlIHJpc2sgb3duZXJzIHdpbGwgcmVjZWl2ZSBhbiBhbGVydCBhbmQgdGhleSBjYW4gYmVnaW4gdGhlIHRoZSByaXNrIGFzc2Vzc21lbnQgcHJvY2Vzcy4nXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxyXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICA+JiN4ZTkzMjs8L2lcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidHlwZS1pdGVtXCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJyaXNrRm9ybT8ucmlza1R5cGUgPT09ICdSRVBPUlRFRCdcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFyaXNrVHlwZUNoYW5nZUFsbG93ZWRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VSaXNrKCdSRVBPUlRFRCcpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIFJFUE9SVCBBIFJJU0tcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBpbmZvXCJcclxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICdUaGlzIG9wdGlvbnMgbGV0cyB5b3UgcmVwb3J0IGEgcmlzayBhbmQgYXNzaWduIGl0IHRvIHRoZSByaXNrIG93bmVycy4gVGhlIHJpc2sgb3duZXJzIHdpbGwgaGF2ZSB0aGUgb3B0aW9uIHRvIGVpdGhlciBhZGQgdGhlIHJpc2sgdG8gdGhlIFJpc2sgUmVnaXN0ZXIgb3IgZmxhZyBpdCBmb3IgYSBmb2xsb3ctdXAgYXQgYSBsYXRlciBkYXRlLidcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXHJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgID4mI3hlOTMyOzwvaVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFja2dyb3VuZC1nbGlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHAgKm5nSWY9XCJmYWxzZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPkFkZCBhIHJpc2sgdHlwZTwvcD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSaXNrIE5hbWUgLS0+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImZhbHNlXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJyaXNrRm9ybS50aXRsZVwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3doYXQuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJpbVwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJpc2tGb3JtPy50aXRsZT8udHJpbSgpPy5sZW5ndGggPT09IDAgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICduYW1lJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8udGl0bGU/LnRyaW0oKT8ubGVuZ3RoID4gMCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCJcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXHJcbiAgICAgICAgICA+V0hBVCBSSVNLIFdPVUxEIFlPVSBMSUtFIFRPIE1BTkFHRT9cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWxcclxuICAgICAgICA+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBzcGFjZVRyaW1cclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIChrZXlkb3duKT1cImFjdGl2ZVNlbGVjdG9yID0gJ25hbWUnXCJcclxuICAgICAgICAgIChmb2N1c2luKT1cImFjdGl2YXRlU2VsZWN0b3IoJ25hbWUnLCB0cnVlKVwiXHJcbiAgICAgICAgICAoZm9jdXNvdXQpPVwiYWN0aXZhdGVTZWxlY3RvcignbmFtZScsIGZhbHNlKVwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInJpc2tGb3JtLnRpdGxlXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQWRkIGEgcmlzayBuYW1lXCJcclxuICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/LnRpdGxlPy50cmltKCkgPT0gJycgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICduYW1lJ1wiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcclxuICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/LnRpdGxlPy50cmltKCkgIT0gJycgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57eyByaXNrRm9ybS50aXRsZSB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignbmFtZScsIHRydWUpXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHAgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgIXJpc2tGb3JtLnRpdGxlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XHJcbiAgICAgICAgICBBZGQgYSByaXNrIG5hbWVcclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPHZjb21wbHktZWRpdG9yXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInJpc2tGb3JtLmRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgIFtlZGl0b3JDb25maWddPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgKGNsaWNrT3V0c2lkZSk9XCJjaGVja0Rlc2NyaXB0aW9uKClcIlxyXG4gICAgICAgID48L3Zjb21wbHktZWRpdG9yPlxyXG4gICAgICAgIDxwXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICBzdWJtaXR0ZWQgJiZcclxuICAgICAgICAgICAgcmlza0Zvcm0ucmlza1R5cGUgPT09ICdSRVBPUlRFRCcgJiZcclxuICAgICAgICAgICAgIXJpc2tGb3JtPy5kZXNjcmlwdGlvbj8udHJpbSgpPy5sZW5ndGhcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEFkZCBhIHJpc2sgZGVzY3JpcHRpb25cclxuICAgICAgICA8L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gUmlzayBPd25lciAtLT5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvd25lcidcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ293bmVyJyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJyaXNrRm9ybT8ub3duZXJzTGlzdD8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8ub3duZXJzTGlzdD8ubGVuZ3RoID09IDAgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdvd25lcidcIlxyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9pbS1jcmVhdGluZy5zdmdcIlxyXG4gICAgICAgIGFsdD1cIlwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8ub3duZXJzTGlzdD8ubGVuZ3RoID4gMCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ293bmVyJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgPldITyBJUyBSRVNQT05TSUJMRSBGT1IgTUFOQUdJTkcgVEhJUyBSSVNLP1xyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgICAgICAgICA8aVxyXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgJ1RoaXMgaXMgdGhlIHBlcnNvbiB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgcmlzay4nXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICA+JiN4ZTkxZjs8L2lcclxuICAgICAgICAgID5cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ293bmVyJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSaXNrIE93bmVyKHMpXCJcclxuICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcmlza0Zvcm0/Lm93bmVyc0xpc3Q/Lmxlbmd0aCA+IDAgfHwgcmlza0Zvcm0/Lmdyb3Vwc0xpc3QubGVuZ3RoID4gMFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWZlYXR1cmVmbGFnX2dyb3Vwc1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgcmlza0Zvcm0/Lm93bmVyc0xpc3RcclxuICAgICAgICAgICAgICAgICAgfCBzaG9ydE1lcmdlIDogbm9uUmVtb3ZhYmxlVXNlcnNMaXN0IGFzIG93bmVyTGlzdFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvd25lciBvZiBvd25lckxpc3Q/LnNsaWNlKDAsIDEpXCI+XHJcbiAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIW5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyhvd25lcj8ubWVtYmVyX2lkKVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ293bmVyJywgb3duZXIpXCJcclxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIm93bmVyPy5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgb3duZXI/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInBvcG92ZXJPd25lci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/Lm93bmVyc0xpc3Q/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgK3t7IHJpc2tGb3JtPy5vd25lcnNMaXN0Py5zbGljZSgxKS5sZW5ndGggfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiICpuZ0lmPVwiIWZlYXR1cmVmbGFnX2dyb3Vwc1wiIFtjbGFzcy5tb3JlLW9uZV09XCJyaXNrRm9ybT8ub3duZXJzTGlzdD8ubGVuZ3RoPjFcIiBbY2xhc3MucGx1c109XCJyaXNrRm9ybT8ub3duZXJzTGlzdD8ubGVuZ3RoPjJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihyaXNrRm9ybT8ub3duZXJzTGlzdHxzaG9ydE1lcmdlIDogbm9uUmVtb3ZhYmxlVXNlcnNMaXN0KSBhcyBvd25lckxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBvd25lciBvZiBvd25lckxpc3Q/LnNsaWNlKDAsMilcIj48aSBjbGFzcz1cImljb25zXCIgKm5nSWY9XCIhbm9uUmVtb3ZhYmxlVXNlcnNMaXN0LmluY2x1ZGVzKG93bmVyPy5tZW1iZXJfaWQpXCIgKGNsaWNrKT1cInJlbW92ZSgnb3duZXInLG93bmVyKVwiPiYjeGU5MGQ7PC9pPiB7e293bmVyPy5tZW1iZXJfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJyaXNrRm9ybT8ub3duZXJzTGlzdD8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJwb3BvdmVyT3duZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyaXNrRm9ybT8ub3duZXJzTGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCIgKm5nSWY9XCJmZWF0dXJlZmxhZ19ncm91cHNcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgIW5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgICAgICByaXNrRm9ybT8ub3duZXJzTGlzdFswXT8ubWVtYmVyX2lkXHJcbiAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdvd25lcicsIHJpc2tGb3JtPy5vd25lcnNMaXN0WzBdKVwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInJpc2tGb3JtPy5vd25lcnNMaXN0WzBdPy5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57eyByaXNrRm9ybT8ub3duZXJzTGlzdFswXT8ubWVtYmVyX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxyXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInBvcG92ZXJVc2VyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyByaXNrRm9ybT8ub3duZXJzTGlzdC5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/Lmdyb3Vwc0xpc3QubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgPiY8L3NwYW5cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5ncm91cHNMaXN0Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ093bmVyZ3JvdXAnLCByaXNrRm9ybT8uZ3JvdXBzTGlzdFswXSlcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyaXNrRm9ybT8uZ3JvdXBzTGlzdFswXT8uZ3JvdXBfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57eyByaXNrRm9ybT8uZ3JvdXBzTGlzdFswXT8uZ3JvdXBfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImdyb3VwLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5ncm91cHNMaXN0Py5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAre3sgcmlza0Zvcm0/Lmdyb3Vwc0xpc3Q/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiICpuZ0lmPVwiZmVhdHVyZWZsYWdfZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiICpuZ0lmPVwiIW5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyhyaXNrRm9ybT8ub3duZXJzTGlzdFswXT8ubWVtYmVyX2lkKVwiIChjbGljayk9XCJyZW1vdmUoJ293bmVyJyxyaXNrRm9ybT8ub3duZXJzTGlzdFswXSlcIiA+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7cmlza0Zvcm0/Lm93bmVyc0xpc3RbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJwb3BvdmVyVXNlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jpc2tGb3JtPy5vd25lcnNMaXN0Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwicmlza0Zvcm0/Lmdyb3Vwc0xpc3QubGVuZ3RoID4gMFwiID4mPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwicmlza0Zvcm0/Lmdyb3Vwc0xpc3QubGVuZ3RoID4gMFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdPd25lcmdyb3VwJywgcmlza0Zvcm0/Lmdyb3Vwc0xpc3RbMF0pXCIgPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwicmlza0Zvcm0/Lmdyb3Vwc0xpc3RbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e3Jpc2tGb3JtPy5ncm91cHNMaXN0WzBdPy5ncm91cF9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJpc2tGb3JtPy5ncm91cHNMaXN0Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmlza0Zvcm0/Lmdyb3Vwc0xpc3Q/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdvd25lcidcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ293bmVyJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxwXHJcbiAgICAgICAgICAqbmdJZj1cInN1Ym1pdHRlZCAmJiByaXNrRm9ybT8ub3duZXJzTGlzdD8ubGVuZ3RoID09PSAwXCJcclxuICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgU2VsZWN0IE93bmVyKHMpIGZvciB0aGlzIHJpc2suXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjcG9wb3Zlck93bmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIHJpc2tGb3JtPy5vd25lcnNMaXN0XHJcbiAgICAgICAgICAgICAgICAgIHwgc2hvcnRNZXJnZSA6IG5vblJlbW92YWJsZVVzZXJzTGlzdCBhcyBvd25lclBvcFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBvd25lciBvZiBvd25lclBvcCB8IHNsaWNlIDogMTsgbGV0IGogPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFub25SZW1vdmFibGVVc2Vyc0xpc3QuaW5jbHVkZXMob3duZXI/Lm1lbWJlcl9pZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ293bmVyJywgb3duZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBvd25lci5tZW1iZXJfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI3BvcG92ZXJVc2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIHJpc2tGb3JtPy5vd25lcnNMaXN0XHJcbiAgICAgICAgICAgICAgICAgIHwgc2hvcnRNZXJnZSA6IG5vblJlbW92YWJsZVVzZXJzTGlzdCBhcyBvd25lclBvcFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBvd25lciBvZiBvd25lclBvcCB8IHNsaWNlIDogMTsgbGV0IGogPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFub25SZW1vdmFibGVVc2Vyc0xpc3QuaW5jbHVkZXMob3duZXI/Lm1lbWJlcl9pZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ293bmVyJywgb3duZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBvd25lci5tZW1iZXJfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI2dyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiByaXNrRm9ybT8uZ3JvdXBzTGlzdCB8IHNsaWNlIDogMVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnT3duZXJncm91cCcsIGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBkYXRhLmdyb3VwX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gUmVzcG9uc2liaWxpdHkgQ2VudGVyIC0tPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3JjJ1wiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmMnICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibGVmdFwiXHJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtPy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0Py5sZW5ndGggPiAwXCJcclxuICAgID5cclxuICAgICAgPGltZ1xyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAncmMnXHJcbiAgICAgICAgXCJcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvcmVzcG9uc2liaWxpdHktY2VudGVyLnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmMnXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXHJcbiAgICAgICAgICA+UmVzcG9uc2liaWxpdHkgQ2VudGVyIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgPGlcclxuICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICdSZXNwb25zaWJpbGl0eSBDZW50ZXJzIHJlcHJlc2VudCB0aGUgY29ycG9yYXRlIGFuZCBvcGVyYXRpb25hbCBpbmZyYXN0cnVjdHVyZSBvZiBhbiBvcmdhbml6YXRpb24uIE9uZSBvciBtb3JlIFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgY2FuIGJlIGV4cG9zZWQgdG8gYSByaXNrIGFuZCBhY2NvcmRpbmdseSwgdGhlIHJpc2sgbXVzdCBiZSBhc3Nlc3NlZCBhZ2FpbnN0IGVhY2ggUmVzcG9uc2liaWxpdHkgQ2VudGVyLidcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxyXG4gICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8ubGVuZ3RoID09IDBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyYycsIHRydWUpXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpXCJcclxuICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0Py5sZW5ndGggPiAwXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICBsZXQgcmNOYW1lIG9mIHJpc2tGb3JtPy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0Py5zbGljZSgwLCAxKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncmMnLCByY05hbWUpXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmNOYW1lLml0ZW1fbmFtZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57eyByY05hbWUuaXRlbV9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJwb3BvdmVyUkMucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0Py5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICt7eyByaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdD8uc2xpY2UoMSkubGVuZ3RoIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiBbY2xhc3MubW9yZS1vbmVdPVwicmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aD4yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCByY05hbWUgb2Ygcmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/LnNsaWNlKDAsMilcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmMnLHJjTmFtZSlcIj4mI3hlOTBkOzwvaT4ge3tyY05hbWUuaXRlbV9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwicmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/Lmxlbmd0aCA+IDJcIiB0eXBlPVwiYnV0dG9uXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicG9wb3ZlclJDLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmlza0Zvcm0/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q/LnNsaWNlKDIpLmxlbmd0aH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3JjJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmMnLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIHJpc2tGb3JtPy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0Py5sZW5ndGggPT0gMFwiXHJcbiAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEFzc2lnbiB0aGlzIHJpc2sgdG8gYSBSZXNwb25zaWJpbGl0eSBDZW50ZXIocylcclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNwb3BvdmVyUkMgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IHJjTmFtZSBvZiByaXNrRm9ybT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyYycsIHJjTmFtZSlcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICB7eyByY05hbWUuaXRlbV9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIFJpc2sgRnJlcXVlbmN5IC0tPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2ZyZXF1ZW5jeScgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHM/LmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICAgICpuZ0lmPVwicmlza0Zvcm0/LnJpc2tUeXBlICE9PSAnUkVQT1JURUQnXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtPy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeVwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICFyaXNrRm9ybT8uZnJlcXVlbmN5X2RldGFpbHM/LmZyZXF1ZW5jeSB8fFxyXG4gICAgICAgICAgcmlza0Zvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzPy5mcmVxdWVuY3kgPT09ICcnIHx8XHJcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcclxuICAgICAgICBcIlxyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy93aGVuLnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIChyaXNrRm9ybT8uZnJlcXVlbmN5X2RldGFpbHM/LmZyZXF1ZW5jeSAmJlxyXG4gICAgICAgICAgICByaXNrRm9ybT8uZnJlcXVlbmN5X2RldGFpbHM/LmZyZXF1ZW5jeSAhPT0gJycpIHx8XHJcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2ZyZXF1ZW5jeSdcclxuICAgICAgICBcIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgPkhPVyBPRlRFTiBET0VTIFRISVMgUklTSyBORUVEIFRPIEJFIFJFQVNTRVNTRUQ/XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAnVGhlIG9wdGlvbiBsZXRzIHlvdSBzcGVjaWZ5IHRoZSByaXNrIHJlYXNzZXNzbWVudCBmcmVxdWVuY3kuJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXHJcbiAgICAgICAgICA+PC9sYWJlbFxyXG4gICAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXHJcbiAgICAgICAgICAqbmdJZj1cIiFyaXNrRm9ybT8uZnJlcXVlbmN5X2RldGFpbHM/LmZyZXF1ZW5jeVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2V0IGEgUmVhc3Nlc3NtZW50IEZyZXF1ZW5jeVwiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQgYnV0dG9uLXNlY1wiXHJcbiAgICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cImNoaXBcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJmcmVxdWVuY3lQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICA+e3sgZnJlcXVlbmN5UGxhY2Vob2xkZXIgfX08L3NwYW5cclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LW10LTFcIj5cclxuICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXHJcbiAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInJpc2tGb3JtPy5lbmFibGVBbGxGdXR1cmVCdXNpbmVzc0N5Y2xlXCJcclxuICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwicmlza0Zvcm0uZW5hYmxlQWxsRnV0dXJlQnVzaW5lc3NDeWNsZSA9ICRldmVudFwiXHJcbiAgICAgICAgICAgID5ETyBZT1UgV0FOVCBUSElTIFRPIFNIT1cgSU4gQUxMIEZVVFVSRSBCVVNJTkVTUyBDWUNMRVM/XHJcbiAgICAgICAgICA8L2FwcC1jcy1zd2l0Y2g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHN1Ym1pdHRlZCAmJlxyXG4gICAgICAgICAgICAoIXJpc2tGb3JtPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5IHx8XHJcbiAgICAgICAgICAgICAgcmlza0Zvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzPy5mcmVxdWVuY3kgPT09ICcnKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgUGxlYXNlIHNlbGVjdCB0aGUgZnJlcXVlbmN5IG9mIG9jY3VycmVuY2UgZm9yIHRoaXMgcmlzay5cclxuICAgICAgICA8L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gUmlzayBDYXRlZ29yeSAtLT5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5JyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJyaXNrRm9ybT8uY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnlcIj5cclxuICAgICAgPGltZ1xyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAhcmlza0Zvcm0/LmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5IHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnY2F0ZWdvcnknXHJcbiAgICAgICAgXCJcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvY2F0ZWdvcnkuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmlza0Zvcm0/LmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5ICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2F0ZWdvcnknXHJcbiAgICAgICAgXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgID5SaXNrIENhdGVnb3J5XHJcbiAgICAgICAgICA8aVxyXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ1Jpc2sgQ2F0ZWdvcmllcyBhcmUgdXNlZCB0byBncm91cCBzaW1pbGFyIHJpc2tzLidcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXHJcbiAgICAgICAgICA+PC9sYWJlbFxyXG4gICAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCIhcmlza0Zvcm0/LmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5XCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2F0ZWdvcnknLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJpc2sgQ2F0ZWdvcnlcIlxyXG4gICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cInJpc2tGb3JtPy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnY2F0ZWdvcnknLCByaXNrRm9ybS5jYXRlZ29yeS5zZWxlY3RlZENhdGVnb3J5KVwiXHJcbiAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmlza0Zvcm0/LmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9uYW1lXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICA+e3sgcmlza0Zvcm0/LmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdjYXRlZ29yeScscmlza0Zvcm0uY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeSlcIj4mI3hlOTBkOzwvaT57e3Jpc2tGb3JtPy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5J1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2F0ZWdvcnknLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmlza0Zvcm0/LmNhdGVnb3J5Q3VzdG9tVGFncz8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwidngtZm9ybS1ncm91cFwiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFnIG9mIHJpc2tGb3JtLmNhdGVnb3J5Q3VzdG9tVGFnc1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPnt7IHRhZy5jdXN0b21fdGFnX25hbWUgfX08L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWcuY3VzdG9tX3RhZ192YWx1ZVwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0YWcuY3VzdG9tX3RhZ19uYW1lXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gQXNzZXNzbWVudCBEZWFkbGluZSAtLT5cclxuICA8IS0tICFzZXR0aW5nc0luZm8/LmFzc2Vzc21lbnRfZGVhZGxpbmVfZW5hYmxlICYmIHJpc2tGb3JtPy5yaXNrVHlwZSAhPT0gJ1JFUE9SVEVEJyAmJiAoKGN1cnJlbnRUaW1lU3RhbXAgPCBlZGl0RGV0YWlscz8uYXNzZXNzbWVudF9kYXRlX3RpbWVzdGFtcCkgfHwgIWVkaXREZXRhaWxzPy5JZkFzc2Vzc21lbnREb25lICkgLS0+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXNzZXNzbWVudCdcIlxyXG4gICAgaWQ9XCJkZWFkbGluZVwiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzZXNzbWVudCcgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gICAgKm5nSWY9XCJmYWxzZVwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJyaXNrRm9ybT8uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzID49IDFcIj5cclxuICAgICAgPGltZ1xyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy93aGVuLnN2Z1wiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJpc2tGb3JtPy5hc3Nlc3NtZW50X2RlYWRsaW5lX2RheXMgPCAxIHx8XHJcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2Vzc21lbnQnXHJcbiAgICAgICAgXCJcclxuICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAvPlxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByaXNrRm9ybT8uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzID49IDEgJiZcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzZXNzbWVudCdcclxuICAgICAgICBcIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgPkFzc2Vzc21lbnQgRGVhZGxpbmUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgICAgICAgICA8aVxyXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgJ1RoaXMgaXMgdGhlIGRhdGUgdGhhdCB0aGUgaW5oZXJlbnQgcmlzayBhc3Nlc3NtZW50IG11c3QgYmUgY29tcGxldGVkIGJ5LidcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgPjwvbGFiZWxcclxuICAgICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0XCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHRcIj5TZXQgTnVtYmVyIG9mIGRheXM8L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgY291bnRlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjaGFuZ2VSaXNrQXNzZXNzbWVudCgnc3VidHJhY3QnKVwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlYTUzOzwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicmlza0Zvcm0uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzXCJcclxuICAgICAgICAgICAgICAoZm9jdXNpbik9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3Nlc3NtZW50JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgIChmb2N1c291dCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3Nlc3NtZW50JywgZmFsc2UpXCJcclxuICAgICAgICAgICAgICBuYW1lPVwicmlza0Fzc2Vzc21lbnREZWFkbGluZVwiXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGVBc3Nlc3NtZW50XHJcbiAgICAgICAgICAgICAgI2RlYWRsaW5lPVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlUmlza0Fzc2Vzc21lbnREZWFkbGluZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBvbmtleWRvd249XCJyZXR1cm4gZXZlbnQua2V5Q29kZSAhPT0gMTkwXCJcclxuICAgICAgICAgICAgICBtaW49XCIwXCJcclxuICAgICAgICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IE1hdGguYWJzKHRoaXMudmFsdWUpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2hhbmdlUmlza0Fzc2Vzc21lbnQoJ2FkZCcpXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MTU7PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxwXHJcbiAgICAgICAgICAqbmdJZj1cInN1Ym1pdHRlZCAmJiByaXNrRm9ybT8uYXNzZXNzbWVudF9kZWFkbGluZV9kYXlzIDwgMVwiXHJcbiAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEVudGVyIGEgdmFsdWUgZ3JlYXRlciB0aGFuIDAuXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/LmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5cyA+PSAxXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBUaGlzIHJpc2sgYXNzZXNzbWVudCBuZWVkcyB0byBiZSBjb21wbGV0ZWQgYnlcclxuICAgICAgICAgIHt7IGRhdGUgfCBkYXRlIDogXCJkZCBNTU0geXl5eVwiIH19XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSaXNrIE92ZXJzZWVyIC0tPlxyXG4gIDxkaXZcclxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXInXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdvdmVyc2VlcicgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gICAgKm5nSWY9XCJyaXNrRm9ybS5hZGRPdmVyc2VlclwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJyaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdD8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0Py5sZW5ndGggPT0gMCB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L292ZXJzaWdodC5zdmdcIlxyXG4gICAgICAgIGFsdD1cIlwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0Py5sZW5ndGggPiAwICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnb3ZlcnNlZXInXHJcbiAgICAgICAgXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgID5SaXNrIE92ZXJzaWdodDxpXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAnVGhpcyBpcyB0aGUgcGVyc29uIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIG92ZXJzZWVpbmcgdGhlIHJpc2sgYnV0IHdobyBpcyBub3QgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSByaXNrLidcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgPjwvbGFiZWxcclxuICAgICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3Q/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgIHJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3Q/Lmxlbmd0aCA9PSAwXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvdmVyc2VlcicsIHRydWUpXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUmlzayBPdmVyc2lnaHQocylcIlxyXG4gICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0Py5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgIHJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3QubGVuZ3RoID4gMFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZlYXR1cmVmbGFnX2dyb3Vwc1wiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvd25lciBvZiByaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdD8uc2xpY2UoMCwgMSlcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXInLCBvd25lcilcIlxyXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwib3duZXIubWVtYmVyX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IG93bmVyLm1lbWJlcl9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwb3BvdmVyT3ZlcnNlZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3Q/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyByaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdD8uc2xpY2UoMSkubGVuZ3RoIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIiAqbmdJZj1cImZlYXR1cmVmbGFnX2dyb3Vwc1wiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicsIHJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0WzBdKVwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInJpc2tGb3JtPy5vdmVyc2VlcnNMaXN0WzBdPy5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3QubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgICA+e3sgcmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3RbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2Vlci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdC5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAre3sgcmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3QubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgcmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3QubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgcmlza0Zvcm0/Lm92ZXJzZWVyc0dyb3VwTGlzdC5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+Jjwvc3BhblxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmlza0Zvcm0/Lm92ZXJzZWVyc0dyb3VwTGlzdC5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZSgnb3ZlcnNlZXJncm91cCcsIHJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3RbMF0pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyaXNrRm9ybT8ub3ZlcnNlZXJzR3JvdXBMaXN0WzBdPy5ncm91cF9uYW1lXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7IHJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3RbMF0/Lmdyb3VwX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2Vlckdyb3VwLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5vdmVyc2VlcnNHcm91cExpc3Q/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyByaXNrRm9ybT8ub3ZlcnNlZXJzR3JvdXBMaXN0Py5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdvdmVyc2VlcidcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ292ZXJzZWVyJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjcG9wb3Zlck92ZXJzZWVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBvd25lciBvZiByaXNrRm9ybT8ub3ZlcnNlZXJzTGlzdCB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicsIG93bmVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgb3duZXIubWVtYmVyX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2VlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgb3duZXIgb2Ygcmlza0Zvcm0/Lm92ZXJzZWVyc0xpc3QgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXInLCBvd25lcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG93bmVyLm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2Ygcmlza0Zvcm0/Lm92ZXJzZWVyc0dyb3VwTGlzdCB8IHNsaWNlIDogMVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXJncm91cCcsIGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBkYXRhLmdyb3VwX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gUmlzayBNaXRpZ2F0aW9uIFByaW9yaXR5IC0tPlxyXG4gIDxkaXZcclxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImZhbHNlXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiYgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gICAgKm5nSWY9XCJyaXNrRm9ybS5hZGRNaXRpZ2F0aW9uXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInJpc2tGb3JtLm1pdGlnYXRpb25cIj5cclxuICAgICAgPGltZ1xyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9wcmlvcml0eS5zdmdcIlxyXG4gICAgICAgICpuZ0lmPVwiIXJpc2tGb3JtLm1pdGlnYXRpb25cIlxyXG4gICAgICAgIGFsdD1cIlwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDwhLS0gPHN2ZyB2aWV3Qm94PVwiMjUgMjUgNTAgNTBcIiBjbGFzcz1cImVkaXQtbG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNTBcIiBjeT1cIjUwXCIgcj1cIjIwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMWU1ZGQzXCIgc3Ryb2tlLXdpZHRoPVwiM1wiIGNsYXNzPVwibG9hZGVyLXBhdGhcIj48L2NpcmNsZT5cclxuICAgICAgICAgICAgPC9zdmc+IC0tPlxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICpuZ0lmPVwicmlza0Zvcm0ubWl0aWdhdGlvblwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXHJcbiAgICAgICAgICA+UmlzayBNaXRpZ2F0aW9uIFByaW9yaXR5XHJcbiAgICAgICAgICA8aVxyXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgJ1RoaXMgc2V0cyB0aGUgcHJpb3JpdHkgbGV2ZWwgZm9yIHRoZSBtaXRpZ2F0aW9uIG9mIGVhY2ggcmlzay4nXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICA+JiN4ZTkxZjs8L2lcclxuICAgICAgICAgID48L2xhYmVsXHJcbiAgICAgICAgPlxyXG5cclxuICAgICAgICA8Y3Mtc2VsZWN0XHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInJpc2tGb3JtLm1pdGlnYXRpb25cIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QgYSBtaXRpZ2F0aW9uIHByaW9yaXR5J1wiXHJcbiAgICAgICAgICBuYW1lPVwicmlza0Zvcm0ubWl0aWdhdGlvblwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGNzLW9wdGlvblxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBtaXRpZ2F0aW9uRGV0YWlsc1wiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhPy5taXRpZ2F0aW9uX2lkXCJcclxuICAgICAgICAgICAgW2NvbG9yXT1cImRhdGE/Lm1pdGlnYXRpb25fY29sb3JcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBkYXRhLm1pdGlnYXRpb25fbmFtZSB9fVxyXG4gICAgICAgICAgPC9jcy1vcHRpb24+XHJcbiAgICAgICAgPC9jcy1zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gUmVjb21tZW5kZWQgTWl0aWdhdGlvbiBQbGFuIC0tPlxyXG4gIDxkaXZcclxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAqbmdJZj1cInJpc2tGb3JtPy5hZGRNaXRpZ2F0aW9uUGxhblwiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBpZD1cInJpc2tTcGFjZVwiXHJcbiAgICAgIGNsYXNzPVwibGVmdFwiXHJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cIihyaXNrRm9ybS5taXRpZ2F0aW9uRGVzY3JpcHRpb25QbGFuIHwgc3BhY2VUcmltKSAhPT0gJydcIlxyXG4gICAgPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgKm5nSWY9XCIocmlza0Zvcm0ubWl0aWdhdGlvbkRlc2NyaXB0aW9uUGxhbiB8IHNwYWNlVHJpbSkgPT09ICcnXCJcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvb2JqZWN0aXZlcy5zdmdcIlxyXG4gICAgICAgIGFsdD1cIlwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxzdmdcclxuICAgICAgICAqbmdJZj1cIihyaXNrRm9ybS5taXRpZ2F0aW9uRGVzY3JpcHRpb25QbGFuIHwgc3BhY2VUcmltKSAhPT0gJydcIlxyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgID5SZWNvbW1lbmRlZCBNaXRpZ2F0aW9uIFBsYW5zPGxpbmtcclxuICAgICAgICAgICAgcmVsPVwibWFuaWZlc3RcIlxyXG4gICAgICAgICAgICBocmVmPVwiLi9tYW5pZmVzdC5qc29uXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8aVxyXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgJ1NwZWNpZnkgdGhlIG1pdGlnYXRpb24gcGxhbiB0aGF0IGNhbiBiZSB1bmRlcnRha2VuIHRvIG1pdGlnYXRlIHRoZSByaXNrLidcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPHZjb21wbHktZWRpdG9yXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInJpc2tGb3JtLm1pdGlnYXRpb25EZXNjcmlwdGlvblBsYW5cIlxyXG4gICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJtaXRpZ2F0aW9uRGVzY3JpcHRpb25QbGFuXCJcclxuICAgICAgICAgIChjbGlja091dHNpZGUpPVwiY2hlY2tNaXRpZ2F0aW9uUGxhbigpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC92Y29tcGx5LWVkaXRvcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSaXNrIExhYmVsIC0tPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJmYWxzZVwiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICAgICpuZ0lmPVwicmlza0Zvcm0/LmFkZFJpc2tMYWJlbFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxyXG4gICAgICA8IS0tIDxpbWcgKm5nSWY9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9vdmVyc2lnaHQuc3ZnXCIgYWx0PVwiXCIgLz4gLS0+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICpuZ0lmPVwidHJ1ZVwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXHJcbiAgICAgICAgICA+UklTSyBMQUJFTFxyXG4gICAgICAgICAgPGlcclxuICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIidSaXNrIGxhYmVsIGluZm8gdGV4dCBoZXJlLi4uJ1wiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICA+JiN4ZTkxZjs8L2lcclxuICAgICAgICAgID48L2xhYmVsXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxjcy1zZWxlY3RcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicmlza0Zvcm0ucmlza0xhYmVsVmFsdWVcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QgYSByaXNrIGxhYmVsJ1wiXHJcbiAgICAgICAgICBuYW1lPVwicmlza0Zvcm0/LnJpc2tMYWJlbFZhbHVlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y3Mtb3B0aW9uICpuZ0Zvcj1cImxldCBkYXRhIG9mIHJpc2tMYWJlbExpc3RcIiBbdmFsdWVdPVwiZGF0YT8udmFsdWVcIj5cclxuICAgICAgICAgICAge3sgZGF0YT8ubmFtZSB9fVxyXG4gICAgICAgICAgPC9jcy1vcHRpb24+XHJcbiAgICAgICAgPC9jcy1zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gTGluayB3aXRoICBHUkMgLS0+XHJcbiAgPGRpdlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdHUkMnXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdHUkMnICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICAgICpuZ0lmPVwicmlza0Zvcm0/LkdSQ1wiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJyaXNrRm9ybT8ub3duZXJzTGlzdD8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgKm5nSWY9XCJyaXNrRm9ybT8ub3duZXJzTGlzdD8ubGVuZ3RoID09IDAgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdvd25lcidcIlxyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9saW5rLWl0ZW1zLnN2ZyBhbHQ9XCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICAqbmdJZj1cInJpc2tGb3JtPy5vd25lcnNMaXN0Py5sZW5ndGggPiAwICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnb3duZXInXCJcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkxJTksgR1JDIE9CSkVDVChTKSA8L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cInJpc2tGb3JtPy5zZWxlY3RlZEdSQ09iamVjdHM/Lmxlbmd0aCA9PT0gMFwiPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ0dSQycsIHRydWUpXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgR1JDIG9iamVjdChzKSB0byBsaW5rIHdpdGggdGhpcyByaXNrLlwiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyaXNrRm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGhcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkR1JDIG9mIGdyY0RhdGFXaXRoVHlwZXMgfCBrZXl2YWx1ZSA6IG9yaWdpbmFsT3JkZXI7XHJcbiAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRHUkM/LnZhbHVlPy5sZW5ndGhcIiBjbGFzcz1cInNlbGVjdGVkIHZ4LW1iLTJcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGdyYyBvZiBzZWxlY3RlZEdSQz8udmFsdWU/LnNsaWNlKDAsIDEpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnR1JDJywgZ3JjLCAwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid29ya2Zsb3dMYXZlbCB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTQgdngtbXItMSB2eC10ZXh0LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZEdSQz8ua2V5IHwgdGl0bGVjYXNlIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiZ3JjPy5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICA+e3sgZ3JjPy5uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicG9wb3ZlckdSQy5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZEdSQz8udmFsdWU/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAre3sgc2VsZWN0ZWRHUkM/LnZhbHVlLmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnR1JDJ1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkR1JDVGFiID0gc2VsZWN0ZWRHUkM/LnZhbHVlWzBdPy50eXBlO1xyXG4gICAgICAgICAgICAgICAgICBnZXRPdGhlckdSQ09iamVjdHMoKTtcclxuICAgICAgICAgICAgICAgICAgYWN0aXZhdGVTZWxlY3RvcignR1JDJywgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3BvcG92ZXJHUkMgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JjIG9mIHNlbGVjdGVkR1JDPy52YWx1ZSB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdHUkMnLCBncmMsIGogKyAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ3JjLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxhcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0XHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3JjJ1wiXHJcbiAgW3Jlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RdPVwicmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdFwiXHJcbiAgW3NlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzXT1cInJpc2tGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RcIlxyXG4gIFtyY0lkS2V5XT1cIidyY19pZCdcIlxyXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZFJDTGlzdCgkZXZlbnQpXCJcclxuICAoY2xvc2VSY0xpc3QpPVwiYWN0aXZhdGVTZWxlY3RvcigncmMnLCBmYWxzZSlcIlxyXG4gIFtzaW5ndWxhclRleHRdPVwiJ1Jlc3BvbnNpYmlsaXR5IENlbnRlciBzZWxlY3RlZCdcIlxyXG4gIFtwbHVyYWxUZXh0XT1cIidSZXNwb25zaWJpbGl0eSBDZW50ZXJzIHNlbGVjdGVkJ1wiXHJcbj5cclxuPC9hcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0PlxyXG5cclxuPGFwcC1vd25lci1saXN0XHJcbiAgKm5nSWY9XCIhZmVhdHVyZWZsYWdfZ3JvdXBzICYmIGFjdGl2ZVNlbGVjdG9yID09PSAnb3duZXInXCJcclxuICBbdXNlcnNMaXN0XT1cIm93bmVyc0xpc3RcIlxyXG4gIFtzZWxlY3RlZFVzZXJzXT1cInJpc2tGb3JtLm93bmVyc0xpc3RcIlxyXG4gIFt1c2VySWRLZXldPVwiJ21lbWJlcl9pZCdcIlxyXG4gIFtpdGVtRW1haWxLZXldPVwiJ21lbWJlcl9lbWFpbCdcIlxyXG4gIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCJcclxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRPd25lcnNMaXN0KCRldmVudClcIlxyXG4gIFtub25SZW1vdmFibGVVc2Vyc0xpc3RdPVwibm9uUmVtb3ZhYmxlVXNlcnNMaXN0XCJcclxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZhdGVTZWxlY3Rvcignb3duZXInLCBmYWxzZSlcIlxyXG4gIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCJcclxuICBbcGx1cmFsVGV4dF09XCInVXNlcnMgc2VsZWN0ZWQnXCJcclxuPjwvYXBwLW93bmVyLWxpc3Q+XHJcblxyXG48dXNlci1ncm91cC1saXN0XHJcbiAgKm5nSWY9XCJmZWF0dXJlZmxhZ19ncm91cHMgJiYgYWN0aXZlU2VsZWN0b3IgPT09ICdvd25lcidcIlxyXG4gIFt1c2VybGlzdF09XCJvd25lcnNMaXN0XCJcclxuICBbc2VsZWN0ZWRVc2Vyc109XCJyaXNrRm9ybS5vd25lcnNMaXN0XCJcclxuICBbZ3JvdXBMaXN0XT1cImdyb3Vwc0xpc3RcIlxyXG4gIFtub25SZW1vdmFibGVVc2VySWRzXT1cIm5vblJlbW92YWJsZVVzZXJzTGlzdFwiXHJcbiAgKHNhdmUpPVwic2F2ZVNlbGVjdGVkT3duZXJzTGlzdCgkZXZlbnQpXCJcclxuICBbc2VsZWN0ZWRHcm91cHNdPVwicmlza0Zvcm0uZ3JvdXBzTGlzdFwiXHJcbiAgKGNhbmNlbCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvd25lcicsIGZhbHNlKVwiXHJcbiAgW2dyb3VwRW5hYmxlZF09XCJ0cnVlXCJcclxuICBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZWZsYWdfZ3JvdXBzXCJcclxuPlxyXG48L3VzZXItZ3JvdXAtbGlzdD5cclxuXHJcbjx1c2VyLWdyb3VwLWxpc3RcclxuICAqbmdJZj1cImZlYXR1cmVmbGFnX2dyb3VwcyAmJiBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyJ1wiXHJcbiAgW3VzZXJsaXN0XT1cIm92ZXJzZWVyc0xpc3RcIlxyXG4gIFtzZWxlY3RlZFVzZXJzXT1cInJpc2tGb3JtLm92ZXJzZWVyc0xpc3RcIlxyXG4gIFtncm91cExpc3RdPVwib3ZlcnNlZXJzR3JvdXBMaXN0XCJcclxuICAoc2F2ZSk9XCJzYXZlU2VsZWN0ZWRPdmVyc2VlcnNMaXN0KCRldmVudClcIlxyXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJyaXNrRm9ybS5vdmVyc2VlcnNHcm91cExpc3RcIlxyXG4gIChjYW5jZWwpPVwiYWN0aXZhdGVTZWxlY3Rvcignb3ZlcnNlZXInLCBmYWxzZSlcIlxyXG4gIFtncm91cEVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnX2dyb3Vwc1wiXHJcbj5cclxuPC91c2VyLWdyb3VwLWxpc3Q+XHJcblxyXG48YXBwLWNhdGVnb3J5LWxpc3RcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2F0ZWdvcnknXCJcclxuICBbY2F0ZWdvcnlMaXN0XT1cImNhdGVnb3J5TGlzdFwiXHJcbiAgW3NlbGVjdGVkQ2F0ZWdvcnldPVwicmlza0Zvcm0uY2F0ZWdvcnlcIlxyXG4gIChzYXZlU2VsZWN0ZWRDYXRlZ29yeSk9XCJzYXZlU2VsZWN0ZWRDYXRlZ29yeSgkZXZlbnQpXCJcclxuICAoY2xvc2VDYXRlZ29yaWVzTGlzdCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjYXRlZ29yeScsIGZhbHNlKVwiXHJcbj48L2FwcC1jYXRlZ29yeS1saXN0PlxyXG48YXBwLW93bmVyLWxpc3RcclxuICAqbmdJZj1cIiFmZWF0dXJlZmxhZ19ncm91cHMgJiYgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcidcIlxyXG4gIFt1c2Vyc0xpc3RdPVwib3ZlcnNlZXJzTGlzdFwiXHJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicmlza0Zvcm0ub3ZlcnNlZXJzTGlzdFwiXHJcbiAgW3VzZXJJZEtleV09XCInbWVtYmVyX2lkJ1wiXHJcbiAgW2l0ZW1OYW1lS2V5XT1cIidtZW1iZXJfbmFtZSdcIlxyXG4gIFtpdGVtRW1haWxLZXldPVwiJ21lbWJlcl9lbWFpbCdcIlxyXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZE92ZXJzZWVyc0xpc3QoJGV2ZW50KVwiXHJcbiAgKGNsb3NlVXNlcnNMaXN0KT1cImFjdGl2YXRlU2VsZWN0b3IoJ292ZXJzZWVyJywgZmFsc2UpXCJcclxuICBbc2luZ3VsYXJUZXh0XT1cIidVc2VyIHNlbGVjdGVkJ1wiXHJcbiAgW3BsdXJhbFRleHRdPVwiJ1VzZXJzIHNlbGVjdGVkJ1wiXHJcbj5cclxuPC9hcHAtb3duZXItbGlzdD5cclxuPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwibG9hZGVyXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cclxuXHJcbjxhcHAtZnJlcXVlbmN5LWRpYWxvZy1jb250YWluZXJcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1wiXHJcbiAgW2ZyZXF1ZW5jeURldGFpbHNdPVwiZnJlcXVlbmN5RGV0YWlsc1wiXHJcbiAgKHNlbGVjdGVkRnJlcXVlbmN5KT1cImZyZXF1ZW5jeURhdGEoJGV2ZW50KVwiXHJcbiAgKGNsb3NlRnJlcXVlbmN5KT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIGZhbHNlKVwiXHJcbj5cclxuPC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1jb250YWluZXI+XHJcblxyXG48YXBwLWdyYy1vYmplY3QtbGlzdFxyXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdHUkMnXCJcclxuICBbZ3JjT2JqZWN0XT1cImdyY0xpc3RcIlxyXG4gIFtzZWxlY3RlZEdSQ109XCJyaXNrRm9ybS5zZWxlY3RlZEdSQ09iamVjdHMgfCByZWZEaXNjb25uZWN0XCJcclxuICBbbG9hZGVyXT1cImdyY0xvYWRlclwiXHJcbiAgW3RhYmxlQ2FyZF09XCJvdGhlckdSQ0NhcmQgfCByZWZEaXNjb25uZWN0XCJcclxuICBbc2VsZWN0ZWRUYWJdPVwic2VsZWN0ZWRHUkNUYWJcIlxyXG4gIChnZXRPdGhlckdSQ09iamVjdHMpPVwiZ2V0T3RoZXJHUkNPYmplY3RzKCRldmVudClcIlxyXG4gIChzYXZlT3RoZXJHUkMpPVwic2F2ZVNlbGVjdGVkTGlzdCgkZXZlbnQpXCJcclxuICAoY2xvc2VPdGhlckdSQyk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdHUkMnLCBmYWxzZSlcIlxyXG4+PC9hcHAtZ3JjLW9iamVjdC1saXN0PlxyXG5cclxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxyXG4gICpuZ0lmPVwic2hvd1NtaWxleVwiXHJcbiAgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiXHJcbiAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXHJcbiAgKGFjdGlvbik9XCJhY3Rpb24oJGV2ZW50KVwiXHJcbiAgKGNsb3NlU21pbGV5KT1cImNsb3NlU21pbGV5KCRldmVudClcIlxyXG4+XHJcbjwvYXBwLXNtaWxleS1kaWFsb2ctaW5saW5lPlxyXG4iXX0=