vcomply-workflow-engine 3.8.8 → 3.8.9
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.
- package/esm2022/lib/link-related-policies/constants.mjs +8 -0
- package/esm2022/lib/link-related-policies/link-related-policies.component.mjs +167 -0
- package/esm2022/lib/more-option/more-option.component.mjs +10 -1
- package/esm2022/lib/sharedComponents/framework-list/framework-integration-interfaces.mjs +1 -1
- package/esm2022/lib/workflow/shared/constants/cdn-link.constant.mjs +3 -1
- package/esm2022/lib/workflow-engine-container/api-constants.mjs +5 -0
- package/esm2022/lib/workflow-engine.module.mjs +5 -2
- package/esm2022/lib/workflow-interfaces/create-policy-form.mjs +1 -1
- package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +42 -3
- package/esm2022/lib/workflow-services/policy.service.mjs +23 -3
- package/fesm2022/vcomply-workflow-engine.mjs +235 -3
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/add-multiple-risk/add-multiple-risk.component.d.ts +1 -1
- package/lib/link-related-policies/constants.d.ts +7 -0
- package/lib/link-related-policies/link-related-policies.component.d.ts +44 -0
- package/lib/sharedComponents/framework-list/framework-integration-interfaces.d.ts +11 -0
- package/lib/workflow/grc-object/grc-object-container/grc-object-container.component.d.ts +2 -0
- package/lib/workflow/shared/components/attributes/attributes-text-box/attributes-text-box.component.d.ts +2 -0
- package/lib/workflow/shared/components/attributes/attributes.component.d.ts +2 -0
- package/lib/workflow/shared/components/grc-object-list/grc-object-list.component.d.ts +2 -0
- package/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.d.ts +2 -0
- package/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.d.ts +2 -0
- package/lib/workflow/shared/constants/cdn-link.constant.d.ts +2 -0
- package/lib/workflow-engine-container/api-constants.d.ts +4 -0
- package/lib/workflow-engine.module.d.ts +34 -33
- package/lib/workflow-interfaces/create-policy-form.d.ts +3 -0
- package/lib/workflow-policy/workflow-policy.component.d.ts +4 -0
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/lib/workflow-services/policy.service.d.ts +4 -0
- package/package.json +1 -1
|
@@ -2,6 +2,8 @@ import { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewC
|
|
|
2
2
|
import { cloneDeep, uniqBy } from 'lodash';
|
|
3
3
|
import moment from 'moment/moment';
|
|
4
4
|
import { DEFAULT_24HR, DEFAULT_TIME } from '../constants/time.constants';
|
|
5
|
+
import { CONSTANTS } from '../link-related-policies/constants';
|
|
6
|
+
import { LINKS } from '../workflow/shared/constants/cdn-link.constant';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
6
8
|
import * as i1 from "../workflow-services/policy.service";
|
|
7
9
|
import * as i2 from "../ui-kit/snack-bar/snack-bar.service";
|
|
@@ -42,6 +44,7 @@ import * as i36 from "../sharedComponents/assessment-list/assessment-list.compon
|
|
|
42
44
|
import * as i37 from "../sharedComponents/approval-workflow/approval-workflow.component";
|
|
43
45
|
import * as i38 from "../sharedComponents/policy-access/policy-access.component";
|
|
44
46
|
import * as i39 from "../sharedComponents/link-program/link-program/link-program.component";
|
|
47
|
+
import * as i40 from "../link-related-policies/link-related-policies.component";
|
|
45
48
|
export class WorkflowPolicyComponent {
|
|
46
49
|
constructor(policyService, snackBar, uiKitService, authService, responsibilityService, router, route, frequencyService, platformLocation, changeRef, restApiService, commonService, organizationUserService, organizationCommonService, complianceCommonService) {
|
|
47
50
|
this.policyService = policyService;
|
|
@@ -58,6 +61,8 @@ export class WorkflowPolicyComponent {
|
|
|
58
61
|
this.organizationUserService = organizationUserService;
|
|
59
62
|
this.organizationCommonService = organizationCommonService;
|
|
60
63
|
this.complianceCommonService = complianceCommonService;
|
|
64
|
+
this.CONSTANTS = CONSTANTS;
|
|
65
|
+
this.LINKS = LINKS;
|
|
61
66
|
this.pickerChanged = new EventEmitter();
|
|
62
67
|
this.mode = 'CREATE';
|
|
63
68
|
this.policyId = '';
|
|
@@ -99,6 +104,7 @@ export class WorkflowPolicyComponent {
|
|
|
99
104
|
this.usersAccessListIds = [];
|
|
100
105
|
this.groupsAccessListIds = [];
|
|
101
106
|
this.groupsAccessList = [];
|
|
107
|
+
this.listOfPolicies = [];
|
|
102
108
|
this.loader = false;
|
|
103
109
|
this.categoriesListLoaded = false;
|
|
104
110
|
this.groupsListLoaded = false;
|
|
@@ -176,6 +182,7 @@ export class WorkflowPolicyComponent {
|
|
|
176
182
|
'checkpoints',
|
|
177
183
|
'linkProgram',
|
|
178
184
|
'isAssessment',
|
|
185
|
+
'isLinkedPolices',
|
|
179
186
|
'owners',
|
|
180
187
|
'policyAccess',
|
|
181
188
|
];
|
|
@@ -227,6 +234,7 @@ export class WorkflowPolicyComponent {
|
|
|
227
234
|
policyDueDate: moment(),
|
|
228
235
|
customTags: [],
|
|
229
236
|
checkpointDetails: [],
|
|
237
|
+
LinkedPolicies: [],
|
|
230
238
|
totalQuestion: 0,
|
|
231
239
|
passingMarks: 0,
|
|
232
240
|
documentsAndLinks: {
|
|
@@ -241,6 +249,8 @@ export class WorkflowPolicyComponent {
|
|
|
241
249
|
addVersion: false,
|
|
242
250
|
addLinkAssessment: false,
|
|
243
251
|
addLinkProgram: false,
|
|
252
|
+
addLinkPolicies: false,
|
|
253
|
+
isPortalDisplayEnabled: false,
|
|
244
254
|
failed_time: '',
|
|
245
255
|
frequency_details: '',
|
|
246
256
|
frequency_text: '',
|
|
@@ -312,6 +322,19 @@ export class WorkflowPolicyComponent {
|
|
|
312
322
|
},
|
|
313
323
|
});
|
|
314
324
|
}
|
|
325
|
+
getLinkedPolicies(policyId) {
|
|
326
|
+
this.policyService.LinkedPoliciesList(policyId).subscribe({
|
|
327
|
+
next: (response) => {
|
|
328
|
+
if (response) {
|
|
329
|
+
this.listOfPolicies = [...new Set(response?.data)];
|
|
330
|
+
}
|
|
331
|
+
this.policyForm.LinkedPolicies = this.listOfPolicies?.filter(item => item?.contract_name);
|
|
332
|
+
},
|
|
333
|
+
error: (err) => {
|
|
334
|
+
console.log(err);
|
|
335
|
+
},
|
|
336
|
+
});
|
|
337
|
+
}
|
|
315
338
|
/**
|
|
316
339
|
* Displays the listing pages the left side of policy form to set and edit the dropdown fields values
|
|
317
340
|
* @param type holds name of particular list is to be displayed
|
|
@@ -662,6 +685,9 @@ export class WorkflowPolicyComponent {
|
|
|
662
685
|
case 'LINK_ASSESSMENTS':
|
|
663
686
|
this.policyForm.addLinkAssessment = event.checked;
|
|
664
687
|
break;
|
|
688
|
+
case 'LINK_RELATED_POLICIES':
|
|
689
|
+
this.policyForm.addLinkPolicies = event.checked;
|
|
690
|
+
break;
|
|
665
691
|
}
|
|
666
692
|
this.scrollToBottom = true;
|
|
667
693
|
}
|
|
@@ -852,6 +878,13 @@ export class WorkflowPolicyComponent {
|
|
|
852
878
|
this.policyForm.policy_access_owners = this.setList(this.assigneesList, accessIds, 'my_member_id');
|
|
853
879
|
this.refreshAllLists();
|
|
854
880
|
break;
|
|
881
|
+
case 'isLinkedPolices':
|
|
882
|
+
this.policyForm.LinkedPolicies =
|
|
883
|
+
selectedItems.selectedPolicyList &&
|
|
884
|
+
selectedItems.selectedPolicyList.length > 0
|
|
885
|
+
? [...new Set(selectedItems.selectedPolicyList)]
|
|
886
|
+
: [];
|
|
887
|
+
break;
|
|
855
888
|
}
|
|
856
889
|
this.disableSelector();
|
|
857
890
|
}
|
|
@@ -973,6 +1006,9 @@ export class WorkflowPolicyComponent {
|
|
|
973
1006
|
case 'frequency':
|
|
974
1007
|
this.removeFrequency();
|
|
975
1008
|
break;
|
|
1009
|
+
case 'isLinkedPolices':
|
|
1010
|
+
this.policyForm.LinkedPolicies = this.policyForm.LinkedPolicies.filter((policyName) => event !== policyName);
|
|
1011
|
+
break;
|
|
976
1012
|
}
|
|
977
1013
|
}
|
|
978
1014
|
/**
|
|
@@ -1390,6 +1426,8 @@ export class WorkflowPolicyComponent {
|
|
|
1390
1426
|
policy_access_groups: policy.availableOnPortal
|
|
1391
1427
|
? []
|
|
1392
1428
|
: policyAccessGroupsIds ?? [],
|
|
1429
|
+
displayOnPortal: policy.isPortalDisplayEnabled ?? false,
|
|
1430
|
+
linkedPolicies: [...new Set(policy.LinkedPolicies)],
|
|
1393
1431
|
};
|
|
1394
1432
|
if (this.mode == 'CREATE') {
|
|
1395
1433
|
this.policyService.submitPolicy(payload).subscribe((res) => {
|
|
@@ -1551,6 +1589,7 @@ export class WorkflowPolicyComponent {
|
|
|
1551
1589
|
this.selectedWorkflow = [];
|
|
1552
1590
|
this.defaultEditApprovers = data?.approvers;
|
|
1553
1591
|
this.getApproverWorkFlow(categoryIds, data);
|
|
1592
|
+
this.getLinkedPolicies(data?.policy_id);
|
|
1554
1593
|
this.populatePolicyForm(data, categoryIds);
|
|
1555
1594
|
this.frequencyDataPopulation(data);
|
|
1556
1595
|
this.reviewerFrequencyDataPopulation(data);
|
|
@@ -1874,11 +1913,11 @@ export class WorkflowPolicyComponent {
|
|
|
1874
1913
|
this.commonService.handleDocumentClick(datePickerObject);
|
|
1875
1914
|
}
|
|
1876
1915
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WorkflowPolicyComponent, deps: [{ token: i1.PolicyService }, { token: i2.SnackBarService }, { token: i3.UiKitService }, { token: i4.AuthService }, { token: i5.ResponsibilityService }, { token: i6.Router }, { token: i6.ActivatedRoute }, { token: i7.FrequencyService }, { token: i8.PlatformLocation }, { token: i0.ChangeDetectorRef }, { token: i9.RestApiService }, { token: i10.CommonService }, { token: i11.OrganizationUserService }, { token: i12.OrganizationCommonService }, { token: i13.ComplianceCommonService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1877
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: WorkflowPolicyComponent, selector: "app-workflow-policy", inputs: { mode: "mode", policyId: "policyId", feature: "feature", convertFileData: "convertFileData", selectedCategory: "selectedCategory", isSendForAttestation: "isSendForAttestation" }, outputs: { pickerChanged: "pickerChanged", showConfirmationAlert: "showConfirmationAlert", populateOption: "populateOption", disconnectRefresh: "disconnectRefresh", shiftToEditMode: "shiftToEditMode" }, host: { listeners: { "document:click": "documentClick($event)" } }, viewQueries: [{ propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }, { propertyName: "formatEvidence", first: true, predicate: ["formatEvidence"], descendants: true }, { propertyName: "datePickerPopUp", first: true, predicate: ["datePicker"], descendants: true, read: ElementRef }], ngImport: i0, template: "<!-- <p>workflow-policy works!</p> -->\r\n\r\n<ng-container *ngIf=\"!showCreateDocuments\">\r\n <div class=\"workflow-policy\">\r\n <!-- Policy Name -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm?.policyName\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n alt=\"name\"\r\n *ngIf=\"!policyForm?.policyName || activeSelector === 'name'\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.policyName && 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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 Policy Name <span class=\"required\">*</span>\r\n </label>\r\n <input\r\n type=\"text\"\r\n (keydown)=\"activeSelector = 'name'\"\r\n (focusin)=\"activateSelector('name', true)\"\r\n *ngIf=\"policyForm.policyName == '' || activeSelector === 'name'\"\r\n (focusout)=\"activateSelector('name', false)\"\r\n [ngModel]=\"policyForm.policyName\"\r\n (ngModelChange)=\"policyForm.policyName = changeName($event)\"\r\n placeholder=\"Name this policy\"\r\n />\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm.policyName.length && activeSelector !== 'name'\"\r\n >\r\n <div class=\"chip-container\">\r\n <span class=\"value\">{{ policyForm.policyName }}</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\"></i> Edit\r\n </button>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"submitted && !policyForm.policyName.trim()\"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Please enter a name for this policy.\r\n </p>\r\n <vcomply-editor\r\n [(ngModel)]=\"policyForm.policyNotes\"\r\n [editorConfig]=\"description\"\r\n ></vcomply-editor>\r\n <!-- <app-cs-switch\r\n [(ngValue)]=\"policyForm.availableOnPortal\"\r\n (ngValueChange)=\"availabilityOnPortal($event)\"\r\n >\r\n Do you want this policy to be available on the portal?\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'The policies that you intend to make accessible to the entire organization can be added to the policy portal. It is like a shared catalog of all active & updated policies that any logged in user can read/download for reference.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </app-cs-switch>\r\n <app-cs-switch\r\n *ngIf=\"policyForm.availableOnPortal\"\r\n [(ngValue)]=\"policyForm.acceptSuggestions\"\r\n >\r\n Accept suggestions\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'If enabled, users can provide improvement suggestions to the policies that are listed on the Policy Portal.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Policy 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\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedCategories?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedCategories?.length == 0 ||\r\n 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 *ngIf=\"\r\n policyForm?.selectedCategories?.length > 0 &&\r\n activeSelector !== 'category'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 >Policy Category <span class=\"required\">*</span>\r\n </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"policyForm?.selectedCategories?.length == 0\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('category', true)\"\r\n placeholder=\"Select a category for this policy.\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm?.selectedCategories?.length > 0\"\r\n >\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=\"\r\n let category of policyForm?.selectedCategories?.slice(0, 1)\r\n \"\r\n >\r\n <i\r\n (click)=\"remove('category', category)\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"category.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ category.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 *ngIf=\"policyForm?.selectedCategories?.length > 1\"\r\n type=\"button\"\r\n appPopover\r\n (click)=\"category.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{ policyForm?.selectedCategories?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" [class.more-one]=\"policyForm?.selectedCategories?.length>1\"\r\n [class.plus]=\"policyForm?.selectedCategories?.length>2\">\r\n <span class=\"chip\" *ngFor=\"let category of policyForm?.selectedCategories?.slice(0,2)\"><i\r\n class=\"icons\" (click)=\"remove('category',category)\"></i>\r\n {{category.item_name}}</span>\r\n <button class=\"count\" *ngIf=\"policyForm?.selectedCategories?.length > 2\" type=\"button\"\r\n appPopover (click)=\"category.popover()\" placement=\"right\">+\r\n {{policyForm?.selectedCategories?.slice(2).length}}</button>\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\"></i> Edit\r\n </button>\r\n </div>\r\n <app-popover #category [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let category of policyForm?.selectedCategories | 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('category', category)\"\r\n ></i\r\n >\r\n {{ category.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <p\r\n *ngIf=\"submitted && policyForm?.selectedCategories?.length == 0\"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Please select the category for this policy.\r\n </p>\r\n </div>\r\n\r\n <div class=\"vx-form-group\" *ngIf=\"policyForm?.customTags?.length > 0\">\r\n <ng-container *ngFor=\"let tag of policyForm?.customTags\">\r\n <label class=\"vx-control-panel vx-mt-2\">{{ tag.tagname }}</label>\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"tag.value\"\r\n placeholder=\"{{ tag.tagname }}\"\r\n />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Effective Date -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <img\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 *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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Effective Date</label>\r\n <div class=\"date-time-picker\">\r\n <div class=\"picker-group\">\r\n <input\r\n type=\"text\"\r\n readonly\r\n placeholder=\"Select the effective date of the policy.\"\r\n [value]=\"policyForm.policyDueDate | date : 'dd MMM yyyy'\"\r\n (click)=\"openDatePicker()\"\r\n id=\"effective-date\"\r\n />\r\n <i class=\"icons\"></i>\r\n <dp-date-picker\r\n #datePicker\r\n (onSelect)=\"datePickerOverlay = false; closeDatePicker($event)\"\r\n [config]=\"dateConfig\"\r\n [(ngModel)]=\"policyForm.policyDueDate\"\r\n >\r\n </dp-date-picker>\r\n <div\r\n class=\"vx-overlay\"\r\n (click)=\"closeDatePicker($event)\"\r\n *ngIf=\"datePickerOverlay\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Policy Owner -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'owners'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'owners' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm.policy_owners?.length\">\r\n <img\r\n *ngIf=\"!policyForm.policy_owners?.length\"\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=\"policyForm.policy_owners?.length\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <label class=\"vx-control-panel\">POLICY OWNER(S)</label>\r\n </div>\r\n <div\r\n *ngIf=\"!policyForm.policy_owners?.length\"\r\n (click)=\"activateSelector('owners', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"!policyForm?.selectedCategories?.length\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select owners for this policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"policyForm.policy_owners?.length\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div class=\"vx-d-flex vx-align-center\">\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 (click)=\"remove('owners', policyForm?.policy_owners[0], 0)\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.policy_owners[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.policy_owners[0]?.member_name }}</span\r\n >\r\n\r\n <button\r\n *ngIf=\"policyForm?.policy_owners?.length > 1\"\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)=\"policyUserPopover.popover()\"\r\n placement=\"left\"\r\n >\r\n + {{ policyForm?.policy_owners.length - 1 }}\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"false\"\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-1 vx-mr-1\"\r\n >\r\n &\r\n </div>\r\n <div\r\n *ngIf=\"false\"\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"'Samantha Jones'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >Samantha Jones</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)=\"policyGroupPopover.popover()\"\r\n placement=\"right\"\r\n >\r\n +4\r\n </button>\r\n </div>\r\n <app-popover #policyUserPopover [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 policyForm?.policy_owners | slice : 1;\r\n let i = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\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 >\r\n <i\r\n (click)=\"remove('owners', owner, i + 1)\"\r\n class=\"icons\"\r\n ></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 #policyGroupPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of [1, 1, 1, 1, 1, 1, 1]\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"'Harshvardhan Kariwala'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i class=\"icons\"></i>\r\n Harshvardhan Kariwala\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n <button\r\n (click)=\"activateSelector('owners', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && !policyForm?.policy_owners?.length\"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Select owners for this policy.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Review -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"\r\n activeSelector === 'reviewer' || activeSelector === 'reviewerFrequency'\r\n \"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewer' &&\r\n activeSelector !== 'reviewerFrequency' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm?.addReviewers\">\r\n <img\r\n *ngIf=\"!policyForm?.addReviewers\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/reviewer.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.addReviewers\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">REVIEW</label>\r\n <div\r\n class=\"reviewSelection vx-p-3 vx-pb-0\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"vx-fs-13 vx-paragraph-txt vx-mb-1\">\r\n Does this policy need to be reviewed?\r\n </div>\r\n <app-cs-radio\r\n name=\"review-type\"\r\n [checked]=\"policyForm?.addReviewers\"\r\n (checkedEvent)=\"typeSelected(true)\"\r\n ><div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-mr-3\">\r\n YES\r\n </div></app-cs-radio\r\n >\r\n <app-cs-radio\r\n name=\"review-type\"\r\n [checked]=\"!policyForm?.addReviewers\"\r\n (checkedEvent)=\"typeSelected(false)\"\r\n ><div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-mr-3\">\r\n NO\r\n </div></app-cs-radio\r\n >\r\n </div>\r\n\r\n <ng-container *ngIf=\"policyForm?.addReviewers\">\r\n <label class=\"vx-control-panel vx-mt-2\">REVIEWER</label>\r\n <div\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n *ngIf=\"policyForm?.selectedReviewers?.length == 0\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n [class.active]=\"activeSelector === 'reviewer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewer' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n (click)=\"activateSelector('reviewer', true)\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the person responsible for reviewing this policy\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n *ngIf=\"policyForm?.selectedReviewers?.length > 0\"\r\n [class.active]=\"activeSelector === 'reviewer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewer' &&\r\n sideSelectorElements.includes(activeSelector)\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 *ngFor=\"let reviewer of policyForm?.selectedReviewers\"\r\n >\r\n <i\r\n (click)=\"remove('reviewer', reviewer)\"\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"'Samantha Jones'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{ reviewer?.member_name }}</span\r\n >\r\n </div>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n *ngIf=\"activeSelector !== 'reviewer'\"\r\n (click)=\"activateSelector('reviewer', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n <label class=\"vx-control-panel vx-mt-3\">REVIEW FREQUENCY</label>\r\n <div\r\n *ngIf=\"policyForm?.review_frequency_details == ''\"\r\n class=\"selectButton vx-pl-3 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n [class.active]=\"activeSelector === 'reviewerFrequency'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewerFrequency' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n >\r\n <div\r\n class=\"selectButtonPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n When does this policy needs to be reviewed?\r\n </div>\r\n <div\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n class=\"vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase\"\r\n >\r\n SET A FREQUENCY\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"policyForm?.review_frequency_details != ''\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewerFrequency' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n [class.active]=\"activeSelector === 'reviewerFrequency'\"\r\n >\r\n <div\r\n class=\"selectBoxText vx-fs-13 vx-paragraph-txt\"\r\n [appTooltip]=\"reviewerFrequencyPlaceholder\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{ reviewerFrequencyPlaceholder }}\r\n </div>\r\n <button\r\n *ngIf=\"activeSelector !== 'reviewerFrequency'\"\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n policyForm?.selectedReviewers?.length > 0 &&\r\n !policyForm?.review_frequency_details\r\n \"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select the review schedule for this policy.\r\n </p>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- New Approval Workflow -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'approvers'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'approvers' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedApprovers?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedApprovers?.length == 0 ||\r\n activeSelector === 'approvers'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.selectedApprovers?.length > 0 &&\r\n activeSelector !== 'approvers'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\" [class.disabled]=\"policyApprovalFlag !== 0\">\r\n <div class=\"vx-form-group\">\r\n <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <label class=\"vx-control-panel\"\r\n >APPROVAL <span class=\"required\">*</span></label\r\n >\r\n <button\r\n (click)=\"\r\n createApprovalWorkflow(); activateSelector('approvers', true)\r\n \"\r\n [class.disabled]=\"!policyForm?.selectedCategories?.length\"\r\n class=\"createNewBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0\"\r\n >\r\n CREATE A NEW APPROVAL WORKFLOW\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n selectedWorkflow?.length === 0 ||\r\n !selectedWorkflow[0]?.workflow_name\r\n \"\r\n (click)=\"\r\n clickApprovalWorkflow(true); activateSelector('approvers', true)\r\n \"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"!policyForm?.selectedCategories?.length\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select the approval workflow for this policy\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n selectedWorkflow?.length > 0 && selectedWorkflow[0]?.workflow_name\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-mb-2\"\r\n >\r\n <div\r\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mt-2 vx-mb-2\"\r\n >\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 (click)=\"removeWorkflow()\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"selectedWorkflow[0]?.workflow_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ selectedWorkflow[0]?.workflow_name }}</span\r\n >\r\n </div>\r\n <button\r\n (click)=\"editWorkflow(selectedWorkflow[0])\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"selectedWorkflow?.length > 0\">\r\n <div\r\n *ngFor=\"\r\n let approval of selectedWorkflow[0]?.approval_workflow;\r\n let approvalIndex = index\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\r\n >\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"level-left vx-d-flex vx-align-center\">\r\n <div class=\"vx-d-block\">\r\n <div\r\n class=\"level-name vx-fs-9 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-lh-3\"\r\n [appTooltip]=\"\r\n approval?.alias_name\r\n ? approval?.alias_name\r\n : approval?.level1\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{\r\n approval?.alias_name\r\n ? approval?.alias_name\r\n : approval?.level1\r\n }}\r\n </div>\r\n <div\r\n class=\"vx-fs-9 vx-fw-500 vx-label-txt vx-tt-uppercase vx-lh-3\"\r\n >\r\n {{\r\n approval?.type === \"ROUNDROBIN\"\r\n ? \"ROUND-ROBIN\"\r\n : approval?.type === \"ANYONE\"\r\n ? \"ANY ONE\"\r\n : approval?.type\r\n }}\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2 vx-ml-2\"\r\n >\r\n <!-- <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n > -->\r\n <div\r\n *ngIf=\"\r\n approval?.type?.toLowerCase() === 'sequential' &&\r\n approval?.approvers?.length < 2\r\n \"\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 {{ 1 == approval?.approvers?.length ? \"Final\" : 1 }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n approval?.approvers?.length > 1 &&\r\n approval?.type?.toLowerCase() === 'sequential'\r\n \"\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 1\r\n </div>\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"approval?.approvers[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ approval?.approvers[0]?.member_name }}</span\r\n >\r\n <button\r\n *ngIf=\"approval?.approvers?.length > 1\"\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)=\"workflowPopover.popover()\"\r\n placement=\"right\"\r\n >\r\n +{{ approval?.approvers?.length - 1 }}\r\n </button>\r\n </div>\r\n <app-popover #workflowPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let approver of approval?.approvers | slice : 1;\r\n let approvalIndex = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"approver?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <!-- <i class=\"icons\"></i> -->\r\n <span\r\n *ngIf=\"\r\n approval?.type?.toLowerCase() === 'sequential'\r\n \"\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 approvalIndex + 1 ===\r\n approval?.approvers?.length - 1\r\n ? \"Final\"\r\n : approvalIndex + 2\r\n }}</span\r\n >\r\n {{ approver?.member_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\r\n <!-- <div class=\"vx-d-flex vx-align-center\">\r\n <button (click)=\"editLevelClicked(approval,approvalIndex)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n <button (click)=\"deleteLevel(approvalIndex)\"\r\n class=\"deleteBtn vx-fs-11 vx-fw-600 vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-4 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> DELETE\r\n </button>\r\n </div> -->\r\n </div>\r\n </ng-container>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n !policyForm?.selectedApprovers[0]?.approval_workflow?.length &&\r\n !policyApprovalFlag &&\r\n !policyForm?.selectedApprovers[0]?.approvers?.length\r\n \"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Select or create an approval workflow for this policy.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Policy Access -->\r\n <div\r\n *ngIf=\"true\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'policyAccess'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'policyAccess' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"true\">\r\n <img\r\n *ngIf=\"\r\n !policyForm?.policy_access_owners?.length &&\r\n !policyForm?.policy_access_groups?.length &&\r\n !policyForm?.availableOnPortal\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/lock-scope.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.policy_access_owners?.length ||\r\n policyForm?.policy_access_groups?.length ||\r\n policyForm?.availableOnPortal\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <label class=\"vx-control-panel\">POLICY PORTAL ACCESS</label>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n !policyForm?.policy_access_owners?.length &&\r\n !policyForm?.policy_access_groups?.length &&\r\n !policyForm?.availableOnPortal\r\n \"\r\n (click)=\"activateSelector('policyAccess', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"!policyForm?.selectedCategories?.length\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Who should be able to view this policy?\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!policyForm?.availableOnPortal\">\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3\"\r\n *ngIf=\"\r\n policyForm?.policy_access_owners?.length ||\r\n policyForm?.policy_access_groups?.length\r\n \"\r\n >\r\n <div\r\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mt-2 vx-mb-2\"\r\n >\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div\r\n *ngIf=\"policyForm?.policy_access_owners?.length\"\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=\"policyForm?.policy_access_type === 1\"\r\n (click)=\"\r\n remove(\r\n 'policyAccess',\r\n policyForm?.policy_access_owners[0]\r\n )\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"\r\n policyForm?.policy_access_owners[0]?.employee_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{\r\n policyForm?.policy_access_owners[0]?.employee_name\r\n }}</span\r\n >\r\n <button\r\n *ngIf=\"policyForm?.policy_access_owners?.length > 1\"\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)=\"policyAccessPopover.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{ policyForm?.policy_access_owners.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n policyForm?.policy_access_owners.length > 0 &&\r\n policyForm?.policy_access_groups.length > 0\r\n \"\r\n >\r\n &\r\n </div>\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"policyForm?.policy_access_groups.length > 0\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"policyForm?.policy_access_type === 1\"\r\n (click)=\"\r\n remove(\r\n 'accessGroup',\r\n policyForm?.policy_access_groups[0]\r\n )\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"\r\n policyForm?.policy_access_groups[0]?.group_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{\r\n policyForm?.policy_access_groups[0]?.group_name\r\n }}</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)=\"accessGroup.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.policy_access_groups.length > 1\"\r\n >\r\n +{{ policyForm?.policy_access_groups.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <app-popover #policyAccessPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let user of policyForm?.policy_access_owners\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"user?.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons\"\r\n *ngIf=\"policyForm?.policy_access_type === 1\"\r\n (click)=\"remove('policyAccess', user)\"\r\n ></i\r\n >\r\n {{ user?.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #accessGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let data of policyForm?.policy_access_groups\r\n | 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\r\n class=\"icons\"\r\n *ngIf=\"policyForm?.policy_access_type === 1\"\r\n (click)=\"remove('accessGroup', data)\"\r\n ></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\r\n <button\r\n (click)=\"activateSelector('policyAccess', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"vx-mt-4 vx-mb-2\">\r\n <app-cs-radio\r\n [name]=\"'policyFormAccessType'\" [checked]=\"policyForm?.policy_access_type === 0\" (checkedEvent)=\"setAccessField(0)\"\r\n ><div class=\"vx-fs-12 vx-paragraph-txt\">\r\n Everyone who has access to this Policy Category\r\n </div></app-cs-radio\r\n >\r\n <app-cs-radio\r\n [name]=\"'policyFormAccessType'\" [checked]=\"policyForm?.policy_access_type === 1\" (checkedEvent)=\"setAccessField(1)\"\r\n class=\"vx-mt-1\"\r\n ><div class=\"vx-fs-12 vx-paragraph-txt\">\r\n Select users/groups\r\n </div></app-cs-radio\r\n >\r\n </div> -->\r\n </div>\r\n </ng-container>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n *ngIf=\"policyForm?.availableOnPortal\"\r\n >\r\n <span class=\"vx-fs-13 vx-paragraph-txt\"\r\n >Visible to All Current & Future Users</span\r\n >\r\n\r\n <button\r\n (click)=\"activateSelector('policyAccess', true)\"\r\n class=\"edit vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <div class=\"vx-mt-2\">\r\n <app-cs-switch\r\n *ngIf=\"\r\n policyForm.availableOnPortal ||\r\n policyForm?.policy_access_owners?.length ||\r\n policyForm?.policy_access_groups?.length\r\n \"\r\n [(ngValue)]=\"policyForm.acceptSuggestions\"\r\n >ACCEPT SUGGESTIONS\r\n <i\r\n class=\"icons vx-fs-12 vx-txt-blue vx-ml-1 vx-mr-2\"\r\n [appTooltip]=\"\r\n 'If enabled, users can provide improvement suggestions to the policies that are listed on the Policy Portal.'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Attestations -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"false\"\r\n *ngIf=\"false\"\r\n >\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/attestations.svg\"\r\n alt=\"\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <label class=\"vx-control-panel\">ATTESTATIONS</label>\r\n </div>\r\n <div\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select the persons required to attest to this Policy\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"'Samantha Jones'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >Samantha Jones</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)=\"policyAttestationPopover.popover()\"\r\n placement=\"left\"\r\n >\r\n +4\r\n </button>\r\n </div>\r\n <app-popover #policyAttestationPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of [1, 1, 1, 1, 1, 1, 1]\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"'Harshvardhan Kariwala'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i class=\"icons\"></i>\r\n Harshvardhan Kariwala\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <div class=\"vx-mt-2\">\r\n <app-cs-switch\r\n >REQUIRES E-SIGNATURE FOR ATTESTATION\r\n <i\r\n class=\"icons vx-fs-12 vx-txt-blue vx-ml-1 vx-mr-2\"\r\n [appTooltip]=\"\r\n 'Requires e-signature for attestation info text here...'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch\r\n >\r\n </div>\r\n\r\n <label class=\"vx-control-panel vx-mt-2\">WHEN?</label>\r\n <div\r\n class=\"selectButton vx-pl-3 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"selectButtonPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n What is the attestation schedule for this<br />policy?\r\n </div>\r\n <div class=\"vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase\">\r\n SET A FREQUENCY\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div class=\"selectBoxText vx-fs-13 vx-paragraph-txt\">\r\n Every Wednesday by 11:59 pm\r\n </div>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <label class=\"vx-control-panel vx-mt-2\"\r\n >ASSESSMENT OF UNDERSTANDING</label\r\n >\r\n <div\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Set up a questionnaire to confirm the reader\u2019s<br />understanding\r\n of the policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-3 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <span class=\"chipName vx-fs-11 vx-label-txt\">5 Questions</span>\r\n </div>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Approval Workflow -->\r\n <div\r\n class=\"form-group-row\"\r\n *ngIf=\"false\"\r\n [class.active]=\"activeSelector === 'approvers'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'approvers' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedApprovers?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedApprovers?.length == 0 ||\r\n activeSelector === 'approvers'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.selectedApprovers?.length > 0 &&\r\n activeSelector !== 'approvers'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\r\n class=\"vx-form-group approval-workflow\"\r\n [class.disabled]=\"policyApprovalFlag !== 0\"\r\n >\r\n <label class=\"vx-control-panel\">\r\n Approval workflow <span class=\"required\">*</span>\r\n <button\r\n (click)=\"\r\n activateSelector('approvers', true);\r\n addMoreLevels = true;\r\n workflowType = 'SEQUENTIAL'\r\n \"\r\n class=\"button\"\r\n >\r\n Create a new Approval Workflow\r\n </button>\r\n </label>\r\n <div\r\n class=\"select\"\r\n [class.disabled]=\"approverWorkFlowList?.length == 0\"\r\n *ngIf=\"\r\n policyForm?.selectedApprovers[0]?.approvers?.length == 0 ||\r\n policyForm?.selectedApprovers.length == 0\r\n \"\r\n >\r\n <cs-select\r\n [ngModel]=\"selectedApprovalWorkflow\"\r\n (ngModelChange)=\"selectedWorkflowChange($event)\"\r\n [placeholder]=\"'Select approval workflow for this policy'\"\r\n name=\"selectedApprovalWorkflow\"\r\n [setMaxWidth]=\"true\"\r\n >\r\n <cs-option\r\n *ngFor=\"let data of approverWorkFlowList\"\r\n [value]=\"data\"\r\n >\r\n {{ data.workflow_name }}\r\n </cs-option>\r\n <cs-option\r\n [value]=\"-1\"\r\n (click)=\"\r\n activateSelector('approvers', true);\r\n addMoreLevels = true;\r\n workflowType = 'SEQUENTIAL'\r\n \"\r\n >Create a new approval workflow</cs-option\r\n >\r\n </cs-select>\r\n </div>\r\n <ng-container\r\n *ngIf=\"policyForm?.selectedApprovers[0]?.approvers?.length > 0\"\r\n >\r\n <div\r\n class=\"selected\"\r\n *ngFor=\"let level of policyForm?.selectedApprovers; let i = index\"\r\n >\r\n <div class=\"workflow-label\">\r\n <p class=\"title\">Level {{ i + 1 }}</p>\r\n <p class=\"description\">{{ level.name }}</p>\r\n </div>\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chip-container\">\r\n <span\r\n class=\"chip\"\r\n *ngFor=\"\r\n let approver of level.approvers.slice(0, 1);\r\n let j = index\r\n \"\r\n ><i class=\"icons\" (click)=\"remove('approvers', approver, i)\"\r\n ></i\r\n >\r\n <span class=\"step\" *ngIf=\"level.name == 'SEQUENTIAL'\">{{\r\n j + 1\r\n }}</span\r\n >{{ approver.member_name }}</span\r\n >\r\n\r\n <button\r\n class=\"count\"\r\n *ngIf=\"level.approvers?.length > 1\"\r\n type=\"button\"\r\n appPopover\r\n (click)=\"labelName.popover()\"\r\n placement=\"left\"\r\n >\r\n +\r\n\r\n {{ level.approvers.slice(1).length }}\r\n </button>\r\n <app-popover #labelName [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let approver of level.approvers | 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\r\n class=\"icons\"\r\n (click)=\"remove('approvers', approver, i)\"\r\n ></i\r\n >\r\n <span\r\n class=\"step\"\r\n *ngIf=\"level.name == 'SEQUENTIAL'\"\r\n >\r\n {{\r\n j == level.approvers.slice(1).length - 1\r\n ? \"Final\"\r\n : j + 2\r\n }}\r\n </span>\r\n {{ approver.member_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 <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"\r\n activateSelector('approvers', true, level.name);\r\n approversListIndex = i\r\n \"\r\n >\r\n <i class=\"icons\"></i>Edit\r\n </button>\r\n <button\r\n class=\"close-btn\"\r\n (click)=\"remove('workflowLevel', level, i)\"\r\n >\r\n <i class=\"icons\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n !policyForm?.selectedApprovers?.length &&\r\n !policyApprovalFlag\r\n \"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Select or create an approval workflow for this policy.\r\n </p>\r\n\r\n <label\r\n class=\"vx-control-panel\"\r\n *ngIf=\"policyForm.selectedApprovers[0]?.approvers?.length > 0\"\r\n ><button\r\n class=\"button\"\r\n (click)=\"\r\n activateSelector('approvers', true);\r\n addMoreLevels = true;\r\n workflowType = 'SEQUENTIAL'\r\n \"\r\n >\r\n + Add More Levels\r\n </button></label\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Who / now Attestation -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'assignees'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'assignees' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedAssignees?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedAssignees?.length == 0 ||\r\n activeSelector === 'assignees'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.selectedAssignees?.length > 0 &&\r\n activeSelector !== 'assignees'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Attestation</label>\r\n <div\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center vx-mb-2\"\r\n *ngIf=\"\r\n (policyForm?.selectedAssignees?.length == 0 && !groupEnabled) ||\r\n (policyForm?.selectedAssignees?.length == 0 &&\r\n groupEnabled &&\r\n policyForm?.selectedGroupAssignee.length == 0)\r\n \"\r\n (click)=\"activateSelector('assignees', true)\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select the persons responsible for attesting this policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\r\n *ngIf=\"\r\n policyForm?.selectedAssignees?.length > 0 ||\r\n policyForm?.selectedGroupAssignee?.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=\"!groupEnabled\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let assignee of policyForm?.selectedAssignees?.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('assignees', assignee)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"assignee.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ assignee.employee_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 greenBg\"\r\n appPopover\r\n (click)=\"assigneePopover.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"policyForm?.selectedAssignees?.length > 1\"\r\n >\r\n +{{ policyForm?.selectedAssignees?.slice(1).length }}\r\n </button>\r\n </div>\r\n <ng-container *ngIf=\"groupEnabled\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"groupEnabled && policyForm?.selectedAssignees.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('assignees', policyForm?.selectedAssignees[0])\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.selectedAssignees[0]?.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.selectedAssignees[0]?.employee_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)=\"UserPopover.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.selectedAssignees.length > 1\"\r\n >\r\n +{{ policyForm?.selectedAssignees.length - 1 }}\r\n </button>\r\n </div>\r\n <div\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n policyForm?.selectedAssignees.length > 0 &&\r\n policyForm?.selectedGroupAssignee.length > 0\r\n \"\r\n >\r\n &\r\n </div>\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"policyForm?.selectedGroupAssignee.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(\r\n 'groupAssignees',\r\n policyForm?.selectedGroupAssignee[0]\r\n )\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"\r\n policyForm?.selectedGroupAssignee[0]?.group_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.selectedGroupAssignee[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=\"policyForm?.selectedGroupAssignee.length > 1\"\r\n >\r\n +{{ policyForm?.selectedGroupAssignee.length - 1 }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('assignees', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n ((policyForm?.selectedAssignees?.length == 0 &&\r\n policyForm?.frequency_details &&\r\n !groupEnabled) ||\r\n (policyForm?.selectedAssignees?.length == 0 &&\r\n policyForm.selectedGroupAssignee.length == 0 &&\r\n policyForm?.frequency_details &&\r\n groupEnabled) ||\r\n (isSendForAttestation &&\r\n policyForm?.selectedAssignees?.length === 0))\r\n \"\r\n id=\"whovalidatemsg\"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select the persons required to attest to this Policy.\r\n </p>\r\n <app-cs-switch\r\n [(ngValue)]=\"policyForm.requiresSignatureForAttestation\"\r\n [class.disabled]=\"policyForm?.selectedAssignees?.length == 0\"\r\n class=\"who-toggle\"\r\n >THIS POLICY REQUIRES E-SIGNATURE FOR ATTESTATION\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'If selected, the readers will be required to attest this policy using their electronic signature.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch\r\n >\r\n <app-popover #assigneePopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let assignee of policyForm?.selectedAssignees | 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('assignees', assignee)\"\r\n ></i\r\n >\r\n {{ assignee.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #UserPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let assignee of policyForm?.selectedAssignees | 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('assignees', assignee)\"\r\n ></i\r\n >\r\n {{ assignee.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\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\r\n *ngFor=\"\r\n let data of policyForm?.selectedGroupAssignee | 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('groupAssignees', data)\"\r\n ></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\r\n <!-- overseer -->\r\n <app-popover #overseerPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let overseer of policyForm?.CCEmail | 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('ccEmail', overseer)\"\r\n ></i\r\n >\r\n {{ overseer?.employee_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\r\n *ngFor=\"\r\n let data of policyForm?.CCGroupEmail | 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('ccGroupEmail', data)\"\r\n ></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 <!-- overseer end -->\r\n\r\n <!-- overseer fail start -->\r\n <app-popover #overseerFailPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let overseer of policyForm?.CCFailEmail | 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('ccFail', overseer)\"\r\n ></i\r\n >\r\n {{ overseer?.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerFailGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let data of policyForm?.CCFailEmailGroup | 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\r\n class=\"icons\"\r\n (click)=\"remove('ccGroupFailEmail', data)\"\r\n ></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 <!-- overseer fail end -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- When -->\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 >\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">When?</label>\r\n\r\n <div\r\n *ngIf=\"policyForm?.frequency_details == ''\"\r\n class=\"select button-sec\"\r\n >\r\n <div\r\n class=\"custom-input frequency-custom-input\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n {{ frequencyPlaceholder }}\r\n </div>\r\n\r\n <button (click)=\"activateSelector('frequency', true)\" type=\"button\">\r\n Set A frequency\r\n </button>\r\n </div>\r\n <!-- <div\r\n *ngIf=\"policyForm?.frequency_details != ''\"\r\n class=\"selected button-sec\"\r\n > -->\r\n <div\r\n *ngIf=\"policyForm?.frequency_details != ''\"\r\n class=\"selected button-sec selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\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 (click)=\"remove('frequency', rc)\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\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 </div>\r\n <button\r\n *ngIf=\"activeSelector !== 'frequency'\"\r\n type=\"button\"\r\n class=\"edit\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons\"></i>Edit\r\n </button>\r\n <!-- </div>\r\n <span class=\"chip\">{{ frequencyPlaceholder }}</span>\r\n <button\r\n *ngIf=\"activeSelector !== 'frequency'\"\r\n type=\"button\"\r\n class=\"edit\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons\"></i>Edit\r\n </button> -->\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n ((policyForm?.selectedAssignees?.length > 0 &&\r\n !policyForm?.frequency_details &&\r\n !groupEnabled) ||\r\n ((policyForm?.selectedAssignees?.length > 0 ||\r\n policyForm?.selectedGroupAssignee?.length > 0) &&\r\n !policyForm?.frequency_details &&\r\n groupEnabled))\r\n \"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select an attestation schedule for this policy.\r\n </p>\r\n\r\n <!-- <label class=\"vx-control-panel\">Effective Date</label>\r\n <div class=\"date-time-picker\">\r\n <div class=\"picker-group\">\r\n <input type=\"text\" readonly placeholder=\"Select the date from which this policy goes into effect.\"\r\n [value]=\"policyForm.policyDueDate | date: 'dd MMM yyyy'\" (click)=\"openDatePicker();\">\r\n <i class=\"icons\"></i>\r\n <dp-date-picker #datePicker (onSelect)=\"datePickerOverlay = false;closeDatePicker($event)\"\r\n [config]=\"dateConfig\" [(ngModel)]=\"policyForm.policyDueDate\">\r\n </dp-date-picker>\r\n <div class=\"vx-overlay\" (click)=\"closeDatePicker($event)\" *ngIf=\"datePickerOverlay\"></div>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Checkpoints / Assessment of Understanding -->\r\n <div\r\n class=\"form-group-row\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"true\"\r\n [class.active]=\"activeSelector === 'checkpoints'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'checkpoints' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Assessment of Understanding\r\n <!-- <button *ngIf=\"policyForm?.checkpointDetails?.length===0\" class=\"button\" (click)=\"activateSelector('checkpoints',true)\">+ Add Checkpoints</button> -->\r\n </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"policyForm?.checkpointDetails?.length === 0\"\r\n (click)=\"activateSelector('checkpoints', true)\"\r\n >\r\n <!-- <input type=\"text\" placeholder=\"Set up a questionnaire to confirm the reader\u2019s understanding of the policy.\" readonly> -->\r\n <div class=\"custom-input\">\r\n Set up a questionnaire to confirm the reader\u2019s<br />understanding\r\n of the policy.\r\n </div>\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm?.checkpointDetails?.length > 0\"\r\n >\r\n <!-- <div class=\"chip-container\">\r\n <span class=\"chip\">{{policyForm?.checkpointDetails?.length + (policyForm?.checkpointDetails?.length > 1 ?' Checkpoints':' Checkpoint')}}</span>\r\n\r\n <span class=\"checkpoint-point-text first\">TOTAL POINTS: <span class=\"no\">{{policyForm?.totalQuestion}}</span><br><em>Each question carries 1 point</em></span>\r\n\r\n <span class=\"checkpoint-point-text\">POINTS REQUIRED TO ATTEST : <span class=\"no\">{{policyForm?.passingMarks}}</span></span>\r\n\r\n </div> -->\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('checkpoints', policyForm?.checkpointDetails)\"\r\n ></i\r\n >\r\n <span class=\"chipName vx-fs-11 vx-label-txt\">{{\r\n policyForm?.checkpointDetails?.length +\r\n (policyForm?.checkpointDetails?.length > 1\r\n ? \" Questions\"\r\n : \" Question\")\r\n }}</span>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('checkpoints', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <!-- <app-popover #checkpointPopOver [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let checkpoint of policyForm?.checkpointDetails | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('checkpoints',checkpoint,j+1)\"></i>\r\n {{ checkpoint?.question }}\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 Classification -->\r\n <div\r\n class=\"form-group-row\"\r\n *ngIf=\"showRiskClassification && false\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm.riskRating\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/risks.svg\"\r\n alt=\"im\"\r\n *ngIf=\"!policyForm?.riskRating\"\r\n />\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n *ngIf=\"policyForm?.riskRating\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Risk Classification</label>\r\n <div class=\"classification\">\r\n <label\r\n class=\"low\"\r\n *ngFor=\"let class of riskClassification\"\r\n [ngClass]=\"[class.class]\"\r\n >\r\n <input\r\n type=\"radio\"\r\n name=\"classification\"\r\n [value]=\"class.value\"\r\n [checked]=\"policyForm?.riskRating === class.value\"\r\n [(ngModel)]=\"policyForm.riskRating\"\r\n />\r\n <span>{{ class.name }}</span>\r\n </label>\r\n </div>\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 [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"policyForm.addResponsibilityCenters\"\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 class=\"left\" [class.checked]=\"policyForm?.selectedRCs?.length > 0\">\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedRCs?.length == 0 || 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=\"policyForm?.selectedRCs?.length > 0 && activeSelector !== 'rc'\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Responsibility Center</label>\r\n <div class=\"select\" *ngIf=\"policyForm?.selectedRCs?.length == 0\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('rc', true)\"\r\n placeholder=\"Select Responsibility Center(s) that this policy relates to.\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div class=\"selected\" *ngIf=\"policyForm?.selectedRCs?.length > 0\">\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 rc of policyForm?.selectedRCs?.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('rc', rc)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"rc.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rc.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)=\"rcPopover.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"policyForm?.selectedRCs?.length > 1\"\r\n >\r\n +{{ policyForm?.selectedRCs?.slice(1).length }}\r\n </button>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('rc', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <app-popover #rcPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rc of policyForm?.selectedRCs | 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', rc)\"></i>\r\n {{ rc.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 <!-- Version -->\r\n <div\r\n *ngIf=\"policyForm.addVersion\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm.policy_version\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/associated-risks.svg\"\r\n alt=\"name\"\r\n *ngIf=\"!policyForm.policy_version\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm.policy_version\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">VERSION</label>\r\n <input\r\n [(ngModel)]=\"policyForm.policy_version\"\r\n (change)=\"onVersion($event)\"\r\n type=\"text\"\r\n placeholder=\"Specify the policy version.\"\r\n />\r\n <p\r\n *ngIf=\"!isVersionValid\"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n {{ versionErrorMessage }}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Reviewer -->\r\n <div\r\n class=\"form-group-row\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"policyForm.addReviewers && false\"\r\n [class.active]=\"activeSelector === 'reviewer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewer' &&\r\n activeSelector !== 'reviewerFrequency' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedReviewers?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedReviewers?.length == 0 ||\r\n activeSelector === 'reviewer'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/reviewer.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.selectedReviewers?.length > 0 &&\r\n activeSelector !== 'reviewer'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Reviewer </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"policyForm?.selectedReviewers?.length == 0\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('reviewer', true)\"\r\n placeholder=\"Select the person responsible for reviewing this policy\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm?.selectedReviewers?.length > 0\"\r\n >\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 reviewer of policyForm?.selectedReviewers\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('reviewer', reviewer)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"reviewer.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ reviewer.member_name }}</span\r\n >\r\n </ng-container>\r\n </div>\r\n\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('reviewer', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n policyForm?.selectedReviewers?.length == 0 &&\r\n policyForm?.review_frequency_details\r\n \"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select a reviewer for this policy.\r\n </p>\r\n\r\n <label class=\"vx-control-panel\">When? </label>\r\n\r\n <div\r\n *ngIf=\"policyForm?.review_frequency_details == ''\"\r\n class=\"select button-sec\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n [placeholder]=\"reviewerFrequencyPlaceholder\"\r\n readonly\r\n />\r\n <button\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n type=\"button\"\r\n >\r\n Set A frequency\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"policyForm?.review_frequency_details != ''\"\r\n class=\"selected button-sec\"\r\n >\r\n <span class=\"chip\">{{ reviewerFrequencyPlaceholder }}</span>\r\n <button\r\n *ngIf=\"activeSelector !== 'reviewerFrequency'\"\r\n type=\"button\"\r\n class=\"edit\"\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n >\r\n <i class=\"icons\"></i>Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n policyForm?.selectedReviewers?.length > 0 &&\r\n !policyForm?.review_frequency_details\r\n \"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select the review schedule for this policy.\r\n </p>\r\n\r\n <app-format-and-evidence\r\n (updateFiles)=\"saveSelectedList('reviewer_attachments', $event)\"\r\n #formatEvidence\r\n [mode]=\"'policyReviewer'\"\r\n [organization_id]=\"organization_id\"\r\n [formatEvidanceData]=\"policyForm?.documentsAndLinks\"\r\n >\r\n </app-format-and-evidence>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Overseer -->\r\n <div\r\n class=\"form-group-row\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"policyForm.addOverseers\"\r\n [class.active]=\"\r\n activeSelector === 'ccEmail' || activeSelector === 'ccFail'\r\n \"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'ccEmail' &&\r\n activeSelector !== 'ccFail' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"\r\n policyForm?.CCEmail?.length > 0 || policyForm?.CCFailEmail?.length > 0\r\n \"\r\n >\r\n <img\r\n *ngIf=\"\r\n (policyForm?.CCFailEmail?.length == 0 &&\r\n policyForm?.CCEmail?.length == 0) ||\r\n activeSelector === 'ccEmail' ||\r\n activeSelector === 'ccFail'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n (policyForm?.CCFailEmail?.length > 0 ||\r\n policyForm?.CCEmail?.length > 0) &&\r\n activeSelector !== 'ccEmail' &&\r\n activeSelector !== 'ccFail'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Oversight</label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"\r\n policyForm?.CCEmail?.length == 0 &&\r\n policyForm?.CCGroupEmail.length == 0\r\n \"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('ccEmail', true)\"\r\n placeholder=\"Who should have oversight of this policy?\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n policyForm?.CCEmail?.length > 0 ||\r\n policyForm?.CCGroupEmail.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=\"!groupEnabled\"\r\n >\r\n <ng-container\r\n *ngFor=\"let ccEmail of policyForm?.CCEmail?.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('ccEmail', ccEmail)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"ccEmail.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ ccEmail.employee_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 greenBg\"\r\n appPopover\r\n (click)=\"ccEmailPopover.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"policyForm?.CCEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCEmail?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"groupEnabled\" class=\"chip-container\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"groupEnabled && policyForm?.CCEmail?.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('ccEmail', policyForm?.CCEmail[0])\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.CCEmail[0].employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.CCEmail[0].employee_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)=\"overseerPopover.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.CCEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCEmail?.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n policyForm?.CCEmail.length > 0 &&\r\n policyForm?.CCGroupEmail?.length > 0\r\n \"\r\n >\r\n &\r\n </div>\r\n\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"policyForm?.CCGroupEmail.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('ccGroupEmail', policyForm?.CCGroupEmail[0])\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.CCGroupEmail[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.CCGroupEmail[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=\"policyForm?.CCGroupEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCGroupEmail?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('ccEmail', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"select\"\r\n *ngIf=\"\r\n policyForm?.CCFailEmail?.length == 0 &&\r\n policyForm?.CCFailEmailGroup?.length == 0\r\n \"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('ccFail', true)\"\r\n placeholder=\"Who should be notified if the policy is not attested on time?\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n policyForm?.CCFailEmail?.length > 0 ||\r\n policyForm?.CCFailEmailGroup?.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=\"!groupEnabled\"\r\n >\r\n <ng-container\r\n *ngFor=\"let ccFail of policyForm?.CCFailEmail?.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('ccFail', ccFail)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"ccFail.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ ccFail.employee_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 greenBg\"\r\n appPopover\r\n (click)=\"ccFailPopover.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.CCFailEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCFailEmail?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"groupEnabled\" class=\"chip-container\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"groupEnabled && policyForm?.CCFailEmail.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('ccFail', policyForm?.CCFailEmail[0])\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.CCFailEmail[0]?.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.CCFailEmail[0]?.employee_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)=\"overseerFailPopover.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.CCFailEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCFailEmail?.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n policyForm?.CCFailEmail?.length > 0 &&\r\n policyForm?.CCFailEmailGroup?.length > 0\r\n \"\r\n >\r\n &\r\n </div>\r\n\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"policyForm?.CCFailEmailGroup?.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('ccGroupFailEmail', policyForm?.CCFailEmailGroup[0])\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.CCFailEmailGroup[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.CCFailEmailGroup[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)=\"overseerFailGroup.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.CCFailEmailGroup?.length > 1\"\r\n >\r\n +{{ policyForm?.CCFailEmailGroup?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('ccFail', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <app-popover #ccEmailPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let ccEmail of policyForm?.CCEmail | 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('ccEmail', ccEmail)\"\r\n ></i\r\n >\r\n {{ ccEmail.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #ccFailPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let ccFail of policyForm?.CCFailEmail | 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('ccFail', ccFail)\"\r\n ></i\r\n >\r\n {{ ccFail.employee_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 <!-- Related Documents -->\r\n <div\r\n class=\"form-group-row\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"policyForm.addAssociatedDocuments\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"left\">\r\n <img\r\n *ngIf=\"policyForm.associatedDocuments.formatFiles?.length == 0\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/format-evidence.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm.associatedDocuments.formatFiles?.length > 0\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">RELATED DOCUMENTS</label>\r\n <app-format-and-evidence\r\n (updateFiles)=\"saveSelectedList('associatedDocuments', $event)\"\r\n [mode]=\"'policy'\"\r\n [organization_id]=\"organization_id\"\r\n [formatEvidanceData]=\"policyForm?.associatedDocuments\"\r\n ></app-format-and-evidence>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Link Programs & Responsibilities -->\r\n <div\r\n *ngIf=\"policyForm?.addLinkProgram\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'linkProgram'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'linkProgram' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"\r\n policyForm?.programSelectedValues?.program?.category_id\r\n \"\r\n >\r\n <img\r\n *ngIf=\"!policyForm?.programSelectedValues?.program?.category_id\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/link-items.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.programSelectedValues?.program?.category_id\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 >LINK PROGRAMS & RESPONSIBILITIES</label\r\n >\r\n <div\r\n *ngIf=\"!policyForm?.programSelectedValues?.program?.category_id\"\r\n (click)=\"activateSelector('linkProgram', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select Programs & responsibilities that are<br />associated with\r\n this policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n *ngIf=\"policyForm?.programSelectedValues?.program?.category_id\"\r\n >\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 (click)=\"\r\n remove('linkProgram', policyForm?.programSelectedValues)\r\n \"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.programSelectedValues?.program?.name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.programSelectedValues?.program?.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)=\"programResponsibilityPopover.popover()\"\r\n placement=\"left\"\r\n >\r\n +4\r\n </button> -->\r\n </div>\r\n <app-popover\r\n #programResponsibilityPopover\r\n [dontCloseonClick]=\"true\"\r\n >\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of [1, 1, 1, 1, 1, 1, 1]\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"\r\n 'Reporting information security weaknesses'\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i class=\"icons\"></i>\r\n Reporting information security weaknesses\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('linkProgram', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Link Assessment -->\r\n <div\r\n *ngIf=\"policyForm.addLinkAssessment\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'isAssessment'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'isAssessment' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm?.assessment?.length\">\r\n <img\r\n *ngIf=\"!policyForm?.assessment?.length\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/assessments.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.assessment?.length\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 ASSESSMENTS</label>\r\n <div\r\n *ngIf=\"policyForm?.assessment?.length === 0\"\r\n (click)=\"activateSelector('isAssessment', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select assessments that are associated with this<br />policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"policyForm?.assessment?.length > 0\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"\r\n policyForm.assessment[0]?.assessmentDetails?.assessment_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{\r\n policyForm.assessment[0]?.assessmentDetails?.assessment_name\r\n }}</span\r\n >\r\n </div>\r\n <app-popover\r\n #programResponsibilityPopover\r\n [dontCloseonClick]=\"true\"\r\n >\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"let assessment of policyForm.assessment | slice : 1\"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"\r\n assessment?.assessmentDetails?.assessment_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i class=\"icons\"></i>\r\n {{ assessment?.assessmentDetails?.assessment_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <button\r\n (click)=\"activateSelector('isAssessment', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <app-checkbox-list\r\n [config]=\"categoryConfig\"\r\n [twoColumn]=\"false\"\r\n [itemsList]=\"categoryList\"\r\n [selectedItems]=\"policyForm.selectedCategories\"\r\n [identifierKey]=\"'_id'\"\r\n [displayKey]=\"'item_name'\"\r\n [tooltipKey]=\"'item_name'\"\r\n *ngIf=\"activeSelector === 'category'\"\r\n (saveList)=\"saveSelectedList('category', $event)\"\r\n (closeList)=\"disableSelector()\"\r\n [loaded]=\"!categoriesListLoaded\"\r\n >\r\n </app-checkbox-list>\r\n <!-- <app-checkbox-list [config]=\"approvalWorkflowConfig\" [twoColumn]=\"true\"\r\n [itemsList]=\"\"\r\n [selectedItems]=\"policyForm.issueCCUsers\" [identifierKey]=\"'employee_email'\" [displayKey]=\"'employee_name'\" [tooltipKey]=\"'employee_email'\"\r\n *ngIf=\"activeSelector==='ISSUE_CC'\" (saveList)=\"selectorAction($event,'ISSUE_CC')\"\r\n (closeList)=\"fieldDeselector('ISSUE_CC')\">\r\n</app-checkbox-list> -->\r\n\r\n <app-responsibility-centers-list\r\n *ngIf=\"activeSelector === 'rc'\"\r\n [responsibilityCentersList]=\"rcList\"\r\n [selectedResponsibilityCenters]=\"policyForm.selectedRCs\"\r\n [rcIdKey]=\"'item_id'\"\r\n (saveSelectedList)=\"saveSelectedList('rc', $event)\"\r\n (closeRcList)=\"disableSelector()\"\r\n [loaded]=\"rcListLoaded\"\r\n >\r\n </app-responsibility-centers-list>\r\n\r\n <app-users-radio-list\r\n *ngIf=\"activeSelector === 'reviewer'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [usersList]=\"allReviewers\"\r\n [headerText]=\"'Select a Reviewer'\"\r\n [selectedUsers]=\"policyForm.selectedReviewers\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('reviewer', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n >\r\n </app-users-radio-list>\r\n\r\n <app-owner-list\r\n *ngIf=\"activeSelector === 'ccEmail' && !groupEnabled\"\r\n [usersList]=\"overseersList\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [selectedUsers]=\"policyForm.CCEmail\"\r\n [userIdKey]=\"'employee_id'\"\r\n [itemNameKey]=\"'employee_name'\"\r\n (saveSelectedList)=\"saveSelectedList('ccEmail', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n >\r\n </app-owner-list>\r\n\r\n <user-group-list\r\n *ngIf=\"activeSelector === 'ccEmail' && groupEnabled\"\r\n [groupEnabled]=\"true\"\r\n [userlist]=\"overseersList\"\r\n [groupList]=\"overseerGroupsList\"\r\n [selectedUsers]=\"policyForm.CCEmail\"\r\n [selectedGroups]=\"policyForm.CCGroupEmail\"\r\n (save)=\"saveSelectedList('ccEmail', $event)\"\r\n (cancel)=\"disableSelector()\"\r\n [featureflag]=\"groupEnabled\"\r\n >\r\n </user-group-list>\r\n\r\n <app-owner-list\r\n *ngIf=\"activeSelector === 'ccFail' && !groupEnabled\"\r\n [usersList]=\"overseersList\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [selectedUsers]=\"policyForm.CCFailEmail\"\r\n [userIdKey]=\"'employee_id'\"\r\n [itemNameKey]=\"'employee_name'\"\r\n (saveSelectedList)=\"saveSelectedList('ccFail', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n >\r\n </app-owner-list>\r\n\r\n <user-group-list\r\n *ngIf=\"activeSelector === 'ccFail' && groupEnabled\"\r\n [groupEnabled]=\"true\"\r\n [userlist]=\"overseersList\"\r\n [groupList]=\"overseerGroupsList\"\r\n [selectedUsers]=\"policyForm.CCFailEmail\"\r\n [selectedGroups]=\"policyForm.CCFailEmailGroup\"\r\n (save)=\"saveSelectedList('ccFail', $event)\"\r\n (cancel)=\"disableSelector()\"\r\n [featureflag]=\"groupEnabled\"\r\n >\r\n </user-group-list>\r\n\r\n <app-group-users-list\r\n *ngIf=\"activeSelector === 'assignees' && !groupEnabled\"\r\n [usersList]=\"assigneesList\"\r\n [groupsList]=\"overseerGroupsList\"\r\n [selectedUsers]=\"policyForm.selectedAssignees\"\r\n [userIdKey]=\"'my_member_id'\"\r\n (saveSelectedList)=\"saveSelectedList('assignees', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n >\r\n </app-group-users-list>\r\n\r\n <user-group-list\r\n *ngIf=\"activeSelector === 'assignees' && groupEnabled\"\r\n [groupEnabled]=\"true\"\r\n [userlist]=\"ownerlist\"\r\n [groupList]=\"overseerGroupsList\"\r\n (save)=\"saveSelectedList('assignees', $event)\"\r\n (cancel)=\"disableSelector()\"\r\n [selectedGroups]=\"policyForm.selectedGroupAssignee\"\r\n [selectedUsers]=\"policyForm.selectedAssignees\"\r\n [featureflag]=\"groupEnabled\"\r\n >\r\n </user-group-list>\r\n\r\n <app-owner-list\r\n *ngIf=\"activeSelector === 'approvers' && false\"\r\n [listHeading]=\"'Select Approvers'\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [usersList]=\"allApprovers\"\r\n [showWorkflow]=\"true\"\r\n [selectedUsers]=\"\r\n addMoreLevels\r\n ? []\r\n : policyForm.selectedApprovers[approversListIndex].approvers\r\n \"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('approvers', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n [mode]=\"mode\"\r\n [reviewerWorkflowType]=\"workflowType\"\r\n (reviewerWorkflowTypeChange)=\"reviewerTypeChange($event)\"\r\n [workflowList]=\"workflowList\"\r\n [workflowText]=\"'Approval Workflow'\"\r\n >\r\n </app-owner-list>\r\n\r\n <app-frequency-container\r\n *ngIf=\"activeSelector === 'frequency'\"\r\n [mode]=\"'policy'\"\r\n [frequencyDetails]=\"frequencyDetails\"\r\n (selectedFrequency)=\"frequencyData($event)\"\r\n [feature]=\"feature\"\r\n [pageType]=\"'policy'\"\r\n (closeFrequency)=\"disableSelector()\"\r\n ></app-frequency-container>\r\n\r\n <app-frequency-container\r\n *ngIf=\"activeSelector === 'reviewerFrequency'\"\r\n [mode]=\"'reviewerFrequency'\"\r\n [frequencyDetails]=\"reviewerFrequencyDetails\"\r\n (selectedFrequency)=\"reviewerFrequencyData($event)\"\r\n [feature]=\"feature\"\r\n [pageType]=\"'policy'\"\r\n (closeFrequency)=\"disableSelector()\"\r\n ></app-frequency-container>\r\n\r\n <vc-link-program\r\n *ngIf=\"activeSelector === 'linkProgram'\"\r\n (close)=\"disableSelector()\"\r\n [policy]=\"policyForm\"\r\n [selectedProgram]=\"policyForm?.programSelectedValues\"\r\n [mode]=\"mode\"\r\n [selectedLinkProgram]=\"selectedLinkProgram\"\r\n (changeTab)=\"changeTab('linkedPrograms')\"\r\n (updatedProgramDetails)=\"updatedProgramDetails($event)\"\r\n >\r\n </vc-link-program>\r\n\r\n <app-checkpoints-policy-container\r\n (closeCheckPoint)=\"disableSelector()\"\r\n [checkpointData]=\"policyForm?.checkpointDetails\"\r\n [requiredPoint]=\"policyForm?.passingMarks\"\r\n *ngIf=\"activeSelector === 'checkpoints'\"\r\n (saveCheckPoint)=\"saveSelectedList('checkpoints', $event)\"\r\n ></app-checkpoints-policy-container>\r\n <app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n\r\n <app-approval-workflow\r\n *ngIf=\"enableApprovalWorkflow\"\r\n [selectedCategory]=\"policyForm?.selectedCategories\"\r\n [approverWorkFlowList]=\"approverWorkFlowList\"\r\n [allApprovers]=\"allApprovers\"\r\n (listCancelClicked)=\"listCancelClicked($event)\"\r\n (selectedWorkflowNext)=\"selectedApprovalWorkflow($event)\"\r\n (saveApprovalWorkflow)=\"approvalWorkflowAPICall($event)\"\r\n [editApprovalWorkflow]=\"editApprovalWorkflow\"\r\n [createApprovalClick]=\"createApprovalClick\"\r\n (closeCreateClicked)=\"closeClickedCreateForm()\"\r\n [editWorkflowLevel]=\"editWorkflowLevel\"\r\n ></app-approval-workflow>\r\n <!-- <app-select-approvers></app-select-approvers> -->\r\n\r\n <app-policy-access\r\n *ngIf=\"activeSelector === 'policyAccess'\"\r\n [policyAccessType]=\"policyForm?.policy_access_type\"\r\n (close)=\"disableSelector()\"\r\n [orgUsersList]=\"usersList\"\r\n [usersAccessList]=\"usersAccessList\"\r\n [groupList]=\"overseerGroupsList\"\r\n [groupsAccessList]=\"groupsAccessList\"\r\n [selectedUsers]=\"policyForm?.policy_access_owners\"\r\n [selectedGroups]=\"policyForm?.policy_access_groups\"\r\n [disabledIds]=\"usersAccessListIds\"\r\n [disabledGroupIds]=\"groupsAccessListIds\"\r\n [futureUsersWillSelect]=\"policyForm?.availableOnPortal\"\r\n (saveCheckPoint)=\"saveSelectedList('policyAccess', $event)\"\r\n (setPolicyAccessType)=\"policyForm.policy_access_type = $event\"\r\n >\r\n </app-policy-access>\r\n</ng-container>\r\n<ng-container *ngIf=\"showCreateDocuments\">\r\n <!-- <app-create-documents *ngIf=\"showCreateDocuments\"\r\n [organization_id]=\"organization_id\"\r\n [member_obj_id]=\"member_obj_id\"\r\n [userInfo]=\"userInfo\"\r\n [policyId]=\"policyId\"\r\n [policyName]=\"policyForm.policyName\"\r\n (disconnectRefresh)=\"disconnectRefresh.emit(false)\"\r\n (editPolicy)=\"editPolicyFromDocuments()\"\r\n ></app-create-documents> -->\r\n <lib-document-section\r\n *ngIf=\"showCreateDocuments\"\r\n [organization_id]=\"organization_id\"\r\n [member_obj_id]=\"member_obj_id\"\r\n [userInfo]=\"userInfo\"\r\n [policyId]=\"policyId\"\r\n [policyName]=\"policyForm.policyName\"\r\n (disconnectRefresh)=\"disconnectRefresh.emit(false)\"\r\n (editPolicy)=\"editPolicyFromDocuments()\"\r\n ></lib-document-section>\r\n</ng-container>\r\n\r\n<app-assessment-list\r\n *ngIf=\"activeSelector === 'isAssessment'\"\r\n [program_ids]=\"''\"\r\n [isEdit]=\"policyForm?.assessment?.length\"\r\n (cancelAssessment)=\"saveSelectedList('isAssessment', false)\"\r\n [selectedAssessment]=\"policyForm?.assessment[0]\"\r\n [mode]=\"'policy'\"\r\n (onAssessmentSelect)=\"\r\n onAssessmentSelect($event); saveSelectedList('isAssessment', false)\r\n \"\r\n></app-assessment-list>\r\n\r\n<app-owner-list\r\n *ngIf=\"activeSelector === 'approvers' && false\"\r\n [listHeading]=\"'Select Approvers'\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [usersList]=\"allApprovers\"\r\n [showWorkflow]=\"true\"\r\n [selectedUsers]=\"\r\n addMoreLevels\r\n ? []\r\n : policyForm.selectedApprovers[approversListIndex].approvers\r\n \"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('approvers', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n [mode]=\"mode\"\r\n [reviewerWorkflowType]=\"workflowType\"\r\n (reviewerWorkflowTypeChange)=\"reviewerTypeChange($event)\"\r\n [workflowList]=\"workflowList\"\r\n [workflowText]=\"'Approval Workflow'\"\r\n>\r\n</app-owner-list>\r\n\r\n<app-owner-list\r\n *ngIf=\"activeSelector === 'owners'\"\r\n [listHeading]=\"'Select Owner(s)'\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [usersList]=\"allApprovers\"\r\n [showWorkflow]=\"false\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('owners', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n [mode]=\"mode\"\r\n [selectedUsers]=\"policyForm?.policy_owners ?? []\"\r\n>\r\n</app-owner-list>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";::ng-deep .workflow-policy{position:relative}::ng-deep .workflow-policy app-cs-switch{display:block}::ng-deep .workflow-policy app-cs-switch label.cs-switch span.value{color:#747576!important;font-size:11px!important;font-weight:500!important;justify-content:flex-end!important;line-height:16px;width:100%!important}::ng-deep .workflow-policy app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:12px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 8px 0 4px}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected{height:56px;padding:4px 12px 8px;display:block}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected .workflow-label{min-width:auto;padding:0;text-align:left;margin:0 0 4px;border-right:none;width:100%;display:flex;align-items:center}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected .workflow-label p.description{font-size:10px;margin-left:6px}::ng-deep .workflow-policy .form-group-row .right .approval-workflow cs-select .selection-wrap .input-group:before{display:none!important}::ng-deep .workflow-policy app-frequency-container app-frequency-weekly .frequency-weekly app-frequency-lifecycle .frequency-lifecycle-responsibility-inner-item{height:unset!important}.disabled{opacity:.5;pointer-events:none}\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 .chipName.full-width{max-width:25rem}::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:#fff;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:#fff}::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:#fff;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{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:#fff;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:#fff;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:#fff;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:#fff}::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 .info.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.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:212px;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:#fff;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:#fff;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:#fff;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:#fff;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}::ng-deep dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}::ng-deep dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}::ng-deep dp-date-picker input:focus{outline:none}::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar,::ng-deep dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep dp-date-picker .dp-popup dp-day-calendar button,::ng-deep dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}::ng-deep 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:#0000004d}::ng-deep .cdk-overlay-container{z-index:2147483002!important}::ng-deep .dp-popup{z-index:999;display:flex!important;align-items:center;justify-content:center;width:100vw;height:100vh;background:#0000004d!important;box-shadow:unset!important}::ng-deep .dp-popup dp-day-calendar{width:412px!important;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep .dp-popup dp-day-calendar,::ng-deep .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep .dp-popup dp-day-calendar button,::ng-deep .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep .dp-popup dp-day-calendar .dp-weekdays,::ng-deep .dp-popup dp-month-calendar .dp-weekdays,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}@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:#fff}::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% 1%,#747576 50%,#2989d800 51%,#7db9e800);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:#fff}::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% 50%,#2989d800 51%,#7db9e800);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% 1%,#34aa44 50%,#2989d800 51%,#7db9e800);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% 1%,#1e5dd3 50%,#2989d800 51%,#7db9e800);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% 1%,#f6882f 50%,#2989d800 51%,#7db9e800);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% 1%,#7aa6f7 50%,#2989d800 51%,#7db9e800);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}.wf-tooltip{pointer-events:none;position:absolute;max-width:300px;font-size:12px;text-align:left;color:#fff;padding:8px 12px;background:#000;border-radius:2px;z-index:-222;top:0;opacity:0;white-space:break-spaces;word-break:break-word}.wf-tooltip *{color:#fff!important}.wf-tooltip:empty{display:none!important}.wf-tooltip.white{box-shadow:0 2px 8px #1c5bd159;color:#747576;background:#fff;text-align:left}.wf-tooltip.white b{color:#747576!important}.wf-tooltip.animate-top{animation:animate-top .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-right{animation:animate-right .3s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-bottom{animation:animate-bottom .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-left{animation:animate-left .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-left.white:after{border-color:transparent transparent transparent #f1f1f1}.wf-tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #000000}.wf-tooltip-right.white:after{border-color:transparent #f1f1f1 transparent transparent}.wf-tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent #000000 transparent transparent}.wf-tooltip-bottom-right:after{bottom:100%;left:100%;margin-left:-20px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-right.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-bottom-left:after{bottom:100%;left:0;margin-left:10px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-left.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-top-left:after{top:100%;left:0;margin-left:10px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-left.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-top-right:after{top:100%;left:100%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-right.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip:after{content:\"\";position:absolute;border-style:solid}.wf-tooltip span.within{font-size:80%;display:block;width:100%}.wf-tooltip .small{display:block;font-size:10px}.wf-tooltip .within-box{background:#f1f1f1;border-radius:2px;color:#042e7d!important;font-size:9px;font-weight:500;text-transform:uppercase;padding:0 2px;margin-right:2px}.wf-tooltip-show{pointer-events:none;opacity:1;z-index:2147483001}\n"], dependencies: [{ kind: "directive", type: i14.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: i14.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i14.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i15.MarxEditorComponent, selector: "vcomply-editor", inputs: ["editorConfig"], outputs: ["comment", "sendSavedFiles", "popup"] }, { kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i16.CsRadioComponent, selector: "app-cs-radio", inputs: ["disabled", "readonly", "name", "checked", "value", "oneLine"], outputs: ["checkedEvent"] }, { kind: "component", type: i17.CsSwitchComponent, selector: "app-cs-switch", inputs: ["disabled", "ngValue", "value", "tooltipMessage", "position"], outputs: ["ngValueChange"] }, { kind: "directive", type: i18.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i19.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i20.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "directive", type: i14.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i21.CsSelectComponent, selector: "cs-select", inputs: ["dropdownLabel", "dropdownSubLabel", "isRequired", "placeholder", "setMaxWidth"], outputs: ["valueChanged"] }, { kind: "component", type: i22.CsOptionComponent, selector: "cs-option", inputs: ["value", "color", "backgroundColor", "optionTooltip"] }, { kind: "component", type: i23.DatePickerComponent, selector: "dp-date-picker", inputs: ["config", "mode", "placeholder", "disabled", "displayDate", "theme", "minDate", "maxDate", "minTime", "maxTime"], outputs: ["open", "close", "onChange", "onGoToCurrent", "onLeftNav", "onRightNav", "onSelect"] }, { kind: "component", type: i24.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i25.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: i26.ResponsibilityCentersListComponent, selector: "app-responsibility-centers-list", inputs: ["responsibilityCentersList", "selectedResponsibilityCenters", "rcIdKey", "radioSelection", "pluralText", "singularText", "loaded"], outputs: ["saveSelectedList", "closeRcList"] }, { kind: "component", type: i27.GroupUsersListComponent, selector: "app-group-users-list", inputs: ["groupsEnabled", "usersList", "groupsList", "selectedUsers", "userIdKey", "groupIdKey", "openedFrom", "selectedGroups", "assigneeGroupsList", "disabledId", "fromResponsibility", "reviewerIds", "overseerIds", "assignorId", "loader", "isDisabledSelected"], outputs: ["saveSelectedList", "closeUsersList"] }, { kind: "component", type: i28.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: i29.UserRadioListComponent, selector: "app-users-radio-list", inputs: ["usersList", "selectedUsers", "userIdKey", "itemNameKey", "itemEmailKey", "disabledId", "fromResponsibility", "reviewerIds", "overseerIds", "assignorId", "headerText", "loaded"], outputs: ["saveSelectedList", "closeUsersList"] }, { kind: "component", type: i30.FrequencyContainerComponent, selector: "app-frequency-container", inputs: ["frequencyDetails", "mode", "feature", "pageType"], outputs: ["selectedFrequency", "closeFrequency"] }, { kind: "component", type: i31.CheckpointsPolicyContainerComponent, selector: "app-checkpoints-policy-container", inputs: ["requiredPoint", "checkpointData"], outputs: ["closeCheckPoint", "saveCheckPoint"] }, { kind: "component", type: i32.CheckboxListComponent, selector: "app-checkbox-list", inputs: ["itemsList", "selectedItems", "identifierKey", "displayKey", "tooltipKey", "config", "twoColumn", "loaded"], outputs: ["closeList", "saveList"] }, { kind: "component", type: i33.FormatAndEvidenceComponent, selector: "app-format-and-evidence", inputs: ["mode", "categories", "organization_id", "formatEvidanceData"], outputs: ["updateFiles"] }, { kind: "directive", type: i34.ScrollInViewDirective, selector: "[appScrollInView]", inputs: ["appScrollInView"] }, { kind: "component", type: i35.DocumentSectionComponent, selector: "lib-document-section", inputs: ["policyId", "policyName", "organization_id", "member_obj_id", "userInfo"], outputs: ["disconnectRefresh", "editPolicy"] }, { kind: "component", type: i36.AssessmentListComponent, selector: "app-assessment-list", inputs: ["isEdit", "mode", "selectedAssessment", "selectedAssessmentData", "program_ids"], outputs: ["onAssessmentSelect", "cancelAssessment"] }, { kind: "component", type: i37.ApprovalWorkflowComponent, selector: "app-approval-workflow", inputs: ["approverWorkFlowList", "allApprovers", "selectedCategory", "editApprovalWorkflow", "createApprovalClick", "editWorkflowLevel"], outputs: ["selectedWorkflowNext", "listCancelClicked", "saveApprovalWorkflow", "closeCreateClicked"] }, { kind: "component", type: i38.PolicyAccessComponent, selector: "app-policy-access", inputs: ["policyAccessType", "SelectedCategory", "orgUsersList", "groupList", "selectedUsers", "selectedGroups", "disabledIds", "usersAccessList", "groupsAccessList", "disabledGroupIds", "futureUsersWillSelect"], outputs: ["close", "saveCheckPoint", "setPolicyAccessType"] }, { kind: "component", type: i39.LinkProgramComponent, selector: "vc-link-program", inputs: ["policy", "currentTab", "mode", "programsList", "selectedProgram", "selectedCategories", "selectedLinkProgram", "hideProgramsList"], outputs: ["changeTab", "updatedProgramDetails", "save", "close", "refreshLinkedPolicies"] }, { kind: "pipe", type: i8.SlicePipe, name: "slice" }, { kind: "pipe", type: i8.DatePipe, name: "date" }] }); }
|
|
1916
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: WorkflowPolicyComponent, selector: "app-workflow-policy", inputs: { mode: "mode", policyId: "policyId", feature: "feature", convertFileData: "convertFileData", selectedCategory: "selectedCategory", isSendForAttestation: "isSendForAttestation" }, outputs: { pickerChanged: "pickerChanged", showConfirmationAlert: "showConfirmationAlert", populateOption: "populateOption", disconnectRefresh: "disconnectRefresh", shiftToEditMode: "shiftToEditMode" }, host: { listeners: { "document:click": "documentClick($event)" } }, viewQueries: [{ propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }, { propertyName: "formatEvidence", first: true, predicate: ["formatEvidence"], descendants: true }, { propertyName: "datePickerPopUp", first: true, predicate: ["datePicker"], descendants: true, read: ElementRef }], ngImport: i0, template: "<!-- <p>workflow-policy works!</p> -->\r\n\r\n<ng-container *ngIf=\"!showCreateDocuments\">\r\n <div class=\"workflow-policy\">\r\n <!-- Policy Name -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm?.policyName\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n alt=\"name\"\r\n *ngIf=\"!policyForm?.policyName || activeSelector === 'name'\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.policyName && 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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 Policy Name <span class=\"required\">*</span>\r\n </label>\r\n <input\r\n type=\"text\"\r\n (keydown)=\"activeSelector = 'name'\"\r\n (focusin)=\"activateSelector('name', true)\"\r\n *ngIf=\"policyForm.policyName == '' || activeSelector === 'name'\"\r\n (focusout)=\"activateSelector('name', false)\"\r\n [ngModel]=\"policyForm.policyName\"\r\n (ngModelChange)=\"policyForm.policyName = changeName($event)\"\r\n placeholder=\"Name this policy\"\r\n />\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm.policyName.length && activeSelector !== 'name'\"\r\n >\r\n <div class=\"chip-container\">\r\n <span class=\"value\">{{ policyForm.policyName }}</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\"></i> Edit\r\n </button>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"submitted && !policyForm.policyName.trim()\"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Please enter a name for this policy.\r\n </p>\r\n <vcomply-editor\r\n [(ngModel)]=\"policyForm.policyNotes\"\r\n [editorConfig]=\"description\"\r\n ></vcomply-editor>\r\n <!-- <app-cs-switch\r\n [(ngValue)]=\"policyForm.availableOnPortal\"\r\n (ngValueChange)=\"availabilityOnPortal($event)\"\r\n >\r\n Do you want this policy to be available on the portal?\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'The policies that you intend to make accessible to the entire organization can be added to the policy portal. It is like a shared catalog of all active & updated policies that any logged in user can read/download for reference.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </app-cs-switch>\r\n <app-cs-switch\r\n *ngIf=\"policyForm.availableOnPortal\"\r\n [(ngValue)]=\"policyForm.acceptSuggestions\"\r\n >\r\n Accept suggestions\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'If enabled, users can provide improvement suggestions to the policies that are listed on the Policy Portal.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Policy 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\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedCategories?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedCategories?.length == 0 ||\r\n 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 *ngIf=\"\r\n policyForm?.selectedCategories?.length > 0 &&\r\n activeSelector !== 'category'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 >Policy Category <span class=\"required\">*</span>\r\n </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"policyForm?.selectedCategories?.length == 0\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('category', true)\"\r\n placeholder=\"Select a category for this policy.\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm?.selectedCategories?.length > 0\"\r\n >\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=\"\r\n let category of policyForm?.selectedCategories?.slice(0, 1)\r\n \"\r\n >\r\n <i\r\n (click)=\"remove('category', category)\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"category.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ category.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 *ngIf=\"policyForm?.selectedCategories?.length > 1\"\r\n type=\"button\"\r\n appPopover\r\n (click)=\"category.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{ policyForm?.selectedCategories?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" [class.more-one]=\"policyForm?.selectedCategories?.length>1\"\r\n [class.plus]=\"policyForm?.selectedCategories?.length>2\">\r\n <span class=\"chip\" *ngFor=\"let category of policyForm?.selectedCategories?.slice(0,2)\"><i\r\n class=\"icons\" (click)=\"remove('category',category)\"></i>\r\n {{category.item_name}}</span>\r\n <button class=\"count\" *ngIf=\"policyForm?.selectedCategories?.length > 2\" type=\"button\"\r\n appPopover (click)=\"category.popover()\" placement=\"right\">+\r\n {{policyForm?.selectedCategories?.slice(2).length}}</button>\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\"></i> Edit\r\n </button>\r\n </div>\r\n <app-popover #category [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let category of policyForm?.selectedCategories | 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('category', category)\"\r\n ></i\r\n >\r\n {{ category.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <p\r\n *ngIf=\"submitted && policyForm?.selectedCategories?.length == 0\"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Please select the category for this policy.\r\n </p>\r\n </div>\r\n\r\n <div class=\"vx-form-group\" *ngIf=\"policyForm?.customTags?.length > 0\">\r\n <ng-container *ngFor=\"let tag of policyForm?.customTags\">\r\n <label class=\"vx-control-panel vx-mt-2\">{{ tag.tagname }}</label>\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"tag.value\"\r\n placeholder=\"{{ tag.tagname }}\"\r\n />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Effective Date -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <img\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 *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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Effective Date</label>\r\n <div class=\"date-time-picker\">\r\n <div class=\"picker-group\">\r\n <input\r\n type=\"text\"\r\n readonly\r\n placeholder=\"Select the effective date of the policy.\"\r\n [value]=\"policyForm.policyDueDate | date : 'dd MMM yyyy'\"\r\n (click)=\"openDatePicker()\"\r\n id=\"effective-date\"\r\n />\r\n <i class=\"icons\"></i>\r\n <dp-date-picker\r\n #datePicker\r\n (onSelect)=\"datePickerOverlay = false; closeDatePicker($event)\"\r\n [config]=\"dateConfig\"\r\n [(ngModel)]=\"policyForm.policyDueDate\"\r\n >\r\n </dp-date-picker>\r\n <div\r\n class=\"vx-overlay\"\r\n (click)=\"closeDatePicker($event)\"\r\n *ngIf=\"datePickerOverlay\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Policy Owner -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'owners'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'owners' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm.policy_owners?.length\">\r\n <img\r\n *ngIf=\"!policyForm.policy_owners?.length\"\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=\"policyForm.policy_owners?.length\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <label class=\"vx-control-panel\">POLICY OWNER(S)</label>\r\n </div>\r\n <div\r\n *ngIf=\"!policyForm.policy_owners?.length\"\r\n (click)=\"activateSelector('owners', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"!policyForm?.selectedCategories?.length\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select owners for this policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"policyForm.policy_owners?.length\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div class=\"vx-d-flex vx-align-center\">\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 (click)=\"remove('owners', policyForm?.policy_owners[0], 0)\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.policy_owners[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.policy_owners[0]?.member_name }}</span\r\n >\r\n\r\n <button\r\n *ngIf=\"policyForm?.policy_owners?.length > 1\"\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)=\"policyUserPopover.popover()\"\r\n placement=\"left\"\r\n >\r\n + {{ policyForm?.policy_owners.length - 1 }}\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"false\"\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-1 vx-mr-1\"\r\n >\r\n &\r\n </div>\r\n <div\r\n *ngIf=\"false\"\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"'Samantha Jones'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >Samantha Jones</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)=\"policyGroupPopover.popover()\"\r\n placement=\"right\"\r\n >\r\n +4\r\n </button>\r\n </div>\r\n <app-popover #policyUserPopover [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 policyForm?.policy_owners | slice : 1;\r\n let i = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\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 >\r\n <i\r\n (click)=\"remove('owners', owner, i + 1)\"\r\n class=\"icons\"\r\n ></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 #policyGroupPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of [1, 1, 1, 1, 1, 1, 1]\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"'Harshvardhan Kariwala'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i class=\"icons\"></i>\r\n Harshvardhan Kariwala\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n <button\r\n (click)=\"activateSelector('owners', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && !policyForm?.policy_owners?.length\"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Select owners for this policy.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Review -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"\r\n activeSelector === 'reviewer' || activeSelector === 'reviewerFrequency'\r\n \"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewer' &&\r\n activeSelector !== 'reviewerFrequency' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm?.addReviewers\">\r\n <img\r\n *ngIf=\"!policyForm?.addReviewers\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/reviewer.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.addReviewers\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">REVIEW</label>\r\n <div\r\n class=\"reviewSelection vx-p-3 vx-pb-0\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"vx-fs-13 vx-paragraph-txt vx-mb-1\">\r\n Does this policy need to be reviewed?\r\n </div>\r\n <app-cs-radio\r\n name=\"review-type\"\r\n [checked]=\"policyForm?.addReviewers\"\r\n (checkedEvent)=\"typeSelected(true)\"\r\n ><div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-mr-3\">\r\n YES\r\n </div></app-cs-radio\r\n >\r\n <app-cs-radio\r\n name=\"review-type\"\r\n [checked]=\"!policyForm?.addReviewers\"\r\n (checkedEvent)=\"typeSelected(false)\"\r\n ><div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-mr-3\">\r\n NO\r\n </div></app-cs-radio\r\n >\r\n </div>\r\n\r\n <ng-container *ngIf=\"policyForm?.addReviewers\">\r\n <label class=\"vx-control-panel vx-mt-2\">REVIEWER</label>\r\n <div\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n *ngIf=\"policyForm?.selectedReviewers?.length == 0\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n [class.active]=\"activeSelector === 'reviewer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewer' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n (click)=\"activateSelector('reviewer', true)\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the person responsible for reviewing this policy\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n *ngIf=\"policyForm?.selectedReviewers?.length > 0\"\r\n [class.active]=\"activeSelector === 'reviewer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewer' &&\r\n sideSelectorElements.includes(activeSelector)\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 *ngFor=\"let reviewer of policyForm?.selectedReviewers\"\r\n >\r\n <i\r\n (click)=\"remove('reviewer', reviewer)\"\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"'Samantha Jones'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{ reviewer?.member_name }}</span\r\n >\r\n </div>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n *ngIf=\"activeSelector !== 'reviewer'\"\r\n (click)=\"activateSelector('reviewer', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n <label class=\"vx-control-panel vx-mt-3\">REVIEW FREQUENCY</label>\r\n <div\r\n *ngIf=\"policyForm?.review_frequency_details == ''\"\r\n class=\"selectButton vx-pl-3 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n [class.active]=\"activeSelector === 'reviewerFrequency'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewerFrequency' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n >\r\n <div\r\n class=\"selectButtonPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n When does this policy needs to be reviewed?\r\n </div>\r\n <div\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n class=\"vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase\"\r\n >\r\n SET A FREQUENCY\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"policyForm?.review_frequency_details != ''\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewerFrequency' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n [class.active]=\"activeSelector === 'reviewerFrequency'\"\r\n >\r\n <div\r\n class=\"selectBoxText vx-fs-13 vx-paragraph-txt\"\r\n [appTooltip]=\"reviewerFrequencyPlaceholder\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{ reviewerFrequencyPlaceholder }}\r\n </div>\r\n <button\r\n *ngIf=\"activeSelector !== 'reviewerFrequency'\"\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n policyForm?.selectedReviewers?.length > 0 &&\r\n !policyForm?.review_frequency_details\r\n \"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select the review schedule for this policy.\r\n </p>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- New Approval Workflow -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'approvers'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'approvers' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedApprovers?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedApprovers?.length == 0 ||\r\n activeSelector === 'approvers'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.selectedApprovers?.length > 0 &&\r\n activeSelector !== 'approvers'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\" [class.disabled]=\"policyApprovalFlag !== 0\">\r\n <div class=\"vx-form-group\">\r\n <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <label class=\"vx-control-panel\"\r\n >APPROVAL <span class=\"required\">*</span></label\r\n >\r\n <button\r\n (click)=\"\r\n createApprovalWorkflow(); activateSelector('approvers', true)\r\n \"\r\n [class.disabled]=\"!policyForm?.selectedCategories?.length\"\r\n class=\"createNewBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0\"\r\n >\r\n CREATE A NEW APPROVAL WORKFLOW\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n selectedWorkflow?.length === 0 ||\r\n !selectedWorkflow[0]?.workflow_name\r\n \"\r\n (click)=\"\r\n clickApprovalWorkflow(true); activateSelector('approvers', true)\r\n \"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"!policyForm?.selectedCategories?.length\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select the approval workflow for this policy\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n selectedWorkflow?.length > 0 && selectedWorkflow[0]?.workflow_name\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-mb-2\"\r\n >\r\n <div\r\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mt-2 vx-mb-2\"\r\n >\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 (click)=\"removeWorkflow()\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"selectedWorkflow[0]?.workflow_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ selectedWorkflow[0]?.workflow_name }}</span\r\n >\r\n </div>\r\n <button\r\n (click)=\"editWorkflow(selectedWorkflow[0])\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"selectedWorkflow?.length > 0\">\r\n <div\r\n *ngFor=\"\r\n let approval of selectedWorkflow[0]?.approval_workflow;\r\n let approvalIndex = index\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\r\n >\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"level-left vx-d-flex vx-align-center\">\r\n <div class=\"vx-d-block\">\r\n <div\r\n class=\"level-name vx-fs-9 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-lh-3\"\r\n [appTooltip]=\"\r\n approval?.alias_name\r\n ? approval?.alias_name\r\n : approval?.level1\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{\r\n approval?.alias_name\r\n ? approval?.alias_name\r\n : approval?.level1\r\n }}\r\n </div>\r\n <div\r\n class=\"vx-fs-9 vx-fw-500 vx-label-txt vx-tt-uppercase vx-lh-3\"\r\n >\r\n {{\r\n approval?.type === \"ROUNDROBIN\"\r\n ? \"ROUND-ROBIN\"\r\n : approval?.type === \"ANYONE\"\r\n ? \"ANY ONE\"\r\n : approval?.type\r\n }}\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2 vx-ml-2\"\r\n >\r\n <!-- <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n > -->\r\n <div\r\n *ngIf=\"\r\n approval?.type?.toLowerCase() === 'sequential' &&\r\n approval?.approvers?.length < 2\r\n \"\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 {{ 1 == approval?.approvers?.length ? \"Final\" : 1 }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n approval?.approvers?.length > 1 &&\r\n approval?.type?.toLowerCase() === 'sequential'\r\n \"\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 1\r\n </div>\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"approval?.approvers[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ approval?.approvers[0]?.member_name }}</span\r\n >\r\n <button\r\n *ngIf=\"approval?.approvers?.length > 1\"\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)=\"workflowPopover.popover()\"\r\n placement=\"right\"\r\n >\r\n +{{ approval?.approvers?.length - 1 }}\r\n </button>\r\n </div>\r\n <app-popover #workflowPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let approver of approval?.approvers | slice : 1;\r\n let approvalIndex = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"approver?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <!-- <i class=\"icons\"></i> -->\r\n <span\r\n *ngIf=\"\r\n approval?.type?.toLowerCase() === 'sequential'\r\n \"\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 approvalIndex + 1 ===\r\n approval?.approvers?.length - 1\r\n ? \"Final\"\r\n : approvalIndex + 2\r\n }}</span\r\n >\r\n {{ approver?.member_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\r\n <!-- <div class=\"vx-d-flex vx-align-center\">\r\n <button (click)=\"editLevelClicked(approval,approvalIndex)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n <button (click)=\"deleteLevel(approvalIndex)\"\r\n class=\"deleteBtn vx-fs-11 vx-fw-600 vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-4 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> DELETE\r\n </button>\r\n </div> -->\r\n </div>\r\n </ng-container>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n !policyForm?.selectedApprovers[0]?.approval_workflow?.length &&\r\n !policyApprovalFlag &&\r\n !policyForm?.selectedApprovers[0]?.approvers?.length\r\n \"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Select or create an approval workflow for this policy.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Policy Access -->\r\n <div\r\n *ngIf=\"true\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'policyAccess'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'policyAccess' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"true\">\r\n <img\r\n *ngIf=\"\r\n !policyForm?.policy_access_owners?.length &&\r\n !policyForm?.policy_access_groups?.length &&\r\n !policyForm?.availableOnPortal\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/lock-scope.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.policy_access_owners?.length ||\r\n policyForm?.policy_access_groups?.length ||\r\n policyForm?.availableOnPortal\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <label class=\"vx-control-panel\">POLICY PORTAL ACCESS</label>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n !policyForm?.policy_access_owners?.length &&\r\n !policyForm?.policy_access_groups?.length &&\r\n !policyForm?.availableOnPortal\r\n \"\r\n (click)=\"activateSelector('policyAccess', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"!policyForm?.selectedCategories?.length\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Who should be able to view this policy?\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!policyForm?.availableOnPortal\">\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3\"\r\n *ngIf=\"\r\n policyForm?.policy_access_owners?.length ||\r\n policyForm?.policy_access_groups?.length\r\n \"\r\n >\r\n <div\r\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mt-2 vx-mb-2\"\r\n >\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div\r\n *ngIf=\"policyForm?.policy_access_owners?.length\"\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=\"policyForm?.policy_access_type === 1\"\r\n (click)=\"\r\n remove(\r\n 'policyAccess',\r\n policyForm?.policy_access_owners[0]\r\n )\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"\r\n policyForm?.policy_access_owners[0]?.employee_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{\r\n policyForm?.policy_access_owners[0]?.employee_name\r\n }}</span\r\n >\r\n <button\r\n *ngIf=\"policyForm?.policy_access_owners?.length > 1\"\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)=\"policyAccessPopover.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{ policyForm?.policy_access_owners.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n policyForm?.policy_access_owners.length > 0 &&\r\n policyForm?.policy_access_groups.length > 0\r\n \"\r\n >\r\n &\r\n </div>\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"policyForm?.policy_access_groups.length > 0\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"policyForm?.policy_access_type === 1\"\r\n (click)=\"\r\n remove(\r\n 'accessGroup',\r\n policyForm?.policy_access_groups[0]\r\n )\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"\r\n policyForm?.policy_access_groups[0]?.group_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{\r\n policyForm?.policy_access_groups[0]?.group_name\r\n }}</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)=\"accessGroup.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.policy_access_groups.length > 1\"\r\n >\r\n +{{ policyForm?.policy_access_groups.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <app-popover #policyAccessPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let user of policyForm?.policy_access_owners\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"user?.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons\"\r\n *ngIf=\"policyForm?.policy_access_type === 1\"\r\n (click)=\"remove('policyAccess', user)\"\r\n ></i\r\n >\r\n {{ user?.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #accessGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let data of policyForm?.policy_access_groups\r\n | 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\r\n class=\"icons\"\r\n *ngIf=\"policyForm?.policy_access_type === 1\"\r\n (click)=\"remove('accessGroup', data)\"\r\n ></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\r\n <button\r\n (click)=\"activateSelector('policyAccess', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"vx-mt-4 vx-mb-2\">\r\n <app-cs-radio\r\n [name]=\"'policyFormAccessType'\" [checked]=\"policyForm?.policy_access_type === 0\" (checkedEvent)=\"setAccessField(0)\"\r\n ><div class=\"vx-fs-12 vx-paragraph-txt\">\r\n Everyone who has access to this Policy Category\r\n </div></app-cs-radio\r\n >\r\n <app-cs-radio\r\n [name]=\"'policyFormAccessType'\" [checked]=\"policyForm?.policy_access_type === 1\" (checkedEvent)=\"setAccessField(1)\"\r\n class=\"vx-mt-1\"\r\n ><div class=\"vx-fs-12 vx-paragraph-txt\">\r\n Select users/groups\r\n </div></app-cs-radio\r\n >\r\n </div> -->\r\n </div>\r\n </ng-container>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n *ngIf=\"policyForm?.availableOnPortal\"\r\n >\r\n <span class=\"vx-fs-13 vx-paragraph-txt\"\r\n >Visible to All Current & Future Users</span\r\n >\r\n\r\n <button\r\n (click)=\"activateSelector('policyAccess', true)\"\r\n class=\"edit vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <div class=\"vx-mt-2\">\r\n <app-cs-switch\r\n *ngIf=\"\r\n policyForm.availableOnPortal ||\r\n policyForm?.policy_access_owners?.length ||\r\n policyForm?.policy_access_groups?.length\r\n \"\r\n [(ngValue)]=\"policyForm.acceptSuggestions\"\r\n >ACCEPT SUGGESTIONS\r\n <i\r\n class=\"icons vx-fs-12 vx-txt-blue vx-ml-1 vx-mr-2\"\r\n [appTooltip]=\"\r\n 'If enabled, users can provide improvement suggestions to the policies that are listed on the Policy Portal.'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Attestations -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"false\"\r\n *ngIf=\"false\"\r\n >\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/attestations.svg\"\r\n alt=\"\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <label class=\"vx-control-panel\">ATTESTATIONS</label>\r\n </div>\r\n <div\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select the persons required to attest to this Policy\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"'Samantha Jones'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >Samantha Jones</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)=\"policyAttestationPopover.popover()\"\r\n placement=\"left\"\r\n >\r\n +4\r\n </button>\r\n </div>\r\n <app-popover #policyAttestationPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of [1, 1, 1, 1, 1, 1, 1]\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"'Harshvardhan Kariwala'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i class=\"icons\"></i>\r\n Harshvardhan Kariwala\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <div class=\"vx-mt-2\">\r\n <app-cs-switch\r\n >REQUIRES E-SIGNATURE FOR ATTESTATION\r\n <i\r\n class=\"icons vx-fs-12 vx-txt-blue vx-ml-1 vx-mr-2\"\r\n [appTooltip]=\"\r\n 'Requires e-signature for attestation info text here...'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch\r\n >\r\n </div>\r\n\r\n <label class=\"vx-control-panel vx-mt-2\">WHEN?</label>\r\n <div\r\n class=\"selectButton vx-pl-3 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"selectButtonPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n What is the attestation schedule for this<br />policy?\r\n </div>\r\n <div class=\"vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase\">\r\n SET A FREQUENCY\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div class=\"selectBoxText vx-fs-13 vx-paragraph-txt\">\r\n Every Wednesday by 11:59 pm\r\n </div>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <label class=\"vx-control-panel vx-mt-2\"\r\n >ASSESSMENT OF UNDERSTANDING</label\r\n >\r\n <div\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Set up a questionnaire to confirm the reader\u2019s<br />understanding\r\n of the policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-3 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <span class=\"chipName vx-fs-11 vx-label-txt\">5 Questions</span>\r\n </div>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Approval Workflow -->\r\n <div\r\n class=\"form-group-row\"\r\n *ngIf=\"false\"\r\n [class.active]=\"activeSelector === 'approvers'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'approvers' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedApprovers?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedApprovers?.length == 0 ||\r\n activeSelector === 'approvers'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.selectedApprovers?.length > 0 &&\r\n activeSelector !== 'approvers'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\r\n class=\"vx-form-group approval-workflow\"\r\n [class.disabled]=\"policyApprovalFlag !== 0\"\r\n >\r\n <label class=\"vx-control-panel\">\r\n Approval workflow <span class=\"required\">*</span>\r\n <button\r\n (click)=\"\r\n activateSelector('approvers', true);\r\n addMoreLevels = true;\r\n workflowType = 'SEQUENTIAL'\r\n \"\r\n class=\"button\"\r\n >\r\n Create a new Approval Workflow\r\n </button>\r\n </label>\r\n <div\r\n class=\"select\"\r\n [class.disabled]=\"approverWorkFlowList?.length == 0\"\r\n *ngIf=\"\r\n policyForm?.selectedApprovers[0]?.approvers?.length == 0 ||\r\n policyForm?.selectedApprovers.length == 0\r\n \"\r\n >\r\n <cs-select\r\n [ngModel]=\"selectedApprovalWorkflow\"\r\n (ngModelChange)=\"selectedWorkflowChange($event)\"\r\n [placeholder]=\"'Select approval workflow for this policy'\"\r\n name=\"selectedApprovalWorkflow\"\r\n [setMaxWidth]=\"true\"\r\n >\r\n <cs-option\r\n *ngFor=\"let data of approverWorkFlowList\"\r\n [value]=\"data\"\r\n >\r\n {{ data.workflow_name }}\r\n </cs-option>\r\n <cs-option\r\n [value]=\"-1\"\r\n (click)=\"\r\n activateSelector('approvers', true);\r\n addMoreLevels = true;\r\n workflowType = 'SEQUENTIAL'\r\n \"\r\n >Create a new approval workflow</cs-option\r\n >\r\n </cs-select>\r\n </div>\r\n <ng-container\r\n *ngIf=\"policyForm?.selectedApprovers[0]?.approvers?.length > 0\"\r\n >\r\n <div\r\n class=\"selected\"\r\n *ngFor=\"let level of policyForm?.selectedApprovers; let i = index\"\r\n >\r\n <div class=\"workflow-label\">\r\n <p class=\"title\">Level {{ i + 1 }}</p>\r\n <p class=\"description\">{{ level.name }}</p>\r\n </div>\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chip-container\">\r\n <span\r\n class=\"chip\"\r\n *ngFor=\"\r\n let approver of level.approvers.slice(0, 1);\r\n let j = index\r\n \"\r\n ><i class=\"icons\" (click)=\"remove('approvers', approver, i)\"\r\n ></i\r\n >\r\n <span class=\"step\" *ngIf=\"level.name == 'SEQUENTIAL'\">{{\r\n j + 1\r\n }}</span\r\n >{{ approver.member_name }}</span\r\n >\r\n\r\n <button\r\n class=\"count\"\r\n *ngIf=\"level.approvers?.length > 1\"\r\n type=\"button\"\r\n appPopover\r\n (click)=\"labelName.popover()\"\r\n placement=\"left\"\r\n >\r\n +\r\n\r\n {{ level.approvers.slice(1).length }}\r\n </button>\r\n <app-popover #labelName [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let approver of level.approvers | 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\r\n class=\"icons\"\r\n (click)=\"remove('approvers', approver, i)\"\r\n ></i\r\n >\r\n <span\r\n class=\"step\"\r\n *ngIf=\"level.name == 'SEQUENTIAL'\"\r\n >\r\n {{\r\n j == level.approvers.slice(1).length - 1\r\n ? \"Final\"\r\n : j + 2\r\n }}\r\n </span>\r\n {{ approver.member_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 <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"\r\n activateSelector('approvers', true, level.name);\r\n approversListIndex = i\r\n \"\r\n >\r\n <i class=\"icons\"></i>Edit\r\n </button>\r\n <button\r\n class=\"close-btn\"\r\n (click)=\"remove('workflowLevel', level, i)\"\r\n >\r\n <i class=\"icons\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n !policyForm?.selectedApprovers?.length &&\r\n !policyApprovalFlag\r\n \"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Select or create an approval workflow for this policy.\r\n </p>\r\n\r\n <label\r\n class=\"vx-control-panel\"\r\n *ngIf=\"policyForm.selectedApprovers[0]?.approvers?.length > 0\"\r\n ><button\r\n class=\"button\"\r\n (click)=\"\r\n activateSelector('approvers', true);\r\n addMoreLevels = true;\r\n workflowType = 'SEQUENTIAL'\r\n \"\r\n >\r\n + Add More Levels\r\n </button></label\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Who / now Attestation -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'assignees'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'assignees' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedAssignees?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedAssignees?.length == 0 ||\r\n activeSelector === 'assignees'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.selectedAssignees?.length > 0 &&\r\n activeSelector !== 'assignees'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Attestation</label>\r\n <div\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center vx-mb-2\"\r\n *ngIf=\"\r\n (policyForm?.selectedAssignees?.length == 0 && !groupEnabled) ||\r\n (policyForm?.selectedAssignees?.length == 0 &&\r\n groupEnabled &&\r\n policyForm?.selectedGroupAssignee.length == 0)\r\n \"\r\n (click)=\"activateSelector('assignees', true)\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select the persons responsible for attesting this policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\r\n *ngIf=\"\r\n policyForm?.selectedAssignees?.length > 0 ||\r\n policyForm?.selectedGroupAssignee?.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=\"!groupEnabled\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let assignee of policyForm?.selectedAssignees?.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('assignees', assignee)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"assignee.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ assignee.employee_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 greenBg\"\r\n appPopover\r\n (click)=\"assigneePopover.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"policyForm?.selectedAssignees?.length > 1\"\r\n >\r\n +{{ policyForm?.selectedAssignees?.slice(1).length }}\r\n </button>\r\n </div>\r\n <ng-container *ngIf=\"groupEnabled\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"groupEnabled && policyForm?.selectedAssignees.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('assignees', policyForm?.selectedAssignees[0])\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.selectedAssignees[0]?.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.selectedAssignees[0]?.employee_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)=\"UserPopover.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.selectedAssignees.length > 1\"\r\n >\r\n +{{ policyForm?.selectedAssignees.length - 1 }}\r\n </button>\r\n </div>\r\n <div\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n policyForm?.selectedAssignees.length > 0 &&\r\n policyForm?.selectedGroupAssignee.length > 0\r\n \"\r\n >\r\n &\r\n </div>\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"policyForm?.selectedGroupAssignee.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(\r\n 'groupAssignees',\r\n policyForm?.selectedGroupAssignee[0]\r\n )\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"\r\n policyForm?.selectedGroupAssignee[0]?.group_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.selectedGroupAssignee[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=\"policyForm?.selectedGroupAssignee.length > 1\"\r\n >\r\n +{{ policyForm?.selectedGroupAssignee.length - 1 }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('assignees', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n ((policyForm?.selectedAssignees?.length == 0 &&\r\n policyForm?.frequency_details &&\r\n !groupEnabled) ||\r\n (policyForm?.selectedAssignees?.length == 0 &&\r\n policyForm.selectedGroupAssignee.length == 0 &&\r\n policyForm?.frequency_details &&\r\n groupEnabled) ||\r\n (isSendForAttestation &&\r\n policyForm?.selectedAssignees?.length === 0))\r\n \"\r\n id=\"whovalidatemsg\"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select the persons required to attest to this Policy.\r\n </p>\r\n <app-cs-switch\r\n [(ngValue)]=\"policyForm.requiresSignatureForAttestation\"\r\n [class.disabled]=\"policyForm?.selectedAssignees?.length == 0\"\r\n class=\"who-toggle\"\r\n >THIS POLICY REQUIRES E-SIGNATURE FOR ATTESTATION\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'If selected, the readers will be required to attest this policy using their electronic signature.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch\r\n >\r\n <app-popover #assigneePopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let assignee of policyForm?.selectedAssignees | 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('assignees', assignee)\"\r\n ></i\r\n >\r\n {{ assignee.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #UserPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let assignee of policyForm?.selectedAssignees | 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('assignees', assignee)\"\r\n ></i\r\n >\r\n {{ assignee.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\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\r\n *ngFor=\"\r\n let data of policyForm?.selectedGroupAssignee | 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('groupAssignees', data)\"\r\n ></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\r\n <!-- overseer -->\r\n <app-popover #overseerPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let overseer of policyForm?.CCEmail | 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('ccEmail', overseer)\"\r\n ></i\r\n >\r\n {{ overseer?.employee_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\r\n *ngFor=\"\r\n let data of policyForm?.CCGroupEmail | 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('ccGroupEmail', data)\"\r\n ></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 <!-- overseer end -->\r\n\r\n <!-- overseer fail start -->\r\n <app-popover #overseerFailPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let overseer of policyForm?.CCFailEmail | 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('ccFail', overseer)\"\r\n ></i\r\n >\r\n {{ overseer?.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerFailGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let data of policyForm?.CCFailEmailGroup | 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\r\n class=\"icons\"\r\n (click)=\"remove('ccGroupFailEmail', data)\"\r\n ></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 <!-- overseer fail end -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- When -->\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 >\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">When?</label>\r\n\r\n <div\r\n *ngIf=\"policyForm?.frequency_details == ''\"\r\n class=\"select button-sec\"\r\n >\r\n <div\r\n class=\"custom-input frequency-custom-input\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n {{ frequencyPlaceholder }}\r\n </div>\r\n\r\n <button (click)=\"activateSelector('frequency', true)\" type=\"button\">\r\n Set A frequency\r\n </button>\r\n </div>\r\n <!-- <div\r\n *ngIf=\"policyForm?.frequency_details != ''\"\r\n class=\"selected button-sec\"\r\n > -->\r\n <div\r\n *ngIf=\"policyForm?.frequency_details != ''\"\r\n class=\"selected button-sec selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\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 (click)=\"remove('frequency', rc)\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\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 </div>\r\n <button\r\n *ngIf=\"activeSelector !== 'frequency'\"\r\n type=\"button\"\r\n class=\"edit\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons\"></i>Edit\r\n </button>\r\n <!-- </div>\r\n <span class=\"chip\">{{ frequencyPlaceholder }}</span>\r\n <button\r\n *ngIf=\"activeSelector !== 'frequency'\"\r\n type=\"button\"\r\n class=\"edit\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons\"></i>Edit\r\n </button> -->\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n ((policyForm?.selectedAssignees?.length > 0 &&\r\n !policyForm?.frequency_details &&\r\n !groupEnabled) ||\r\n ((policyForm?.selectedAssignees?.length > 0 ||\r\n policyForm?.selectedGroupAssignee?.length > 0) &&\r\n !policyForm?.frequency_details &&\r\n groupEnabled))\r\n \"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select an attestation schedule for this policy.\r\n </p>\r\n\r\n <!-- <label class=\"vx-control-panel\">Effective Date</label>\r\n <div class=\"date-time-picker\">\r\n <div class=\"picker-group\">\r\n <input type=\"text\" readonly placeholder=\"Select the date from which this policy goes into effect.\"\r\n [value]=\"policyForm.policyDueDate | date: 'dd MMM yyyy'\" (click)=\"openDatePicker();\">\r\n <i class=\"icons\"></i>\r\n <dp-date-picker #datePicker (onSelect)=\"datePickerOverlay = false;closeDatePicker($event)\"\r\n [config]=\"dateConfig\" [(ngModel)]=\"policyForm.policyDueDate\">\r\n </dp-date-picker>\r\n <div class=\"vx-overlay\" (click)=\"closeDatePicker($event)\" *ngIf=\"datePickerOverlay\"></div>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Checkpoints / Assessment of Understanding -->\r\n <div\r\n class=\"form-group-row\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"true\"\r\n [class.active]=\"activeSelector === 'checkpoints'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'checkpoints' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Assessment of Understanding\r\n <!-- <button *ngIf=\"policyForm?.checkpointDetails?.length===0\" class=\"button\" (click)=\"activateSelector('checkpoints',true)\">+ Add Checkpoints</button> -->\r\n </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"policyForm?.checkpointDetails?.length === 0\"\r\n (click)=\"activateSelector('checkpoints', true)\"\r\n >\r\n <!-- <input type=\"text\" placeholder=\"Set up a questionnaire to confirm the reader\u2019s understanding of the policy.\" readonly> -->\r\n <div class=\"custom-input\">\r\n Set up a questionnaire to confirm the reader\u2019s<br />understanding\r\n of the policy.\r\n </div>\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm?.checkpointDetails?.length > 0\"\r\n >\r\n <!-- <div class=\"chip-container\">\r\n <span class=\"chip\">{{policyForm?.checkpointDetails?.length + (policyForm?.checkpointDetails?.length > 1 ?' Checkpoints':' Checkpoint')}}</span>\r\n\r\n <span class=\"checkpoint-point-text first\">TOTAL POINTS: <span class=\"no\">{{policyForm?.totalQuestion}}</span><br><em>Each question carries 1 point</em></span>\r\n\r\n <span class=\"checkpoint-point-text\">POINTS REQUIRED TO ATTEST : <span class=\"no\">{{policyForm?.passingMarks}}</span></span>\r\n\r\n </div> -->\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('checkpoints', policyForm?.checkpointDetails)\"\r\n ></i\r\n >\r\n <span class=\"chipName vx-fs-11 vx-label-txt\">{{\r\n policyForm?.checkpointDetails?.length +\r\n (policyForm?.checkpointDetails?.length > 1\r\n ? \" Questions\"\r\n : \" Question\")\r\n }}</span>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('checkpoints', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <!-- <app-popover #checkpointPopOver [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let checkpoint of policyForm?.checkpointDetails | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('checkpoints',checkpoint,j+1)\"></i>\r\n {{ checkpoint?.question }}\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 Classification -->\r\n <div\r\n class=\"form-group-row\"\r\n *ngIf=\"showRiskClassification && false\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm.riskRating\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/risks.svg\"\r\n alt=\"im\"\r\n *ngIf=\"!policyForm?.riskRating\"\r\n />\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n *ngIf=\"policyForm?.riskRating\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Risk Classification</label>\r\n <div class=\"classification\">\r\n <label\r\n class=\"low\"\r\n *ngFor=\"let class of riskClassification\"\r\n [ngClass]=\"[class.class]\"\r\n >\r\n <input\r\n type=\"radio\"\r\n name=\"classification\"\r\n [value]=\"class.value\"\r\n [checked]=\"policyForm?.riskRating === class.value\"\r\n [(ngModel)]=\"policyForm.riskRating\"\r\n />\r\n <span>{{ class.name }}</span>\r\n </label>\r\n </div>\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 [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"policyForm.addResponsibilityCenters\"\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 class=\"left\" [class.checked]=\"policyForm?.selectedRCs?.length > 0\">\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedRCs?.length == 0 || 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=\"policyForm?.selectedRCs?.length > 0 && activeSelector !== 'rc'\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Responsibility Center</label>\r\n <div class=\"select\" *ngIf=\"policyForm?.selectedRCs?.length == 0\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('rc', true)\"\r\n placeholder=\"Select Responsibility Center(s) that this policy relates to.\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div class=\"selected\" *ngIf=\"policyForm?.selectedRCs?.length > 0\">\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 rc of policyForm?.selectedRCs?.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('rc', rc)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"rc.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rc.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)=\"rcPopover.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"policyForm?.selectedRCs?.length > 1\"\r\n >\r\n +{{ policyForm?.selectedRCs?.slice(1).length }}\r\n </button>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('rc', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <app-popover #rcPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rc of policyForm?.selectedRCs | 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', rc)\"></i>\r\n {{ rc.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 <!-- Version -->\r\n <div\r\n *ngIf=\"policyForm.addVersion\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm.policy_version\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/associated-risks.svg\"\r\n alt=\"name\"\r\n *ngIf=\"!policyForm.policy_version\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm.policy_version\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">VERSION</label>\r\n <input\r\n [(ngModel)]=\"policyForm.policy_version\"\r\n (change)=\"onVersion($event)\"\r\n type=\"text\"\r\n placeholder=\"Specify the policy version.\"\r\n />\r\n <p\r\n *ngIf=\"!isVersionValid\"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n {{ versionErrorMessage }}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Reviewer -->\r\n <div\r\n class=\"form-group-row\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"policyForm.addReviewers && false\"\r\n [class.active]=\"activeSelector === 'reviewer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewer' &&\r\n activeSelector !== 'reviewerFrequency' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedReviewers?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedReviewers?.length == 0 ||\r\n activeSelector === 'reviewer'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/reviewer.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.selectedReviewers?.length > 0 &&\r\n activeSelector !== 'reviewer'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Reviewer </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"policyForm?.selectedReviewers?.length == 0\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('reviewer', true)\"\r\n placeholder=\"Select the person responsible for reviewing this policy\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm?.selectedReviewers?.length > 0\"\r\n >\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 reviewer of policyForm?.selectedReviewers\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('reviewer', reviewer)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"reviewer.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ reviewer.member_name }}</span\r\n >\r\n </ng-container>\r\n </div>\r\n\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('reviewer', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n policyForm?.selectedReviewers?.length == 0 &&\r\n policyForm?.review_frequency_details\r\n \"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select a reviewer for this policy.\r\n </p>\r\n\r\n <label class=\"vx-control-panel\">When? </label>\r\n\r\n <div\r\n *ngIf=\"policyForm?.review_frequency_details == ''\"\r\n class=\"select button-sec\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n [placeholder]=\"reviewerFrequencyPlaceholder\"\r\n readonly\r\n />\r\n <button\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n type=\"button\"\r\n >\r\n Set A frequency\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"policyForm?.review_frequency_details != ''\"\r\n class=\"selected button-sec\"\r\n >\r\n <span class=\"chip\">{{ reviewerFrequencyPlaceholder }}</span>\r\n <button\r\n *ngIf=\"activeSelector !== 'reviewerFrequency'\"\r\n type=\"button\"\r\n class=\"edit\"\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n >\r\n <i class=\"icons\"></i>Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n policyForm?.selectedReviewers?.length > 0 &&\r\n !policyForm?.review_frequency_details\r\n \"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select the review schedule for this policy.\r\n </p>\r\n\r\n <app-format-and-evidence\r\n (updateFiles)=\"saveSelectedList('reviewer_attachments', $event)\"\r\n #formatEvidence\r\n [mode]=\"'policyReviewer'\"\r\n [organization_id]=\"organization_id\"\r\n [formatEvidanceData]=\"policyForm?.documentsAndLinks\"\r\n >\r\n </app-format-and-evidence>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Overseer -->\r\n <div\r\n class=\"form-group-row\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"policyForm.addOverseers\"\r\n [class.active]=\"\r\n activeSelector === 'ccEmail' || activeSelector === 'ccFail'\r\n \"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'ccEmail' &&\r\n activeSelector !== 'ccFail' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"\r\n policyForm?.CCEmail?.length > 0 || policyForm?.CCFailEmail?.length > 0\r\n \"\r\n >\r\n <img\r\n *ngIf=\"\r\n (policyForm?.CCFailEmail?.length == 0 &&\r\n policyForm?.CCEmail?.length == 0) ||\r\n activeSelector === 'ccEmail' ||\r\n activeSelector === 'ccFail'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n (policyForm?.CCFailEmail?.length > 0 ||\r\n policyForm?.CCEmail?.length > 0) &&\r\n activeSelector !== 'ccEmail' &&\r\n activeSelector !== 'ccFail'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Oversight</label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"\r\n policyForm?.CCEmail?.length == 0 &&\r\n policyForm?.CCGroupEmail.length == 0\r\n \"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('ccEmail', true)\"\r\n placeholder=\"Who should have oversight of this policy?\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n policyForm?.CCEmail?.length > 0 ||\r\n policyForm?.CCGroupEmail.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=\"!groupEnabled\"\r\n >\r\n <ng-container\r\n *ngFor=\"let ccEmail of policyForm?.CCEmail?.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('ccEmail', ccEmail)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"ccEmail.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ ccEmail.employee_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 greenBg\"\r\n appPopover\r\n (click)=\"ccEmailPopover.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"policyForm?.CCEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCEmail?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"groupEnabled\" class=\"chip-container\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"groupEnabled && policyForm?.CCEmail?.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('ccEmail', policyForm?.CCEmail[0])\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.CCEmail[0].employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.CCEmail[0].employee_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)=\"overseerPopover.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.CCEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCEmail?.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n policyForm?.CCEmail.length > 0 &&\r\n policyForm?.CCGroupEmail?.length > 0\r\n \"\r\n >\r\n &\r\n </div>\r\n\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"policyForm?.CCGroupEmail.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('ccGroupEmail', policyForm?.CCGroupEmail[0])\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.CCGroupEmail[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.CCGroupEmail[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=\"policyForm?.CCGroupEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCGroupEmail?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('ccEmail', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"select\"\r\n *ngIf=\"\r\n policyForm?.CCFailEmail?.length == 0 &&\r\n policyForm?.CCFailEmailGroup?.length == 0\r\n \"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('ccFail', true)\"\r\n placeholder=\"Who should be notified if the policy is not attested on time?\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n policyForm?.CCFailEmail?.length > 0 ||\r\n policyForm?.CCFailEmailGroup?.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=\"!groupEnabled\"\r\n >\r\n <ng-container\r\n *ngFor=\"let ccFail of policyForm?.CCFailEmail?.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('ccFail', ccFail)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"ccFail.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ ccFail.employee_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 greenBg\"\r\n appPopover\r\n (click)=\"ccFailPopover.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.CCFailEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCFailEmail?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"groupEnabled\" class=\"chip-container\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"groupEnabled && policyForm?.CCFailEmail.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('ccFail', policyForm?.CCFailEmail[0])\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.CCFailEmail[0]?.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.CCFailEmail[0]?.employee_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)=\"overseerFailPopover.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.CCFailEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCFailEmail?.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n policyForm?.CCFailEmail?.length > 0 &&\r\n policyForm?.CCFailEmailGroup?.length > 0\r\n \"\r\n >\r\n &\r\n </div>\r\n\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"policyForm?.CCFailEmailGroup?.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('ccGroupFailEmail', policyForm?.CCFailEmailGroup[0])\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.CCFailEmailGroup[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.CCFailEmailGroup[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)=\"overseerFailGroup.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.CCFailEmailGroup?.length > 1\"\r\n >\r\n +{{ policyForm?.CCFailEmailGroup?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('ccFail', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <app-popover #ccEmailPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let ccEmail of policyForm?.CCEmail | 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('ccEmail', ccEmail)\"\r\n ></i\r\n >\r\n {{ ccEmail.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #ccFailPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let ccFail of policyForm?.CCFailEmail | 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('ccFail', ccFail)\"\r\n ></i\r\n >\r\n {{ ccFail.employee_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 <!-- Related Documents -->\r\n <div\r\n class=\"form-group-row\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"policyForm.addAssociatedDocuments\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"left\">\r\n <img\r\n *ngIf=\"policyForm.associatedDocuments.formatFiles?.length == 0\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/format-evidence.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm.associatedDocuments.formatFiles?.length > 0\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">RELATED DOCUMENTS</label>\r\n <app-format-and-evidence\r\n (updateFiles)=\"saveSelectedList('associatedDocuments', $event)\"\r\n [mode]=\"'policy'\"\r\n [organization_id]=\"organization_id\"\r\n [formatEvidanceData]=\"policyForm?.associatedDocuments\"\r\n ></app-format-and-evidence>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Link Programs & Responsibilities -->\r\n <div\r\n *ngIf=\"policyForm?.addLinkProgram\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'linkProgram'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'linkProgram' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"\r\n policyForm?.programSelectedValues?.program?.category_id\r\n \"\r\n >\r\n <img\r\n *ngIf=\"!policyForm?.programSelectedValues?.program?.category_id\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/link-items.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.programSelectedValues?.program?.category_id\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 >LINK PROGRAMS & RESPONSIBILITIES</label\r\n >\r\n <div\r\n *ngIf=\"!policyForm?.programSelectedValues?.program?.category_id\"\r\n (click)=\"activateSelector('linkProgram', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select Programs & responsibilities that are<br />associated with\r\n this policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n *ngIf=\"policyForm?.programSelectedValues?.program?.category_id\"\r\n >\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 (click)=\"\r\n remove('linkProgram', policyForm?.programSelectedValues)\r\n \"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.programSelectedValues?.program?.name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.programSelectedValues?.program?.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)=\"programResponsibilityPopover.popover()\"\r\n placement=\"left\"\r\n >\r\n +4\r\n </button> -->\r\n </div>\r\n <app-popover\r\n #programResponsibilityPopover\r\n [dontCloseonClick]=\"true\"\r\n >\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of [1, 1, 1, 1, 1, 1, 1]\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"\r\n 'Reporting information security weaknesses'\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i class=\"icons\"></i>\r\n Reporting information security weaknesses\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('linkProgram', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Link Assessment -->\r\n <div\r\n *ngIf=\"policyForm.addLinkAssessment\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'isAssessment'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'isAssessment' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm?.assessment?.length\">\r\n <img\r\n *ngIf=\"!policyForm?.assessment?.length\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/assessments.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.assessment?.length\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 ASSESSMENTS</label>\r\n <div\r\n *ngIf=\"policyForm?.assessment?.length === 0\"\r\n (click)=\"activateSelector('isAssessment', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select assessments that are associated with this<br />policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"policyForm?.assessment?.length > 0\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"\r\n policyForm.assessment[0]?.assessmentDetails?.assessment_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{\r\n policyForm.assessment[0]?.assessmentDetails?.assessment_name\r\n }}</span\r\n >\r\n </div>\r\n <app-popover\r\n #programResponsibilityPopover\r\n [dontCloseonClick]=\"true\"\r\n >\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"let assessment of policyForm.assessment | slice : 1\"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"\r\n assessment?.assessmentDetails?.assessment_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i class=\"icons\"></i>\r\n {{ assessment?.assessmentDetails?.assessment_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <button\r\n (click)=\"activateSelector('isAssessment', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Link Related Polices -->\r\n\r\n <div\r\n *ngIf=\"policyForm.addLinkPolicies\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === CONSTANTS.LINK_POLICY\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'isLinkedPolices' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm?.LinkedPolicies?.length\">\r\n <img\r\n *ngIf=\"!policyForm?.LinkedPolicies?.length\"\r\n [src]=\"LINKS.linkedPolicyImage\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.LinkedPolicies?.length\"\r\n class=\"checkIcon\"\r\n [xmlns]=\"LINKS.checked\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 POLICIES</label>\r\n <div\r\n *ngIf=\"policyForm?.LinkedPolicies?.length === 0\"\r\n (click)=\"activateSelector('isLinkedPolices', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select policies that are associated with this<br />policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm?.LinkedPolicies?.length > 0\"\r\n >\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=\"\r\n let policyName of policyForm?.LinkedPolicies?.slice(0, 1)\r\n \"\r\n >\r\n <i\r\n (click)=\"remove(CONSTANTS.LINK_POLICY, policyName)\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyName\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyName }}</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 *ngIf=\"policyForm?.LinkedPolicies?.length > 1\"\r\n type=\"button\"\r\n appPopover\r\n (click)=\"relatedPolicy.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{ policyForm?.LinkedPolicies?.slice(1).length }}\r\n </button>\r\n </div>\r\n <button\r\n *ngIf=\"activeSelector !== CONSTANTS.LINK_POLICY\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector(CONSTANTS.LINK_POLICY, true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <app-popover #relatedPolicy [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let policyName of policyForm?.LinkedPolicies | 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(CONSTANTS.LINK_POLICY, policyName)\"\r\n ></i\r\n >\r\n {{ policyName}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-cs-switch\r\n [(ngValue)]=\"policyForm.isPortalDisplayEnabled\"\r\n [class.disabled]=\"policyForm?.LinkedPolicies== 0\"\r\n class=\"who-toggle\"\r\n >DISPLAY ON THE POLICY PORTAL\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n CONSTANTS.LINK_POLICY_HELP_TEXT\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <app-checkbox-list\r\n [config]=\"categoryConfig\"\r\n [twoColumn]=\"false\"\r\n [itemsList]=\"categoryList\"\r\n [selectedItems]=\"policyForm.selectedCategories\"\r\n [identifierKey]=\"'_id'\"\r\n [displayKey]=\"'item_name'\"\r\n [tooltipKey]=\"'item_name'\"\r\n *ngIf=\"activeSelector === 'category'\"\r\n (saveList)=\"saveSelectedList('category', $event)\"\r\n (closeList)=\"disableSelector()\"\r\n [loaded]=\"!categoriesListLoaded\"\r\n >\r\n </app-checkbox-list>\r\n <!-- <app-checkbox-list [config]=\"approvalWorkflowConfig\" [twoColumn]=\"true\"\r\n [itemsList]=\"\"\r\n [selectedItems]=\"policyForm.issueCCUsers\" [identifierKey]=\"'employee_email'\" [displayKey]=\"'employee_name'\" [tooltipKey]=\"'employee_email'\"\r\n *ngIf=\"activeSelector==='ISSUE_CC'\" (saveList)=\"selectorAction($event,'ISSUE_CC')\"\r\n (closeList)=\"fieldDeselector('ISSUE_CC')\">\r\n</app-checkbox-list> -->\r\n\r\n <app-responsibility-centers-list\r\n *ngIf=\"activeSelector === 'rc'\"\r\n [responsibilityCentersList]=\"rcList\"\r\n [selectedResponsibilityCenters]=\"policyForm.selectedRCs\"\r\n [rcIdKey]=\"'item_id'\"\r\n (saveSelectedList)=\"saveSelectedList('rc', $event)\"\r\n (closeRcList)=\"disableSelector()\"\r\n [loaded]=\"rcListLoaded\"\r\n >\r\n </app-responsibility-centers-list>\r\n\r\n <app-link-related-policies\r\n *ngIf=\"activeSelector === CONSTANTS.LINK_POLICY\"\r\n [selectedPolicies]=\"policyForm.LinkedPolicies\"\r\n (closeLinkPolicyList)=\"disableSelector()\"\r\n (selectedList)=\"saveSelectedList(CONSTANTS.LINK_POLICY,$event)\"\r\n></app-link-related-policies>\r\n\r\n\r\n <app-users-radio-list\r\n *ngIf=\"activeSelector === 'reviewer'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [usersList]=\"allReviewers\"\r\n [headerText]=\"'Select a Reviewer'\"\r\n [selectedUsers]=\"policyForm.selectedReviewers\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('reviewer', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n >\r\n </app-users-radio-list>\r\n\r\n <app-owner-list\r\n *ngIf=\"activeSelector === 'ccEmail' && !groupEnabled\"\r\n [usersList]=\"overseersList\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [selectedUsers]=\"policyForm.CCEmail\"\r\n [userIdKey]=\"'employee_id'\"\r\n [itemNameKey]=\"'employee_name'\"\r\n (saveSelectedList)=\"saveSelectedList('ccEmail', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n >\r\n </app-owner-list>\r\n\r\n <user-group-list\r\n *ngIf=\"activeSelector === 'ccEmail' && groupEnabled\"\r\n [groupEnabled]=\"true\"\r\n [userlist]=\"overseersList\"\r\n [groupList]=\"overseerGroupsList\"\r\n [selectedUsers]=\"policyForm.CCEmail\"\r\n [selectedGroups]=\"policyForm.CCGroupEmail\"\r\n (save)=\"saveSelectedList('ccEmail', $event)\"\r\n (cancel)=\"disableSelector()\"\r\n [featureflag]=\"groupEnabled\"\r\n >\r\n </user-group-list>\r\n\r\n <app-owner-list\r\n *ngIf=\"activeSelector === 'ccFail' && !groupEnabled\"\r\n [usersList]=\"overseersList\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [selectedUsers]=\"policyForm.CCFailEmail\"\r\n [userIdKey]=\"'employee_id'\"\r\n [itemNameKey]=\"'employee_name'\"\r\n (saveSelectedList)=\"saveSelectedList('ccFail', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n >\r\n </app-owner-list>\r\n\r\n <user-group-list\r\n *ngIf=\"activeSelector === 'ccFail' && groupEnabled\"\r\n [groupEnabled]=\"true\"\r\n [userlist]=\"overseersList\"\r\n [groupList]=\"overseerGroupsList\"\r\n [selectedUsers]=\"policyForm.CCFailEmail\"\r\n [selectedGroups]=\"policyForm.CCFailEmailGroup\"\r\n (save)=\"saveSelectedList('ccFail', $event)\"\r\n (cancel)=\"disableSelector()\"\r\n [featureflag]=\"groupEnabled\"\r\n >\r\n </user-group-list>\r\n\r\n <app-group-users-list\r\n *ngIf=\"activeSelector === 'assignees' && !groupEnabled\"\r\n [usersList]=\"assigneesList\"\r\n [groupsList]=\"overseerGroupsList\"\r\n [selectedUsers]=\"policyForm.selectedAssignees\"\r\n [userIdKey]=\"'my_member_id'\"\r\n (saveSelectedList)=\"saveSelectedList('assignees', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n >\r\n </app-group-users-list>\r\n\r\n <user-group-list\r\n *ngIf=\"activeSelector === 'assignees' && groupEnabled\"\r\n [groupEnabled]=\"true\"\r\n [userlist]=\"ownerlist\"\r\n [groupList]=\"overseerGroupsList\"\r\n (save)=\"saveSelectedList('assignees', $event)\"\r\n (cancel)=\"disableSelector()\"\r\n [selectedGroups]=\"policyForm.selectedGroupAssignee\"\r\n [selectedUsers]=\"policyForm.selectedAssignees\"\r\n [featureflag]=\"groupEnabled\"\r\n >\r\n </user-group-list>\r\n\r\n <app-owner-list\r\n *ngIf=\"activeSelector === 'approvers' && false\"\r\n [listHeading]=\"'Select Approvers'\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [usersList]=\"allApprovers\"\r\n [showWorkflow]=\"true\"\r\n [selectedUsers]=\"\r\n addMoreLevels\r\n ? []\r\n : policyForm.selectedApprovers[approversListIndex].approvers\r\n \"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('approvers', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n [mode]=\"mode\"\r\n [reviewerWorkflowType]=\"workflowType\"\r\n (reviewerWorkflowTypeChange)=\"reviewerTypeChange($event)\"\r\n [workflowList]=\"workflowList\"\r\n [workflowText]=\"'Approval Workflow'\"\r\n >\r\n </app-owner-list>\r\n\r\n <app-frequency-container\r\n *ngIf=\"activeSelector === 'frequency'\"\r\n [mode]=\"'policy'\"\r\n [frequencyDetails]=\"frequencyDetails\"\r\n (selectedFrequency)=\"frequencyData($event)\"\r\n [feature]=\"feature\"\r\n [pageType]=\"'policy'\"\r\n (closeFrequency)=\"disableSelector()\"\r\n ></app-frequency-container>\r\n\r\n <app-frequency-container\r\n *ngIf=\"activeSelector === 'reviewerFrequency'\"\r\n [mode]=\"'reviewerFrequency'\"\r\n [frequencyDetails]=\"reviewerFrequencyDetails\"\r\n (selectedFrequency)=\"reviewerFrequencyData($event)\"\r\n [feature]=\"feature\"\r\n [pageType]=\"'policy'\"\r\n (closeFrequency)=\"disableSelector()\"\r\n ></app-frequency-container>\r\n\r\n <vc-link-program\r\n *ngIf=\"activeSelector === 'linkProgram'\"\r\n (close)=\"disableSelector()\"\r\n [policy]=\"policyForm\"\r\n [selectedProgram]=\"policyForm?.programSelectedValues\"\r\n [mode]=\"mode\"\r\n [selectedLinkProgram]=\"selectedLinkProgram\"\r\n (changeTab)=\"changeTab('linkedPrograms')\"\r\n (updatedProgramDetails)=\"updatedProgramDetails($event)\"\r\n >\r\n </vc-link-program>\r\n\r\n <app-checkpoints-policy-container\r\n (closeCheckPoint)=\"disableSelector()\"\r\n [checkpointData]=\"policyForm?.checkpointDetails\"\r\n [requiredPoint]=\"policyForm?.passingMarks\"\r\n *ngIf=\"activeSelector === 'checkpoints'\"\r\n (saveCheckPoint)=\"saveSelectedList('checkpoints', $event)\"\r\n ></app-checkpoints-policy-container>\r\n <app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n\r\n <app-approval-workflow\r\n *ngIf=\"enableApprovalWorkflow\"\r\n [selectedCategory]=\"policyForm?.selectedCategories\"\r\n [approverWorkFlowList]=\"approverWorkFlowList\"\r\n [allApprovers]=\"allApprovers\"\r\n (listCancelClicked)=\"listCancelClicked($event)\"\r\n (selectedWorkflowNext)=\"selectedApprovalWorkflow($event)\"\r\n (saveApprovalWorkflow)=\"approvalWorkflowAPICall($event)\"\r\n [editApprovalWorkflow]=\"editApprovalWorkflow\"\r\n [createApprovalClick]=\"createApprovalClick\"\r\n (closeCreateClicked)=\"closeClickedCreateForm()\"\r\n [editWorkflowLevel]=\"editWorkflowLevel\"\r\n ></app-approval-workflow>\r\n <!-- <app-select-approvers></app-select-approvers> -->\r\n\r\n <app-policy-access\r\n *ngIf=\"activeSelector === 'policyAccess'\"\r\n [policyAccessType]=\"policyForm?.policy_access_type\"\r\n (close)=\"disableSelector()\"\r\n [orgUsersList]=\"usersList\"\r\n [usersAccessList]=\"usersAccessList\"\r\n [groupList]=\"overseerGroupsList\"\r\n [groupsAccessList]=\"groupsAccessList\"\r\n [selectedUsers]=\"policyForm?.policy_access_owners\"\r\n [selectedGroups]=\"policyForm?.policy_access_groups\"\r\n [disabledIds]=\"usersAccessListIds\"\r\n [disabledGroupIds]=\"groupsAccessListIds\"\r\n [futureUsersWillSelect]=\"policyForm?.availableOnPortal\"\r\n (saveCheckPoint)=\"saveSelectedList('policyAccess', $event)\"\r\n (setPolicyAccessType)=\"policyForm.policy_access_type = $event\"\r\n >\r\n </app-policy-access>\r\n</ng-container>\r\n<ng-container *ngIf=\"showCreateDocuments\">\r\n <!-- <app-create-documents *ngIf=\"showCreateDocuments\"\r\n [organization_id]=\"organization_id\"\r\n [member_obj_id]=\"member_obj_id\"\r\n [userInfo]=\"userInfo\"\r\n [policyId]=\"policyId\"\r\n [policyName]=\"policyForm.policyName\"\r\n (disconnectRefresh)=\"disconnectRefresh.emit(false)\"\r\n (editPolicy)=\"editPolicyFromDocuments()\"\r\n ></app-create-documents> -->\r\n <lib-document-section\r\n *ngIf=\"showCreateDocuments\"\r\n [organization_id]=\"organization_id\"\r\n [member_obj_id]=\"member_obj_id\"\r\n [userInfo]=\"userInfo\"\r\n [policyId]=\"policyId\"\r\n [policyName]=\"policyForm.policyName\"\r\n (disconnectRefresh)=\"disconnectRefresh.emit(false)\"\r\n (editPolicy)=\"editPolicyFromDocuments()\"\r\n ></lib-document-section>\r\n</ng-container>\r\n\r\n<app-assessment-list\r\n *ngIf=\"activeSelector === 'isAssessment'\"\r\n [program_ids]=\"''\"\r\n [isEdit]=\"policyForm?.assessment?.length\"\r\n (cancelAssessment)=\"saveSelectedList('isAssessment', false)\"\r\n [selectedAssessment]=\"policyForm?.assessment[0]\"\r\n [mode]=\"'policy'\"\r\n (onAssessmentSelect)=\"\r\n onAssessmentSelect($event); saveSelectedList('isAssessment', false)\r\n \"\r\n></app-assessment-list>\r\n\r\n<app-owner-list\r\n *ngIf=\"activeSelector === 'approvers' && false\"\r\n [listHeading]=\"'Select Approvers'\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [usersList]=\"allApprovers\"\r\n [showWorkflow]=\"true\"\r\n [selectedUsers]=\"\r\n addMoreLevels\r\n ? []\r\n : policyForm.selectedApprovers[approversListIndex].approvers\r\n \"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('approvers', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n [mode]=\"mode\"\r\n [reviewerWorkflowType]=\"workflowType\"\r\n (reviewerWorkflowTypeChange)=\"reviewerTypeChange($event)\"\r\n [workflowList]=\"workflowList\"\r\n [workflowText]=\"'Approval Workflow'\"\r\n>\r\n</app-owner-list>\r\n\r\n<app-owner-list\r\n *ngIf=\"activeSelector === 'owners'\"\r\n [listHeading]=\"'Select Owner(s)'\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [usersList]=\"allApprovers\"\r\n [showWorkflow]=\"false\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('owners', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n [mode]=\"mode\"\r\n [selectedUsers]=\"policyForm?.policy_owners ?? []\"\r\n>\r\n</app-owner-list>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";::ng-deep .workflow-policy{position:relative}::ng-deep .workflow-policy app-cs-switch{display:block}::ng-deep .workflow-policy app-cs-switch label.cs-switch span.value{color:#747576!important;font-size:11px!important;font-weight:500!important;justify-content:flex-end!important;line-height:16px;width:100%!important}::ng-deep .workflow-policy app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:12px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 8px 0 4px}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected{height:56px;padding:4px 12px 8px;display:block}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected .workflow-label{min-width:auto;padding:0;text-align:left;margin:0 0 4px;border-right:none;width:100%;display:flex;align-items:center}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected .workflow-label p.description{font-size:10px;margin-left:6px}::ng-deep .workflow-policy .form-group-row .right .approval-workflow cs-select .selection-wrap .input-group:before{display:none!important}::ng-deep .workflow-policy app-frequency-container app-frequency-weekly .frequency-weekly app-frequency-lifecycle .frequency-lifecycle-responsibility-inner-item{height:unset!important}.disabled{opacity:.5;pointer-events:none}.who-toggle{margin-top:10px}\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 .chipName.full-width{max-width:25rem}::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:#fff;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:#fff}::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:#fff;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{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:#fff;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:#fff;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:#fff;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:#fff}::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 .info.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.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:212px;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:#fff;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:#fff;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:#fff;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:#fff;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}::ng-deep dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}::ng-deep dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}::ng-deep dp-date-picker input:focus{outline:none}::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar,::ng-deep dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep dp-date-picker .dp-popup dp-day-calendar button,::ng-deep dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}::ng-deep 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:#0000004d}::ng-deep .cdk-overlay-container{z-index:2147483002!important}::ng-deep .dp-popup{z-index:999;display:flex!important;align-items:center;justify-content:center;width:100vw;height:100vh;background:#0000004d!important;box-shadow:unset!important}::ng-deep .dp-popup dp-day-calendar{width:412px!important;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep .dp-popup dp-day-calendar,::ng-deep .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep .dp-popup dp-day-calendar button,::ng-deep .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep .dp-popup dp-day-calendar .dp-weekdays,::ng-deep .dp-popup dp-month-calendar .dp-weekdays,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}@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:#fff}::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% 1%,#747576 50%,#2989d800 51%,#7db9e800);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:#fff}::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% 50%,#2989d800 51%,#7db9e800);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% 1%,#34aa44 50%,#2989d800 51%,#7db9e800);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% 1%,#1e5dd3 50%,#2989d800 51%,#7db9e800);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% 1%,#f6882f 50%,#2989d800 51%,#7db9e800);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% 1%,#7aa6f7 50%,#2989d800 51%,#7db9e800);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}.wf-tooltip{pointer-events:none;position:absolute;max-width:300px;font-size:12px;text-align:left;color:#fff;padding:8px 12px;background:#000;border-radius:2px;z-index:-222;top:0;opacity:0;white-space:break-spaces;word-break:break-word}.wf-tooltip *{color:#fff!important}.wf-tooltip:empty{display:none!important}.wf-tooltip.white{box-shadow:0 2px 8px #1c5bd159;color:#747576;background:#fff;text-align:left}.wf-tooltip.white b{color:#747576!important}.wf-tooltip.animate-top{animation:animate-top .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-right{animation:animate-right .3s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-bottom{animation:animate-bottom .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-left{animation:animate-left .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-left.white:after{border-color:transparent transparent transparent #f1f1f1}.wf-tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #000000}.wf-tooltip-right.white:after{border-color:transparent #f1f1f1 transparent transparent}.wf-tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent #000000 transparent transparent}.wf-tooltip-bottom-right:after{bottom:100%;left:100%;margin-left:-20px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-right.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-bottom-left:after{bottom:100%;left:0;margin-left:10px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-left.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-top-left:after{top:100%;left:0;margin-left:10px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-left.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-top-right:after{top:100%;left:100%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-right.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip:after{content:\"\";position:absolute;border-style:solid}.wf-tooltip span.within{font-size:80%;display:block;width:100%}.wf-tooltip .small{display:block;font-size:10px}.wf-tooltip .within-box{background:#f1f1f1;border-radius:2px;color:#042e7d!important;font-size:9px;font-weight:500;text-transform:uppercase;padding:0 2px;margin-right:2px}.wf-tooltip-show{pointer-events:none;opacity:1;z-index:2147483001}\n"], dependencies: [{ kind: "directive", type: i14.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: i14.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i14.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i15.MarxEditorComponent, selector: "vcomply-editor", inputs: ["editorConfig"], outputs: ["comment", "sendSavedFiles", "popup"] }, { kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i16.CsRadioComponent, selector: "app-cs-radio", inputs: ["disabled", "readonly", "name", "checked", "value", "oneLine"], outputs: ["checkedEvent"] }, { kind: "component", type: i17.CsSwitchComponent, selector: "app-cs-switch", inputs: ["disabled", "ngValue", "value", "tooltipMessage", "position"], outputs: ["ngValueChange"] }, { kind: "directive", type: i18.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i19.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i20.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "directive", type: i14.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i21.CsSelectComponent, selector: "cs-select", inputs: ["dropdownLabel", "dropdownSubLabel", "isRequired", "placeholder", "setMaxWidth"], outputs: ["valueChanged"] }, { kind: "component", type: i22.CsOptionComponent, selector: "cs-option", inputs: ["value", "color", "backgroundColor", "optionTooltip"] }, { kind: "component", type: i23.DatePickerComponent, selector: "dp-date-picker", inputs: ["config", "mode", "placeholder", "disabled", "displayDate", "theme", "minDate", "maxDate", "minTime", "maxTime"], outputs: ["open", "close", "onChange", "onGoToCurrent", "onLeftNav", "onRightNav", "onSelect"] }, { kind: "component", type: i24.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i25.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: i26.ResponsibilityCentersListComponent, selector: "app-responsibility-centers-list", inputs: ["responsibilityCentersList", "selectedResponsibilityCenters", "rcIdKey", "radioSelection", "pluralText", "singularText", "loaded"], outputs: ["saveSelectedList", "closeRcList"] }, { kind: "component", type: i27.GroupUsersListComponent, selector: "app-group-users-list", inputs: ["groupsEnabled", "usersList", "groupsList", "selectedUsers", "userIdKey", "groupIdKey", "openedFrom", "selectedGroups", "assigneeGroupsList", "disabledId", "fromResponsibility", "reviewerIds", "overseerIds", "assignorId", "loader", "isDisabledSelected"], outputs: ["saveSelectedList", "closeUsersList"] }, { kind: "component", type: i28.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: i29.UserRadioListComponent, selector: "app-users-radio-list", inputs: ["usersList", "selectedUsers", "userIdKey", "itemNameKey", "itemEmailKey", "disabledId", "fromResponsibility", "reviewerIds", "overseerIds", "assignorId", "headerText", "loaded"], outputs: ["saveSelectedList", "closeUsersList"] }, { kind: "component", type: i30.FrequencyContainerComponent, selector: "app-frequency-container", inputs: ["frequencyDetails", "mode", "feature", "pageType"], outputs: ["selectedFrequency", "closeFrequency"] }, { kind: "component", type: i31.CheckpointsPolicyContainerComponent, selector: "app-checkpoints-policy-container", inputs: ["requiredPoint", "checkpointData"], outputs: ["closeCheckPoint", "saveCheckPoint"] }, { kind: "component", type: i32.CheckboxListComponent, selector: "app-checkbox-list", inputs: ["itemsList", "selectedItems", "identifierKey", "displayKey", "tooltipKey", "config", "twoColumn", "loaded"], outputs: ["closeList", "saveList"] }, { kind: "component", type: i33.FormatAndEvidenceComponent, selector: "app-format-and-evidence", inputs: ["mode", "categories", "organization_id", "formatEvidanceData"], outputs: ["updateFiles"] }, { kind: "directive", type: i34.ScrollInViewDirective, selector: "[appScrollInView]", inputs: ["appScrollInView"] }, { kind: "component", type: i35.DocumentSectionComponent, selector: "lib-document-section", inputs: ["policyId", "policyName", "organization_id", "member_obj_id", "userInfo"], outputs: ["disconnectRefresh", "editPolicy"] }, { kind: "component", type: i36.AssessmentListComponent, selector: "app-assessment-list", inputs: ["isEdit", "mode", "selectedAssessment", "selectedAssessmentData", "program_ids"], outputs: ["onAssessmentSelect", "cancelAssessment"] }, { kind: "component", type: i37.ApprovalWorkflowComponent, selector: "app-approval-workflow", inputs: ["approverWorkFlowList", "allApprovers", "selectedCategory", "editApprovalWorkflow", "createApprovalClick", "editWorkflowLevel"], outputs: ["selectedWorkflowNext", "listCancelClicked", "saveApprovalWorkflow", "closeCreateClicked"] }, { kind: "component", type: i38.PolicyAccessComponent, selector: "app-policy-access", inputs: ["policyAccessType", "SelectedCategory", "orgUsersList", "groupList", "selectedUsers", "selectedGroups", "disabledIds", "usersAccessList", "groupsAccessList", "disabledGroupIds", "futureUsersWillSelect"], outputs: ["close", "saveCheckPoint", "setPolicyAccessType"] }, { kind: "component", type: i39.LinkProgramComponent, selector: "vc-link-program", inputs: ["policy", "currentTab", "mode", "programsList", "selectedProgram", "selectedCategories", "selectedLinkProgram", "hideProgramsList"], outputs: ["changeTab", "updatedProgramDetails", "save", "close", "refreshLinkedPolicies"] }, { kind: "component", type: i40.LinkRelatedPoliciesComponent, selector: "app-link-related-policies", inputs: ["selectedPolicies"], outputs: ["closeLinkPolicyList", "selectedList"] }, { kind: "pipe", type: i8.SlicePipe, name: "slice" }, { kind: "pipe", type: i8.DatePipe, name: "date" }] }); }
|
|
1878
1917
|
}
|
|
1879
1918
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WorkflowPolicyComponent, decorators: [{
|
|
1880
1919
|
type: Component,
|
|
1881
|
-
args: [{ selector: 'app-workflow-policy', template: "<!-- <p>workflow-policy works!</p> -->\r\n\r\n<ng-container *ngIf=\"!showCreateDocuments\">\r\n <div class=\"workflow-policy\">\r\n <!-- Policy Name -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm?.policyName\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n alt=\"name\"\r\n *ngIf=\"!policyForm?.policyName || activeSelector === 'name'\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.policyName && 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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 Policy Name <span class=\"required\">*</span>\r\n </label>\r\n <input\r\n type=\"text\"\r\n (keydown)=\"activeSelector = 'name'\"\r\n (focusin)=\"activateSelector('name', true)\"\r\n *ngIf=\"policyForm.policyName == '' || activeSelector === 'name'\"\r\n (focusout)=\"activateSelector('name', false)\"\r\n [ngModel]=\"policyForm.policyName\"\r\n (ngModelChange)=\"policyForm.policyName = changeName($event)\"\r\n placeholder=\"Name this policy\"\r\n />\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm.policyName.length && activeSelector !== 'name'\"\r\n >\r\n <div class=\"chip-container\">\r\n <span class=\"value\">{{ policyForm.policyName }}</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\"></i> Edit\r\n </button>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"submitted && !policyForm.policyName.trim()\"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Please enter a name for this policy.\r\n </p>\r\n <vcomply-editor\r\n [(ngModel)]=\"policyForm.policyNotes\"\r\n [editorConfig]=\"description\"\r\n ></vcomply-editor>\r\n <!-- <app-cs-switch\r\n [(ngValue)]=\"policyForm.availableOnPortal\"\r\n (ngValueChange)=\"availabilityOnPortal($event)\"\r\n >\r\n Do you want this policy to be available on the portal?\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'The policies that you intend to make accessible to the entire organization can be added to the policy portal. It is like a shared catalog of all active & updated policies that any logged in user can read/download for reference.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </app-cs-switch>\r\n <app-cs-switch\r\n *ngIf=\"policyForm.availableOnPortal\"\r\n [(ngValue)]=\"policyForm.acceptSuggestions\"\r\n >\r\n Accept suggestions\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'If enabled, users can provide improvement suggestions to the policies that are listed on the Policy Portal.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Policy 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\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedCategories?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedCategories?.length == 0 ||\r\n 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 *ngIf=\"\r\n policyForm?.selectedCategories?.length > 0 &&\r\n activeSelector !== 'category'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 >Policy Category <span class=\"required\">*</span>\r\n </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"policyForm?.selectedCategories?.length == 0\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('category', true)\"\r\n placeholder=\"Select a category for this policy.\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm?.selectedCategories?.length > 0\"\r\n >\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=\"\r\n let category of policyForm?.selectedCategories?.slice(0, 1)\r\n \"\r\n >\r\n <i\r\n (click)=\"remove('category', category)\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"category.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ category.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 *ngIf=\"policyForm?.selectedCategories?.length > 1\"\r\n type=\"button\"\r\n appPopover\r\n (click)=\"category.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{ policyForm?.selectedCategories?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" [class.more-one]=\"policyForm?.selectedCategories?.length>1\"\r\n [class.plus]=\"policyForm?.selectedCategories?.length>2\">\r\n <span class=\"chip\" *ngFor=\"let category of policyForm?.selectedCategories?.slice(0,2)\"><i\r\n class=\"icons\" (click)=\"remove('category',category)\"></i>\r\n {{category.item_name}}</span>\r\n <button class=\"count\" *ngIf=\"policyForm?.selectedCategories?.length > 2\" type=\"button\"\r\n appPopover (click)=\"category.popover()\" placement=\"right\">+\r\n {{policyForm?.selectedCategories?.slice(2).length}}</button>\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\"></i> Edit\r\n </button>\r\n </div>\r\n <app-popover #category [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let category of policyForm?.selectedCategories | 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('category', category)\"\r\n ></i\r\n >\r\n {{ category.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <p\r\n *ngIf=\"submitted && policyForm?.selectedCategories?.length == 0\"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Please select the category for this policy.\r\n </p>\r\n </div>\r\n\r\n <div class=\"vx-form-group\" *ngIf=\"policyForm?.customTags?.length > 0\">\r\n <ng-container *ngFor=\"let tag of policyForm?.customTags\">\r\n <label class=\"vx-control-panel vx-mt-2\">{{ tag.tagname }}</label>\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"tag.value\"\r\n placeholder=\"{{ tag.tagname }}\"\r\n />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Effective Date -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <img\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 *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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Effective Date</label>\r\n <div class=\"date-time-picker\">\r\n <div class=\"picker-group\">\r\n <input\r\n type=\"text\"\r\n readonly\r\n placeholder=\"Select the effective date of the policy.\"\r\n [value]=\"policyForm.policyDueDate | date : 'dd MMM yyyy'\"\r\n (click)=\"openDatePicker()\"\r\n id=\"effective-date\"\r\n />\r\n <i class=\"icons\"></i>\r\n <dp-date-picker\r\n #datePicker\r\n (onSelect)=\"datePickerOverlay = false; closeDatePicker($event)\"\r\n [config]=\"dateConfig\"\r\n [(ngModel)]=\"policyForm.policyDueDate\"\r\n >\r\n </dp-date-picker>\r\n <div\r\n class=\"vx-overlay\"\r\n (click)=\"closeDatePicker($event)\"\r\n *ngIf=\"datePickerOverlay\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Policy Owner -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'owners'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'owners' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm.policy_owners?.length\">\r\n <img\r\n *ngIf=\"!policyForm.policy_owners?.length\"\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=\"policyForm.policy_owners?.length\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <label class=\"vx-control-panel\">POLICY OWNER(S)</label>\r\n </div>\r\n <div\r\n *ngIf=\"!policyForm.policy_owners?.length\"\r\n (click)=\"activateSelector('owners', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"!policyForm?.selectedCategories?.length\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select owners for this policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"policyForm.policy_owners?.length\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div class=\"vx-d-flex vx-align-center\">\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 (click)=\"remove('owners', policyForm?.policy_owners[0], 0)\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.policy_owners[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.policy_owners[0]?.member_name }}</span\r\n >\r\n\r\n <button\r\n *ngIf=\"policyForm?.policy_owners?.length > 1\"\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)=\"policyUserPopover.popover()\"\r\n placement=\"left\"\r\n >\r\n + {{ policyForm?.policy_owners.length - 1 }}\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"false\"\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-1 vx-mr-1\"\r\n >\r\n &\r\n </div>\r\n <div\r\n *ngIf=\"false\"\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"'Samantha Jones'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >Samantha Jones</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)=\"policyGroupPopover.popover()\"\r\n placement=\"right\"\r\n >\r\n +4\r\n </button>\r\n </div>\r\n <app-popover #policyUserPopover [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 policyForm?.policy_owners | slice : 1;\r\n let i = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\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 >\r\n <i\r\n (click)=\"remove('owners', owner, i + 1)\"\r\n class=\"icons\"\r\n ></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 #policyGroupPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of [1, 1, 1, 1, 1, 1, 1]\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"'Harshvardhan Kariwala'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i class=\"icons\"></i>\r\n Harshvardhan Kariwala\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n <button\r\n (click)=\"activateSelector('owners', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && !policyForm?.policy_owners?.length\"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Select owners for this policy.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Review -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"\r\n activeSelector === 'reviewer' || activeSelector === 'reviewerFrequency'\r\n \"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewer' &&\r\n activeSelector !== 'reviewerFrequency' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm?.addReviewers\">\r\n <img\r\n *ngIf=\"!policyForm?.addReviewers\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/reviewer.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.addReviewers\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">REVIEW</label>\r\n <div\r\n class=\"reviewSelection vx-p-3 vx-pb-0\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"vx-fs-13 vx-paragraph-txt vx-mb-1\">\r\n Does this policy need to be reviewed?\r\n </div>\r\n <app-cs-radio\r\n name=\"review-type\"\r\n [checked]=\"policyForm?.addReviewers\"\r\n (checkedEvent)=\"typeSelected(true)\"\r\n ><div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-mr-3\">\r\n YES\r\n </div></app-cs-radio\r\n >\r\n <app-cs-radio\r\n name=\"review-type\"\r\n [checked]=\"!policyForm?.addReviewers\"\r\n (checkedEvent)=\"typeSelected(false)\"\r\n ><div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-mr-3\">\r\n NO\r\n </div></app-cs-radio\r\n >\r\n </div>\r\n\r\n <ng-container *ngIf=\"policyForm?.addReviewers\">\r\n <label class=\"vx-control-panel vx-mt-2\">REVIEWER</label>\r\n <div\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n *ngIf=\"policyForm?.selectedReviewers?.length == 0\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n [class.active]=\"activeSelector === 'reviewer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewer' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n (click)=\"activateSelector('reviewer', true)\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the person responsible for reviewing this policy\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n *ngIf=\"policyForm?.selectedReviewers?.length > 0\"\r\n [class.active]=\"activeSelector === 'reviewer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewer' &&\r\n sideSelectorElements.includes(activeSelector)\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 *ngFor=\"let reviewer of policyForm?.selectedReviewers\"\r\n >\r\n <i\r\n (click)=\"remove('reviewer', reviewer)\"\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"'Samantha Jones'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{ reviewer?.member_name }}</span\r\n >\r\n </div>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n *ngIf=\"activeSelector !== 'reviewer'\"\r\n (click)=\"activateSelector('reviewer', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n <label class=\"vx-control-panel vx-mt-3\">REVIEW FREQUENCY</label>\r\n <div\r\n *ngIf=\"policyForm?.review_frequency_details == ''\"\r\n class=\"selectButton vx-pl-3 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n [class.active]=\"activeSelector === 'reviewerFrequency'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewerFrequency' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n >\r\n <div\r\n class=\"selectButtonPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n When does this policy needs to be reviewed?\r\n </div>\r\n <div\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n class=\"vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase\"\r\n >\r\n SET A FREQUENCY\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"policyForm?.review_frequency_details != ''\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewerFrequency' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n [class.active]=\"activeSelector === 'reviewerFrequency'\"\r\n >\r\n <div\r\n class=\"selectBoxText vx-fs-13 vx-paragraph-txt\"\r\n [appTooltip]=\"reviewerFrequencyPlaceholder\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{ reviewerFrequencyPlaceholder }}\r\n </div>\r\n <button\r\n *ngIf=\"activeSelector !== 'reviewerFrequency'\"\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n policyForm?.selectedReviewers?.length > 0 &&\r\n !policyForm?.review_frequency_details\r\n \"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select the review schedule for this policy.\r\n </p>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- New Approval Workflow -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'approvers'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'approvers' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedApprovers?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedApprovers?.length == 0 ||\r\n activeSelector === 'approvers'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.selectedApprovers?.length > 0 &&\r\n activeSelector !== 'approvers'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\" [class.disabled]=\"policyApprovalFlag !== 0\">\r\n <div class=\"vx-form-group\">\r\n <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <label class=\"vx-control-panel\"\r\n >APPROVAL <span class=\"required\">*</span></label\r\n >\r\n <button\r\n (click)=\"\r\n createApprovalWorkflow(); activateSelector('approvers', true)\r\n \"\r\n [class.disabled]=\"!policyForm?.selectedCategories?.length\"\r\n class=\"createNewBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0\"\r\n >\r\n CREATE A NEW APPROVAL WORKFLOW\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n selectedWorkflow?.length === 0 ||\r\n !selectedWorkflow[0]?.workflow_name\r\n \"\r\n (click)=\"\r\n clickApprovalWorkflow(true); activateSelector('approvers', true)\r\n \"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"!policyForm?.selectedCategories?.length\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select the approval workflow for this policy\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n selectedWorkflow?.length > 0 && selectedWorkflow[0]?.workflow_name\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-mb-2\"\r\n >\r\n <div\r\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mt-2 vx-mb-2\"\r\n >\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 (click)=\"removeWorkflow()\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"selectedWorkflow[0]?.workflow_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ selectedWorkflow[0]?.workflow_name }}</span\r\n >\r\n </div>\r\n <button\r\n (click)=\"editWorkflow(selectedWorkflow[0])\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"selectedWorkflow?.length > 0\">\r\n <div\r\n *ngFor=\"\r\n let approval of selectedWorkflow[0]?.approval_workflow;\r\n let approvalIndex = index\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\r\n >\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"level-left vx-d-flex vx-align-center\">\r\n <div class=\"vx-d-block\">\r\n <div\r\n class=\"level-name vx-fs-9 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-lh-3\"\r\n [appTooltip]=\"\r\n approval?.alias_name\r\n ? approval?.alias_name\r\n : approval?.level1\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{\r\n approval?.alias_name\r\n ? approval?.alias_name\r\n : approval?.level1\r\n }}\r\n </div>\r\n <div\r\n class=\"vx-fs-9 vx-fw-500 vx-label-txt vx-tt-uppercase vx-lh-3\"\r\n >\r\n {{\r\n approval?.type === \"ROUNDROBIN\"\r\n ? \"ROUND-ROBIN\"\r\n : approval?.type === \"ANYONE\"\r\n ? \"ANY ONE\"\r\n : approval?.type\r\n }}\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2 vx-ml-2\"\r\n >\r\n <!-- <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n > -->\r\n <div\r\n *ngIf=\"\r\n approval?.type?.toLowerCase() === 'sequential' &&\r\n approval?.approvers?.length < 2\r\n \"\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 {{ 1 == approval?.approvers?.length ? \"Final\" : 1 }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n approval?.approvers?.length > 1 &&\r\n approval?.type?.toLowerCase() === 'sequential'\r\n \"\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 1\r\n </div>\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"approval?.approvers[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ approval?.approvers[0]?.member_name }}</span\r\n >\r\n <button\r\n *ngIf=\"approval?.approvers?.length > 1\"\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)=\"workflowPopover.popover()\"\r\n placement=\"right\"\r\n >\r\n +{{ approval?.approvers?.length - 1 }}\r\n </button>\r\n </div>\r\n <app-popover #workflowPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let approver of approval?.approvers | slice : 1;\r\n let approvalIndex = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"approver?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <!-- <i class=\"icons\"></i> -->\r\n <span\r\n *ngIf=\"\r\n approval?.type?.toLowerCase() === 'sequential'\r\n \"\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 approvalIndex + 1 ===\r\n approval?.approvers?.length - 1\r\n ? \"Final\"\r\n : approvalIndex + 2\r\n }}</span\r\n >\r\n {{ approver?.member_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\r\n <!-- <div class=\"vx-d-flex vx-align-center\">\r\n <button (click)=\"editLevelClicked(approval,approvalIndex)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n <button (click)=\"deleteLevel(approvalIndex)\"\r\n class=\"deleteBtn vx-fs-11 vx-fw-600 vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-4 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> DELETE\r\n </button>\r\n </div> -->\r\n </div>\r\n </ng-container>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n !policyForm?.selectedApprovers[0]?.approval_workflow?.length &&\r\n !policyApprovalFlag &&\r\n !policyForm?.selectedApprovers[0]?.approvers?.length\r\n \"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Select or create an approval workflow for this policy.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Policy Access -->\r\n <div\r\n *ngIf=\"true\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'policyAccess'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'policyAccess' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"true\">\r\n <img\r\n *ngIf=\"\r\n !policyForm?.policy_access_owners?.length &&\r\n !policyForm?.policy_access_groups?.length &&\r\n !policyForm?.availableOnPortal\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/lock-scope.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.policy_access_owners?.length ||\r\n policyForm?.policy_access_groups?.length ||\r\n policyForm?.availableOnPortal\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <label class=\"vx-control-panel\">POLICY PORTAL ACCESS</label>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n !policyForm?.policy_access_owners?.length &&\r\n !policyForm?.policy_access_groups?.length &&\r\n !policyForm?.availableOnPortal\r\n \"\r\n (click)=\"activateSelector('policyAccess', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"!policyForm?.selectedCategories?.length\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Who should be able to view this policy?\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!policyForm?.availableOnPortal\">\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3\"\r\n *ngIf=\"\r\n policyForm?.policy_access_owners?.length ||\r\n policyForm?.policy_access_groups?.length\r\n \"\r\n >\r\n <div\r\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mt-2 vx-mb-2\"\r\n >\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div\r\n *ngIf=\"policyForm?.policy_access_owners?.length\"\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=\"policyForm?.policy_access_type === 1\"\r\n (click)=\"\r\n remove(\r\n 'policyAccess',\r\n policyForm?.policy_access_owners[0]\r\n )\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"\r\n policyForm?.policy_access_owners[0]?.employee_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{\r\n policyForm?.policy_access_owners[0]?.employee_name\r\n }}</span\r\n >\r\n <button\r\n *ngIf=\"policyForm?.policy_access_owners?.length > 1\"\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)=\"policyAccessPopover.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{ policyForm?.policy_access_owners.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n policyForm?.policy_access_owners.length > 0 &&\r\n policyForm?.policy_access_groups.length > 0\r\n \"\r\n >\r\n &\r\n </div>\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"policyForm?.policy_access_groups.length > 0\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"policyForm?.policy_access_type === 1\"\r\n (click)=\"\r\n remove(\r\n 'accessGroup',\r\n policyForm?.policy_access_groups[0]\r\n )\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"\r\n policyForm?.policy_access_groups[0]?.group_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{\r\n policyForm?.policy_access_groups[0]?.group_name\r\n }}</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)=\"accessGroup.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.policy_access_groups.length > 1\"\r\n >\r\n +{{ policyForm?.policy_access_groups.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <app-popover #policyAccessPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let user of policyForm?.policy_access_owners\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"user?.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons\"\r\n *ngIf=\"policyForm?.policy_access_type === 1\"\r\n (click)=\"remove('policyAccess', user)\"\r\n ></i\r\n >\r\n {{ user?.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #accessGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let data of policyForm?.policy_access_groups\r\n | 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\r\n class=\"icons\"\r\n *ngIf=\"policyForm?.policy_access_type === 1\"\r\n (click)=\"remove('accessGroup', data)\"\r\n ></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\r\n <button\r\n (click)=\"activateSelector('policyAccess', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"vx-mt-4 vx-mb-2\">\r\n <app-cs-radio\r\n [name]=\"'policyFormAccessType'\" [checked]=\"policyForm?.policy_access_type === 0\" (checkedEvent)=\"setAccessField(0)\"\r\n ><div class=\"vx-fs-12 vx-paragraph-txt\">\r\n Everyone who has access to this Policy Category\r\n </div></app-cs-radio\r\n >\r\n <app-cs-radio\r\n [name]=\"'policyFormAccessType'\" [checked]=\"policyForm?.policy_access_type === 1\" (checkedEvent)=\"setAccessField(1)\"\r\n class=\"vx-mt-1\"\r\n ><div class=\"vx-fs-12 vx-paragraph-txt\">\r\n Select users/groups\r\n </div></app-cs-radio\r\n >\r\n </div> -->\r\n </div>\r\n </ng-container>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n *ngIf=\"policyForm?.availableOnPortal\"\r\n >\r\n <span class=\"vx-fs-13 vx-paragraph-txt\"\r\n >Visible to All Current & Future Users</span\r\n >\r\n\r\n <button\r\n (click)=\"activateSelector('policyAccess', true)\"\r\n class=\"edit vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <div class=\"vx-mt-2\">\r\n <app-cs-switch\r\n *ngIf=\"\r\n policyForm.availableOnPortal ||\r\n policyForm?.policy_access_owners?.length ||\r\n policyForm?.policy_access_groups?.length\r\n \"\r\n [(ngValue)]=\"policyForm.acceptSuggestions\"\r\n >ACCEPT SUGGESTIONS\r\n <i\r\n class=\"icons vx-fs-12 vx-txt-blue vx-ml-1 vx-mr-2\"\r\n [appTooltip]=\"\r\n 'If enabled, users can provide improvement suggestions to the policies that are listed on the Policy Portal.'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Attestations -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"false\"\r\n *ngIf=\"false\"\r\n >\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/attestations.svg\"\r\n alt=\"\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <label class=\"vx-control-panel\">ATTESTATIONS</label>\r\n </div>\r\n <div\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select the persons required to attest to this Policy\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"'Samantha Jones'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >Samantha Jones</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)=\"policyAttestationPopover.popover()\"\r\n placement=\"left\"\r\n >\r\n +4\r\n </button>\r\n </div>\r\n <app-popover #policyAttestationPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of [1, 1, 1, 1, 1, 1, 1]\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"'Harshvardhan Kariwala'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i class=\"icons\"></i>\r\n Harshvardhan Kariwala\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <div class=\"vx-mt-2\">\r\n <app-cs-switch\r\n >REQUIRES E-SIGNATURE FOR ATTESTATION\r\n <i\r\n class=\"icons vx-fs-12 vx-txt-blue vx-ml-1 vx-mr-2\"\r\n [appTooltip]=\"\r\n 'Requires e-signature for attestation info text here...'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch\r\n >\r\n </div>\r\n\r\n <label class=\"vx-control-panel vx-mt-2\">WHEN?</label>\r\n <div\r\n class=\"selectButton vx-pl-3 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"selectButtonPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n What is the attestation schedule for this<br />policy?\r\n </div>\r\n <div class=\"vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase\">\r\n SET A FREQUENCY\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div class=\"selectBoxText vx-fs-13 vx-paragraph-txt\">\r\n Every Wednesday by 11:59 pm\r\n </div>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <label class=\"vx-control-panel vx-mt-2\"\r\n >ASSESSMENT OF UNDERSTANDING</label\r\n >\r\n <div\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Set up a questionnaire to confirm the reader\u2019s<br />understanding\r\n of the policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-3 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <span class=\"chipName vx-fs-11 vx-label-txt\">5 Questions</span>\r\n </div>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Approval Workflow -->\r\n <div\r\n class=\"form-group-row\"\r\n *ngIf=\"false\"\r\n [class.active]=\"activeSelector === 'approvers'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'approvers' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedApprovers?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedApprovers?.length == 0 ||\r\n activeSelector === 'approvers'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.selectedApprovers?.length > 0 &&\r\n activeSelector !== 'approvers'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\r\n class=\"vx-form-group approval-workflow\"\r\n [class.disabled]=\"policyApprovalFlag !== 0\"\r\n >\r\n <label class=\"vx-control-panel\">\r\n Approval workflow <span class=\"required\">*</span>\r\n <button\r\n (click)=\"\r\n activateSelector('approvers', true);\r\n addMoreLevels = true;\r\n workflowType = 'SEQUENTIAL'\r\n \"\r\n class=\"button\"\r\n >\r\n Create a new Approval Workflow\r\n </button>\r\n </label>\r\n <div\r\n class=\"select\"\r\n [class.disabled]=\"approverWorkFlowList?.length == 0\"\r\n *ngIf=\"\r\n policyForm?.selectedApprovers[0]?.approvers?.length == 0 ||\r\n policyForm?.selectedApprovers.length == 0\r\n \"\r\n >\r\n <cs-select\r\n [ngModel]=\"selectedApprovalWorkflow\"\r\n (ngModelChange)=\"selectedWorkflowChange($event)\"\r\n [placeholder]=\"'Select approval workflow for this policy'\"\r\n name=\"selectedApprovalWorkflow\"\r\n [setMaxWidth]=\"true\"\r\n >\r\n <cs-option\r\n *ngFor=\"let data of approverWorkFlowList\"\r\n [value]=\"data\"\r\n >\r\n {{ data.workflow_name }}\r\n </cs-option>\r\n <cs-option\r\n [value]=\"-1\"\r\n (click)=\"\r\n activateSelector('approvers', true);\r\n addMoreLevels = true;\r\n workflowType = 'SEQUENTIAL'\r\n \"\r\n >Create a new approval workflow</cs-option\r\n >\r\n </cs-select>\r\n </div>\r\n <ng-container\r\n *ngIf=\"policyForm?.selectedApprovers[0]?.approvers?.length > 0\"\r\n >\r\n <div\r\n class=\"selected\"\r\n *ngFor=\"let level of policyForm?.selectedApprovers; let i = index\"\r\n >\r\n <div class=\"workflow-label\">\r\n <p class=\"title\">Level {{ i + 1 }}</p>\r\n <p class=\"description\">{{ level.name }}</p>\r\n </div>\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chip-container\">\r\n <span\r\n class=\"chip\"\r\n *ngFor=\"\r\n let approver of level.approvers.slice(0, 1);\r\n let j = index\r\n \"\r\n ><i class=\"icons\" (click)=\"remove('approvers', approver, i)\"\r\n ></i\r\n >\r\n <span class=\"step\" *ngIf=\"level.name == 'SEQUENTIAL'\">{{\r\n j + 1\r\n }}</span\r\n >{{ approver.member_name }}</span\r\n >\r\n\r\n <button\r\n class=\"count\"\r\n *ngIf=\"level.approvers?.length > 1\"\r\n type=\"button\"\r\n appPopover\r\n (click)=\"labelName.popover()\"\r\n placement=\"left\"\r\n >\r\n +\r\n\r\n {{ level.approvers.slice(1).length }}\r\n </button>\r\n <app-popover #labelName [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let approver of level.approvers | 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\r\n class=\"icons\"\r\n (click)=\"remove('approvers', approver, i)\"\r\n ></i\r\n >\r\n <span\r\n class=\"step\"\r\n *ngIf=\"level.name == 'SEQUENTIAL'\"\r\n >\r\n {{\r\n j == level.approvers.slice(1).length - 1\r\n ? \"Final\"\r\n : j + 2\r\n }}\r\n </span>\r\n {{ approver.member_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 <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"\r\n activateSelector('approvers', true, level.name);\r\n approversListIndex = i\r\n \"\r\n >\r\n <i class=\"icons\"></i>Edit\r\n </button>\r\n <button\r\n class=\"close-btn\"\r\n (click)=\"remove('workflowLevel', level, i)\"\r\n >\r\n <i class=\"icons\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n !policyForm?.selectedApprovers?.length &&\r\n !policyApprovalFlag\r\n \"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Select or create an approval workflow for this policy.\r\n </p>\r\n\r\n <label\r\n class=\"vx-control-panel\"\r\n *ngIf=\"policyForm.selectedApprovers[0]?.approvers?.length > 0\"\r\n ><button\r\n class=\"button\"\r\n (click)=\"\r\n activateSelector('approvers', true);\r\n addMoreLevels = true;\r\n workflowType = 'SEQUENTIAL'\r\n \"\r\n >\r\n + Add More Levels\r\n </button></label\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Who / now Attestation -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'assignees'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'assignees' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedAssignees?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedAssignees?.length == 0 ||\r\n activeSelector === 'assignees'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.selectedAssignees?.length > 0 &&\r\n activeSelector !== 'assignees'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Attestation</label>\r\n <div\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center vx-mb-2\"\r\n *ngIf=\"\r\n (policyForm?.selectedAssignees?.length == 0 && !groupEnabled) ||\r\n (policyForm?.selectedAssignees?.length == 0 &&\r\n groupEnabled &&\r\n policyForm?.selectedGroupAssignee.length == 0)\r\n \"\r\n (click)=\"activateSelector('assignees', true)\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select the persons responsible for attesting this policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\r\n *ngIf=\"\r\n policyForm?.selectedAssignees?.length > 0 ||\r\n policyForm?.selectedGroupAssignee?.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=\"!groupEnabled\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let assignee of policyForm?.selectedAssignees?.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('assignees', assignee)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"assignee.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ assignee.employee_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 greenBg\"\r\n appPopover\r\n (click)=\"assigneePopover.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"policyForm?.selectedAssignees?.length > 1\"\r\n >\r\n +{{ policyForm?.selectedAssignees?.slice(1).length }}\r\n </button>\r\n </div>\r\n <ng-container *ngIf=\"groupEnabled\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"groupEnabled && policyForm?.selectedAssignees.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('assignees', policyForm?.selectedAssignees[0])\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.selectedAssignees[0]?.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.selectedAssignees[0]?.employee_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)=\"UserPopover.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.selectedAssignees.length > 1\"\r\n >\r\n +{{ policyForm?.selectedAssignees.length - 1 }}\r\n </button>\r\n </div>\r\n <div\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n policyForm?.selectedAssignees.length > 0 &&\r\n policyForm?.selectedGroupAssignee.length > 0\r\n \"\r\n >\r\n &\r\n </div>\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"policyForm?.selectedGroupAssignee.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(\r\n 'groupAssignees',\r\n policyForm?.selectedGroupAssignee[0]\r\n )\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"\r\n policyForm?.selectedGroupAssignee[0]?.group_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.selectedGroupAssignee[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=\"policyForm?.selectedGroupAssignee.length > 1\"\r\n >\r\n +{{ policyForm?.selectedGroupAssignee.length - 1 }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('assignees', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n ((policyForm?.selectedAssignees?.length == 0 &&\r\n policyForm?.frequency_details &&\r\n !groupEnabled) ||\r\n (policyForm?.selectedAssignees?.length == 0 &&\r\n policyForm.selectedGroupAssignee.length == 0 &&\r\n policyForm?.frequency_details &&\r\n groupEnabled) ||\r\n (isSendForAttestation &&\r\n policyForm?.selectedAssignees?.length === 0))\r\n \"\r\n id=\"whovalidatemsg\"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select the persons required to attest to this Policy.\r\n </p>\r\n <app-cs-switch\r\n [(ngValue)]=\"policyForm.requiresSignatureForAttestation\"\r\n [class.disabled]=\"policyForm?.selectedAssignees?.length == 0\"\r\n class=\"who-toggle\"\r\n >THIS POLICY REQUIRES E-SIGNATURE FOR ATTESTATION\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'If selected, the readers will be required to attest this policy using their electronic signature.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch\r\n >\r\n <app-popover #assigneePopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let assignee of policyForm?.selectedAssignees | 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('assignees', assignee)\"\r\n ></i\r\n >\r\n {{ assignee.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #UserPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let assignee of policyForm?.selectedAssignees | 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('assignees', assignee)\"\r\n ></i\r\n >\r\n {{ assignee.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\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\r\n *ngFor=\"\r\n let data of policyForm?.selectedGroupAssignee | 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('groupAssignees', data)\"\r\n ></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\r\n <!-- overseer -->\r\n <app-popover #overseerPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let overseer of policyForm?.CCEmail | 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('ccEmail', overseer)\"\r\n ></i\r\n >\r\n {{ overseer?.employee_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\r\n *ngFor=\"\r\n let data of policyForm?.CCGroupEmail | 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('ccGroupEmail', data)\"\r\n ></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 <!-- overseer end -->\r\n\r\n <!-- overseer fail start -->\r\n <app-popover #overseerFailPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let overseer of policyForm?.CCFailEmail | 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('ccFail', overseer)\"\r\n ></i\r\n >\r\n {{ overseer?.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerFailGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let data of policyForm?.CCFailEmailGroup | 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\r\n class=\"icons\"\r\n (click)=\"remove('ccGroupFailEmail', data)\"\r\n ></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 <!-- overseer fail end -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- When -->\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 >\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">When?</label>\r\n\r\n <div\r\n *ngIf=\"policyForm?.frequency_details == ''\"\r\n class=\"select button-sec\"\r\n >\r\n <div\r\n class=\"custom-input frequency-custom-input\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n {{ frequencyPlaceholder }}\r\n </div>\r\n\r\n <button (click)=\"activateSelector('frequency', true)\" type=\"button\">\r\n Set A frequency\r\n </button>\r\n </div>\r\n <!-- <div\r\n *ngIf=\"policyForm?.frequency_details != ''\"\r\n class=\"selected button-sec\"\r\n > -->\r\n <div\r\n *ngIf=\"policyForm?.frequency_details != ''\"\r\n class=\"selected button-sec selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\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 (click)=\"remove('frequency', rc)\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\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 </div>\r\n <button\r\n *ngIf=\"activeSelector !== 'frequency'\"\r\n type=\"button\"\r\n class=\"edit\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons\"></i>Edit\r\n </button>\r\n <!-- </div>\r\n <span class=\"chip\">{{ frequencyPlaceholder }}</span>\r\n <button\r\n *ngIf=\"activeSelector !== 'frequency'\"\r\n type=\"button\"\r\n class=\"edit\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons\"></i>Edit\r\n </button> -->\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n ((policyForm?.selectedAssignees?.length > 0 &&\r\n !policyForm?.frequency_details &&\r\n !groupEnabled) ||\r\n ((policyForm?.selectedAssignees?.length > 0 ||\r\n policyForm?.selectedGroupAssignee?.length > 0) &&\r\n !policyForm?.frequency_details &&\r\n groupEnabled))\r\n \"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select an attestation schedule for this policy.\r\n </p>\r\n\r\n <!-- <label class=\"vx-control-panel\">Effective Date</label>\r\n <div class=\"date-time-picker\">\r\n <div class=\"picker-group\">\r\n <input type=\"text\" readonly placeholder=\"Select the date from which this policy goes into effect.\"\r\n [value]=\"policyForm.policyDueDate | date: 'dd MMM yyyy'\" (click)=\"openDatePicker();\">\r\n <i class=\"icons\"></i>\r\n <dp-date-picker #datePicker (onSelect)=\"datePickerOverlay = false;closeDatePicker($event)\"\r\n [config]=\"dateConfig\" [(ngModel)]=\"policyForm.policyDueDate\">\r\n </dp-date-picker>\r\n <div class=\"vx-overlay\" (click)=\"closeDatePicker($event)\" *ngIf=\"datePickerOverlay\"></div>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Checkpoints / Assessment of Understanding -->\r\n <div\r\n class=\"form-group-row\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"true\"\r\n [class.active]=\"activeSelector === 'checkpoints'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'checkpoints' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Assessment of Understanding\r\n <!-- <button *ngIf=\"policyForm?.checkpointDetails?.length===0\" class=\"button\" (click)=\"activateSelector('checkpoints',true)\">+ Add Checkpoints</button> -->\r\n </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"policyForm?.checkpointDetails?.length === 0\"\r\n (click)=\"activateSelector('checkpoints', true)\"\r\n >\r\n <!-- <input type=\"text\" placeholder=\"Set up a questionnaire to confirm the reader\u2019s understanding of the policy.\" readonly> -->\r\n <div class=\"custom-input\">\r\n Set up a questionnaire to confirm the reader\u2019s<br />understanding\r\n of the policy.\r\n </div>\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm?.checkpointDetails?.length > 0\"\r\n >\r\n <!-- <div class=\"chip-container\">\r\n <span class=\"chip\">{{policyForm?.checkpointDetails?.length + (policyForm?.checkpointDetails?.length > 1 ?' Checkpoints':' Checkpoint')}}</span>\r\n\r\n <span class=\"checkpoint-point-text first\">TOTAL POINTS: <span class=\"no\">{{policyForm?.totalQuestion}}</span><br><em>Each question carries 1 point</em></span>\r\n\r\n <span class=\"checkpoint-point-text\">POINTS REQUIRED TO ATTEST : <span class=\"no\">{{policyForm?.passingMarks}}</span></span>\r\n\r\n </div> -->\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('checkpoints', policyForm?.checkpointDetails)\"\r\n ></i\r\n >\r\n <span class=\"chipName vx-fs-11 vx-label-txt\">{{\r\n policyForm?.checkpointDetails?.length +\r\n (policyForm?.checkpointDetails?.length > 1\r\n ? \" Questions\"\r\n : \" Question\")\r\n }}</span>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('checkpoints', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <!-- <app-popover #checkpointPopOver [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let checkpoint of policyForm?.checkpointDetails | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('checkpoints',checkpoint,j+1)\"></i>\r\n {{ checkpoint?.question }}\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 Classification -->\r\n <div\r\n class=\"form-group-row\"\r\n *ngIf=\"showRiskClassification && false\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm.riskRating\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/risks.svg\"\r\n alt=\"im\"\r\n *ngIf=\"!policyForm?.riskRating\"\r\n />\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n *ngIf=\"policyForm?.riskRating\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Risk Classification</label>\r\n <div class=\"classification\">\r\n <label\r\n class=\"low\"\r\n *ngFor=\"let class of riskClassification\"\r\n [ngClass]=\"[class.class]\"\r\n >\r\n <input\r\n type=\"radio\"\r\n name=\"classification\"\r\n [value]=\"class.value\"\r\n [checked]=\"policyForm?.riskRating === class.value\"\r\n [(ngModel)]=\"policyForm.riskRating\"\r\n />\r\n <span>{{ class.name }}</span>\r\n </label>\r\n </div>\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 [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"policyForm.addResponsibilityCenters\"\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 class=\"left\" [class.checked]=\"policyForm?.selectedRCs?.length > 0\">\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedRCs?.length == 0 || 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=\"policyForm?.selectedRCs?.length > 0 && activeSelector !== 'rc'\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Responsibility Center</label>\r\n <div class=\"select\" *ngIf=\"policyForm?.selectedRCs?.length == 0\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('rc', true)\"\r\n placeholder=\"Select Responsibility Center(s) that this policy relates to.\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div class=\"selected\" *ngIf=\"policyForm?.selectedRCs?.length > 0\">\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 rc of policyForm?.selectedRCs?.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('rc', rc)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"rc.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rc.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)=\"rcPopover.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"policyForm?.selectedRCs?.length > 1\"\r\n >\r\n +{{ policyForm?.selectedRCs?.slice(1).length }}\r\n </button>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('rc', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <app-popover #rcPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rc of policyForm?.selectedRCs | 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', rc)\"></i>\r\n {{ rc.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 <!-- Version -->\r\n <div\r\n *ngIf=\"policyForm.addVersion\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm.policy_version\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/associated-risks.svg\"\r\n alt=\"name\"\r\n *ngIf=\"!policyForm.policy_version\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm.policy_version\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">VERSION</label>\r\n <input\r\n [(ngModel)]=\"policyForm.policy_version\"\r\n (change)=\"onVersion($event)\"\r\n type=\"text\"\r\n placeholder=\"Specify the policy version.\"\r\n />\r\n <p\r\n *ngIf=\"!isVersionValid\"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n {{ versionErrorMessage }}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Reviewer -->\r\n <div\r\n class=\"form-group-row\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"policyForm.addReviewers && false\"\r\n [class.active]=\"activeSelector === 'reviewer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewer' &&\r\n activeSelector !== 'reviewerFrequency' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedReviewers?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedReviewers?.length == 0 ||\r\n activeSelector === 'reviewer'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/reviewer.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.selectedReviewers?.length > 0 &&\r\n activeSelector !== 'reviewer'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Reviewer </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"policyForm?.selectedReviewers?.length == 0\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('reviewer', true)\"\r\n placeholder=\"Select the person responsible for reviewing this policy\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm?.selectedReviewers?.length > 0\"\r\n >\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 reviewer of policyForm?.selectedReviewers\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('reviewer', reviewer)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"reviewer.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ reviewer.member_name }}</span\r\n >\r\n </ng-container>\r\n </div>\r\n\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('reviewer', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n policyForm?.selectedReviewers?.length == 0 &&\r\n policyForm?.review_frequency_details\r\n \"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select a reviewer for this policy.\r\n </p>\r\n\r\n <label class=\"vx-control-panel\">When? </label>\r\n\r\n <div\r\n *ngIf=\"policyForm?.review_frequency_details == ''\"\r\n class=\"select button-sec\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n [placeholder]=\"reviewerFrequencyPlaceholder\"\r\n readonly\r\n />\r\n <button\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n type=\"button\"\r\n >\r\n Set A frequency\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"policyForm?.review_frequency_details != ''\"\r\n class=\"selected button-sec\"\r\n >\r\n <span class=\"chip\">{{ reviewerFrequencyPlaceholder }}</span>\r\n <button\r\n *ngIf=\"activeSelector !== 'reviewerFrequency'\"\r\n type=\"button\"\r\n class=\"edit\"\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n >\r\n <i class=\"icons\"></i>Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n policyForm?.selectedReviewers?.length > 0 &&\r\n !policyForm?.review_frequency_details\r\n \"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select the review schedule for this policy.\r\n </p>\r\n\r\n <app-format-and-evidence\r\n (updateFiles)=\"saveSelectedList('reviewer_attachments', $event)\"\r\n #formatEvidence\r\n [mode]=\"'policyReviewer'\"\r\n [organization_id]=\"organization_id\"\r\n [formatEvidanceData]=\"policyForm?.documentsAndLinks\"\r\n >\r\n </app-format-and-evidence>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Overseer -->\r\n <div\r\n class=\"form-group-row\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"policyForm.addOverseers\"\r\n [class.active]=\"\r\n activeSelector === 'ccEmail' || activeSelector === 'ccFail'\r\n \"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'ccEmail' &&\r\n activeSelector !== 'ccFail' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"\r\n policyForm?.CCEmail?.length > 0 || policyForm?.CCFailEmail?.length > 0\r\n \"\r\n >\r\n <img\r\n *ngIf=\"\r\n (policyForm?.CCFailEmail?.length == 0 &&\r\n policyForm?.CCEmail?.length == 0) ||\r\n activeSelector === 'ccEmail' ||\r\n activeSelector === 'ccFail'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n (policyForm?.CCFailEmail?.length > 0 ||\r\n policyForm?.CCEmail?.length > 0) &&\r\n activeSelector !== 'ccEmail' &&\r\n activeSelector !== 'ccFail'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Oversight</label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"\r\n policyForm?.CCEmail?.length == 0 &&\r\n policyForm?.CCGroupEmail.length == 0\r\n \"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('ccEmail', true)\"\r\n placeholder=\"Who should have oversight of this policy?\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n policyForm?.CCEmail?.length > 0 ||\r\n policyForm?.CCGroupEmail.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=\"!groupEnabled\"\r\n >\r\n <ng-container\r\n *ngFor=\"let ccEmail of policyForm?.CCEmail?.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('ccEmail', ccEmail)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"ccEmail.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ ccEmail.employee_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 greenBg\"\r\n appPopover\r\n (click)=\"ccEmailPopover.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"policyForm?.CCEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCEmail?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"groupEnabled\" class=\"chip-container\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"groupEnabled && policyForm?.CCEmail?.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('ccEmail', policyForm?.CCEmail[0])\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.CCEmail[0].employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.CCEmail[0].employee_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)=\"overseerPopover.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.CCEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCEmail?.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n policyForm?.CCEmail.length > 0 &&\r\n policyForm?.CCGroupEmail?.length > 0\r\n \"\r\n >\r\n &\r\n </div>\r\n\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"policyForm?.CCGroupEmail.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('ccGroupEmail', policyForm?.CCGroupEmail[0])\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.CCGroupEmail[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.CCGroupEmail[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=\"policyForm?.CCGroupEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCGroupEmail?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('ccEmail', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"select\"\r\n *ngIf=\"\r\n policyForm?.CCFailEmail?.length == 0 &&\r\n policyForm?.CCFailEmailGroup?.length == 0\r\n \"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('ccFail', true)\"\r\n placeholder=\"Who should be notified if the policy is not attested on time?\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n policyForm?.CCFailEmail?.length > 0 ||\r\n policyForm?.CCFailEmailGroup?.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=\"!groupEnabled\"\r\n >\r\n <ng-container\r\n *ngFor=\"let ccFail of policyForm?.CCFailEmail?.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('ccFail', ccFail)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"ccFail.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ ccFail.employee_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 greenBg\"\r\n appPopover\r\n (click)=\"ccFailPopover.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.CCFailEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCFailEmail?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"groupEnabled\" class=\"chip-container\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"groupEnabled && policyForm?.CCFailEmail.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('ccFail', policyForm?.CCFailEmail[0])\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.CCFailEmail[0]?.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.CCFailEmail[0]?.employee_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)=\"overseerFailPopover.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.CCFailEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCFailEmail?.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n policyForm?.CCFailEmail?.length > 0 &&\r\n policyForm?.CCFailEmailGroup?.length > 0\r\n \"\r\n >\r\n &\r\n </div>\r\n\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"policyForm?.CCFailEmailGroup?.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('ccGroupFailEmail', policyForm?.CCFailEmailGroup[0])\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.CCFailEmailGroup[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.CCFailEmailGroup[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)=\"overseerFailGroup.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.CCFailEmailGroup?.length > 1\"\r\n >\r\n +{{ policyForm?.CCFailEmailGroup?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('ccFail', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <app-popover #ccEmailPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let ccEmail of policyForm?.CCEmail | 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('ccEmail', ccEmail)\"\r\n ></i\r\n >\r\n {{ ccEmail.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #ccFailPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let ccFail of policyForm?.CCFailEmail | 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('ccFail', ccFail)\"\r\n ></i\r\n >\r\n {{ ccFail.employee_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 <!-- Related Documents -->\r\n <div\r\n class=\"form-group-row\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"policyForm.addAssociatedDocuments\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"left\">\r\n <img\r\n *ngIf=\"policyForm.associatedDocuments.formatFiles?.length == 0\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/format-evidence.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm.associatedDocuments.formatFiles?.length > 0\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">RELATED DOCUMENTS</label>\r\n <app-format-and-evidence\r\n (updateFiles)=\"saveSelectedList('associatedDocuments', $event)\"\r\n [mode]=\"'policy'\"\r\n [organization_id]=\"organization_id\"\r\n [formatEvidanceData]=\"policyForm?.associatedDocuments\"\r\n ></app-format-and-evidence>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Link Programs & Responsibilities -->\r\n <div\r\n *ngIf=\"policyForm?.addLinkProgram\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'linkProgram'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'linkProgram' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"\r\n policyForm?.programSelectedValues?.program?.category_id\r\n \"\r\n >\r\n <img\r\n *ngIf=\"!policyForm?.programSelectedValues?.program?.category_id\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/link-items.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.programSelectedValues?.program?.category_id\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 >LINK PROGRAMS & RESPONSIBILITIES</label\r\n >\r\n <div\r\n *ngIf=\"!policyForm?.programSelectedValues?.program?.category_id\"\r\n (click)=\"activateSelector('linkProgram', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select Programs & responsibilities that are<br />associated with\r\n this policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n *ngIf=\"policyForm?.programSelectedValues?.program?.category_id\"\r\n >\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 (click)=\"\r\n remove('linkProgram', policyForm?.programSelectedValues)\r\n \"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.programSelectedValues?.program?.name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.programSelectedValues?.program?.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)=\"programResponsibilityPopover.popover()\"\r\n placement=\"left\"\r\n >\r\n +4\r\n </button> -->\r\n </div>\r\n <app-popover\r\n #programResponsibilityPopover\r\n [dontCloseonClick]=\"true\"\r\n >\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of [1, 1, 1, 1, 1, 1, 1]\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"\r\n 'Reporting information security weaknesses'\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i class=\"icons\"></i>\r\n Reporting information security weaknesses\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('linkProgram', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Link Assessment -->\r\n <div\r\n *ngIf=\"policyForm.addLinkAssessment\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'isAssessment'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'isAssessment' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm?.assessment?.length\">\r\n <img\r\n *ngIf=\"!policyForm?.assessment?.length\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/assessments.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.assessment?.length\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 ASSESSMENTS</label>\r\n <div\r\n *ngIf=\"policyForm?.assessment?.length === 0\"\r\n (click)=\"activateSelector('isAssessment', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select assessments that are associated with this<br />policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"policyForm?.assessment?.length > 0\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"\r\n policyForm.assessment[0]?.assessmentDetails?.assessment_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{\r\n policyForm.assessment[0]?.assessmentDetails?.assessment_name\r\n }}</span\r\n >\r\n </div>\r\n <app-popover\r\n #programResponsibilityPopover\r\n [dontCloseonClick]=\"true\"\r\n >\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"let assessment of policyForm.assessment | slice : 1\"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"\r\n assessment?.assessmentDetails?.assessment_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i class=\"icons\"></i>\r\n {{ assessment?.assessmentDetails?.assessment_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <button\r\n (click)=\"activateSelector('isAssessment', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <app-checkbox-list\r\n [config]=\"categoryConfig\"\r\n [twoColumn]=\"false\"\r\n [itemsList]=\"categoryList\"\r\n [selectedItems]=\"policyForm.selectedCategories\"\r\n [identifierKey]=\"'_id'\"\r\n [displayKey]=\"'item_name'\"\r\n [tooltipKey]=\"'item_name'\"\r\n *ngIf=\"activeSelector === 'category'\"\r\n (saveList)=\"saveSelectedList('category', $event)\"\r\n (closeList)=\"disableSelector()\"\r\n [loaded]=\"!categoriesListLoaded\"\r\n >\r\n </app-checkbox-list>\r\n <!-- <app-checkbox-list [config]=\"approvalWorkflowConfig\" [twoColumn]=\"true\"\r\n [itemsList]=\"\"\r\n [selectedItems]=\"policyForm.issueCCUsers\" [identifierKey]=\"'employee_email'\" [displayKey]=\"'employee_name'\" [tooltipKey]=\"'employee_email'\"\r\n *ngIf=\"activeSelector==='ISSUE_CC'\" (saveList)=\"selectorAction($event,'ISSUE_CC')\"\r\n (closeList)=\"fieldDeselector('ISSUE_CC')\">\r\n</app-checkbox-list> -->\r\n\r\n <app-responsibility-centers-list\r\n *ngIf=\"activeSelector === 'rc'\"\r\n [responsibilityCentersList]=\"rcList\"\r\n [selectedResponsibilityCenters]=\"policyForm.selectedRCs\"\r\n [rcIdKey]=\"'item_id'\"\r\n (saveSelectedList)=\"saveSelectedList('rc', $event)\"\r\n (closeRcList)=\"disableSelector()\"\r\n [loaded]=\"rcListLoaded\"\r\n >\r\n </app-responsibility-centers-list>\r\n\r\n <app-users-radio-list\r\n *ngIf=\"activeSelector === 'reviewer'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [usersList]=\"allReviewers\"\r\n [headerText]=\"'Select a Reviewer'\"\r\n [selectedUsers]=\"policyForm.selectedReviewers\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('reviewer', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n >\r\n </app-users-radio-list>\r\n\r\n <app-owner-list\r\n *ngIf=\"activeSelector === 'ccEmail' && !groupEnabled\"\r\n [usersList]=\"overseersList\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [selectedUsers]=\"policyForm.CCEmail\"\r\n [userIdKey]=\"'employee_id'\"\r\n [itemNameKey]=\"'employee_name'\"\r\n (saveSelectedList)=\"saveSelectedList('ccEmail', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n >\r\n </app-owner-list>\r\n\r\n <user-group-list\r\n *ngIf=\"activeSelector === 'ccEmail' && groupEnabled\"\r\n [groupEnabled]=\"true\"\r\n [userlist]=\"overseersList\"\r\n [groupList]=\"overseerGroupsList\"\r\n [selectedUsers]=\"policyForm.CCEmail\"\r\n [selectedGroups]=\"policyForm.CCGroupEmail\"\r\n (save)=\"saveSelectedList('ccEmail', $event)\"\r\n (cancel)=\"disableSelector()\"\r\n [featureflag]=\"groupEnabled\"\r\n >\r\n </user-group-list>\r\n\r\n <app-owner-list\r\n *ngIf=\"activeSelector === 'ccFail' && !groupEnabled\"\r\n [usersList]=\"overseersList\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [selectedUsers]=\"policyForm.CCFailEmail\"\r\n [userIdKey]=\"'employee_id'\"\r\n [itemNameKey]=\"'employee_name'\"\r\n (saveSelectedList)=\"saveSelectedList('ccFail', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n >\r\n </app-owner-list>\r\n\r\n <user-group-list\r\n *ngIf=\"activeSelector === 'ccFail' && groupEnabled\"\r\n [groupEnabled]=\"true\"\r\n [userlist]=\"overseersList\"\r\n [groupList]=\"overseerGroupsList\"\r\n [selectedUsers]=\"policyForm.CCFailEmail\"\r\n [selectedGroups]=\"policyForm.CCFailEmailGroup\"\r\n (save)=\"saveSelectedList('ccFail', $event)\"\r\n (cancel)=\"disableSelector()\"\r\n [featureflag]=\"groupEnabled\"\r\n >\r\n </user-group-list>\r\n\r\n <app-group-users-list\r\n *ngIf=\"activeSelector === 'assignees' && !groupEnabled\"\r\n [usersList]=\"assigneesList\"\r\n [groupsList]=\"overseerGroupsList\"\r\n [selectedUsers]=\"policyForm.selectedAssignees\"\r\n [userIdKey]=\"'my_member_id'\"\r\n (saveSelectedList)=\"saveSelectedList('assignees', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n >\r\n </app-group-users-list>\r\n\r\n <user-group-list\r\n *ngIf=\"activeSelector === 'assignees' && groupEnabled\"\r\n [groupEnabled]=\"true\"\r\n [userlist]=\"ownerlist\"\r\n [groupList]=\"overseerGroupsList\"\r\n (save)=\"saveSelectedList('assignees', $event)\"\r\n (cancel)=\"disableSelector()\"\r\n [selectedGroups]=\"policyForm.selectedGroupAssignee\"\r\n [selectedUsers]=\"policyForm.selectedAssignees\"\r\n [featureflag]=\"groupEnabled\"\r\n >\r\n </user-group-list>\r\n\r\n <app-owner-list\r\n *ngIf=\"activeSelector === 'approvers' && false\"\r\n [listHeading]=\"'Select Approvers'\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [usersList]=\"allApprovers\"\r\n [showWorkflow]=\"true\"\r\n [selectedUsers]=\"\r\n addMoreLevels\r\n ? []\r\n : policyForm.selectedApprovers[approversListIndex].approvers\r\n \"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('approvers', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n [mode]=\"mode\"\r\n [reviewerWorkflowType]=\"workflowType\"\r\n (reviewerWorkflowTypeChange)=\"reviewerTypeChange($event)\"\r\n [workflowList]=\"workflowList\"\r\n [workflowText]=\"'Approval Workflow'\"\r\n >\r\n </app-owner-list>\r\n\r\n <app-frequency-container\r\n *ngIf=\"activeSelector === 'frequency'\"\r\n [mode]=\"'policy'\"\r\n [frequencyDetails]=\"frequencyDetails\"\r\n (selectedFrequency)=\"frequencyData($event)\"\r\n [feature]=\"feature\"\r\n [pageType]=\"'policy'\"\r\n (closeFrequency)=\"disableSelector()\"\r\n ></app-frequency-container>\r\n\r\n <app-frequency-container\r\n *ngIf=\"activeSelector === 'reviewerFrequency'\"\r\n [mode]=\"'reviewerFrequency'\"\r\n [frequencyDetails]=\"reviewerFrequencyDetails\"\r\n (selectedFrequency)=\"reviewerFrequencyData($event)\"\r\n [feature]=\"feature\"\r\n [pageType]=\"'policy'\"\r\n (closeFrequency)=\"disableSelector()\"\r\n ></app-frequency-container>\r\n\r\n <vc-link-program\r\n *ngIf=\"activeSelector === 'linkProgram'\"\r\n (close)=\"disableSelector()\"\r\n [policy]=\"policyForm\"\r\n [selectedProgram]=\"policyForm?.programSelectedValues\"\r\n [mode]=\"mode\"\r\n [selectedLinkProgram]=\"selectedLinkProgram\"\r\n (changeTab)=\"changeTab('linkedPrograms')\"\r\n (updatedProgramDetails)=\"updatedProgramDetails($event)\"\r\n >\r\n </vc-link-program>\r\n\r\n <app-checkpoints-policy-container\r\n (closeCheckPoint)=\"disableSelector()\"\r\n [checkpointData]=\"policyForm?.checkpointDetails\"\r\n [requiredPoint]=\"policyForm?.passingMarks\"\r\n *ngIf=\"activeSelector === 'checkpoints'\"\r\n (saveCheckPoint)=\"saveSelectedList('checkpoints', $event)\"\r\n ></app-checkpoints-policy-container>\r\n <app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n\r\n <app-approval-workflow\r\n *ngIf=\"enableApprovalWorkflow\"\r\n [selectedCategory]=\"policyForm?.selectedCategories\"\r\n [approverWorkFlowList]=\"approverWorkFlowList\"\r\n [allApprovers]=\"allApprovers\"\r\n (listCancelClicked)=\"listCancelClicked($event)\"\r\n (selectedWorkflowNext)=\"selectedApprovalWorkflow($event)\"\r\n (saveApprovalWorkflow)=\"approvalWorkflowAPICall($event)\"\r\n [editApprovalWorkflow]=\"editApprovalWorkflow\"\r\n [createApprovalClick]=\"createApprovalClick\"\r\n (closeCreateClicked)=\"closeClickedCreateForm()\"\r\n [editWorkflowLevel]=\"editWorkflowLevel\"\r\n ></app-approval-workflow>\r\n <!-- <app-select-approvers></app-select-approvers> -->\r\n\r\n <app-policy-access\r\n *ngIf=\"activeSelector === 'policyAccess'\"\r\n [policyAccessType]=\"policyForm?.policy_access_type\"\r\n (close)=\"disableSelector()\"\r\n [orgUsersList]=\"usersList\"\r\n [usersAccessList]=\"usersAccessList\"\r\n [groupList]=\"overseerGroupsList\"\r\n [groupsAccessList]=\"groupsAccessList\"\r\n [selectedUsers]=\"policyForm?.policy_access_owners\"\r\n [selectedGroups]=\"policyForm?.policy_access_groups\"\r\n [disabledIds]=\"usersAccessListIds\"\r\n [disabledGroupIds]=\"groupsAccessListIds\"\r\n [futureUsersWillSelect]=\"policyForm?.availableOnPortal\"\r\n (saveCheckPoint)=\"saveSelectedList('policyAccess', $event)\"\r\n (setPolicyAccessType)=\"policyForm.policy_access_type = $event\"\r\n >\r\n </app-policy-access>\r\n</ng-container>\r\n<ng-container *ngIf=\"showCreateDocuments\">\r\n <!-- <app-create-documents *ngIf=\"showCreateDocuments\"\r\n [organization_id]=\"organization_id\"\r\n [member_obj_id]=\"member_obj_id\"\r\n [userInfo]=\"userInfo\"\r\n [policyId]=\"policyId\"\r\n [policyName]=\"policyForm.policyName\"\r\n (disconnectRefresh)=\"disconnectRefresh.emit(false)\"\r\n (editPolicy)=\"editPolicyFromDocuments()\"\r\n ></app-create-documents> -->\r\n <lib-document-section\r\n *ngIf=\"showCreateDocuments\"\r\n [organization_id]=\"organization_id\"\r\n [member_obj_id]=\"member_obj_id\"\r\n [userInfo]=\"userInfo\"\r\n [policyId]=\"policyId\"\r\n [policyName]=\"policyForm.policyName\"\r\n (disconnectRefresh)=\"disconnectRefresh.emit(false)\"\r\n (editPolicy)=\"editPolicyFromDocuments()\"\r\n ></lib-document-section>\r\n</ng-container>\r\n\r\n<app-assessment-list\r\n *ngIf=\"activeSelector === 'isAssessment'\"\r\n [program_ids]=\"''\"\r\n [isEdit]=\"policyForm?.assessment?.length\"\r\n (cancelAssessment)=\"saveSelectedList('isAssessment', false)\"\r\n [selectedAssessment]=\"policyForm?.assessment[0]\"\r\n [mode]=\"'policy'\"\r\n (onAssessmentSelect)=\"\r\n onAssessmentSelect($event); saveSelectedList('isAssessment', false)\r\n \"\r\n></app-assessment-list>\r\n\r\n<app-owner-list\r\n *ngIf=\"activeSelector === 'approvers' && false\"\r\n [listHeading]=\"'Select Approvers'\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [usersList]=\"allApprovers\"\r\n [showWorkflow]=\"true\"\r\n [selectedUsers]=\"\r\n addMoreLevels\r\n ? []\r\n : policyForm.selectedApprovers[approversListIndex].approvers\r\n \"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('approvers', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n [mode]=\"mode\"\r\n [reviewerWorkflowType]=\"workflowType\"\r\n (reviewerWorkflowTypeChange)=\"reviewerTypeChange($event)\"\r\n [workflowList]=\"workflowList\"\r\n [workflowText]=\"'Approval Workflow'\"\r\n>\r\n</app-owner-list>\r\n\r\n<app-owner-list\r\n *ngIf=\"activeSelector === 'owners'\"\r\n [listHeading]=\"'Select Owner(s)'\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [usersList]=\"allApprovers\"\r\n [showWorkflow]=\"false\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('owners', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n [mode]=\"mode\"\r\n [selectedUsers]=\"policyForm?.policy_owners ?? []\"\r\n>\r\n</app-owner-list>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";::ng-deep .workflow-policy{position:relative}::ng-deep .workflow-policy app-cs-switch{display:block}::ng-deep .workflow-policy app-cs-switch label.cs-switch span.value{color:#747576!important;font-size:11px!important;font-weight:500!important;justify-content:flex-end!important;line-height:16px;width:100%!important}::ng-deep .workflow-policy app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:12px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 8px 0 4px}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected{height:56px;padding:4px 12px 8px;display:block}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected .workflow-label{min-width:auto;padding:0;text-align:left;margin:0 0 4px;border-right:none;width:100%;display:flex;align-items:center}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected .workflow-label p.description{font-size:10px;margin-left:6px}::ng-deep .workflow-policy .form-group-row .right .approval-workflow cs-select .selection-wrap .input-group:before{display:none!important}::ng-deep .workflow-policy app-frequency-container app-frequency-weekly .frequency-weekly app-frequency-lifecycle .frequency-lifecycle-responsibility-inner-item{height:unset!important}.disabled{opacity:.5;pointer-events:none}\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 .chipName.full-width{max-width:25rem}::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:#fff;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:#fff}::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:#fff;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{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:#fff;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:#fff;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:#fff;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:#fff}::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 .info.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.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:212px;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:#fff;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:#fff;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:#fff;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:#fff;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}::ng-deep dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}::ng-deep dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}::ng-deep dp-date-picker input:focus{outline:none}::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar,::ng-deep dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep dp-date-picker .dp-popup dp-day-calendar button,::ng-deep dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}::ng-deep 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:#0000004d}::ng-deep .cdk-overlay-container{z-index:2147483002!important}::ng-deep .dp-popup{z-index:999;display:flex!important;align-items:center;justify-content:center;width:100vw;height:100vh;background:#0000004d!important;box-shadow:unset!important}::ng-deep .dp-popup dp-day-calendar{width:412px!important;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep .dp-popup dp-day-calendar,::ng-deep .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep .dp-popup dp-day-calendar button,::ng-deep .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep .dp-popup dp-day-calendar .dp-weekdays,::ng-deep .dp-popup dp-month-calendar .dp-weekdays,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}@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:#fff}::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% 1%,#747576 50%,#2989d800 51%,#7db9e800);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:#fff}::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% 50%,#2989d800 51%,#7db9e800);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% 1%,#34aa44 50%,#2989d800 51%,#7db9e800);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% 1%,#1e5dd3 50%,#2989d800 51%,#7db9e800);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% 1%,#f6882f 50%,#2989d800 51%,#7db9e800);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% 1%,#7aa6f7 50%,#2989d800 51%,#7db9e800);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}.wf-tooltip{pointer-events:none;position:absolute;max-width:300px;font-size:12px;text-align:left;color:#fff;padding:8px 12px;background:#000;border-radius:2px;z-index:-222;top:0;opacity:0;white-space:break-spaces;word-break:break-word}.wf-tooltip *{color:#fff!important}.wf-tooltip:empty{display:none!important}.wf-tooltip.white{box-shadow:0 2px 8px #1c5bd159;color:#747576;background:#fff;text-align:left}.wf-tooltip.white b{color:#747576!important}.wf-tooltip.animate-top{animation:animate-top .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-right{animation:animate-right .3s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-bottom{animation:animate-bottom .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-left{animation:animate-left .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-left.white:after{border-color:transparent transparent transparent #f1f1f1}.wf-tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #000000}.wf-tooltip-right.white:after{border-color:transparent #f1f1f1 transparent transparent}.wf-tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent #000000 transparent transparent}.wf-tooltip-bottom-right:after{bottom:100%;left:100%;margin-left:-20px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-right.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-bottom-left:after{bottom:100%;left:0;margin-left:10px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-left.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-top-left:after{top:100%;left:0;margin-left:10px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-left.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-top-right:after{top:100%;left:100%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-right.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip:after{content:\"\";position:absolute;border-style:solid}.wf-tooltip span.within{font-size:80%;display:block;width:100%}.wf-tooltip .small{display:block;font-size:10px}.wf-tooltip .within-box{background:#f1f1f1;border-radius:2px;color:#042e7d!important;font-size:9px;font-weight:500;text-transform:uppercase;padding:0 2px;margin-right:2px}.wf-tooltip-show{pointer-events:none;opacity:1;z-index:2147483001}\n"] }]
|
|
1920
|
+
args: [{ selector: 'app-workflow-policy', template: "<!-- <p>workflow-policy works!</p> -->\r\n\r\n<ng-container *ngIf=\"!showCreateDocuments\">\r\n <div class=\"workflow-policy\">\r\n <!-- Policy Name -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm?.policyName\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n alt=\"name\"\r\n *ngIf=\"!policyForm?.policyName || activeSelector === 'name'\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.policyName && 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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 Policy Name <span class=\"required\">*</span>\r\n </label>\r\n <input\r\n type=\"text\"\r\n (keydown)=\"activeSelector = 'name'\"\r\n (focusin)=\"activateSelector('name', true)\"\r\n *ngIf=\"policyForm.policyName == '' || activeSelector === 'name'\"\r\n (focusout)=\"activateSelector('name', false)\"\r\n [ngModel]=\"policyForm.policyName\"\r\n (ngModelChange)=\"policyForm.policyName = changeName($event)\"\r\n placeholder=\"Name this policy\"\r\n />\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm.policyName.length && activeSelector !== 'name'\"\r\n >\r\n <div class=\"chip-container\">\r\n <span class=\"value\">{{ policyForm.policyName }}</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\"></i> Edit\r\n </button>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"submitted && !policyForm.policyName.trim()\"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Please enter a name for this policy.\r\n </p>\r\n <vcomply-editor\r\n [(ngModel)]=\"policyForm.policyNotes\"\r\n [editorConfig]=\"description\"\r\n ></vcomply-editor>\r\n <!-- <app-cs-switch\r\n [(ngValue)]=\"policyForm.availableOnPortal\"\r\n (ngValueChange)=\"availabilityOnPortal($event)\"\r\n >\r\n Do you want this policy to be available on the portal?\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'The policies that you intend to make accessible to the entire organization can be added to the policy portal. It is like a shared catalog of all active & updated policies that any logged in user can read/download for reference.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </app-cs-switch>\r\n <app-cs-switch\r\n *ngIf=\"policyForm.availableOnPortal\"\r\n [(ngValue)]=\"policyForm.acceptSuggestions\"\r\n >\r\n Accept suggestions\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'If enabled, users can provide improvement suggestions to the policies that are listed on the Policy Portal.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Policy 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\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedCategories?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedCategories?.length == 0 ||\r\n 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 *ngIf=\"\r\n policyForm?.selectedCategories?.length > 0 &&\r\n activeSelector !== 'category'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 >Policy Category <span class=\"required\">*</span>\r\n </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"policyForm?.selectedCategories?.length == 0\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('category', true)\"\r\n placeholder=\"Select a category for this policy.\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm?.selectedCategories?.length > 0\"\r\n >\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=\"\r\n let category of policyForm?.selectedCategories?.slice(0, 1)\r\n \"\r\n >\r\n <i\r\n (click)=\"remove('category', category)\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"category.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ category.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 *ngIf=\"policyForm?.selectedCategories?.length > 1\"\r\n type=\"button\"\r\n appPopover\r\n (click)=\"category.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{ policyForm?.selectedCategories?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\" [class.more-one]=\"policyForm?.selectedCategories?.length>1\"\r\n [class.plus]=\"policyForm?.selectedCategories?.length>2\">\r\n <span class=\"chip\" *ngFor=\"let category of policyForm?.selectedCategories?.slice(0,2)\"><i\r\n class=\"icons\" (click)=\"remove('category',category)\"></i>\r\n {{category.item_name}}</span>\r\n <button class=\"count\" *ngIf=\"policyForm?.selectedCategories?.length > 2\" type=\"button\"\r\n appPopover (click)=\"category.popover()\" placement=\"right\">+\r\n {{policyForm?.selectedCategories?.slice(2).length}}</button>\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\"></i> Edit\r\n </button>\r\n </div>\r\n <app-popover #category [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let category of policyForm?.selectedCategories | 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('category', category)\"\r\n ></i\r\n >\r\n {{ category.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <p\r\n *ngIf=\"submitted && policyForm?.selectedCategories?.length == 0\"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Please select the category for this policy.\r\n </p>\r\n </div>\r\n\r\n <div class=\"vx-form-group\" *ngIf=\"policyForm?.customTags?.length > 0\">\r\n <ng-container *ngFor=\"let tag of policyForm?.customTags\">\r\n <label class=\"vx-control-panel vx-mt-2\">{{ tag.tagname }}</label>\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"tag.value\"\r\n placeholder=\"{{ tag.tagname }}\"\r\n />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Effective Date -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <img\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 *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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Effective Date</label>\r\n <div class=\"date-time-picker\">\r\n <div class=\"picker-group\">\r\n <input\r\n type=\"text\"\r\n readonly\r\n placeholder=\"Select the effective date of the policy.\"\r\n [value]=\"policyForm.policyDueDate | date : 'dd MMM yyyy'\"\r\n (click)=\"openDatePicker()\"\r\n id=\"effective-date\"\r\n />\r\n <i class=\"icons\"></i>\r\n <dp-date-picker\r\n #datePicker\r\n (onSelect)=\"datePickerOverlay = false; closeDatePicker($event)\"\r\n [config]=\"dateConfig\"\r\n [(ngModel)]=\"policyForm.policyDueDate\"\r\n >\r\n </dp-date-picker>\r\n <div\r\n class=\"vx-overlay\"\r\n (click)=\"closeDatePicker($event)\"\r\n *ngIf=\"datePickerOverlay\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Policy Owner -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'owners'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'owners' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm.policy_owners?.length\">\r\n <img\r\n *ngIf=\"!policyForm.policy_owners?.length\"\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=\"policyForm.policy_owners?.length\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <label class=\"vx-control-panel\">POLICY OWNER(S)</label>\r\n </div>\r\n <div\r\n *ngIf=\"!policyForm.policy_owners?.length\"\r\n (click)=\"activateSelector('owners', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"!policyForm?.selectedCategories?.length\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select owners for this policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"policyForm.policy_owners?.length\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div class=\"vx-d-flex vx-align-center\">\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 (click)=\"remove('owners', policyForm?.policy_owners[0], 0)\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.policy_owners[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.policy_owners[0]?.member_name }}</span\r\n >\r\n\r\n <button\r\n *ngIf=\"policyForm?.policy_owners?.length > 1\"\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)=\"policyUserPopover.popover()\"\r\n placement=\"left\"\r\n >\r\n + {{ policyForm?.policy_owners.length - 1 }}\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"false\"\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-1 vx-mr-1\"\r\n >\r\n &\r\n </div>\r\n <div\r\n *ngIf=\"false\"\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"'Samantha Jones'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >Samantha Jones</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)=\"policyGroupPopover.popover()\"\r\n placement=\"right\"\r\n >\r\n +4\r\n </button>\r\n </div>\r\n <app-popover #policyUserPopover [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 policyForm?.policy_owners | slice : 1;\r\n let i = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\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 >\r\n <i\r\n (click)=\"remove('owners', owner, i + 1)\"\r\n class=\"icons\"\r\n ></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 #policyGroupPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of [1, 1, 1, 1, 1, 1, 1]\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"'Harshvardhan Kariwala'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i class=\"icons\"></i>\r\n Harshvardhan Kariwala\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n <button\r\n (click)=\"activateSelector('owners', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"submitted && !policyForm?.policy_owners?.length\"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Select owners for this policy.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Review -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"\r\n activeSelector === 'reviewer' || activeSelector === 'reviewerFrequency'\r\n \"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewer' &&\r\n activeSelector !== 'reviewerFrequency' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm?.addReviewers\">\r\n <img\r\n *ngIf=\"!policyForm?.addReviewers\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/reviewer.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.addReviewers\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">REVIEW</label>\r\n <div\r\n class=\"reviewSelection vx-p-3 vx-pb-0\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"vx-fs-13 vx-paragraph-txt vx-mb-1\">\r\n Does this policy need to be reviewed?\r\n </div>\r\n <app-cs-radio\r\n name=\"review-type\"\r\n [checked]=\"policyForm?.addReviewers\"\r\n (checkedEvent)=\"typeSelected(true)\"\r\n ><div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-mr-3\">\r\n YES\r\n </div></app-cs-radio\r\n >\r\n <app-cs-radio\r\n name=\"review-type\"\r\n [checked]=\"!policyForm?.addReviewers\"\r\n (checkedEvent)=\"typeSelected(false)\"\r\n ><div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-mr-3\">\r\n NO\r\n </div></app-cs-radio\r\n >\r\n </div>\r\n\r\n <ng-container *ngIf=\"policyForm?.addReviewers\">\r\n <label class=\"vx-control-panel vx-mt-2\">REVIEWER</label>\r\n <div\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n *ngIf=\"policyForm?.selectedReviewers?.length == 0\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n [class.active]=\"activeSelector === 'reviewer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewer' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n (click)=\"activateSelector('reviewer', true)\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the person responsible for reviewing this policy\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n *ngIf=\"policyForm?.selectedReviewers?.length > 0\"\r\n [class.active]=\"activeSelector === 'reviewer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewer' &&\r\n sideSelectorElements.includes(activeSelector)\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 *ngFor=\"let reviewer of policyForm?.selectedReviewers\"\r\n >\r\n <i\r\n (click)=\"remove('reviewer', reviewer)\"\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"'Samantha Jones'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{ reviewer?.member_name }}</span\r\n >\r\n </div>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n *ngIf=\"activeSelector !== 'reviewer'\"\r\n (click)=\"activateSelector('reviewer', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n <label class=\"vx-control-panel vx-mt-3\">REVIEW FREQUENCY</label>\r\n <div\r\n *ngIf=\"policyForm?.review_frequency_details == ''\"\r\n class=\"selectButton vx-pl-3 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n [class.active]=\"activeSelector === 'reviewerFrequency'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewerFrequency' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n >\r\n <div\r\n class=\"selectButtonPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n When does this policy needs to be reviewed?\r\n </div>\r\n <div\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n class=\"vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase\"\r\n >\r\n SET A FREQUENCY\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"policyForm?.review_frequency_details != ''\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewerFrequency' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n [class.active]=\"activeSelector === 'reviewerFrequency'\"\r\n >\r\n <div\r\n class=\"selectBoxText vx-fs-13 vx-paragraph-txt\"\r\n [appTooltip]=\"reviewerFrequencyPlaceholder\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{ reviewerFrequencyPlaceholder }}\r\n </div>\r\n <button\r\n *ngIf=\"activeSelector !== 'reviewerFrequency'\"\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n policyForm?.selectedReviewers?.length > 0 &&\r\n !policyForm?.review_frequency_details\r\n \"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select the review schedule for this policy.\r\n </p>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- New Approval Workflow -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'approvers'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'approvers' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedApprovers?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedApprovers?.length == 0 ||\r\n activeSelector === 'approvers'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.selectedApprovers?.length > 0 &&\r\n activeSelector !== 'approvers'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\" [class.disabled]=\"policyApprovalFlag !== 0\">\r\n <div class=\"vx-form-group\">\r\n <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <label class=\"vx-control-panel\"\r\n >APPROVAL <span class=\"required\">*</span></label\r\n >\r\n <button\r\n (click)=\"\r\n createApprovalWorkflow(); activateSelector('approvers', true)\r\n \"\r\n [class.disabled]=\"!policyForm?.selectedCategories?.length\"\r\n class=\"createNewBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0\"\r\n >\r\n CREATE A NEW APPROVAL WORKFLOW\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n selectedWorkflow?.length === 0 ||\r\n !selectedWorkflow[0]?.workflow_name\r\n \"\r\n (click)=\"\r\n clickApprovalWorkflow(true); activateSelector('approvers', true)\r\n \"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"!policyForm?.selectedCategories?.length\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select the approval workflow for this policy\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n selectedWorkflow?.length > 0 && selectedWorkflow[0]?.workflow_name\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-mb-2\"\r\n >\r\n <div\r\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mt-2 vx-mb-2\"\r\n >\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 (click)=\"removeWorkflow()\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"selectedWorkflow[0]?.workflow_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ selectedWorkflow[0]?.workflow_name }}</span\r\n >\r\n </div>\r\n <button\r\n (click)=\"editWorkflow(selectedWorkflow[0])\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"selectedWorkflow?.length > 0\">\r\n <div\r\n *ngFor=\"\r\n let approval of selectedWorkflow[0]?.approval_workflow;\r\n let approvalIndex = index\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\r\n >\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"level-left vx-d-flex vx-align-center\">\r\n <div class=\"vx-d-block\">\r\n <div\r\n class=\"level-name vx-fs-9 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-lh-3\"\r\n [appTooltip]=\"\r\n approval?.alias_name\r\n ? approval?.alias_name\r\n : approval?.level1\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{\r\n approval?.alias_name\r\n ? approval?.alias_name\r\n : approval?.level1\r\n }}\r\n </div>\r\n <div\r\n class=\"vx-fs-9 vx-fw-500 vx-label-txt vx-tt-uppercase vx-lh-3\"\r\n >\r\n {{\r\n approval?.type === \"ROUNDROBIN\"\r\n ? \"ROUND-ROBIN\"\r\n : approval?.type === \"ANYONE\"\r\n ? \"ANY ONE\"\r\n : approval?.type\r\n }}\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2 vx-ml-2\"\r\n >\r\n <!-- <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n > -->\r\n <div\r\n *ngIf=\"\r\n approval?.type?.toLowerCase() === 'sequential' &&\r\n approval?.approvers?.length < 2\r\n \"\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 {{ 1 == approval?.approvers?.length ? \"Final\" : 1 }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n approval?.approvers?.length > 1 &&\r\n approval?.type?.toLowerCase() === 'sequential'\r\n \"\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 1\r\n </div>\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"approval?.approvers[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ approval?.approvers[0]?.member_name }}</span\r\n >\r\n <button\r\n *ngIf=\"approval?.approvers?.length > 1\"\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)=\"workflowPopover.popover()\"\r\n placement=\"right\"\r\n >\r\n +{{ approval?.approvers?.length - 1 }}\r\n </button>\r\n </div>\r\n <app-popover #workflowPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let approver of approval?.approvers | slice : 1;\r\n let approvalIndex = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"approver?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <!-- <i class=\"icons\"></i> -->\r\n <span\r\n *ngIf=\"\r\n approval?.type?.toLowerCase() === 'sequential'\r\n \"\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 approvalIndex + 1 ===\r\n approval?.approvers?.length - 1\r\n ? \"Final\"\r\n : approvalIndex + 2\r\n }}</span\r\n >\r\n {{ approver?.member_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\r\n <!-- <div class=\"vx-d-flex vx-align-center\">\r\n <button (click)=\"editLevelClicked(approval,approvalIndex)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n <button (click)=\"deleteLevel(approvalIndex)\"\r\n class=\"deleteBtn vx-fs-11 vx-fw-600 vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-4 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> DELETE\r\n </button>\r\n </div> -->\r\n </div>\r\n </ng-container>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n !policyForm?.selectedApprovers[0]?.approval_workflow?.length &&\r\n !policyApprovalFlag &&\r\n !policyForm?.selectedApprovers[0]?.approvers?.length\r\n \"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Select or create an approval workflow for this policy.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Policy Access -->\r\n <div\r\n *ngIf=\"true\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'policyAccess'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'policyAccess' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"true\">\r\n <img\r\n *ngIf=\"\r\n !policyForm?.policy_access_owners?.length &&\r\n !policyForm?.policy_access_groups?.length &&\r\n !policyForm?.availableOnPortal\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/lock-scope.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.policy_access_owners?.length ||\r\n policyForm?.policy_access_groups?.length ||\r\n policyForm?.availableOnPortal\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <label class=\"vx-control-panel\">POLICY PORTAL ACCESS</label>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n !policyForm?.policy_access_owners?.length &&\r\n !policyForm?.policy_access_groups?.length &&\r\n !policyForm?.availableOnPortal\r\n \"\r\n (click)=\"activateSelector('policyAccess', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"!policyForm?.selectedCategories?.length\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Who should be able to view this policy?\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!policyForm?.availableOnPortal\">\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3\"\r\n *ngIf=\"\r\n policyForm?.policy_access_owners?.length ||\r\n policyForm?.policy_access_groups?.length\r\n \"\r\n >\r\n <div\r\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mt-2 vx-mb-2\"\r\n >\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div\r\n *ngIf=\"policyForm?.policy_access_owners?.length\"\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=\"policyForm?.policy_access_type === 1\"\r\n (click)=\"\r\n remove(\r\n 'policyAccess',\r\n policyForm?.policy_access_owners[0]\r\n )\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"\r\n policyForm?.policy_access_owners[0]?.employee_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{\r\n policyForm?.policy_access_owners[0]?.employee_name\r\n }}</span\r\n >\r\n <button\r\n *ngIf=\"policyForm?.policy_access_owners?.length > 1\"\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)=\"policyAccessPopover.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{ policyForm?.policy_access_owners.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n policyForm?.policy_access_owners.length > 0 &&\r\n policyForm?.policy_access_groups.length > 0\r\n \"\r\n >\r\n &\r\n </div>\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"policyForm?.policy_access_groups.length > 0\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"policyForm?.policy_access_type === 1\"\r\n (click)=\"\r\n remove(\r\n 'accessGroup',\r\n policyForm?.policy_access_groups[0]\r\n )\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"\r\n policyForm?.policy_access_groups[0]?.group_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{\r\n policyForm?.policy_access_groups[0]?.group_name\r\n }}</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)=\"accessGroup.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.policy_access_groups.length > 1\"\r\n >\r\n +{{ policyForm?.policy_access_groups.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <app-popover #policyAccessPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let user of policyForm?.policy_access_owners\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"user?.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons\"\r\n *ngIf=\"policyForm?.policy_access_type === 1\"\r\n (click)=\"remove('policyAccess', user)\"\r\n ></i\r\n >\r\n {{ user?.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #accessGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let data of policyForm?.policy_access_groups\r\n | 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\r\n class=\"icons\"\r\n *ngIf=\"policyForm?.policy_access_type === 1\"\r\n (click)=\"remove('accessGroup', data)\"\r\n ></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\r\n <button\r\n (click)=\"activateSelector('policyAccess', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"vx-mt-4 vx-mb-2\">\r\n <app-cs-radio\r\n [name]=\"'policyFormAccessType'\" [checked]=\"policyForm?.policy_access_type === 0\" (checkedEvent)=\"setAccessField(0)\"\r\n ><div class=\"vx-fs-12 vx-paragraph-txt\">\r\n Everyone who has access to this Policy Category\r\n </div></app-cs-radio\r\n >\r\n <app-cs-radio\r\n [name]=\"'policyFormAccessType'\" [checked]=\"policyForm?.policy_access_type === 1\" (checkedEvent)=\"setAccessField(1)\"\r\n class=\"vx-mt-1\"\r\n ><div class=\"vx-fs-12 vx-paragraph-txt\">\r\n Select users/groups\r\n </div></app-cs-radio\r\n >\r\n </div> -->\r\n </div>\r\n </ng-container>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n *ngIf=\"policyForm?.availableOnPortal\"\r\n >\r\n <span class=\"vx-fs-13 vx-paragraph-txt\"\r\n >Visible to All Current & Future Users</span\r\n >\r\n\r\n <button\r\n (click)=\"activateSelector('policyAccess', true)\"\r\n class=\"edit vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <div class=\"vx-mt-2\">\r\n <app-cs-switch\r\n *ngIf=\"\r\n policyForm.availableOnPortal ||\r\n policyForm?.policy_access_owners?.length ||\r\n policyForm?.policy_access_groups?.length\r\n \"\r\n [(ngValue)]=\"policyForm.acceptSuggestions\"\r\n >ACCEPT SUGGESTIONS\r\n <i\r\n class=\"icons vx-fs-12 vx-txt-blue vx-ml-1 vx-mr-2\"\r\n [appTooltip]=\"\r\n 'If enabled, users can provide improvement suggestions to the policies that are listed on the Policy Portal.'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Attestations -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"false\"\r\n [class.disabled]=\"false\"\r\n *ngIf=\"false\"\r\n >\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/attestations.svg\"\r\n alt=\"\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <label class=\"vx-control-panel\">ATTESTATIONS</label>\r\n </div>\r\n <div\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select the persons required to attest to this Policy\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"'Samantha Jones'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >Samantha Jones</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)=\"policyAttestationPopover.popover()\"\r\n placement=\"left\"\r\n >\r\n +4\r\n </button>\r\n </div>\r\n <app-popover #policyAttestationPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of [1, 1, 1, 1, 1, 1, 1]\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"'Harshvardhan Kariwala'\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i class=\"icons\"></i>\r\n Harshvardhan Kariwala\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <div class=\"vx-mt-2\">\r\n <app-cs-switch\r\n >REQUIRES E-SIGNATURE FOR ATTESTATION\r\n <i\r\n class=\"icons vx-fs-12 vx-txt-blue vx-ml-1 vx-mr-2\"\r\n [appTooltip]=\"\r\n 'Requires e-signature for attestation info text here...'\r\n \"\r\n placement=\"bottom-right\"\r\n delay=\"0\"\r\n type=\"white\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch\r\n >\r\n </div>\r\n\r\n <label class=\"vx-control-panel vx-mt-2\">WHEN?</label>\r\n <div\r\n class=\"selectButton vx-pl-3 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"selectButtonPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n What is the attestation schedule for this<br />policy?\r\n </div>\r\n <div class=\"vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase\">\r\n SET A FREQUENCY\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div class=\"selectBoxText vx-fs-13 vx-paragraph-txt\">\r\n Every Wednesday by 11:59 pm\r\n </div>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <label class=\"vx-control-panel vx-mt-2\"\r\n >ASSESSMENT OF UNDERSTANDING</label\r\n >\r\n <div\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Set up a questionnaire to confirm the reader\u2019s<br />understanding\r\n of the policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-3 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <span class=\"chipName vx-fs-11 vx-label-txt\">5 Questions</span>\r\n </div>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Approval Workflow -->\r\n <div\r\n class=\"form-group-row\"\r\n *ngIf=\"false\"\r\n [class.active]=\"activeSelector === 'approvers'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'approvers' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedApprovers?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedApprovers?.length == 0 ||\r\n activeSelector === 'approvers'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.selectedApprovers?.length > 0 &&\r\n activeSelector !== 'approvers'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\r\n class=\"vx-form-group approval-workflow\"\r\n [class.disabled]=\"policyApprovalFlag !== 0\"\r\n >\r\n <label class=\"vx-control-panel\">\r\n Approval workflow <span class=\"required\">*</span>\r\n <button\r\n (click)=\"\r\n activateSelector('approvers', true);\r\n addMoreLevels = true;\r\n workflowType = 'SEQUENTIAL'\r\n \"\r\n class=\"button\"\r\n >\r\n Create a new Approval Workflow\r\n </button>\r\n </label>\r\n <div\r\n class=\"select\"\r\n [class.disabled]=\"approverWorkFlowList?.length == 0\"\r\n *ngIf=\"\r\n policyForm?.selectedApprovers[0]?.approvers?.length == 0 ||\r\n policyForm?.selectedApprovers.length == 0\r\n \"\r\n >\r\n <cs-select\r\n [ngModel]=\"selectedApprovalWorkflow\"\r\n (ngModelChange)=\"selectedWorkflowChange($event)\"\r\n [placeholder]=\"'Select approval workflow for this policy'\"\r\n name=\"selectedApprovalWorkflow\"\r\n [setMaxWidth]=\"true\"\r\n >\r\n <cs-option\r\n *ngFor=\"let data of approverWorkFlowList\"\r\n [value]=\"data\"\r\n >\r\n {{ data.workflow_name }}\r\n </cs-option>\r\n <cs-option\r\n [value]=\"-1\"\r\n (click)=\"\r\n activateSelector('approvers', true);\r\n addMoreLevels = true;\r\n workflowType = 'SEQUENTIAL'\r\n \"\r\n >Create a new approval workflow</cs-option\r\n >\r\n </cs-select>\r\n </div>\r\n <ng-container\r\n *ngIf=\"policyForm?.selectedApprovers[0]?.approvers?.length > 0\"\r\n >\r\n <div\r\n class=\"selected\"\r\n *ngFor=\"let level of policyForm?.selectedApprovers; let i = index\"\r\n >\r\n <div class=\"workflow-label\">\r\n <p class=\"title\">Level {{ i + 1 }}</p>\r\n <p class=\"description\">{{ level.name }}</p>\r\n </div>\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chip-container\">\r\n <span\r\n class=\"chip\"\r\n *ngFor=\"\r\n let approver of level.approvers.slice(0, 1);\r\n let j = index\r\n \"\r\n ><i class=\"icons\" (click)=\"remove('approvers', approver, i)\"\r\n ></i\r\n >\r\n <span class=\"step\" *ngIf=\"level.name == 'SEQUENTIAL'\">{{\r\n j + 1\r\n }}</span\r\n >{{ approver.member_name }}</span\r\n >\r\n\r\n <button\r\n class=\"count\"\r\n *ngIf=\"level.approvers?.length > 1\"\r\n type=\"button\"\r\n appPopover\r\n (click)=\"labelName.popover()\"\r\n placement=\"left\"\r\n >\r\n +\r\n\r\n {{ level.approvers.slice(1).length }}\r\n </button>\r\n <app-popover #labelName [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let approver of level.approvers | 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\r\n class=\"icons\"\r\n (click)=\"remove('approvers', approver, i)\"\r\n ></i\r\n >\r\n <span\r\n class=\"step\"\r\n *ngIf=\"level.name == 'SEQUENTIAL'\"\r\n >\r\n {{\r\n j == level.approvers.slice(1).length - 1\r\n ? \"Final\"\r\n : j + 2\r\n }}\r\n </span>\r\n {{ approver.member_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 <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"\r\n activateSelector('approvers', true, level.name);\r\n approversListIndex = i\r\n \"\r\n >\r\n <i class=\"icons\"></i>Edit\r\n </button>\r\n <button\r\n class=\"close-btn\"\r\n (click)=\"remove('workflowLevel', level, i)\"\r\n >\r\n <i class=\"icons\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n !policyForm?.selectedApprovers?.length &&\r\n !policyApprovalFlag\r\n \"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n >\r\n Select or create an approval workflow for this policy.\r\n </p>\r\n\r\n <label\r\n class=\"vx-control-panel\"\r\n *ngIf=\"policyForm.selectedApprovers[0]?.approvers?.length > 0\"\r\n ><button\r\n class=\"button\"\r\n (click)=\"\r\n activateSelector('approvers', true);\r\n addMoreLevels = true;\r\n workflowType = 'SEQUENTIAL'\r\n \"\r\n >\r\n + Add More Levels\r\n </button></label\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Who / now Attestation -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'assignees'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'assignees' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedAssignees?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedAssignees?.length == 0 ||\r\n activeSelector === 'assignees'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.selectedAssignees?.length > 0 &&\r\n activeSelector !== 'assignees'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Attestation</label>\r\n <div\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center vx-mb-2\"\r\n *ngIf=\"\r\n (policyForm?.selectedAssignees?.length == 0 && !groupEnabled) ||\r\n (policyForm?.selectedAssignees?.length == 0 &&\r\n groupEnabled &&\r\n policyForm?.selectedGroupAssignee.length == 0)\r\n \"\r\n (click)=\"activateSelector('assignees', true)\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select the persons responsible for attesting this policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\r\n *ngIf=\"\r\n policyForm?.selectedAssignees?.length > 0 ||\r\n policyForm?.selectedGroupAssignee?.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=\"!groupEnabled\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let assignee of policyForm?.selectedAssignees?.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('assignees', assignee)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"assignee.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ assignee.employee_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 greenBg\"\r\n appPopover\r\n (click)=\"assigneePopover.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"policyForm?.selectedAssignees?.length > 1\"\r\n >\r\n +{{ policyForm?.selectedAssignees?.slice(1).length }}\r\n </button>\r\n </div>\r\n <ng-container *ngIf=\"groupEnabled\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"groupEnabled && policyForm?.selectedAssignees.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('assignees', policyForm?.selectedAssignees[0])\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.selectedAssignees[0]?.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.selectedAssignees[0]?.employee_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)=\"UserPopover.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.selectedAssignees.length > 1\"\r\n >\r\n +{{ policyForm?.selectedAssignees.length - 1 }}\r\n </button>\r\n </div>\r\n <div\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n policyForm?.selectedAssignees.length > 0 &&\r\n policyForm?.selectedGroupAssignee.length > 0\r\n \"\r\n >\r\n &\r\n </div>\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"policyForm?.selectedGroupAssignee.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(\r\n 'groupAssignees',\r\n policyForm?.selectedGroupAssignee[0]\r\n )\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"\r\n policyForm?.selectedGroupAssignee[0]?.group_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.selectedGroupAssignee[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=\"policyForm?.selectedGroupAssignee.length > 1\"\r\n >\r\n +{{ policyForm?.selectedGroupAssignee.length - 1 }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('assignees', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n ((policyForm?.selectedAssignees?.length == 0 &&\r\n policyForm?.frequency_details &&\r\n !groupEnabled) ||\r\n (policyForm?.selectedAssignees?.length == 0 &&\r\n policyForm.selectedGroupAssignee.length == 0 &&\r\n policyForm?.frequency_details &&\r\n groupEnabled) ||\r\n (isSendForAttestation &&\r\n policyForm?.selectedAssignees?.length === 0))\r\n \"\r\n id=\"whovalidatemsg\"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select the persons required to attest to this Policy.\r\n </p>\r\n <app-cs-switch\r\n [(ngValue)]=\"policyForm.requiresSignatureForAttestation\"\r\n [class.disabled]=\"policyForm?.selectedAssignees?.length == 0\"\r\n class=\"who-toggle\"\r\n >THIS POLICY REQUIRES E-SIGNATURE FOR ATTESTATION\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'If selected, the readers will be required to attest this policy using their electronic signature.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch\r\n >\r\n <app-popover #assigneePopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let assignee of policyForm?.selectedAssignees | 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('assignees', assignee)\"\r\n ></i\r\n >\r\n {{ assignee.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #UserPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let assignee of policyForm?.selectedAssignees | 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('assignees', assignee)\"\r\n ></i\r\n >\r\n {{ assignee.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\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\r\n *ngFor=\"\r\n let data of policyForm?.selectedGroupAssignee | 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('groupAssignees', data)\"\r\n ></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\r\n <!-- overseer -->\r\n <app-popover #overseerPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let overseer of policyForm?.CCEmail | 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('ccEmail', overseer)\"\r\n ></i\r\n >\r\n {{ overseer?.employee_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\r\n *ngFor=\"\r\n let data of policyForm?.CCGroupEmail | 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('ccGroupEmail', data)\"\r\n ></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 <!-- overseer end -->\r\n\r\n <!-- overseer fail start -->\r\n <app-popover #overseerFailPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let overseer of policyForm?.CCFailEmail | 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('ccFail', overseer)\"\r\n ></i\r\n >\r\n {{ overseer?.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerFailGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let data of policyForm?.CCFailEmailGroup | 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\r\n class=\"icons\"\r\n (click)=\"remove('ccGroupFailEmail', data)\"\r\n ></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 <!-- overseer fail end -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- When -->\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 >\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">When?</label>\r\n\r\n <div\r\n *ngIf=\"policyForm?.frequency_details == ''\"\r\n class=\"select button-sec\"\r\n >\r\n <div\r\n class=\"custom-input frequency-custom-input\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n {{ frequencyPlaceholder }}\r\n </div>\r\n\r\n <button (click)=\"activateSelector('frequency', true)\" type=\"button\">\r\n Set A frequency\r\n </button>\r\n </div>\r\n <!-- <div\r\n *ngIf=\"policyForm?.frequency_details != ''\"\r\n class=\"selected button-sec\"\r\n > -->\r\n <div\r\n *ngIf=\"policyForm?.frequency_details != ''\"\r\n class=\"selected button-sec selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\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 (click)=\"remove('frequency', rc)\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\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 </div>\r\n <button\r\n *ngIf=\"activeSelector !== 'frequency'\"\r\n type=\"button\"\r\n class=\"edit\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons\"></i>Edit\r\n </button>\r\n <!-- </div>\r\n <span class=\"chip\">{{ frequencyPlaceholder }}</span>\r\n <button\r\n *ngIf=\"activeSelector !== 'frequency'\"\r\n type=\"button\"\r\n class=\"edit\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons\"></i>Edit\r\n </button> -->\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n ((policyForm?.selectedAssignees?.length > 0 &&\r\n !policyForm?.frequency_details &&\r\n !groupEnabled) ||\r\n ((policyForm?.selectedAssignees?.length > 0 ||\r\n policyForm?.selectedGroupAssignee?.length > 0) &&\r\n !policyForm?.frequency_details &&\r\n groupEnabled))\r\n \"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select an attestation schedule for this policy.\r\n </p>\r\n\r\n <!-- <label class=\"vx-control-panel\">Effective Date</label>\r\n <div class=\"date-time-picker\">\r\n <div class=\"picker-group\">\r\n <input type=\"text\" readonly placeholder=\"Select the date from which this policy goes into effect.\"\r\n [value]=\"policyForm.policyDueDate | date: 'dd MMM yyyy'\" (click)=\"openDatePicker();\">\r\n <i class=\"icons\"></i>\r\n <dp-date-picker #datePicker (onSelect)=\"datePickerOverlay = false;closeDatePicker($event)\"\r\n [config]=\"dateConfig\" [(ngModel)]=\"policyForm.policyDueDate\">\r\n </dp-date-picker>\r\n <div class=\"vx-overlay\" (click)=\"closeDatePicker($event)\" *ngIf=\"datePickerOverlay\"></div>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Checkpoints / Assessment of Understanding -->\r\n <div\r\n class=\"form-group-row\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"true\"\r\n [class.active]=\"activeSelector === 'checkpoints'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'checkpoints' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Assessment of Understanding\r\n <!-- <button *ngIf=\"policyForm?.checkpointDetails?.length===0\" class=\"button\" (click)=\"activateSelector('checkpoints',true)\">+ Add Checkpoints</button> -->\r\n </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"policyForm?.checkpointDetails?.length === 0\"\r\n (click)=\"activateSelector('checkpoints', true)\"\r\n >\r\n <!-- <input type=\"text\" placeholder=\"Set up a questionnaire to confirm the reader\u2019s understanding of the policy.\" readonly> -->\r\n <div class=\"custom-input\">\r\n Set up a questionnaire to confirm the reader\u2019s<br />understanding\r\n of the policy.\r\n </div>\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm?.checkpointDetails?.length > 0\"\r\n >\r\n <!-- <div class=\"chip-container\">\r\n <span class=\"chip\">{{policyForm?.checkpointDetails?.length + (policyForm?.checkpointDetails?.length > 1 ?' Checkpoints':' Checkpoint')}}</span>\r\n\r\n <span class=\"checkpoint-point-text first\">TOTAL POINTS: <span class=\"no\">{{policyForm?.totalQuestion}}</span><br><em>Each question carries 1 point</em></span>\r\n\r\n <span class=\"checkpoint-point-text\">POINTS REQUIRED TO ATTEST : <span class=\"no\">{{policyForm?.passingMarks}}</span></span>\r\n\r\n </div> -->\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('checkpoints', policyForm?.checkpointDetails)\"\r\n ></i\r\n >\r\n <span class=\"chipName vx-fs-11 vx-label-txt\">{{\r\n policyForm?.checkpointDetails?.length +\r\n (policyForm?.checkpointDetails?.length > 1\r\n ? \" Questions\"\r\n : \" Question\")\r\n }}</span>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('checkpoints', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <!-- <app-popover #checkpointPopOver [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let checkpoint of policyForm?.checkpointDetails | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove('checkpoints',checkpoint,j+1)\"></i>\r\n {{ checkpoint?.question }}\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 Classification -->\r\n <div\r\n class=\"form-group-row\"\r\n *ngIf=\"showRiskClassification && false\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm.riskRating\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/risks.svg\"\r\n alt=\"im\"\r\n *ngIf=\"!policyForm?.riskRating\"\r\n />\r\n\r\n <svg\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n *ngIf=\"policyForm?.riskRating\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Risk Classification</label>\r\n <div class=\"classification\">\r\n <label\r\n class=\"low\"\r\n *ngFor=\"let class of riskClassification\"\r\n [ngClass]=\"[class.class]\"\r\n >\r\n <input\r\n type=\"radio\"\r\n name=\"classification\"\r\n [value]=\"class.value\"\r\n [checked]=\"policyForm?.riskRating === class.value\"\r\n [(ngModel)]=\"policyForm.riskRating\"\r\n />\r\n <span>{{ class.name }}</span>\r\n </label>\r\n </div>\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 [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"policyForm.addResponsibilityCenters\"\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 class=\"left\" [class.checked]=\"policyForm?.selectedRCs?.length > 0\">\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedRCs?.length == 0 || 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=\"policyForm?.selectedRCs?.length > 0 && activeSelector !== 'rc'\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Responsibility Center</label>\r\n <div class=\"select\" *ngIf=\"policyForm?.selectedRCs?.length == 0\">\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('rc', true)\"\r\n placeholder=\"Select Responsibility Center(s) that this policy relates to.\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div class=\"selected\" *ngIf=\"policyForm?.selectedRCs?.length > 0\">\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 rc of policyForm?.selectedRCs?.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('rc', rc)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"rc.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rc.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)=\"rcPopover.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"policyForm?.selectedRCs?.length > 1\"\r\n >\r\n +{{ policyForm?.selectedRCs?.slice(1).length }}\r\n </button>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('rc', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <app-popover #rcPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rc of policyForm?.selectedRCs | 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', rc)\"></i>\r\n {{ rc.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 <!-- Version -->\r\n <div\r\n *ngIf=\"policyForm.addVersion\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.disabled]=\"\r\n activeSelector && sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm.policy_version\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/associated-risks.svg\"\r\n alt=\"name\"\r\n *ngIf=\"!policyForm.policy_version\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm.policy_version\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">VERSION</label>\r\n <input\r\n [(ngModel)]=\"policyForm.policy_version\"\r\n (change)=\"onVersion($event)\"\r\n type=\"text\"\r\n placeholder=\"Specify the policy version.\"\r\n />\r\n <p\r\n *ngIf=\"!isVersionValid\"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n {{ versionErrorMessage }}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Reviewer -->\r\n <div\r\n class=\"form-group-row\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"policyForm.addReviewers && false\"\r\n [class.active]=\"activeSelector === 'reviewer'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'reviewer' &&\r\n activeSelector !== 'reviewerFrequency' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"policyForm?.selectedReviewers?.length > 0\"\r\n >\r\n <img\r\n *ngIf=\"\r\n policyForm?.selectedReviewers?.length == 0 ||\r\n activeSelector === 'reviewer'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/reviewer.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n policyForm?.selectedReviewers?.length > 0 &&\r\n activeSelector !== 'reviewer'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Reviewer </label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"policyForm?.selectedReviewers?.length == 0\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('reviewer', true)\"\r\n placeholder=\"Select the person responsible for reviewing this policy\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm?.selectedReviewers?.length > 0\"\r\n >\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 reviewer of policyForm?.selectedReviewers\"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('reviewer', reviewer)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"reviewer.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ reviewer.member_name }}</span\r\n >\r\n </ng-container>\r\n </div>\r\n\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('reviewer', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n policyForm?.selectedReviewers?.length == 0 &&\r\n policyForm?.review_frequency_details\r\n \"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select a reviewer for this policy.\r\n </p>\r\n\r\n <label class=\"vx-control-panel\">When? </label>\r\n\r\n <div\r\n *ngIf=\"policyForm?.review_frequency_details == ''\"\r\n class=\"select button-sec\"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n [placeholder]=\"reviewerFrequencyPlaceholder\"\r\n readonly\r\n />\r\n <button\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n type=\"button\"\r\n >\r\n Set A frequency\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"policyForm?.review_frequency_details != ''\"\r\n class=\"selected button-sec\"\r\n >\r\n <span class=\"chip\">{{ reviewerFrequencyPlaceholder }}</span>\r\n <button\r\n *ngIf=\"activeSelector !== 'reviewerFrequency'\"\r\n type=\"button\"\r\n class=\"edit\"\r\n (click)=\"activateSelector('reviewerFrequency', true)\"\r\n >\r\n <i class=\"icons\"></i>Edit\r\n </button>\r\n </div>\r\n <p\r\n *ngIf=\"\r\n submitted &&\r\n policyForm?.selectedReviewers?.length > 0 &&\r\n !policyForm?.review_frequency_details\r\n \"\r\n class=\"error-message\"\r\n [appScrollInView]=\"true\"\r\n >\r\n Select the review schedule for this policy.\r\n </p>\r\n\r\n <app-format-and-evidence\r\n (updateFiles)=\"saveSelectedList('reviewer_attachments', $event)\"\r\n #formatEvidence\r\n [mode]=\"'policyReviewer'\"\r\n [organization_id]=\"organization_id\"\r\n [formatEvidanceData]=\"policyForm?.documentsAndLinks\"\r\n >\r\n </app-format-and-evidence>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Overseer -->\r\n <div\r\n class=\"form-group-row\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"policyForm.addOverseers\"\r\n [class.active]=\"\r\n activeSelector === 'ccEmail' || activeSelector === 'ccFail'\r\n \"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'ccEmail' &&\r\n activeSelector !== 'ccFail' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"\r\n policyForm?.CCEmail?.length > 0 || policyForm?.CCFailEmail?.length > 0\r\n \"\r\n >\r\n <img\r\n *ngIf=\"\r\n (policyForm?.CCFailEmail?.length == 0 &&\r\n policyForm?.CCEmail?.length == 0) ||\r\n activeSelector === 'ccEmail' ||\r\n activeSelector === 'ccFail'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"\r\n (policyForm?.CCFailEmail?.length > 0 ||\r\n policyForm?.CCEmail?.length > 0) &&\r\n activeSelector !== 'ccEmail' &&\r\n activeSelector !== 'ccFail'\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">Oversight</label>\r\n <div\r\n class=\"select\"\r\n *ngIf=\"\r\n policyForm?.CCEmail?.length == 0 &&\r\n policyForm?.CCGroupEmail.length == 0\r\n \"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('ccEmail', true)\"\r\n placeholder=\"Who should have oversight of this policy?\"\r\n readonly\r\n />\r\n </div>\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n policyForm?.CCEmail?.length > 0 ||\r\n policyForm?.CCGroupEmail.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=\"!groupEnabled\"\r\n >\r\n <ng-container\r\n *ngFor=\"let ccEmail of policyForm?.CCEmail?.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('ccEmail', ccEmail)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"ccEmail.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ ccEmail.employee_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 greenBg\"\r\n appPopover\r\n (click)=\"ccEmailPopover.popover()\"\r\n placement=\"left\"\r\n *ngIf=\"policyForm?.CCEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCEmail?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"groupEnabled\" class=\"chip-container\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"groupEnabled && policyForm?.CCEmail?.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('ccEmail', policyForm?.CCEmail[0])\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.CCEmail[0].employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.CCEmail[0].employee_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)=\"overseerPopover.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.CCEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCEmail?.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n policyForm?.CCEmail.length > 0 &&\r\n policyForm?.CCGroupEmail?.length > 0\r\n \"\r\n >\r\n &\r\n </div>\r\n\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"policyForm?.CCGroupEmail.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('ccGroupEmail', policyForm?.CCGroupEmail[0])\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.CCGroupEmail[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.CCGroupEmail[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=\"policyForm?.CCGroupEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCGroupEmail?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('ccEmail', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"select\"\r\n *ngIf=\"\r\n policyForm?.CCFailEmail?.length == 0 &&\r\n policyForm?.CCFailEmailGroup?.length == 0\r\n \"\r\n >\r\n <input\r\n type=\"text\"\r\n (click)=\"activateSelector('ccFail', true)\"\r\n placeholder=\"Who should be notified if the policy is not attested on time?\"\r\n readonly\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"\r\n policyForm?.CCFailEmail?.length > 0 ||\r\n policyForm?.CCFailEmailGroup?.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=\"!groupEnabled\"\r\n >\r\n <ng-container\r\n *ngFor=\"let ccFail of policyForm?.CCFailEmail?.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('ccFail', ccFail)\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"ccFail.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ ccFail.employee_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 greenBg\"\r\n appPopover\r\n (click)=\"ccFailPopover.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.CCFailEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCFailEmail?.slice(1).length }}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"groupEnabled\" class=\"chip-container\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"groupEnabled && policyForm?.CCFailEmail.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('ccFail', policyForm?.CCFailEmail[0])\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.CCFailEmail[0]?.employee_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.CCFailEmail[0]?.employee_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)=\"overseerFailPopover.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.CCFailEmail?.length > 1\"\r\n >\r\n +{{ policyForm?.CCFailEmail?.length - 1 }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n policyForm?.CCFailEmail?.length > 0 &&\r\n policyForm?.CCFailEmailGroup?.length > 0\r\n \"\r\n >\r\n &\r\n </div>\r\n\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngIf=\"policyForm?.CCFailEmailGroup?.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('ccGroupFailEmail', policyForm?.CCFailEmailGroup[0])\r\n \"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.CCFailEmailGroup[0]?.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.CCFailEmailGroup[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)=\"overseerFailGroup.popover()\"\r\n placement=\"right\"\r\n *ngIf=\"policyForm?.CCFailEmailGroup?.length > 1\"\r\n >\r\n +{{ policyForm?.CCFailEmailGroup?.length - 1 }}\r\n </button>\r\n </div>\r\n </div>\r\n <button\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector('ccFail', true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <app-popover #ccEmailPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let ccEmail of policyForm?.CCEmail | 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('ccEmail', ccEmail)\"\r\n ></i\r\n >\r\n {{ ccEmail.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #ccFailPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let ccFail of policyForm?.CCFailEmail | 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('ccFail', ccFail)\"\r\n ></i\r\n >\r\n {{ ccFail.employee_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 <!-- Related Documents -->\r\n <div\r\n class=\"form-group-row\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n *ngIf=\"policyForm.addAssociatedDocuments\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"left\">\r\n <img\r\n *ngIf=\"policyForm.associatedDocuments.formatFiles?.length == 0\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/format-evidence.svg\"\r\n alt=\"im\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm.associatedDocuments.formatFiles?.length > 0\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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\">RELATED DOCUMENTS</label>\r\n <app-format-and-evidence\r\n (updateFiles)=\"saveSelectedList('associatedDocuments', $event)\"\r\n [mode]=\"'policy'\"\r\n [organization_id]=\"organization_id\"\r\n [formatEvidanceData]=\"policyForm?.associatedDocuments\"\r\n ></app-format-and-evidence>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Link Programs & Responsibilities -->\r\n <div\r\n *ngIf=\"policyForm?.addLinkProgram\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'linkProgram'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'linkProgram' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div\r\n class=\"left\"\r\n [class.checked]=\"\r\n policyForm?.programSelectedValues?.program?.category_id\r\n \"\r\n >\r\n <img\r\n *ngIf=\"!policyForm?.programSelectedValues?.program?.category_id\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/link-items.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.programSelectedValues?.program?.category_id\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 >LINK PROGRAMS & RESPONSIBILITIES</label\r\n >\r\n <div\r\n *ngIf=\"!policyForm?.programSelectedValues?.program?.category_id\"\r\n (click)=\"activateSelector('linkProgram', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select Programs & responsibilities that are<br />associated with\r\n this policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n *ngIf=\"policyForm?.programSelectedValues?.program?.category_id\"\r\n >\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 (click)=\"\r\n remove('linkProgram', policyForm?.programSelectedValues)\r\n \"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyForm?.programSelectedValues?.program?.name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyForm?.programSelectedValues?.program?.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)=\"programResponsibilityPopover.popover()\"\r\n placement=\"left\"\r\n >\r\n +4\r\n </button> -->\r\n </div>\r\n <app-popover\r\n #programResponsibilityPopover\r\n [dontCloseonClick]=\"true\"\r\n >\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of [1, 1, 1, 1, 1, 1, 1]\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"\r\n 'Reporting information security weaknesses'\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i class=\"icons\"></i>\r\n Reporting information security weaknesses\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <button\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('linkProgram', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Link Assessment -->\r\n <div\r\n *ngIf=\"policyForm.addLinkAssessment\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'isAssessment'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'isAssessment' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm?.assessment?.length\">\r\n <img\r\n *ngIf=\"!policyForm?.assessment?.length\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/assessments.svg\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.assessment?.length\"\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\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 ASSESSMENTS</label>\r\n <div\r\n *ngIf=\"policyForm?.assessment?.length === 0\"\r\n (click)=\"activateSelector('isAssessment', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select assessments that are associated with this<br />policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"policyForm?.assessment?.length > 0\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"\r\n policyForm.assessment[0]?.assessmentDetails?.assessment_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{\r\n policyForm.assessment[0]?.assessmentDetails?.assessment_name\r\n }}</span\r\n >\r\n </div>\r\n <app-popover\r\n #programResponsibilityPopover\r\n [dontCloseonClick]=\"true\"\r\n >\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"let assessment of policyForm.assessment | slice : 1\"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"\r\n assessment?.assessmentDetails?.assessment_name\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i class=\"icons\"></i>\r\n {{ assessment?.assessmentDetails?.assessment_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <button\r\n (click)=\"activateSelector('isAssessment', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Link Related Polices -->\r\n\r\n <div\r\n *ngIf=\"policyForm.addLinkPolicies\"\r\n [appScrollInView]=\"scrollToBottom\"\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === CONSTANTS.LINK_POLICY\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'isLinkedPolices' &&\r\n sideSelectorElements.includes(activeSelector)\r\n \"\r\n >\r\n <div class=\"left\" [class.checked]=\"policyForm?.LinkedPolicies?.length\">\r\n <img\r\n *ngIf=\"!policyForm?.LinkedPolicies?.length\"\r\n [src]=\"LINKS.linkedPolicyImage\"\r\n alt=\"\"\r\n />\r\n\r\n <svg\r\n *ngIf=\"policyForm?.LinkedPolicies?.length\"\r\n class=\"checkIcon\"\r\n [xmlns]=\"LINKS.checked\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\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 POLICIES</label>\r\n <div\r\n *ngIf=\"policyForm?.LinkedPolicies?.length === 0\"\r\n (click)=\"activateSelector('isLinkedPolices', true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\r\n Select policies that are associated with this<br />policy.\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"selected\"\r\n *ngIf=\"policyForm?.LinkedPolicies?.length > 0\"\r\n >\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=\"\r\n let policyName of policyForm?.LinkedPolicies?.slice(0, 1)\r\n \"\r\n >\r\n <i\r\n (click)=\"remove(CONSTANTS.LINK_POLICY, policyName)\"\r\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"policyName\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ policyName }}</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 *ngIf=\"policyForm?.LinkedPolicies?.length > 1\"\r\n type=\"button\"\r\n appPopover\r\n (click)=\"relatedPolicy.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{ policyForm?.LinkedPolicies?.slice(1).length }}\r\n </button>\r\n </div>\r\n <button\r\n *ngIf=\"activeSelector !== CONSTANTS.LINK_POLICY\"\r\n class=\"edit\"\r\n type=\"button\"\r\n (click)=\"activateSelector(CONSTANTS.LINK_POLICY, true)\"\r\n >\r\n <i class=\"icons\"></i> Edit\r\n </button>\r\n </div>\r\n <app-popover #relatedPolicy [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let policyName of policyForm?.LinkedPolicies | 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(CONSTANTS.LINK_POLICY, policyName)\"\r\n ></i\r\n >\r\n {{ policyName}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-cs-switch\r\n [(ngValue)]=\"policyForm.isPortalDisplayEnabled\"\r\n [class.disabled]=\"policyForm?.LinkedPolicies== 0\"\r\n class=\"who-toggle\"\r\n >DISPLAY ON THE POLICY PORTAL\r\n <i\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n CONSTANTS.LINK_POLICY_HELP_TEXT\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n ></app-cs-switch\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <app-checkbox-list\r\n [config]=\"categoryConfig\"\r\n [twoColumn]=\"false\"\r\n [itemsList]=\"categoryList\"\r\n [selectedItems]=\"policyForm.selectedCategories\"\r\n [identifierKey]=\"'_id'\"\r\n [displayKey]=\"'item_name'\"\r\n [tooltipKey]=\"'item_name'\"\r\n *ngIf=\"activeSelector === 'category'\"\r\n (saveList)=\"saveSelectedList('category', $event)\"\r\n (closeList)=\"disableSelector()\"\r\n [loaded]=\"!categoriesListLoaded\"\r\n >\r\n </app-checkbox-list>\r\n <!-- <app-checkbox-list [config]=\"approvalWorkflowConfig\" [twoColumn]=\"true\"\r\n [itemsList]=\"\"\r\n [selectedItems]=\"policyForm.issueCCUsers\" [identifierKey]=\"'employee_email'\" [displayKey]=\"'employee_name'\" [tooltipKey]=\"'employee_email'\"\r\n *ngIf=\"activeSelector==='ISSUE_CC'\" (saveList)=\"selectorAction($event,'ISSUE_CC')\"\r\n (closeList)=\"fieldDeselector('ISSUE_CC')\">\r\n</app-checkbox-list> -->\r\n\r\n <app-responsibility-centers-list\r\n *ngIf=\"activeSelector === 'rc'\"\r\n [responsibilityCentersList]=\"rcList\"\r\n [selectedResponsibilityCenters]=\"policyForm.selectedRCs\"\r\n [rcIdKey]=\"'item_id'\"\r\n (saveSelectedList)=\"saveSelectedList('rc', $event)\"\r\n (closeRcList)=\"disableSelector()\"\r\n [loaded]=\"rcListLoaded\"\r\n >\r\n </app-responsibility-centers-list>\r\n\r\n <app-link-related-policies\r\n *ngIf=\"activeSelector === CONSTANTS.LINK_POLICY\"\r\n [selectedPolicies]=\"policyForm.LinkedPolicies\"\r\n (closeLinkPolicyList)=\"disableSelector()\"\r\n (selectedList)=\"saveSelectedList(CONSTANTS.LINK_POLICY,$event)\"\r\n></app-link-related-policies>\r\n\r\n\r\n <app-users-radio-list\r\n *ngIf=\"activeSelector === 'reviewer'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [usersList]=\"allReviewers\"\r\n [headerText]=\"'Select a Reviewer'\"\r\n [selectedUsers]=\"policyForm.selectedReviewers\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('reviewer', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n >\r\n </app-users-radio-list>\r\n\r\n <app-owner-list\r\n *ngIf=\"activeSelector === 'ccEmail' && !groupEnabled\"\r\n [usersList]=\"overseersList\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [selectedUsers]=\"policyForm.CCEmail\"\r\n [userIdKey]=\"'employee_id'\"\r\n [itemNameKey]=\"'employee_name'\"\r\n (saveSelectedList)=\"saveSelectedList('ccEmail', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n >\r\n </app-owner-list>\r\n\r\n <user-group-list\r\n *ngIf=\"activeSelector === 'ccEmail' && groupEnabled\"\r\n [groupEnabled]=\"true\"\r\n [userlist]=\"overseersList\"\r\n [groupList]=\"overseerGroupsList\"\r\n [selectedUsers]=\"policyForm.CCEmail\"\r\n [selectedGroups]=\"policyForm.CCGroupEmail\"\r\n (save)=\"saveSelectedList('ccEmail', $event)\"\r\n (cancel)=\"disableSelector()\"\r\n [featureflag]=\"groupEnabled\"\r\n >\r\n </user-group-list>\r\n\r\n <app-owner-list\r\n *ngIf=\"activeSelector === 'ccFail' && !groupEnabled\"\r\n [usersList]=\"overseersList\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [selectedUsers]=\"policyForm.CCFailEmail\"\r\n [userIdKey]=\"'employee_id'\"\r\n [itemNameKey]=\"'employee_name'\"\r\n (saveSelectedList)=\"saveSelectedList('ccFail', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n >\r\n </app-owner-list>\r\n\r\n <user-group-list\r\n *ngIf=\"activeSelector === 'ccFail' && groupEnabled\"\r\n [groupEnabled]=\"true\"\r\n [userlist]=\"overseersList\"\r\n [groupList]=\"overseerGroupsList\"\r\n [selectedUsers]=\"policyForm.CCFailEmail\"\r\n [selectedGroups]=\"policyForm.CCFailEmailGroup\"\r\n (save)=\"saveSelectedList('ccFail', $event)\"\r\n (cancel)=\"disableSelector()\"\r\n [featureflag]=\"groupEnabled\"\r\n >\r\n </user-group-list>\r\n\r\n <app-group-users-list\r\n *ngIf=\"activeSelector === 'assignees' && !groupEnabled\"\r\n [usersList]=\"assigneesList\"\r\n [groupsList]=\"overseerGroupsList\"\r\n [selectedUsers]=\"policyForm.selectedAssignees\"\r\n [userIdKey]=\"'my_member_id'\"\r\n (saveSelectedList)=\"saveSelectedList('assignees', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n >\r\n </app-group-users-list>\r\n\r\n <user-group-list\r\n *ngIf=\"activeSelector === 'assignees' && groupEnabled\"\r\n [groupEnabled]=\"true\"\r\n [userlist]=\"ownerlist\"\r\n [groupList]=\"overseerGroupsList\"\r\n (save)=\"saveSelectedList('assignees', $event)\"\r\n (cancel)=\"disableSelector()\"\r\n [selectedGroups]=\"policyForm.selectedGroupAssignee\"\r\n [selectedUsers]=\"policyForm.selectedAssignees\"\r\n [featureflag]=\"groupEnabled\"\r\n >\r\n </user-group-list>\r\n\r\n <app-owner-list\r\n *ngIf=\"activeSelector === 'approvers' && false\"\r\n [listHeading]=\"'Select Approvers'\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [usersList]=\"allApprovers\"\r\n [showWorkflow]=\"true\"\r\n [selectedUsers]=\"\r\n addMoreLevels\r\n ? []\r\n : policyForm.selectedApprovers[approversListIndex].approvers\r\n \"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('approvers', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n [mode]=\"mode\"\r\n [reviewerWorkflowType]=\"workflowType\"\r\n (reviewerWorkflowTypeChange)=\"reviewerTypeChange($event)\"\r\n [workflowList]=\"workflowList\"\r\n [workflowText]=\"'Approval Workflow'\"\r\n >\r\n </app-owner-list>\r\n\r\n <app-frequency-container\r\n *ngIf=\"activeSelector === 'frequency'\"\r\n [mode]=\"'policy'\"\r\n [frequencyDetails]=\"frequencyDetails\"\r\n (selectedFrequency)=\"frequencyData($event)\"\r\n [feature]=\"feature\"\r\n [pageType]=\"'policy'\"\r\n (closeFrequency)=\"disableSelector()\"\r\n ></app-frequency-container>\r\n\r\n <app-frequency-container\r\n *ngIf=\"activeSelector === 'reviewerFrequency'\"\r\n [mode]=\"'reviewerFrequency'\"\r\n [frequencyDetails]=\"reviewerFrequencyDetails\"\r\n (selectedFrequency)=\"reviewerFrequencyData($event)\"\r\n [feature]=\"feature\"\r\n [pageType]=\"'policy'\"\r\n (closeFrequency)=\"disableSelector()\"\r\n ></app-frequency-container>\r\n\r\n <vc-link-program\r\n *ngIf=\"activeSelector === 'linkProgram'\"\r\n (close)=\"disableSelector()\"\r\n [policy]=\"policyForm\"\r\n [selectedProgram]=\"policyForm?.programSelectedValues\"\r\n [mode]=\"mode\"\r\n [selectedLinkProgram]=\"selectedLinkProgram\"\r\n (changeTab)=\"changeTab('linkedPrograms')\"\r\n (updatedProgramDetails)=\"updatedProgramDetails($event)\"\r\n >\r\n </vc-link-program>\r\n\r\n <app-checkpoints-policy-container\r\n (closeCheckPoint)=\"disableSelector()\"\r\n [checkpointData]=\"policyForm?.checkpointDetails\"\r\n [requiredPoint]=\"policyForm?.passingMarks\"\r\n *ngIf=\"activeSelector === 'checkpoints'\"\r\n (saveCheckPoint)=\"saveSelectedList('checkpoints', $event)\"\r\n ></app-checkpoints-policy-container>\r\n <app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n\r\n <app-approval-workflow\r\n *ngIf=\"enableApprovalWorkflow\"\r\n [selectedCategory]=\"policyForm?.selectedCategories\"\r\n [approverWorkFlowList]=\"approverWorkFlowList\"\r\n [allApprovers]=\"allApprovers\"\r\n (listCancelClicked)=\"listCancelClicked($event)\"\r\n (selectedWorkflowNext)=\"selectedApprovalWorkflow($event)\"\r\n (saveApprovalWorkflow)=\"approvalWorkflowAPICall($event)\"\r\n [editApprovalWorkflow]=\"editApprovalWorkflow\"\r\n [createApprovalClick]=\"createApprovalClick\"\r\n (closeCreateClicked)=\"closeClickedCreateForm()\"\r\n [editWorkflowLevel]=\"editWorkflowLevel\"\r\n ></app-approval-workflow>\r\n <!-- <app-select-approvers></app-select-approvers> -->\r\n\r\n <app-policy-access\r\n *ngIf=\"activeSelector === 'policyAccess'\"\r\n [policyAccessType]=\"policyForm?.policy_access_type\"\r\n (close)=\"disableSelector()\"\r\n [orgUsersList]=\"usersList\"\r\n [usersAccessList]=\"usersAccessList\"\r\n [groupList]=\"overseerGroupsList\"\r\n [groupsAccessList]=\"groupsAccessList\"\r\n [selectedUsers]=\"policyForm?.policy_access_owners\"\r\n [selectedGroups]=\"policyForm?.policy_access_groups\"\r\n [disabledIds]=\"usersAccessListIds\"\r\n [disabledGroupIds]=\"groupsAccessListIds\"\r\n [futureUsersWillSelect]=\"policyForm?.availableOnPortal\"\r\n (saveCheckPoint)=\"saveSelectedList('policyAccess', $event)\"\r\n (setPolicyAccessType)=\"policyForm.policy_access_type = $event\"\r\n >\r\n </app-policy-access>\r\n</ng-container>\r\n<ng-container *ngIf=\"showCreateDocuments\">\r\n <!-- <app-create-documents *ngIf=\"showCreateDocuments\"\r\n [organization_id]=\"organization_id\"\r\n [member_obj_id]=\"member_obj_id\"\r\n [userInfo]=\"userInfo\"\r\n [policyId]=\"policyId\"\r\n [policyName]=\"policyForm.policyName\"\r\n (disconnectRefresh)=\"disconnectRefresh.emit(false)\"\r\n (editPolicy)=\"editPolicyFromDocuments()\"\r\n ></app-create-documents> -->\r\n <lib-document-section\r\n *ngIf=\"showCreateDocuments\"\r\n [organization_id]=\"organization_id\"\r\n [member_obj_id]=\"member_obj_id\"\r\n [userInfo]=\"userInfo\"\r\n [policyId]=\"policyId\"\r\n [policyName]=\"policyForm.policyName\"\r\n (disconnectRefresh)=\"disconnectRefresh.emit(false)\"\r\n (editPolicy)=\"editPolicyFromDocuments()\"\r\n ></lib-document-section>\r\n</ng-container>\r\n\r\n<app-assessment-list\r\n *ngIf=\"activeSelector === 'isAssessment'\"\r\n [program_ids]=\"''\"\r\n [isEdit]=\"policyForm?.assessment?.length\"\r\n (cancelAssessment)=\"saveSelectedList('isAssessment', false)\"\r\n [selectedAssessment]=\"policyForm?.assessment[0]\"\r\n [mode]=\"'policy'\"\r\n (onAssessmentSelect)=\"\r\n onAssessmentSelect($event); saveSelectedList('isAssessment', false)\r\n \"\r\n></app-assessment-list>\r\n\r\n<app-owner-list\r\n *ngIf=\"activeSelector === 'approvers' && false\"\r\n [listHeading]=\"'Select Approvers'\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [usersList]=\"allApprovers\"\r\n [showWorkflow]=\"true\"\r\n [selectedUsers]=\"\r\n addMoreLevels\r\n ? []\r\n : policyForm.selectedApprovers[approversListIndex].approvers\r\n \"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('approvers', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n [mode]=\"mode\"\r\n [reviewerWorkflowType]=\"workflowType\"\r\n (reviewerWorkflowTypeChange)=\"reviewerTypeChange($event)\"\r\n [workflowList]=\"workflowList\"\r\n [workflowText]=\"'Approval Workflow'\"\r\n>\r\n</app-owner-list>\r\n\r\n<app-owner-list\r\n *ngIf=\"activeSelector === 'owners'\"\r\n [listHeading]=\"'Select Owner(s)'\"\r\n [singularText]=\"'User selected'\"\r\n [pluralText]=\"'Users selected'\"\r\n [usersList]=\"allApprovers\"\r\n [showWorkflow]=\"false\"\r\n [userIdKey]=\"'member_id'\"\r\n [itemEmailKey]=\"'member_email'\"\r\n [itemNameKey]=\"'member_name'\"\r\n (saveSelectedList)=\"saveSelectedList('owners', $event)\"\r\n (closeUsersList)=\"disableSelector()\"\r\n [mode]=\"mode\"\r\n [selectedUsers]=\"policyForm?.policy_owners ?? []\"\r\n>\r\n</app-owner-list>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";::ng-deep .workflow-policy{position:relative}::ng-deep .workflow-policy app-cs-switch{display:block}::ng-deep .workflow-policy app-cs-switch label.cs-switch span.value{color:#747576!important;font-size:11px!important;font-weight:500!important;justify-content:flex-end!important;line-height:16px;width:100%!important}::ng-deep .workflow-policy app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:12px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 8px 0 4px}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected{height:56px;padding:4px 12px 8px;display:block}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected .workflow-label{min-width:auto;padding:0;text-align:left;margin:0 0 4px;border-right:none;width:100%;display:flex;align-items:center}::ng-deep .workflow-policy .form-group-row .right .approval-workflow .selected .workflow-label p.description{font-size:10px;margin-left:6px}::ng-deep .workflow-policy .form-group-row .right .approval-workflow cs-select .selection-wrap .input-group:before{display:none!important}::ng-deep .workflow-policy app-frequency-container app-frequency-weekly .frequency-weekly app-frequency-lifecycle .frequency-lifecycle-responsibility-inner-item{height:unset!important}.disabled{opacity:.5;pointer-events:none}.who-toggle{margin-top:10px}\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 .chipName.full-width{max-width:25rem}::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:#fff;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:#fff}::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:#fff;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{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:#fff;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:#fff;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:#fff;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:#fff}::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 .info.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.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:212px;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:#fff;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:#fff;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:#fff;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:#fff;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}::ng-deep dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}::ng-deep dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}::ng-deep dp-date-picker input:focus{outline:none}::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar,::ng-deep dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep dp-date-picker .dp-popup dp-day-calendar button,::ng-deep dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep 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}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}::ng-deep 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:#0000004d}::ng-deep .cdk-overlay-container{z-index:2147483002!important}::ng-deep .dp-popup{z-index:999;display:flex!important;align-items:center;justify-content:center;width:100vw;height:100vh;background:#0000004d!important;box-shadow:unset!important}::ng-deep .dp-popup dp-day-calendar{width:412px!important;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep .dp-popup dp-day-calendar,::ng-deep .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep .dp-popup dp-day-calendar button,::ng-deep .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep .dp-popup dp-day-calendar .dp-weekdays,::ng-deep .dp-popup dp-month-calendar .dp-weekdays,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep .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}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}@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:#fff}::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% 1%,#747576 50%,#2989d800 51%,#7db9e800);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:#fff}::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% 50%,#2989d800 51%,#7db9e800);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% 1%,#34aa44 50%,#2989d800 51%,#7db9e800);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% 1%,#1e5dd3 50%,#2989d800 51%,#7db9e800);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% 1%,#f6882f 50%,#2989d800 51%,#7db9e800);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% 1%,#7aa6f7 50%,#2989d800 51%,#7db9e800);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}.wf-tooltip{pointer-events:none;position:absolute;max-width:300px;font-size:12px;text-align:left;color:#fff;padding:8px 12px;background:#000;border-radius:2px;z-index:-222;top:0;opacity:0;white-space:break-spaces;word-break:break-word}.wf-tooltip *{color:#fff!important}.wf-tooltip:empty{display:none!important}.wf-tooltip.white{box-shadow:0 2px 8px #1c5bd159;color:#747576;background:#fff;text-align:left}.wf-tooltip.white b{color:#747576!important}.wf-tooltip.animate-top{animation:animate-top .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-right{animation:animate-right .3s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-bottom{animation:animate-bottom .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-left{animation:animate-left .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-left.white:after{border-color:transparent transparent transparent #f1f1f1}.wf-tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #000000}.wf-tooltip-right.white:after{border-color:transparent #f1f1f1 transparent transparent}.wf-tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent #000000 transparent transparent}.wf-tooltip-bottom-right:after{bottom:100%;left:100%;margin-left:-20px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-right.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-bottom-left:after{bottom:100%;left:0;margin-left:10px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-left.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-top-left:after{top:100%;left:0;margin-left:10px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-left.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-top-right:after{top:100%;left:100%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-right.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip:after{content:\"\";position:absolute;border-style:solid}.wf-tooltip span.within{font-size:80%;display:block;width:100%}.wf-tooltip .small{display:block;font-size:10px}.wf-tooltip .within-box{background:#f1f1f1;border-radius:2px;color:#042e7d!important;font-size:9px;font-weight:500;text-transform:uppercase;padding:0 2px;margin-right:2px}.wf-tooltip-show{pointer-events:none;opacity:1;z-index:2147483001}\n"] }]
|
|
1882
1921
|
}], ctorParameters: function () { return [{ type: i1.PolicyService }, { type: i2.SnackBarService }, { type: i3.UiKitService }, { type: i4.AuthService }, { type: i5.ResponsibilityService }, { type: i6.Router }, { type: i6.ActivatedRoute }, { type: i7.FrequencyService }, { type: i8.PlatformLocation }, { type: i0.ChangeDetectorRef }, { type: i9.RestApiService }, { type: i10.CommonService }, { type: i11.OrganizationUserService }, { type: i12.OrganizationCommonService }, { type: i13.ComplianceCommonService }]; }, propDecorators: { pickerChanged: [{
|
|
1883
1922
|
type: Output
|
|
1884
1923
|
}], mode: [{
|
|
@@ -1914,4 +1953,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1914
1953
|
type: HostListener,
|
|
1915
1954
|
args: ['document:click', ['$event']]
|
|
1916
1955
|
}] } });
|
|
1917
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXBvbGljeS93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcG9saWN5L3dvcmtmbG93LXBvbGljeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBVzNDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUtuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVd6RSxNQUFNLE9BQU8sdUJBQXVCO0lBbUtsQyxZQUNVLGFBQTRCLEVBQzVCLFFBQXlCLEVBQ3pCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLHFCQUE0QyxFQUM1QyxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsZ0JBQWtDLEVBQzFDLGdCQUFrQyxFQUMxQixTQUE0QixFQUM1QixjQUE4QixFQUM5QixhQUE0QixFQUM1Qix1QkFBZ0QsRUFDaEQseUJBQW9ELEVBQ3BELHVCQUFnRDtRQWRoRCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4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Q0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNsb25lRGVlcCwgdW5pcUJ5IH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XHJcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ3Zjb21wbHktZWRpdG9yJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uQWxlcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpcm1hdGlvbi1hbGVydCc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb2xpY3lGb3JtIH0gZnJvbSAnLi4vd29ya2Zsb3ctaW50ZXJmYWNlcy9jcmVhdGUtcG9saWN5LWZvcm0nO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFBvbGljeVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9wb2xpY3kuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XHJcbmltcG9ydCB7IFBsYXRmb3JtTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC9tb21lbnQnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgRnJlcXVlbmN5U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybWF0QW5kRXZpZGVuY2VDb21wb25lbnQgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL2Zvcm1hdC1hbmQtZXZpZGVuY2UvZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXN0QXBpU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvbGluay1wcm9ncmFtL3Jlc3RhcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IERFRkFVTFRfMjRIUiwgREVGQVVMVF9USU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzL3RpbWUuY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3JnYW5pemF0aW9uVXNlclNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9vcmdhbml6YXRpb24tdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3JnYW5pemF0aW9uQ29tbW9uU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2NvbW1vbi13b3JrZmxvdy1zZXJ2aWNlcy9vcmdhbml6YXRpb24tY29tbW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wbGlhbmNlQ29tbW9uU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2NvbW1vbi13b3JrZmxvdy1zZXJ2aWNlcy9jb21wbGlhbmNlLWNvbW1vbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXdvcmtmbG93LXBvbGljeScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LXBvbGljeS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtmbG93UG9saWN5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBtb2RlID0gJ0NSRUFURSc7XHJcbiAgQElucHV0KCkgcG9saWN5SWQgPSAnJztcclxuICBASW5wdXQoKSBmZWF0dXJlOiBhbnk7XHJcbiAgQE91dHB1dCgpIHNob3dDb25maXJtYXRpb25BbGVydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XHJcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkaXNjb25uZWN0UmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2hpZnRUb0VkaXRNb2RlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIGNvbnZlcnRGaWxlRGF0YTogYW55ID0ge307XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRDYXRlZ29yeSA9ICcnO1xyXG4gIEBJbnB1dCgpIGlzU2VuZEZvckF0dGVzdGF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1hdEV2aWRlbmNlJykgZm9ybWF0RXZpZGVuY2UhOiBGb3JtYXRBbmRFdmlkZW5jZUNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgZGF0ZVBpY2tlclBvcFVwITogRWxlbWVudFJlZjtcclxuXHJcbiAgZGVzY3JpcHRpb246IEVkaXRvckNvbmZpZyA9IHtcclxuICAgIG1vZGU6ICdwcmltZScsXHJcbiAgICBjb2xvclBhbGV0dGU6IHRydWUsXHJcbiAgICBsaW5rOiB0cnVlLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdBZGQgYSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBwb2xpY3kuJyxcclxuICB9O1xyXG4gIHdvcmtmbG93VHlwZSA9ICdTRVFVRU5USUFMJztcclxuICBzY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xyXG4gIG5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gIGFjdGl2ZVNlbGVjdG9yID0gJyc7XHJcbiAgcmNMaXN0OiBhbnkgPSBbXTtcclxuICB1c2Vyc0xpc3Q6IGFueSA9IFtdO1xyXG4gIGFsbEFwcHJvdmVyczogYW55ID0gW107XHJcbiAgYWxsUmV2aWV3ZXJzOiBhbnkgPSBbXTtcclxuICBhc3NpZ25lZXNMaXN0OiBhbnkgPSBbXTtcclxuICBvd25lcmxpc3Q6IGFueSA9IFtdO1xyXG4gIHJldmlld2Vyc0xpc3Q6IGFueSA9IFtdO1xyXG4gIG92ZXJzZWVyc0xpc3Q6IGFueSA9IFtdO1xyXG4gIHJjTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIHVzZXJzTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIGNhdGVnb3J5TGlzdDogYW55ID0gW107XHJcbiAgZ3JvdXBzTGlzdDogYW55W10gPSBbXTtcclxuICB3b3JrRmxvd0xpc3Q6IGFueVtdID0gW107XHJcbiAgYXBwcm92ZXJXb3JrRmxvd0xpc3Q6IGFueVtdID0gW107XHJcbiAgc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgY2NFbWFpbE9iaklkczogYW55W10gPSBbXTtcclxuICBjY0ZhaWxHcm91cE9iaklkczogYW55W10gPSBbXTtcclxuICB1c2Vyc0FjY2Vzc0xpc3Q6IGFueVtdID0gW107XHJcbiAgdXNlcnNBY2Nlc3NMaXN0SWRzOiBhbnlbXSA9IFtdO1xyXG4gIGdyb3Vwc0FjY2Vzc0xpc3RJZHM6IGFueVtdID0gW107XHJcbiAgZ3JvdXBzQWNjZXNzTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgbG9hZGVyID0gZmFsc2U7XHJcbiAgY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBncm91cHNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgY2F0ZWdvcnlDb25maWcgPSB7XHJcbiAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IFBvbGljeSBDYXRlZ29yeScsXHJcbiAgICBmbG9hdGluZ1RleHRTaW5ndWxhcjogJ1BvbGljeSBDYXRlZ29yeSBTZWxlY3RlZCcsXHJcbiAgICBmbG9hdGluZ1RleHRQbHVyYWw6ICdQb2xpY3kgQ2F0ZWdvcmllcyBTZWxlY3RlZCcsXHJcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCBQb2xpY3kgQ2F0ZWdvcnknLFxyXG4gICAgc2VhcmNoRW5hYmxlZDogdHJ1ZSxcclxuICAgIHNlbGVjdEFsbEVuYWJsZWQ6IHRydWUsXHJcbiAgICB3b3JrZmxvdzogJ3BvbGljeScsXHJcbiAgfTtcclxuICBhcHByb3ZhbFdvcmtmbG93Q29uZmlnID0ge1xyXG4gICAgcGFuZWxUaXRsZTogJ1NlbGVjdCB1c2VyKHMpJyxcclxuICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnVXNlciBzZWxlY3RlZCcsXHJcbiAgICBmbG9hdGluZ1RleHRQbHVyYWw6ICdVc2VycyBzZWxlY3RlZCcsXHJcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCBVc2VyJyxcclxuICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICBzZWxlY3RBbGxFbmFibGVkOiB0cnVlLFxyXG4gIH07XHJcblxyXG4gIGFkZE1vcmVMZXZlbHMgPSBmYWxzZTtcclxuICBhcHByb3ZlcnNMaXN0SW5kZXggPSAwO1xyXG4gIHdvcmtmbG93TGlzdCA9IFsnU0VRVUVOVElBTCcsICdST1VORC1ST0JJTicsICdBTlkgT05FJ107XHJcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICBkYXRlQ29uZmlnID0ge1xyXG4gICAgZGlzYWJsZUtleXByZXNzOiB0cnVlLFxyXG4gICAgZm9ybWF0OiAnREQgTU0gWVlZWScsXHJcbiAgICB1blNlbGVjdE9uQ2xpY2s6IHRydWUsXHJcbiAgICBvcGVuT25DbGljazogZmFsc2UsXHJcbiAgICBvcGVuT25Gb2N1czogZmFsc2UsXHJcbiAgfTtcclxuICBmcmVxdWVuY3lEZXRhaWxzID0ge1xyXG4gICAgcGF0dGVybjogJycsXHJcbiAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxyXG4gICAgZGF0ZU9mTW9kaWZpZWQ6IDAsXHJcbiAgICBkZWFjdGl2YXRpb25WYWx1ZTogMCxcclxuICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxyXG4gICAgbGlmZWN5Y2xlOiAnMDAwMC0wMC0wMH5+MCcsXHJcbiAgICBzdGFydERhdGU6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgIHdpbmRvdzogMCxcclxuICAgIGZhaWxlZDogMCxcclxuICAgIHRpbWU6IERFRkFVTFRfVElNRSxcclxuICAgIGZhaWxlZFRpbWU6ICcnLFxyXG4gICAgY29udGludW91c19mYWlsZWRfZGF5czogMCxcclxuICB9O1xyXG4gIHJldmlld2VyRnJlcXVlbmN5RGV0YWlscyA9IHtcclxuICAgIHBhdHRlcm46ICcnLFxyXG4gICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcclxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxyXG4gICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXHJcbiAgICBzZWxlY3RlZFJlcG9ydDogMCxcclxuICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxyXG4gICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICB3aW5kb3c6IDAsXHJcbiAgICBmYWlsZWQ6IDAsXHJcbiAgICB0aW1lOiBERUZBVUxUX1RJTUUsXHJcbiAgICBmYWlsZWRUaW1lOiAnJyxcclxuICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDMsXHJcbiAgfTtcclxuICBmcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdXaGF0IGlzIHRoZSBhdHRlc3RhdGlvbiBzY2hlZHVsZSBmb3IgdGhpcyBwb2xpY3k/JztcclxuICByZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gJ1doZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIHJldmlld2VkPyc7XHJcblxyXG4gIHNpZGVTZWxlY3RvckVsZW1lbnRzID0gW1xyXG4gICAgJ2FwcHJvdmFsV29ya2Zsb3cnLFxyXG4gICAgJ2Fzc2lnbmVlcycsXHJcbiAgICAnYXBwcm92ZXJzJyxcclxuICAgICdyZXZpZXdlcicsXHJcbiAgICAnY2NFbWFpbCcsXHJcbiAgICAnY2NGYWlsJyxcclxuICAgICdyYycsXHJcbiAgICAnY2F0ZWdvcnknLFxyXG4gICAgJ2ZyZXF1ZW5jeScsXHJcbiAgICAncmV2aWV3ZXJGcmVxdWVuY3knLFxyXG4gICAgJ2NoZWNrcG9pbnRzJyxcclxuICAgICdsaW5rUHJvZ3JhbScsXHJcbiAgICAnaXNBc3Nlc3NtZW50JyxcclxuICAgICdvd25lcnMnLFxyXG4gICAgJ3BvbGljeUFjY2VzcycsXHJcbiAgXTtcclxuICByaXNrQ2xhc3NpZmljYXRpb24gPSBbXHJcbiAgICB7IG5hbWU6ICdMT1cnLCB2YWx1ZTogMSwgY2xhc3M6ICdsb3cnIH0sXHJcbiAgICB7IG5hbWU6ICdMT1ctTWVkaXVtJywgdmFsdWU6IDIsIGNsYXNzOiAnbG93LW1lZCcgfSxcclxuICAgIHsgbmFtZTogJ01lZGl1bS1IaWdoJywgdmFsdWU6IDMsIGNsYXNzOiAnbWVkLWhpZ2gnIH0sXHJcbiAgICB7IG5hbWU6ICdIaWdoJywgdmFsdWU6IDQsIGNsYXNzOiAnaGlnaCcgfSxcclxuICBdO1xyXG4gIHNob3dSaXNrQ2xhc3NpZmljYXRpb24gPSB0cnVlO1xyXG4gIHNob3dDcmVhdGVEb2N1bWVudHMgPSBmYWxzZTtcclxuICBvcmdhbml6YXRpb25faWQgPSAnJztcclxuICBtZW1iZXJfb2JqX2lkID0gJyc7XHJcbiAgbWVtYmVySWQgPSAwO1xyXG4gIHVzZXJJbmZvITogYW55O1xyXG5cclxuICBwb2xpY3lBcHByb3ZhbEZsYWcgPSAwO1xyXG4gIGJhc2VVUkwgPSAnJztcclxuICBncm91cEVuYWJsZWQ6IGFueSA9IHRydWU7XHJcbiAgb3ZlcnNlZXJHcm91cHNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGVuYWJsZUFwcHJvdmFsV29ya2Zsb3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1ZlcnNpb25WYWxpZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgc2VsZWN0ZWRMaW5rUHJvZ3JhbTogYW55ID0ge307XHJcbiAgdmVyc2lvbkVycm9yTWVzc2FnZTogc3RyaW5nID1cclxuICAgICdZb3UgaGF2ZSBlbnRlcmVkIGFuIGluY29ycmVjdCBmb3JtYXQuIFRoZSB2ZXJzaW9uIGZpZWxkIGNhbiBlaXRoZXIgaW5jbHVkZSBudW1iZXJzLCBhbHBoYWJldHMsIGh5cGhlbiBvciBkb3RzLic7XHJcbiAgc2VsZWN0ZWRXb3JrZmxvdzogYW55W10gPSBbXTtcclxuICBlZGl0QXBwcm92YWxXb3JrZmxvdyE6IGFueTtcclxuICBhcHByb3ZhbFdvcmtmbG93SWRzOiBhbnlbXSA9IFtdO1xyXG4gIGRlZmF1bHRFZGl0QXBwcm92ZXJzOiBhbnkgPSB7fTtcclxuICBjcmVhdGVBcHByb3ZhbENsaWNrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZWRpdFdvcmtmbG93TGV2ZWwgPSB7fTtcclxuICBub1dvcmtmbG93U2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBvbGljeVNlcnZpY2U6IFBvbGljeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVpS2l0U2VydmljZTogVWlLaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc3BvbnNpYmlsaXR5U2VydmljZTogUmVzcG9uc2liaWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlLFxyXG4gICAgcGxhdGZvcm1Mb2NhdGlvbjogUGxhdGZvcm1Mb2NhdGlvbixcclxuICAgIHByaXZhdGUgY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcmVzdEFwaVNlcnZpY2U6IFJlc3RBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25Vc2VyU2VydmljZTogT3JnYW5pemF0aW9uVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2U6IE9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbXBsaWFuY2VDb21tb25TZXJ2aWNlOiBDb21wbGlhbmNlQ29tbW9uU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5iYXNlVVJMID0gbG9jYXRpb24/Lm9yaWdpbjtcclxuICAgIGlmICh0aGlzLmJhc2VVUkwgPT0gJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMCcpIHtcclxuICAgICAgdGhpcy5iYXNlVVJMID0gJ2h0dHBzOi8vZGV2LnYtY29tcGx5LmNvbSc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHBvbGljeUZvcm06IFBvbGljeUZvcm0gPSB7XHJcbiAgICBwb2xpY3lOYW1lOiAnJyxcclxuICAgIHBvbGljeU5vdGVzOiAnJyxcclxuICAgIHNlbGVjdGVkQ2F0ZWdvcmllczogW10sXHJcbiAgICBzZWxlY3RlZEFwcHJvdmVyczogW10sXHJcbiAgICBzZWxlY3RlZEFzc2lnbmVlczogW10sIC8vZG91YnQgaW4gbmFtZVxyXG4gICAgc2VsZWN0ZWRHcm91cEFzc2lnbmVlOiBbXSxcclxuICAgIHNlbGVjdGVkUmV2aWV3ZXJzOiBbXSxcclxuXHJcbiAgICBzZWxlY3RlZFJDczogW10sXHJcbiAgICBDQ0ZhaWxFbWFpbDogW10sXHJcbiAgICBDQ0ZhaWxFbWFpbEdyb3VwOiBbXSxcclxuICAgIENDRW1haWw6IFtdLFxyXG4gICAgQ0NHcm91cEVtYWlsOiBbXSxcclxuICAgIGF2YWlsYWJsZU9uUG9ydGFsOiBmYWxzZSxcclxuICAgIGFjY2VwdFN1Z2dlc3Rpb25zOiBmYWxzZSxcclxuICAgIHJlcXVpcmVzU2lnbmF0dXJlRm9yQXR0ZXN0YXRpb246IGZhbHNlLFxyXG4gICAgcmlza1JhdGluZzogMSxcclxuICAgIGFzc29jaWF0ZWREb2N1bWVudHM6IHtcclxuICAgICAgZm9ybWF0RmlsZXM6IFtdLFxyXG4gICAgfSxcclxuICAgIHBvbGljeUR1ZURhdGU6IG1vbWVudCgpLFxyXG4gICAgY3VzdG9tVGFnczogW10sXHJcbiAgICBjaGVja3BvaW50RGV0YWlsczogW10sXHJcbiAgICB0b3RhbFF1ZXN0aW9uOiAwLFxyXG4gICAgcGFzc2luZ01hcmtzOiAwLFxyXG4gICAgZG9jdW1lbnRzQW5kTGlua3M6IHtcclxuICAgICAgZm9ybWF0RmlsZXM6IFtdLFxyXG4gICAgICBmb3JtYXRMaW5rczogW10sXHJcbiAgICB9LFxyXG4gICAgYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzOiBmYWxzZSxcclxuICAgIGFkZFJldmlld2VyczogZmFsc2UsXHJcbiAgICBhZGRDaGVja3BvaW50czogZmFsc2UsXHJcbiAgICBhZGRPdmVyc2VlcnM6IGZhbHNlLFxyXG4gICAgYWRkQXNzb2NpYXRlZERvY3VtZW50czogZmFsc2UsXHJcbiAgICBhZGRWZXJzaW9uOiBmYWxzZSxcclxuICAgIGFkZExpbmtBc3Nlc3NtZW50OiBmYWxzZSxcclxuICAgIGFkZExpbmtQcm9ncmFtOiBmYWxzZSxcclxuXHJcbiAgICBmYWlsZWRfdGltZTogJycsXHJcbiAgICBmcmVxdWVuY3lfZGV0YWlsczogJycsXHJcbiAgICBmcmVxdWVuY3lfdGV4dDogJycsXHJcbiAgICBtYXJrX2ZhaWxlZF9hZnRlcjogMCxcclxuICAgIHJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZTogMCxcclxuXHJcbiAgICByZXZpZXdGYWlsZWRBZnRlcjogMCxcclxuICAgIHJldmlld0ZhaWxlZFRpbWU6ICcnLFxyXG4gICAgcmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzOiAnJyxcclxuICAgIHJldmlld19mcmVxdWVuY3lfdHlwZTogJycsXHJcbiAgICByZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlOiAwLFxyXG4gICAgcmV2aWV3OiBmYWxzZSxcclxuICAgIGxpbmtQcm9ncmFtOiB7fSxcclxuICAgIHByb2dyYW1TZWxlY3RlZFZhbHVlczoge30sXHJcbiAgICBhc3NpZ25lZV9zdGFydF9kYXRlOiAnJywgLy9UaHUgRmViIDIyIDIwMjRcclxuICAgIHJldmlld2VyX3N0YXJ0X2RhdGU6ICcnLCAvL1RodSBGZWIgMjIgMjAyNFxyXG4gICAgcG9saWN5X3ZlcnNpb246ICcnLCAvLyBpdCB3aWxsIGFjY2VwdCBtYXRjaGVzIGFscGhhYmV0cywgaHlwaGVucyAoLSksIGRvdHMgKC4pLCBhbmQgbnVtZXJpYyB2YWx1ZXMgb25seSBhbmQgc2hvdWxkIGJlIHNtYWxsZXIgb3IgZXF1YWwgdG8gNiBjaGFyYWN0ZXJzXHJcbiAgICBhc3Nlc3NtZW50OiBbXSxcclxuICAgIHBvbGljeV9vd25lcnM6IFtdLFxyXG4gICAgcG9saWN5X2dyb3VwX293bmVyczogW10sXHJcbiAgICBidXNpbmVzc0N5Y2xlOiB7fSxcclxuICAgIHBvbGljeV9pZDogMCxcclxuICAgIHBvbGljeV9hY2Nlc3NfdHlwZTogMCxcclxuICAgIHBvbGljeV9hY2Nlc3Nfb3duZXJzOiBbXSxcclxuICAgIHBvbGljeV9hY2Nlc3NfZ3JvdXBzOiBbXSxcclxuICB9O1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5pdGlhdGVBUEkoKTtcclxuICAgIHRoaXMub3ZlcnNlZXJHcm91cExpc3QoKTtcclxuICB9XHJcblxyXG4gIF9pbml0aWF0ZUFQSSgpIHtcclxuICAgIHRoaXMuZ3JvdXBFbmFibGVkID1cclxuICAgICAgdGhpcy5mZWF0dXJlPy5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wb2xpY3lfZ3JvdXBzJykgfHwgdHJ1ZTtcclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICB0aGlzLl9pbml0aWF0ZUVkaXRBUEkoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0VXNlcnNMaXN0KCk7XHJcbiAgICB0aGlzLmNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCk7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRoaXMubW9kZSA9PT0gJ0VESVQnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5nZXRPcmdEZXRhaWxzKCk7XHJcbiAgICB0aGlzLm1lbWJlcl9vYmpfaWQgPSB0aGlzLmF1dGhTZXJ2aWNlPy5nZXRVc2VyRGV0YWlscygpPy5faWQ7XHJcbiAgICB0aGlzLnVzZXJJbmZvID0gdGhpcy5hdXRoU2VydmljZT8uZ2V0VXNlckRldGFpbHMoKT8udXNlcjtcclxuICAgIHRoaXMubWVtYmVySWQgPSB0aGlzLmF1dGhTZXJ2aWNlPy5nZXRNZW1iZXJJZCgpO1xyXG4gICAgdGhpcy5jaGFuZ2VSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmJ1c2luZXNzQ3ljbGUgPSB0aGlzLnJlc3RBcGlTZXJ2aWNlPy5nZXRCdXNpbmVzc0N5Y2xlKCk7XHJcbiAgfVxyXG5cclxuICBfaW5pdGlhdGVFZGl0QVBJKCkge1xyXG4gICAgdGhpcy5nZXRSQ0xpc3QoKTtcclxuICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcclxuICAgIHRoaXMub3ZlcnNlZXJHcm91cExpc3QoKTtcclxuICAgIHRoaXMuZ2V0R3JvdXBzTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3JnRGV0YWlscygpIHtcclxuICAgIHRoaXMub3JnYW5pemF0aW9uQ29tbW9uU2VydmljZT8uZ2V0T3JnRGV0YWlsc0luZm8oKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKCFyZXM/LmVuYWJsZV9yaXNrY2xhc3MpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1Jpc2tDbGFzc2lmaWNhdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzPy5faWQpIHtcclxuICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uX2lkID0gcmVzPy5faWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogRXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXlzIHRoZSBsaXN0aW5nIHBhZ2VzIHRoZSBsZWZ0IHNpZGUgb2YgcG9saWN5IGZvcm0gdG8gc2V0IGFuZCBlZGl0IHRoZSBkcm9wZG93biBmaWVsZHMgdmFsdWVzXHJcbiAgICogQHBhcmFtIHR5cGUgaG9sZHMgbmFtZSBvZiBwYXJ0aWN1bGFyIGxpc3QgaXMgdG8gYmUgZGlzcGxheWVkXHJcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIGJvb2xlYW4gdmFsdWUgdG8gZGlzcGxheSB0aGUgbGlzdCBvciBub3RcclxuICAgKiBAcGFyYW0gd29ya2Zsb3dUeXBlIGl0IHNldHMgdGhlIGFwcHJvdmFsIHdvcmtmbG93IHR5cGUgd2hpbGUgZWRpdGluZyB0aGUgYXBwcm92YWwgd29ya2Zsb3cuXHJcbiAgICovXHJcbiAgYWN0aXZhdGVTZWxlY3Rvcih0eXBlOiBhbnksIGV2ZW50OiBib29sZWFuLCB3b3JrZmxvd1R5cGU/OiBhbnkpIHtcclxuICAgIGlmICh3b3JrZmxvd1R5cGUpIHtcclxuICAgICAgdGhpcy53b3JrZmxvd1R5cGUgPSB3b3JrZmxvd1R5cGU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gZXZlbnQgPyB0eXBlIDogJyc7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAncmMnOlxyXG4gICAgICAgIHRoaXMuZ2V0UkNMaXN0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcclxuICAgICAgICB0aGlzLmdldENhdGVnb3JpZXNMaXN0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NjRW1haWwnOlxyXG4gICAgICBjYXNlICdjY0ZhaWwnOlxyXG4gICAgICBjYXNlICdhc3NpZ25lZXMnOlxyXG4gICAgICAgIHRoaXMuZ2V0R3JvdXBzTGlzdCgpO1xyXG4gICAgICAgIHRoaXMub3ZlcnNlZXJHcm91cExpc3QoKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKHR5cGUpKSB7XHJcbiAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsb3NlcyB0aGUgbGlzdGluZyBwYWdlc1xyXG4gICAqL1xyXG4gIGRpc2FibGVTZWxlY3RvcigpIHtcclxuICAgIHRoaXMuYWRkTW9yZUxldmVscyA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9ICcnO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBSZXNwb25zaWJpbGl0eSBjZW50ZXJzIGxpc3RcclxuICAgKi9cclxuICBnZXRSQ0xpc3QoKSB7XHJcbiAgICB0aGlzLmNvbXBsaWFuY2VDb21tb25TZXJ2aWNlPy5nZXRSY0xpc3RJbmZvKCk/LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMucmNMaXN0ID0gcmVzO1xyXG4gICAgICAgIHRoaXMucmNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IEVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMucmNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBvcmdhbml6YXRpb24gdXNlcnMgbGlzdFxyXG4gICAqL1xyXG4gIGdldFVzZXJzTGlzdCgpIHtcclxuICAgIHRoaXMub3JnYW5pemF0aW9uVXNlclNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uVXNlcnMoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmdyb3VwRW5hYmxlZCkge1xyXG4gICAgICAgICAgdGhpcy51c2Vyc0xpc3QgPSB0aGlzLnVwZGF0ZU1lbWJlcklkS2V5KHJlcyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudXNlcnNMaXN0ID0gcmVzO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVzZXJzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgdGhpcy51c2Vyc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gcmVwbGFjZSBtZW1iZXJfaWQgdmFsdWUgdG8gbXlfbWVtYmVyX2lkXHJcbiAgdXBkYXRlTWVtYmVySWRLZXkobGlzdDogYW55KSB7XHJcbiAgICBsZXQgdXBkYXRlZExpc3QgPSBsaXN0Lm1hcCgoZWxlOiBhbnkpID0+ICh7XHJcbiAgICAgIC4uLmVsZSxcclxuICAgICAgbWVtYmVyX2lkOiBlbGU/Lm15X21lbWJlcl9pZCxcclxuICAgIH0pKTtcclxuICAgIHJldHVybiB1cGRhdGVkTGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgUG9saWN5IENhdGVnb3JpZXMgbGlzdFxyXG4gICAqL1xyXG4gIGdldENhdGVnb3JpZXNMaXN0KCkge1xyXG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlLmdldENhdGVnb3JpZXNMaXN0KCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdCA9IHJlcztcclxuICAgICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSxcclxuICAgICAgKGVycjogRXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIG9yZ2FuaXphdGlvbiB1c2VycyBncm91cHMgbGlzdFxyXG4gICAqL1xyXG4gIGdldEdyb3Vwc0xpc3QoKSB7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5nZXRPcmdhbml6YXRpb25Qb2xpY3lHcm91cHMoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSByZXMuZGF0YTtcclxuICAgICAgICBjb25zdCBncm91cHM6IGFueSA9IFtdO1xyXG4gICAgICAgIGRhdGE/LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICAgICAgICBncm91cE5hbWU6IGVsZW1lbnQuZ3JvdXBfbmFtZSxcclxuICAgICAgICAgICAgdXNlcklkczogZWxlbWVudC5tZW1iZXJfaWRzLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGdyb3Vwcy5wdXNoKG9iaik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5ncm91cHNMaXN0ID0gZ3JvdXBzO1xyXG4gICAgICAgIGlmICh0aGlzLmdyb3VwRW5hYmxlZCkge1xyXG4gICAgICAgICAgdGhpcy5ncm91cHNMaXN0ID0gZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy9HZXQgdGhlIGxpc3Qgb2Ygb3ZlcnNlZXJzIGdyb3VwLlxyXG4gIG92ZXJzZWVyR3JvdXBMaXN0KCkge1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2U/LmdldE9yZ2FuaXphdGlvbk92ZXJzZWVyc0dyb3VwcygpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QgPSByZXM/LmRhdGE7XHJcbiAgICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgYXBwcm92ZXJzIHdvcmtmbG93IGZyb20gdGhlIHNlbGVjdGVkIHdvcmtmbG93IG9uIEFwcHJvdmVycyB3b3JrZmxvdyBsaXN0XHJcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIHByZWRlZmluZWQgd29ya2Zsb3dcclxuICAgKi9cclxuICBzZWxlY3RlZFdvcmtmbG93Q2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCA9PT0gLTEpIHtcclxuICAgICAgLy8gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gW107XHJcbiAgICAgIC8vIHRoaXMuYWRkTW9yZUxldmVscyA9IHRydWVcclxuICAgICAgLy8gdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBkYXRhID0gY2xvbmVEZWVwKGV2ZW50LmFwcHJvdmFsX3dvcmtmbG93KTtcclxuICAgICAgY29uc3QgbmV3QXJyYXkgPSBkYXRhLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaXRlbS5uYW1lID0gaXRlbS50eXBlO1xyXG4gICAgICAgIGNvbnN0IGlkcyA9IGl0ZW0uYXBwcm92ZXJzLm1hcCgoYXBwcm92ZXI6IGFueSkgPT4gYXBwcm92ZXIubWVtYmVyX2lkKTtcclxuICAgICAgICBpdGVtLmFwcHJvdmVycyA9IHRoaXMuc2V0TGlzdCh0aGlzLmFsbEFwcHJvdmVycywgaWRzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSBuZXdBcnJheS5maWx0ZXIoXHJcbiAgICAgICAgKGxldmVsOiBhbnkpID0+IGxldmVsLmFwcHJvdmVycy5sZW5ndGggPiAwXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIEFwcHJvdmVycyB3b3JrZmxvdyBsaXN0IGJhc2VkIG9uIHNlbGVjdGVkIHBvbGljeSBjYXRlZ29yaWVzXHJcbiAgICogQHBhcmFtIGlkIGNvbnRhaW5zIHNlbGVjdGVkIGNhdGVnb3JpZXMgaWQnc1xyXG4gICAqL1xyXG4gIGdldEFwcHJvdmVyV29ya0Zsb3coaWQ6IGFueSwgZGF0YT86IGFueSkge1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlLmdldFdvcmtmbG93TGlzdChpZCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzPy5sZW5ndGggPj0gMCkge1xyXG4gICAgICAgICAgdGhpcy5hcHByb3ZlcldvcmtGbG93TGlzdCA9IHJlczsgLy8gZ2V0dGluZyBhbGwgYXBwcm92ZXIgc2F2ZWQgd29ya2Zsb3dzXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3cgPSBbXTtcclxuICAgICAgICAgIHRoaXMuYXBwcm92ZXJXb3JrRmxvd0xpc3Q/LmZvckVhY2goKHdvcmtmbG93KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcHJvdmFsV29ya2Zsb3dJZHM/LmluY2x1ZGVzKHdvcmtmbG93Py5faWQpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93Py5wdXNoKHdvcmtmbG93KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgY29uc3QgYXBwcm92YWxEYXRhOiBhbnkgPSBbXTtcclxuICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFdvcmtmbG93Py5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5ub1dvcmtmbG93U2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBsZXQgYXBwcm92YWxXb3JrZmxvdzogYW55W10gPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVXb3JrZmxvdygpO1xyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmRlZmF1bHRFZGl0QXBwcm92ZXJzKS5mb3JFYWNoKChhcHByb3ZlcnNMZXZlbCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEVkaXRBcHByb3ZlcnNbYXBwcm92ZXJzTGV2ZWxdLmFwcHJvdmVycyA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRFZGl0QXBwcm92ZXJzW2FwcHJvdmVyc0xldmVsXT8uYXBwcm92ZXJzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgIChhcHA6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghYXBwLm1lbWJlcl9uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhcHByb3ZlclVzZXIgPSB0aGlzLnVzZXJzTGlzdD8uZmluZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHVzZXI6IGFueSkgPT4gdXNlci5teV9tZW1iZXJfaWQgPT0gYXBwLm1lbWJlcl9pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChhcHByb3ZlclVzZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLm1lbWJlcl9uYW1lID0gYXBwcm92ZXJVc2VyPy5tZW1iZXJfbmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcDtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBhcHByb3ZhbFdvcmtmbG93LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgbGV2ZWwxOiBhcHByb3ZlcnNMZXZlbCxcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZGVmYXVsdEVkaXRBcHByb3ZlcnNbYXBwcm92ZXJzTGV2ZWxdLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgYXBwcm92YWxEYXRhLnB1c2goe1xyXG4gICAgICAgICAgICAgIHdvcmtmbG93X25hbWU6ICcnLFxyXG4gICAgICAgICAgICAgIHdvcmtmbG93X21vZHVsZTogJ1BPTElDWScsXHJcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHt9LFxyXG4gICAgICAgICAgICAgIGFwcHJvdmFsX3dvcmtmbG93OiBhcHByb3ZhbFdvcmtmbG93LFxyXG4gICAgICAgICAgICAgIGNhdGVnb3J5X2FycjogW10sXHJcbiAgICAgICAgICAgICAgY3JlYXRvcjoge30sXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRXb3JrZmxvdz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdLmFwcHJvdmFsX3dvcmtmbG93ID0gYXBwcm92YWxEYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSB0aGlzLnNlbGVjdGVkV29ya2Zsb3c7XHJcbiAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLmdldEFwcHJvdmVyc0FuZFJldmlld2Vyc0xpc3QoXHJcbiAgICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICBbZGF0YS5SZXZpZXdlck1lbWJlcklkXSxcclxuICAgICAgICAgICAgICBkYXRhXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlV29ya2Zsb3coKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3cgPSBbXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IFtdO1xyXG4gICAgdGhpcy5hcHByb3ZhbFdvcmtmbG93SWRzID0gW107XHJcbiAgICB0aGlzLmVkaXRBcHByb3ZhbFdvcmtmbG93ID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBBcHByb3ZlcnMgYW5kIHJldmlld2VycyBsaXN0IGJhc2VkIG9uIHNlbGVjdGVkIHBvbGljeSBjYXRlZ29yaWVzXHJcbiAgICogQHBhcmFtIGNhdGVnb3J5SWRzIGNvbnRhaW5zIHNlbGVjdGVkIGNhdGVnb3JpZXMgaWQnc1xyXG4gICAqL1xyXG4gIGdldEFwcHJvdmVyc0FuZFJldmlld2Vyc0xpc3QoXHJcbiAgICBjYXRlZ29yeUlkczogYW55LFxyXG4gICAgYXBwcm92ZXJJZHM/OiBhbnksXHJcbiAgICByZXZpZXdlcklkcz86IGFueSxcclxuICAgIHBvbGljeT86IGFueVxyXG4gICkge1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5hbGxBcHByb3ZlcnMgPSBbXTtcclxuICAgIHRoaXMuYWxsUmV2aWV3ZXJzID0gW107XHJcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuZ2V0UmV2aWV3ZXJzKGNhdGVnb3J5SWRzKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXM/Lmxlbmd0aCA+PSAwKSB7XHJcbiAgICAgICAgICByZXMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWxsQXBwcm92ZXJzID0gdW5pcUJ5KFxyXG4gICAgICAgICAgICAgIHRoaXMuYWxsQXBwcm92ZXJzLmNvbmNhdChlbGVtZW50LmFsbF9hcHByb3ZlcnMpLFxyXG4gICAgICAgICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxsUmV2aWV3ZXJzID0gdW5pcUJ5KFxyXG4gICAgICAgICAgICAgIGVsZW1lbnQuYWxsX2FwcHJvdmVycy5jb25jYXQoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbFJldmlld2VycyxcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuYWxsX2F1dGhvcnNcclxuICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdDUkVBVEUnKSB0aGlzLnNldE93bmVyc09uTG9hZCgpO1xyXG4gICAgICAgICAgICBpZiAocG9saWN5Py5wb2xpY3lfb3duZXJzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfb3duZXJzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxBcHByb3ZlcnMsXHJcbiAgICAgICAgICAgICAgICBwb2xpY3k/LnBvbGljeV9vd25lcnMgPz8gW10sXHJcbiAgICAgICAgICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5nZXRVc2Vyc0FjY2Vzc0xpc3RCeUNhdGVnb3J5KGVsZW1lbnQpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhcHByb3Zlcklkcz8uYXBwcm92ZXJzKSB7XHJcbiAgICAgICAgICBsZXQgb2JqID0gYXBwcm92ZXJJZHM/LmFwcHJvdmVycztcclxuICAgICAgICAgIGxldCBhcHByb3ZlckxldmVscyA9IFtdO1xyXG4gICAgICAgICAgLy8gZm9yICh2YXIgaXRlbSBpbiBvYmopIHtcclxuICAgICAgICAgIC8vICAgY29uc3QgaWRzID0gb2JqW2l0ZW1dPy5hcHByb3ZlcnM/Lm1hcChcclxuICAgICAgICAgIC8vICAgICAoYXBwcm92ZXI6IGFueSkgPT4gYXBwcm92ZXIubWVtYmVyX2lkXHJcbiAgICAgICAgICAvLyAgICk7XHJcblxyXG4gICAgICAgICAgLy8gICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgIC8vICAgICBuYW1lOiBvYmpbaXRlbV0/LnR5cGUsXHJcbiAgICAgICAgICAvLyAgICAgYXBwcm92ZXJzOiB0aGlzLnNldExpc3QodGhpcy5hbGxBcHByb3ZlcnMsIGlkcywgJ21lbWJlcl9pZCcpLFxyXG4gICAgICAgICAgLy8gICB9O1xyXG4gICAgICAgICAgLy8gICBpZiAoZGF0YS5uYW1lID09ICdST1VORFJPQklOJykge1xyXG4gICAgICAgICAgLy8gICAgIGRhdGEubmFtZSA9ICdST1VORC1ST0JJTic7XHJcbiAgICAgICAgICAvLyAgIH0gZWxzZSBpZiAoZGF0YS5uYW1lID09ICdBTllPTkUnKSB7XHJcbiAgICAgICAgICAvLyAgICAgZGF0YS5uYW1lID0gJ0FOWSBPTkUnO1xyXG4gICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAvLyAgIGFwcHJvdmVyTGV2ZWxzLnB1c2goZGF0YSk7XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICBpZiAoYXBwcm92ZXJJZHM/LmFwcHJvdmVycykge1xyXG4gICAgICAgICAgICBsZXQgb2JqID0gYXBwcm92ZXJJZHM/LmFwcHJvdmVycztcclxuICAgICAgICAgICAgbGV0IGFwcHJvdmVyTGV2ZWxzID0gW107XHJcbiAgICAgICAgICAgIGZvciAodmFyIGl0ZW0gaW4gb2JqKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaWRzID0gb2JqW2l0ZW1dPy5hcHByb3ZlcnM/Lm1hcChcclxuICAgICAgICAgICAgICAgIChhcHByb3ZlcjogYW55KSA9PiBhcHByb3Zlci5tZW1iZXJfaWRcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogb2JqW2l0ZW1dPy5uYW1lID8/IG9ialtpdGVtXT8udHlwZSxcclxuICAgICAgICAgICAgICAgIGFwcHJvdmVyczogb2JqW2l0ZW1dPy5hcHByb3ZlcnMsXHJcbiAgICAgICAgICAgICAgICBhcHByb3ZhbF9kb25lOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGxldmVsMTogb2JqW2l0ZW1dPy5sZXZlbDEgfHwgaXRlbSxcclxuICAgICAgICAgICAgICAgIGFsaWFzX25hbWU6IG9ialtpdGVtXT8uYWxpYXNfbmFtZSxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIC8vQ3JlYXRpbmcgaXNzdWUgaW4gYXBwcm92YWwgd29ya2Zsb3cgcGF5bG9hZCAodHlwZSkgd2hpbGUgZWRpdGluZyBwb2xpY3lcclxuICAgICAgICAgICAgICAvLyBpZiAoZGF0YS50eXBlID09ICdST1VORFJPQklOJykge1xyXG4gICAgICAgICAgICAgIC8vICAgZGF0YS50eXBlID0gJ1JPVU5ELVJPQklOJztcclxuICAgICAgICAgICAgICAvLyB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PSAnQU5ZT05FJykge1xyXG4gICAgICAgICAgICAgIC8vICAgZGF0YS50eXBlID0gJ0FOWSBPTkUnO1xyXG4gICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICBhcHByb3ZlckxldmVscy5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkV29ya2Zsb3c/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvd1swXS5hcHByb3ZhbF93b3JrZmxvdyA9IGFwcHJvdmVyTGV2ZWxzO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvdyA9IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgYXBwcm92YWxfd29ya2Zsb3c6IGFwcHJvdmVyTGV2ZWxzLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IHRoaXMuc2VsZWN0ZWRXb3JrZmxvdztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXZpZXdlcklkcykge1xyXG4gICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgICAgdGhpcy5hbGxSZXZpZXdlcnMsXHJcbiAgICAgICAgICAgICAgcmV2aWV3ZXJJZHMsXHJcbiAgICAgICAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqKioqKipcclxuICAgKiBJdCBpcyB0byBwb3B1bGF0ZSBtb3JlIG9wdGlvbnMgZWxlbWVudHMgd2hpbGUgZWRpdGluZyB0aGUgcG9saWN5IGZvcm1cclxuICAgKi9cclxuICBwb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCkge1xyXG4gICAgY29uc3QgYWN0aXZhdGVkT3B0aW9ucyA9IFtdO1xyXG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRSZXNwb25zaWJpbGl0eUNlbnRlcnMpIHtcclxuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdSRVNQT05TSUJJTElUWV9DRU5URVInKTtcclxuICAgIH1cclxuICAgIC8vIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkUmV2aWV3ZXJzKSB7IGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnUkVWSUVXRVInKTsgfVxyXG4gICAgLy8gaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRDaGVja3BvaW50cykgeyBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ0NIRUNLUE9JTlRTJyk7IH1cclxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkT3ZlcnNlZXJzKSB7XHJcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnT1ZFUlNFRVInKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkQXNzb2NpYXRlZERvY3VtZW50cykge1xyXG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ1JFTEFURURfRE9DVU1FTlRTJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uKSB7XHJcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnVkVSU0lPTicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYXNzZXNzbWVudC5sZW5ndGgpIHtcclxuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdMSU5LX0FTU0VTU01FTlRTJyk7XHJcbiAgICAgIHRoaXMuZ2V0QXNzZXNzbWVudERldGFpbHModGhpcy5wb2xpY3lGb3JtLmFzc2Vzc21lbnRbMF0pO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbSAmJlxyXG4gICAgICB0aGlzLnBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRcclxuICAgICkge1xyXG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ0xJTktfUFJPR1JBTV9SRVNQT05TSUJJTElUSUVTJyk7XHJcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRMaW5rUHJvZ3JhbSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoYWN0aXZhdGVkT3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEl0IGlzIHRvIGFkZCBhbmQgcmVtb3ZlIHRoZSBlbGVtZW50cyBmcm9tIE1vcmUgb3B0aW9uIHRvIHRoZSBwb2xpY3kgRm9ybVxyXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBkZXRhaWxzIHJlbGF0ZWQgdG8gY2hlY2tlZCB2YWx1ZSwgY29kZSBwYXJ0aWN1bGFyIGVsZW1lbnRzIGZyb20gTW9yZSBvcHRpb25zXHJcbiAgICovXHJcbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xyXG4gICAgc3dpdGNoIChldmVudC5jb2RlKSB7XHJcbiAgICAgIGNhc2UgJ1JFU1BPTlNJQklMSVRZX0NFTlRFUic6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZFJlc3BvbnNpYmlsaXR5Q2VudGVycyA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vIGNhc2UgJ1JFVklFV0VSJzpcclxuICAgICAgLy8gICB0aGlzLnBvbGljeUZvcm0uYWRkUmV2aWV3ZXJzID0gZXZlbnQuY2hlY2tlZDtcclxuICAgICAgLy8gICBicmVhaztcclxuICAgICAgY2FzZSAnQ0hFQ0tQT0lOVFMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRDaGVja3BvaW50cyA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ09WRVJTRUVSJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkT3ZlcnNlZXJzID0gZXZlbnQuY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnUkVMQVRFRF9ET0NVTUVOVFMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzID0gZXZlbnQuY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnVkVSU0lPTic6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZFZlcnNpb24gPSBldmVudC5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdMSU5LX1BST0dSQU1fUkVTUE9OU0lCSUxJVElFUyc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZExpbmtQcm9ncmFtID0gZXZlbnQuY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnTElOS19BU1NFU1NNRU5UUyc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZExpbmtBc3Nlc3NtZW50ID0gZXZlbnQuY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgaXMgdG8gZW5zdXJlIHdoZXRoZXIgYWxsIHJlcXVpcmVkIGxpc3RzIG9uIFBvbGljeSBmcm9tIGlzIGxvYWRlZCBmcm9tIHRoZSBhcGkgY2FsbCBvciBub3RcclxuICAgKi9cclxuICBjaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpIHtcclxuICAgIGNvbnN0IGVkaXRMb2FkZXIgPVxyXG4gICAgICB0aGlzLm1vZGUgPT09ICdFRElUJ1xyXG4gICAgICAgID8gdGhpcy5yY0xpc3RMb2FkZWQgJiZcclxuICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgJiZcclxuICAgICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZFxyXG4gICAgICAgIDogdHJ1ZTtcclxuICAgIGlmICh0aGlzLnVzZXJzTGlzdExvYWRlZCAmJiBlZGl0TG9hZGVyKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgIGlmICh0aGlzLmNvbnZlcnRGaWxlRGF0YSAmJiB0aGlzLmNvbnZlcnRGaWxlRGF0YS5maWxlTmFtZSkge1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lID0gdGhpcy5jb252ZXJ0RmlsZURhdGEuZmlsZU5hbWUuc3Vic3RyaW5nKFxyXG4gICAgICAgICAgMCxcclxuICAgICAgICAgIHRoaXMuY29udmVydEZpbGVEYXRhLmZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJylcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnZlcnRGaWxlRGF0YS5jYXRlZ29yeUlkKSB7XHJcbiAgICAgICAgICB0aGlzLnNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgW3RoaXMuY29udmVydEZpbGVEYXRhLmNhdGVnb3J5SWRdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSkge1xyXG4gICAgICAgIHRoaXMuc2F2ZVNlbGVjdGVkTGlzdCgnY2F0ZWdvcnknLCBbdGhpcy5zZWxlY3RlZENhdGVnb3J5XSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0UG9saWN5KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpO1xyXG4gICAgICB9LCAzMDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJpZ2dlcnMgdGhlIGNvbmZpcm1hdGlvbiBwb3B1cCB3aGVuIGF2YWlsYWJpbGl0eSBvbiBQb2xpY3kgcG9ydGFsIHRvZ2dsZSBpbiBPTlxyXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyB0b2dnbGUgdmFsdWUgd2hpY2ggaXMgYWx3YXlzIHRydWUgb3IgZmFsc2VcclxuICAgKi9cclxuICBhdmFpbGFiaWxpdHlPblBvcnRhbChldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgY29uc3QgY29uZmlybWF0aW9uRGV0YWlsczogQ29uZmlybWF0aW9uQWxlcnQgPSB7XHJcbiAgICAgICAgaXNWaXNpYmxlOiB0cnVlLFxyXG4gICAgICAgIG1lc3NhZ2U6IGBUaGUgcG9saWNpZXMgdGhhdCB5b3UgaW50ZW5kIHRvIG1ha2UgYWNjZXNzaWJsZSB0byB0aGUgZW50aXJlIG9yZ2FuaXphdGlvbiBjYW4gYmUgYWRkZWQgdG8gdGhlIHBvbGljeSBwb3J0YWwuXHJcbiAgICAgICAgSXQgaXMgbGlrZSBhIHNoYXJlZCBjYXRhbG9nIG9mIGFsbCBhY3RpdmUgJiB1cGRhdGVkIHBvbGljaWVzIHRoYXQgYW55IGxvZ2dlZCBpbiB1c2VyIGNhbiByZWFkLyBkb3dubG9hZCBmb3IgcmVmZXJlbmNlLlxyXG4gICAgICAgIEhlbmNlLCBpZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCBpdCBpcyBub3QgbmVjZXNzYXJ5IGZvciB5b3UgdG8gc2V0IHVwIGFuIGF0dGVzdGF0aW9uIHNjaGVkdWxlIG9yIHNlbGVjdFxyXG4gICAgICAgIHJlYWRlcnMgdG8gYXR0ZXN0IHRoZSBwb2xpY2llcy5gLFxyXG4gICAgICAgIGFjdGlvbjogJ1BPTElDWV9QT1JUQUwnLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnNob3dDb25maXJtYXRpb25BbGVydC5lbWl0KGNvbmZpcm1hdGlvbkRldGFpbHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVjZWl2ZXMgdGhlIGlucHV0IGZyb20gdGhlIENvbmZpcm1hdGlvbiBkaWFsb2cgb2YgYXZhaWxhYmxlIG9uIFBvbGljeSBwb3J0YWxcclxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgb3B0aW9uIGZyb20gdGhlIGNvbmZpcm1hdGlvbiBkaWFsb2cgd2hpY2ggaXMgYWx3YXlzIGVpdGhlciAnWUVTJyBvciAnTk8nXHJcbiAgICovXHJcbiAgY29uZmlybVBvbGljeVBvcnRhbChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYXZhaWxhYmxlT25Qb3J0YWwgPSBldmVudCA9PSAnWUVTJyA/IHRydWUgOiBmYWxzZTtcclxuICAgIGlmIChldmVudCA9PSAnTk8nKSB7XHJcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5hY2NlcHRTdWdnZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgcG9saWN5Rm9ybSB3aXRoIHNlbGVjdGVkIGVsZW1lbnRzIGZyb20gdGhlIGxpc3RpbmcsIGZyZXF1ZW5jeSwgZmlsZSB1cGxvYWQgY29tcG9uZW50c1xyXG4gICAqIEBwYXJhbSB0eXBlIGRlZmluZXMgdGhlIHBhcnRpY3VsYXIgZmllbGQgb24gUG9saWN5IGZvcm0uXHJcbiAgICogQHBhcmFtIHNlbGVjdGVkSXRlbXMgY29udGFpbnMgdGhlIGxpc3Qgb2Ygc2VsZWN0ZWQgaXRlbXMgZnJvbSB0aGUgbGlzdFxyXG4gICAqL1xyXG4gIHNhdmVTZWxlY3RlZExpc3QodHlwZTogc3RyaW5nLCBzZWxlY3RlZEl0ZW1zOiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdyYyc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5yY0xpc3QsXHJcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxyXG4gICAgICAgICAgJ2l0ZW1faWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2F0ZWdvcnknOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdCxcclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXHJcbiAgICAgICAgICAnX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3Qgb2JqZWN0SWRzID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLFxyXG4gICAgICAgICAgJ19pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IFtdO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2VycyA9IFtdO1xyXG4gICAgICAgIHRoaXMucmVzZXRQb2xpY3lBY2Nlc3NEZXRhaWxzKCk7XHJcbiAgICAgICAgdGhpcy5yZXNldFJldmlld2VyRnJlcXVlbmN5KCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MgPSBbXTtcclxuICAgICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3cob2JqZWN0SWRzKTtcclxuICAgICAgICB0aGlzLmdldEFwcHJvdmVyc0FuZFJldmlld2Vyc0xpc3Qob2JqZWN0SWRzKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdGFnID0gZWxlbWVudC5jdXN0b21fdGFncztcclxuICAgICAgICAgIGlmICh0YWcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0YWcuZm9yRWFjaCgodGFnRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnBvbGljeUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ25hbWUgPT0gdGFnRGF0YS50YWduYW1lXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5jdXN0b21UYWdzLnB1c2godGFnRGF0YSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XHJcbiAgICAgICAgbGV0IHVzZXJJZHMsIGdyb3VwSWRzO1xyXG4gICAgICAgIGlmICh0aGlzLmdyb3VwRW5hYmxlZCkge1xyXG4gICAgICAgICAgdXNlcklkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXMudXNlcnMsICdtZW1iZXJfaWQnKTtcclxuICAgICAgICAgIGdyb3VwSWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcy5ncm91cHMsICdncm91cF9pZCcpO1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZSA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsXHJcbiAgICAgICAgICAgIGdyb3VwSWRzLFxyXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB1c2VySWRzID0gc2VsZWN0ZWRJdGVtcztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXNzaWduZWVzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0LFxyXG4gICAgICAgICAgdXNlcklkcyxcclxuICAgICAgICAgICdteV9tZW1iZXJfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAncmV2aWV3ZXInOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2VycyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgIHRoaXMuYWxsUmV2aWV3ZXJzLFxyXG4gICAgICAgICAgW3NlbGVjdGVkSXRlbXMubWVtYmVyX2lkXSxcclxuICAgICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2NFbWFpbCc6XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkVXNlcklkcywgc2VsZWN0ZWRHcm91cElkcztcclxuICAgICAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcclxuICAgICAgICAgIHNlbGVjdGVkVXNlcklkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXM/LnVzZXJzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgICAgICBzZWxlY3RlZEdyb3VwSWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzLCAnZ3JvdXBfaWQnKTtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0dyb3VwRW1haWwgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LFxyXG4gICAgICAgICAgICBzZWxlY3RlZEdyb3VwSWRzLFxyXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRW1haWwgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgIHRoaXMudXNlcnNMaXN0LFxyXG4gICAgICAgICAgICBzZWxlY3RlZFVzZXJJZHMsXHJcbiAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5jY0VtYWlsT2JqSWRzID0gdGhpcy5nZXRHcm91cE9iamVjdElkKFxyXG4gICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRW1haWwgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgIHRoaXMudXNlcnNMaXN0LFxyXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxyXG4gICAgICAgICAgICAnZW1wbG95ZWVfaWQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjY0ZhaWwnOlxyXG4gICAgICAgIGxldCBzZWxlY3RlZEZhaWxVc2VySWRzLCBzZWxlY3RlZEZhaWxHcm91cElkcztcclxuICAgICAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcclxuICAgICAgICAgIHNlbGVjdGVkRmFpbFVzZXJJZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8udXNlcnMsXHJcbiAgICAgICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgc2VsZWN0ZWRGYWlsR3JvdXBJZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzLFxyXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsR3JvdXAgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LFxyXG4gICAgICAgICAgICBzZWxlY3RlZEZhaWxHcm91cElkcyxcclxuICAgICAgICAgICAgJ2dyb3VwX2lkJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy51c2Vyc0xpc3QsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkRmFpbFVzZXJJZHMsXHJcbiAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5jY0ZhaWxHcm91cE9iaklkcyA9IHRoaXMuZ2V0R3JvdXBPYmplY3RJZChcclxuICAgICAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgIHRoaXMudXNlcnNMaXN0LFxyXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxyXG4gICAgICAgICAgICAnZW1wbG95ZWVfaWQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhcHByb3ZlcnMnOlxyXG4gICAgICAgIGNvbnN0IGFwcHJvdmVycyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgIHRoaXMuYWxsQXBwcm92ZXJzLFxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcclxuICAgICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb3JlTGV2ZWxzKSB7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMucHVzaCh7XHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMud29ya2Zsb3dUeXBlLFxyXG4gICAgICAgICAgICBhcHByb3ZlcnMsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuYWRkTW9yZUxldmVscyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0b3IoKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzW3RoaXMuYXBwcm92ZXJzTGlzdEluZGV4XSA9IHtcclxuICAgICAgICAgIG5hbWU6IHRoaXMud29ya2Zsb3dUeXBlLFxyXG4gICAgICAgICAgYXBwcm92ZXJzLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Jldmlld2VyX2F0dGFjaG1lbnRzJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0RmlsZXMgPVxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uZmlsZXMgPz8gW107XHJcblxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRMaW5rcyA9XHJcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5saW5rcyA/PyBbXTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXNzb2NpYXRlZERvY3VtZW50cyc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFzc29jaWF0ZWREb2N1bWVudHMuZm9ybWF0RmlsZXMgPVxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uZmlsZXMgPz8gW107XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjaGVja3BvaW50cyc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmNoZWNrcG9pbnREZXRhaWxzID1cclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmNoZWNrcG9pbnREZXRhaWxzID8/IFtdO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS50b3RhbFF1ZXN0aW9uID1cclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmNoZWNrcG9pbnREZXRhaWxzPy5sZW5ndGggPz8gMDtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0ucGFzc2luZ01hcmtzID0gc2VsZWN0ZWRJdGVtcz8ucmVxdWlyZWRQb2ludCA/PyAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvd25lcnMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfb3duZXJzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5hbGxBcHByb3ZlcnMsXHJcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxyXG4gICAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdwb2xpY3lBY2Nlc3MnOlxyXG4gICAgICAgIGxldCBhY2Nlc3NJZHMsIGFjY2Vzc0dyb3VwSWRzO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hdmFpbGFibGVPblBvcnRhbCA9XHJcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5mdXR1cmVVc2Vyc1dpbGxTZWxlY3Q7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XHJcbiAgICAgICAgICBhY2Nlc3NJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zLnVzZXJzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgICAgICBhY2Nlc3NHcm91cElkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXMuZ3JvdXBzLCAnZ3JvdXBfaWQnKTtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX2dyb3VwcyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsXHJcbiAgICAgICAgICAgIGFjY2Vzc0dyb3VwSWRzLFxyXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhY2Nlc3NJZHMgPSBzZWxlY3RlZEl0ZW1zO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc19vd25lcnMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXHJcbiAgICAgICAgICBhY2Nlc3NJZHMsXHJcbiAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XHJcbiAgfVxyXG5cclxuICAvL3JldHVybiB0aGUgX2lkIGZyb20gdGhlIHNlbGVjdGVkIG92ZXJzZWVyIGdyb3VwLlxyXG4gIGdldEdyb3VwT2JqZWN0SWQob3ZlcnNlZXJHcm91cD86IGFueSkge1xyXG4gICAgbGV0IG92ZXJzZWVyR3JvdXBJZEFycmF5ID0gb3ZlcnNlZXJHcm91cC5tYXAoKGVsZTogYW55KSA9PiBlbGUuX2lkKTtcclxuICAgIHJldHVybiBvdmVyc2Vlckdyb3VwSWRBcnJheTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgdGhlIHBhcnRpY3VsYXIgZWxlbWVudCBmcm9tIHNlbGVjdGVkIGxpc3RcclxuICAgKiBAcGFyYW0gdHlwZSBkZWZpbmVzIHRoZSBwYXJ0aWN1bGFyIGNhc2VcclxuICAgKiBAcGFyYW0gZXZlbnQgaG9sZHMgdGhlIGlkIG9yIGtleSBvZiBlbGVtZW50IHRvIGJlIHJlbW92ZWRcclxuICAgKiBAcGFyYW0gcmVtb3ZlSW5kZXggY29udGFpbnMgdGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIGJlIHJlbW92ZWRcclxuICAgKi9cclxuICByZW1vdmUodHlwZTogYW55LCBldmVudDogYW55LCByZW1vdmVJbmRleD86IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ3JjJzpcclxuICAgICAgICBjb25zdCByY0luZGV4ID0gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzLmZpbmRJbmRleChcclxuICAgICAgICAgIChyYzogYW55KSA9PiByYy5yY19pZCA9PSBldmVudC5yY19pZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzLnNwbGljZShyY0luZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXNzaWduZWVzJzpcclxuICAgICAgICBjb25zdCBlbnRydXN0SW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMuZmluZEluZGV4KFxyXG4gICAgICAgICAgKG93bmVyOiBhbnkpID0+IG93bmVyLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMuc3BsaWNlKGVudHJ1c3RJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZ3JvdXBBc3NpZ25lZXMnOlxyXG4gICAgICAgIGNvbnN0IGdyb3VwSW5kZXg6IGFueSA9XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRHcm91cEFzc2lnbmVlPy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgIChncm91cDogYW55KSA9PiBncm91cC5ncm91cF9pZCA9PSBldmVudC5ncm91cF9pZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRHcm91cEFzc2lnbmVlPy5zcGxpY2UoZ3JvdXBJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Jldmlld2VyJzpcclxuICAgICAgICBjb25zdCByZXZpZXdlckluZGV4ID0gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzLmZpbmRJbmRleChcclxuICAgICAgICAgIChyZXZpZXdlcjogYW55KSA9PiByZXZpZXdlci5tZW1iZXJfaWQgPT0gZXZlbnQubWVtYmVyX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMuc3BsaWNlKHJldmlld2VySW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMucmVzZXRSZXZpZXdlckZyZXF1ZW5jeSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjY0VtYWlsJzpcclxuICAgICAgICBjb25zdCBvdmVyc2VlckluZGV4ID0gdGhpcy5wb2xpY3lGb3JtLkNDRW1haWwuZmluZEluZGV4KFxyXG4gICAgICAgICAgKG92ZXJzZWVyOiBhbnkpID0+IG92ZXJzZWVyLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbC5zcGxpY2Uob3ZlcnNlZXJJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2NHcm91cEVtYWlsJzpcclxuICAgICAgICBjb25zdCBjY0dyb3VwSW5kZXg6IGFueSA9IHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsPy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAoZ3JvdXA6IGFueSkgPT4gZ3JvdXA/Lmdyb3VwX2lkID09IGV2ZW50Py5ncm91cF9pZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDR3JvdXBFbWFpbD8uc3BsaWNlKGNjR3JvdXBJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5jY0VtYWlsT2JqSWRzID0gdGhpcy5nZXRHcm91cE9iamVjdElkKFxyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWxcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NjRmFpbCc6XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJOb3RpZnlJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbC5maW5kSW5kZXgoXHJcbiAgICAgICAgICAob3ZlcnNlZXJOOiBhbnkpID0+IG92ZXJzZWVyTi5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsLnNwbGljZShvdmVyc2Vlck5vdGlmeUluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjY0dyb3VwRmFpbEVtYWlsJzpcclxuICAgICAgICBjb25zdCBjY0ZhaWxHcm91cEluZGV4OiBhbnkgPVxyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwPy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgIChncm91cDogYW55KSA9PiBncm91cD8uZ3JvdXBfaWQgPT0gZXZlbnQ/Lmdyb3VwX2lkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbEdyb3VwPy5zcGxpY2UoY2NGYWlsR3JvdXBJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5jY0ZhaWxHcm91cE9iaklkcyA9IHRoaXMuZ2V0R3JvdXBPYmplY3RJZChcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXBwcm92ZXJzJzpcclxuICAgICAgICBjb25zdCBhcHByb3ZlcnNJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1tcclxuICAgICAgICAgIHJlbW92ZUluZGV4XHJcbiAgICAgICAgXS5hcHByb3ZlcnMuZmluZEluZGV4KFxyXG4gICAgICAgICAgKGFwcHJvdmVyOiBhbnkpID0+IGFwcHJvdmVyLm1lbWJlcl9pZCA9PSBldmVudC5tZW1iZXJfaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1tyZW1vdmVJbmRleF0uYXBwcm92ZXJzLnNwbGljZShcclxuICAgICAgICAgIGFwcHJvdmVyc0luZGV4LFxyXG4gICAgICAgICAgMVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzW3JlbW92ZUluZGV4XS5hcHByb3ZlcnMubGVuZ3RoID09IDBcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2F0ZWdvcnknOlxyXG4gICAgICAgIGNvbnN0IGNhdGVnb3J5SW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLmZpbmRJbmRleChcclxuICAgICAgICAgIChjYXRlZ29yeTogYW55KSA9PiBjYXRlZ29yeS5pdGVtX2lkID09IGV2ZW50Lml0ZW1faWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMuc3BsaWNlKGNhdGVnb3J5SW5kZXgsIDEpO1xyXG4gICAgICAgIGNvbnN0IHRhZyA9IGV2ZW50LmN1c3RvbV90YWdzO1xyXG4gICAgICAgIGlmICh0YWcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGFnLmZvckVhY2goKHRhZ0RhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleENUID0gdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnbmFtZSA9PSB0YWdEYXRhLnRhZ25hbWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4Q1QgIT0gLTEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uY3VzdG9tVGFncy5zcGxpY2UoaW5kZXhDVCwgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBvYmplY3RJZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMsXHJcbiAgICAgICAgICAnX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yZXNldFJldmlld2VyRnJlcXVlbmN5KCk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzLnNwbGljZShcclxuICAgICAgICAgIDAsXHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMubGVuZ3RoXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtID0gT2JqZWN0LmFzc2lnbih0aGlzLnBvbGljeUZvcm0pO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2VycyA9IFtdO1xyXG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJXb3JrRmxvdyhvYmplY3RJZHMpO1xyXG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChvYmplY3RJZHMpO1xyXG4gICAgICAgIHRoaXMucmVzZXRQb2xpY3lBY2Nlc3NEZXRhaWxzKCk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjaGVja3BvaW50cyc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmNoZWNrcG9pbnREZXRhaWxzID0gW107XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnRvdGFsUXVlc3Rpb24gPSAwO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wYXNzaW5nTWFya3MgPSAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd3b3JrZmxvd0xldmVsJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzLnNwbGljZShyZW1vdmVJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVXb3JrZmxvdygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdsaW5rUHJvZ3JhbSc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmxpbmtQcm9ncmFtID0ge1xyXG4gICAgICAgICAgYWRkZWQ6IFtdLFxyXG4gICAgICAgICAgcmVtb3ZlZDogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcG9saWN5SWRzOiBbdGhpcy5wb2xpY3lGb3JtPy5wb2xpY3lfaWQgPz8gMF0sXHJcbiAgICAgICAgICAgICAgcHJvZ3JhbUlkOiB0aGlzLnNlbGVjdGVkTGlua1Byb2dyYW0/Ll9pZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0ucHJvZ3JhbVNlbGVjdGVkVmFsdWVzID0ge307XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ293bmVycyc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5wb2xpY3lfb3duZXJzLnNwbGljZShyZW1vdmVJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3BvbGljeUFjY2Vzcyc6XHJcbiAgICAgICAgY29uc3QgdXNlckFjY2Vzc0luZGV4ID0gdGhpcy5wb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVycy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAob3duZXI6IGFueSkgPT4gb3duZXI/LmVtcGxveWVlX2lkID09IGV2ZW50Py5lbXBsb3llZV9pZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVycz8uc3BsaWNlKHVzZXJBY2Nlc3NJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYWNjZXNzR3JvdXAnOlxyXG4gICAgICAgIGNvbnN0IGdyb3VwQWNjZXNzSW5kZXg6IGFueSA9XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzPy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgIChncm91cDogYW55KSA9PiBncm91cD8uZ3JvdXBfaWQgPT0gZXZlbnQ/Lmdyb3VwX2lkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHM/LnNwbGljZShncm91cEFjY2Vzc0luZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZnJlcXVlbmN5JzpcclxuICAgICAgICB0aGlzLnJlbW92ZUZyZXF1ZW5jeSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBSZWZyZXNoZXMgdGhlIGFzc2lnbmVlcyBhbmQgb3ZlcnNlZXJzIGxpc3Qgc3VjaCB0aGF0IGJvdGggbGlzdCBkb2VzIG5vdCBjb250YWluIHRoZSBzYW1lIHVzZXJzIGJhc2VkIG9uIHNlbGVjdGlvblxyXG4gICAqL1xyXG4gIHJlZnJlc2hBbGxMaXN0cygpIHtcclxuICAgIGxldCBhc3NpZ25lZXNJZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IHJldmlld2Vyc0lkczogYW55ID0gW107XHJcbiAgICBsZXQgb3ZlcnNlZXJJZHM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgYWxsVXNlcnMgPSBjbG9uZURlZXAodGhpcy51c2Vyc0xpc3QpO1xyXG4gICAgY29uc3QgYXNzaWduZWVzID0gY2xvbmVEZWVwKHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcyk7XHJcbiAgICBjb25zdCBvdmVyc2Vlckxpc3QgPSBjbG9uZURlZXAodGhpcy5wb2xpY3lGb3JtLkNDRW1haWwpO1xyXG4gICAgY29uc3Qgbm90aWZ5T3ZlcnNlZXJzID0gY2xvbmVEZWVwKHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbCk7XHJcbiAgICBhc3NpZ25lZXM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICBhc3NpZ25lZXNJZHMucHVzaCh1c2VyLmVtcGxveWVlX2lkKTtcclxuICAgIH0pO1xyXG4gICAgb3ZlcnNlZXJMaXN0Py5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgb3ZlcnNlZXJJZHMucHVzaCh1c2VyLmVtcGxveWVlX2lkKTtcclxuICAgIH0pO1xyXG4gICAgbm90aWZ5T3ZlcnNlZXJzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgb3ZlcnNlZXJJZHMucHVzaCh1c2VyLmVtcGxveWVlX2lkKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGFzc2lnbmVlc0lkcyA9IFsuLi5uZXcgU2V0KGFzc2lnbmVlc0lkcyldO1xyXG4gICAgcmV2aWV3ZXJzSWRzID0gWy4uLm5ldyBTZXQocmV2aWV3ZXJzSWRzKV07XHJcbiAgICBvdmVyc2VlcklkcyA9IFsuLi5uZXcgU2V0KG92ZXJzZWVySWRzKV07XHJcblxyXG4gICAgLy8gdGhpcy5hc3NpZ25vcnNMaXN0ID0gYmVoYWxmVXNlcnMuZmlsdGVyKCh1c2VyOiBhbnkpID0+ICEocmV2aWV3ZXJzSWRzLmluY2x1ZGVzKHVzZXIubWVtYmVyX2lkKSB8fCBvdmVyc2Vlcklkcy5pbmNsdWRlcyh1c2VyLm1lbWJlcl9pZCkpKTtcclxuICAgIHRoaXMuYXNzaWduZWVzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcclxuICAgICAgKHVzZXI6IGFueSkgPT5cclxuICAgICAgICAhKFxyXG4gICAgICAgICAgcmV2aWV3ZXJzSWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpIHx8XHJcbiAgICAgICAgICBvdmVyc2Vlcklkcy5pbmNsdWRlcyh1c2VyLmVtcGxveWVlX2lkKVxyXG4gICAgICAgIClcclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcclxuICAgICAgY29uc3QgdXNlck9iaiA9IHRoaXMuYXNzaWduZWVzTGlzdDtcclxuICAgICAgdXNlck9iaj8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgICAgdXNlci5tZW1iZXJfaWQgPSB1c2VyLm15X21lbWJlcl9pZDtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMub3duZXJsaXN0ID0gdXNlck9iajtcclxuICAgIH1cclxuICAgIC8vIHRoaXMucmV2aWV3ZXJzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcigodXNlcjogYW55KSA9PiAhKGFzc2lnbmVlc0lkcy5pbmNsdWRlcyh1c2VyLmVtcGxveWVlX2lkKSB8fCBvdmVyc2Vlcklkcy5pbmNsdWRlcyh1c2VyLmVtcGxveWVlX2lkKSkpO1xyXG4gICAgdGhpcy5vdmVyc2VlcnNMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxyXG4gICAgICAodXNlcjogYW55KSA9PlxyXG4gICAgICAgICEoXHJcbiAgICAgICAgICBhc3NpZ25lZXNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkgfHxcclxuICAgICAgICAgIHJldmlld2Vyc0lkcy5pbmNsdWRlcyh1c2VyLmVtcGxveWVlX2lkKVxyXG4gICAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHdob2xlIGxpc3QgYmFzZWQgb24gc2VsZWN0ZWQgaWQncyBmcm9tIGEgcGFydGljdWxhciBsaXN0IGVsZW1lbnRzXHJcbiAgICogQHBhcmFtIGxpc3QgaXQgaXMgdGhlIG1haW4gbGlzdCAgd2hpY2ggY29udGFpbnMgYWxsIGVsZW1lbnRzIGxpc3RcclxuICAgKiBAcGFyYW0ga2V5IGNvbnRhaW5zIGtleSB0byBmaWx0ZXIgc2VsZWN0ZWQgbGlzdCBmcm9tIHRoZSBsaXN0XHJcbiAgICogQHBhcmFtIGlkcyBzZWxlY3RlZCBpZHMgYXJyYXlcclxuICAgKi9cclxuICBzZXRMaXN0KGxpc3Q6IGFueVtdLCBpZHM6IGFueVtdLCBrZXk6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGF0YTogYW55ID0gW107XHJcbiAgICBpZHM/LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGxpc3Q/LmZpbmRJbmRleChcclxuICAgICAgICAobGlzdEVsZW1lbnQ6IGFueSkgPT4gbGlzdEVsZW1lbnRba2V5XSA9PSBlbGVtZW50XHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICBkYXRhLnB1c2gobGlzdFtpbmRleF0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBpZCdzIGZyb20gYSBwYXJ0aWN1bGFyIGxpc3QgZWxlbWVudHNcclxuICAgKiBAcGFyYW0gbGlzdCBhY3R1YWwgc2VsZWN0ZWQgbGlzdFxyXG4gICAqIEBwYXJhbSBrZXkgY29udGFpbnMga2V5IHRvIGV4dHJhY3QgaWQgZnJvbSB0aGUgbGlzdFxyXG4gICAqL1xyXG4gIHJldHVybklkcyhsaXN0OiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBsaXN0Lm1hcCgoZWxlKSA9PiB7XHJcbiAgICAgIGlmIChlbGVba2V5XSkge1xyXG4gICAgICAgIHJldHVybiBlbGVba2V5XTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSByZXZpZXdlciB0eXBlIGluIGFwcHJvdmFsIHdvcmtmbG93XHJcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIHJldmlld2VyIHR5cGVcclxuICAgKi9cclxuICByZXZpZXdlclR5cGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy53b3JrZmxvd1R5cGUgPSBldmVudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgZnJlcXVlbmN5IGluIGVkaXQgIG1vZGVcclxuICAgKi9cclxuICBmcmVxdWVuY3lEYXRhUG9wdWxhdGlvbihldmVudDogYW55LCBtb2RlOiAnU0VMRUNUJyB8ICdQT1BVTEFURScgPSAnU0VMRUNUJykge1xyXG4gICAgLy9uZWVkcyB0byBkaXNjdXNzIHdpdGggYmFja2VuZCBhYm91dCBlZGl0IGFuZCBkZWZhdWx0IHZhbHVlc1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgcGF0dGVybjogZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzLCAvL1xyXG4gICAgICB3aW5kb3c6IGV2ZW50Py5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUsXHJcbiAgICAgIGZhaWxlZEFmdGVyOiBldmVudD8ubWFya19mYWlsZWRfYWZ0ZXIsXHJcbiAgICAgIGZhaWxlZF90aW1lX3V0YzogJycsXHJcbiAgICAgIGxpZmVjeWNsZURldGFpbHM6ICcwMDAwLTAwLTAwfn4wJyxcclxuICAgICAgdGltZUluMjRIcjogZXZlbnQuZmFpbGVkX3RpbWUgIT0gJycgPyBldmVudC5mYWlsZWRfdGltZSA6IERFRkFVTFRfMjRIUixcclxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogMCxcclxuICAgICAgc3RhcnRGcm9tOiBNYXRoLmZsb29yKFxyXG4gICAgICAgIG5ldyBEYXRlKGV2ZW50LmFzc2lnbmVlX3N0YXJ0X2RhdGUpLmdldFRpbWUoKSAvIDEwMDBcclxuICAgICAgKSxcclxuICAgICAgc3RhcnREYXRlOiAnJyxcclxuICAgICAgcmVwb3J0SWQ6IDAsXHJcbiAgICAgIHRpbWVJbjEyaHI6IHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lSW4xMihcclxuICAgICAgICBldmVudC5mYWlsZWRfdGltZSAhPSAnJyA/IGV2ZW50LmZhaWxlZF90aW1lIDogREVGQVVMVF8yNEhSXHJcbiAgICAgICksXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBldmVudC5mcmVxdWVuY3lfdGV4dCxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5mcmVxdWVuY3lEYXRhKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHMgaW4gdGhlIHBvbGljeUZvcm1cclxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcclxuICAgKi9cclxuICBmcmVxdWVuY3lEYXRhKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscyA9IGV2ZW50LnBhdHRlcm47XHJcbiAgICAodGhpcy5wb2xpY3lGb3JtLmZyZXF1ZW5jeV90ZXh0ID0gZXZlbnQucGxhY2Vob2xkZXIpLFxyXG4gICAgICAodGhpcy5wb2xpY3lGb3JtLm1hcmtfZmFpbGVkX2FmdGVyID0gZXZlbnQuZmFpbGVkQWZ0ZXIpO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA9IGV2ZW50LndpbmRvdztcclxuICAgIHRoaXMucG9saWN5Rm9ybS5mYWlsZWRfdGltZSA9IGV2ZW50LnRpbWVJbjI0SHI7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYXNzaWduZWVfc3RhcnRfZGF0ZSA9IG1vbWVudChldmVudC5zdGFydEZyb20gKiAxMDAwKS5mb3JtYXQoXHJcbiAgICAgICdkZGQgTU1NIEREIFlZWVknXHJcbiAgICApO1xyXG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCBmYWxzZSk7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBmcmVxdWVuY3lfZGV0YWlsczogZXZlbnQucGF0dGVybixcclxuICAgICAgZnJlcXVlbmN5X3RpbWU6IGV2ZW50LnRpbWVJbjEyaHIsXHJcbiAgICAgIHJlbWluZGVyX2JlZm9yZV9kYXlzOiBldmVudC53aW5kb3csXHJcbiAgICAgIGZhaWxlZF9hZnRlcl9kYXlzOiBldmVudC5mYWlsZWRBZnRlcixcclxuICAgICAgbGlmZWN5Y2xlX2RldGFpbHM6IGV2ZW50LmxpZmVjeWNsZURldGFpbHMsXHJcbiAgICAgIHN0YXJ0X29mX2RheV91dGM6IGV2ZW50LnN0YXJ0RnJvbSxcclxuICAgICAgb25fY29tcGxldGlvbl9vZjogW2V2ZW50LnJlcG9ydElkXSxcclxuICAgICAgZG9tX3V0YzogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXHJcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBldmVudC5wbGFjZWhvbGRlcixcclxuICAgIH07XHJcbiAgICB0aGlzLmZyZXF1ZW5jeVBvcHVsYXRpb24ocGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQb3B1bGF0ZXMgdGhlIGZyZXF1ZW5jeSBmaWVsZCB3aXRoIHNlbGVjdGVkIGRhdGEgZnJvbSBmcmVxdWVuY3kgY29tcG9uZW50XHJcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIGZyZXF1ZW5jeSBkZXRhaWxzXHJcbiAgICovXHJcbiAgZnJlcXVlbmN5UG9wdWxhdGlvbihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMucGF0dGVybiA9IGV2ZW50Py5mcmVxdWVuY3lfZGV0YWlscztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gZXZlbnQ/LmZyZXF1ZW5jeV90aW1lO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLndpbmRvdyA9IGV2ZW50Py5yZW1pbmRlcl9iZWZvcmVfZGF5cztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWQgPSBldmVudD8uZmFpbGVkX2FmdGVyX2RheXM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnN0YXJ0RGF0ZSA9IGV2ZW50Py5zdGFydF9vZl9kYXlfdXRjO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnNlbGVjdGVkUmVwb3J0ID0gZXZlbnQ/Lm9uX2NvbXBsZXRpb25fb2ZbMF0gPz8gMDtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5kYXRlT2ZNb2RpZmllZCA9IGV2ZW50Py5kb21fdXRjO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAzO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9IGV2ZW50Py5wbGFjZWhvbGRlclxyXG4gICAgICA/IGV2ZW50LnBsYWNlaG9sZGVyXHJcbiAgICAgIDogJ0hvdyBvZnRlbiBkb2VzIHRoaXMgcG9saWN5IG5lZWQgdG8gYmUgYXR0ZXN0ZWQ/JztcclxuICB9XHJcblxyXG4gIHJldmlld2VyRnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZXZlbnQ6IGFueSkge1xyXG4gICAgLy9uZWVkcyB0byBkaXNjdXNzIHdpdGggYmFja2VuZCBhYm91dCBlZGl0IGFuZCBkZWZhdWx0IHZhbHVlc1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgcGF0dGVybjogZXZlbnQ/LnJldmlld19mcmVxdWVuY3lfZGV0YWlscywgLy9cclxuICAgICAgd2luZG93OiBldmVudD8ucmV2aWV3X3JlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSxcclxuICAgICAgZmFpbGVkQWZ0ZXI6IGV2ZW50Py5yZXZpZXdGYWlsZWRBZnRlcixcclxuICAgICAgZmFpbGVkX3RpbWVfdXRjOiAnJyxcclxuICAgICAgbGlmZWN5Y2xlRGV0YWlsczogJzAwMDAtMDAtMDB+fjAnLFxyXG4gICAgICB0aW1lSW4yNEhyOlxyXG4gICAgICAgIGV2ZW50LnJldmlld0ZhaWxlZFRpbWUgIT0gJycgPyBldmVudC5yZXZpZXdGYWlsZWRUaW1lIDogREVGQVVMVF8yNEhSLFxyXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwLFxyXG4gICAgICBzdGFydEZyb206IE1hdGguZmxvb3IoXHJcbiAgICAgICAgbmV3IERhdGUoZXZlbnQucmV2aWV3ZXJfc3RhcnRfZGF0ZSkuZ2V0VGltZSgpIC8gMTAwMFxyXG4gICAgICApLFxyXG4gICAgICBzdGFydERhdGU6ICcnLFxyXG4gICAgICByZXBvcnRJZDogMCxcclxuICAgICAgdGltZUluMTJocjogdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnRpbWVJbjEyKFxyXG4gICAgICAgIGV2ZW50LnJldmlld0ZhaWxlZFRpbWUgIT0gJycgPyBldmVudC5yZXZpZXdGYWlsZWRUaW1lIDogREVGQVVMVF8yNEhSXHJcbiAgICAgICksXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBldmVudC5yZXZpZXdmcmVxdWVuY3lEZXRhaWxzLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGF0YShkYXRhKTtcclxuICB9XHJcblxyXG4gIHJlc2V0UmV2aWV3ZXJGcmVxdWVuY3koKSB7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscyA9IHtcclxuICAgICAgcGF0dGVybjogJycsXHJcbiAgICAgIG5vdGlmaWNhdGlvblBlbmRpbmc6IDAsXHJcbiAgICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxyXG4gICAgICBkZWFjdGl2YXRpb25WYWx1ZTogMCxcclxuICAgICAgc2VsZWN0ZWRSZXBvcnQ6IDAsXHJcbiAgICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxyXG4gICAgICBzdGFydERhdGU6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgICAgc3RhcnRPblRoZURheTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgICB3aW5kb3c6IDAsXHJcbiAgICAgIGZhaWxlZDogMCxcclxuICAgICAgdGltZTogREVGQVVMVF9USU1FLFxyXG4gICAgICBmYWlsZWRUaW1lOiAnJyxcclxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogMyxcclxuICAgIH07XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3RmFpbGVkQWZ0ZXIgPSAwO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19mcmVxdWVuY3lfZGV0YWlscyA9ICcnO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19mcmVxdWVuY3lfdHlwZSA9ICcnO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgPSAwO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld0ZhaWxlZFRpbWUgPSBERUZBVUxUXzI0SFI7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAnV2hlbiBkb2VzIHRoaXMgcG9saWN5IG5lZWQgdG8gYmUgcmV2aWV3ZWQgPyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCByZXZpZXdlciBmcmVxdWVuY3kgZGV0YWlscyBpbiB0aGUgcG9saWN5Rm9ybVxyXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBmcmVxdWVuY3kgZGV0YWlsc1xyXG4gICAqL1xyXG4gIHJldmlld2VyRnJlcXVlbmN5RGF0YShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3RmFpbGVkQWZ0ZXIgPSBldmVudC5mYWlsZWRBZnRlcjtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgPSBldmVudC5wYXR0ZXJuO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19mcmVxdWVuY3lfdHlwZSA9IGV2ZW50LnBhdHRlcm4uc3BsaXQoJ34nKVswXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlID0gZXZlbnQud2luZG93O1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld0ZhaWxlZFRpbWUgPSBldmVudC50aW1lSW4yNEhyO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld2VyX3N0YXJ0X2RhdGUgPSBtb21lbnQoZXZlbnQuc3RhcnRGcm9tICogMTAwMCkuZm9ybWF0KFxyXG4gICAgICAnZGRkIE1NTSBERCBZWVlZJ1xyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyRnJlcXVlbmN5JywgZmFsc2UpO1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IGV2ZW50LnBhdHRlcm4sXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBldmVudC50aW1lSW4xMmhyLFxyXG4gICAgICByZW1pbmRlcl9iZWZvcmVfZGF5czogZXZlbnQud2luZG93LFxyXG4gICAgICBmYWlsZWRfYWZ0ZXJfZGF5czogZXZlbnQuZmFpbGVkQWZ0ZXIsXHJcbiAgICAgIGxpZmVjeWNsZV9kZXRhaWxzOiBldmVudC5saWZlY3ljbGVEZXRhaWxzLFxyXG4gICAgICBzdGFydF9vZl9kYXlfdXRjOiBldmVudC5zdGFydEZyb20sXHJcbiAgICAgIG9uX2NvbXBsZXRpb25fb2Y6IFtldmVudC5yZXBvcnRJZF0sXHJcbiAgICAgIGRvbV91dGM6IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxyXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzLFxyXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQucGxhY2Vob2xkZXIsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeVBvcHVsYXRpb24ocGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQb3B1bGF0ZXMgdGhlIHJldmlld2VyIGZyZXF1ZW5jeSBmaWVsZCB3aXRoIHNlbGVjdGVkIGRhdGEgZnJvbSBmcmVxdWVuY3kgY29tcG9uZW50XHJcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIGZyZXF1ZW5jeSBkZXRhaWxzXHJcbiAgICovXHJcbiAgcmV2aWV3ZXJGcmVxdWVuY3lQb3B1bGF0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLnBhdHRlcm4gPSBldmVudD8uZnJlcXVlbmN5X2RldGFpbHM7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gZXZlbnQ/LmZyZXF1ZW5jeV90aW1lO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMud2luZG93ID0gZXZlbnQ/LnJlbWluZGVyX2JlZm9yZV9kYXlzO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuZmFpbGVkID0gZXZlbnQ/LmZhaWxlZF9hZnRlcl9kYXlzO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuc3RhcnREYXRlID0gZXZlbnQ/LnN0YXJ0X29mX2RheV91dGM7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5zZWxlY3RlZFJlcG9ydCA9XHJcbiAgICAgIGV2ZW50Py5vbl9jb21wbGV0aW9uX29mWzBdID8/IDA7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5kYXRlT2ZNb2RpZmllZCA9IGV2ZW50Py5kb21fdXRjO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuY29udGludW91c19mYWlsZWRfZGF5cyA9IDM7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5UGxhY2Vob2xkZXIgPSBldmVudD8ucGxhY2Vob2xkZXJcclxuICAgICAgPyBldmVudC5wbGFjZWhvbGRlclxyXG4gICAgICA6ICdXaGVuIGRvZXMgdGhpcyBwb2xpY3kgbmVlZCB0byBiZSByZXZpZXdlZCA/JztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRlcyB0aGUgZGF0YSBzdWJtaXR0ZWQgb24gY3JlYXRlIHBvbGljeSBmb3JtXHJcbiAgICovXHJcbiAgdmFsaWRhdGVQb2xpY3koKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgfSwgMTAwKTtcclxuICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWU7XHJcbiAgICBjb25zdCByZSA9IC8mbmJzcDt8PGJyPi9nO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWUgPSBldmVudC5yZXBsYWNlKHJlLCAnJykudHJpbSgpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWUudHJpbSgpID09ICcnIHx8XHJcbiAgICAgICghdGhpcy5wb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAmJlxyXG4gICAgICAgICgodGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgIXRoaXMuZ3JvdXBFbmFibGVkKSB8fFxyXG4gICAgICAgICAgKCh0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlPy5sZW5ndGggPiAwKSAmJlxyXG4gICAgICAgICAgICB0aGlzLmdyb3VwRW5hYmxlZCkpKSB8fFxyXG4gICAgICAodGhpcy5wb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAmJlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgKCF0aGlzLmdyb3VwRW5hYmxlZCB8fFxyXG4gICAgICAgICAgKHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICB0aGlzLmdyb3VwRW5hYmxlZCkpKSB8fFxyXG4gICAgICAoIXRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgJiZcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMubGVuZ3RoID4gMCkgfHxcclxuICAgICAgKHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgJiZcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMubGVuZ3RoID09IDApIHx8XHJcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMubGVuZ3RoID09IDAgfHxcclxuICAgICAgKCF0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzWzBdPy5hcHByb3ZhbF93b3JrZmxvdz8ubGVuZ3RoICYmXHJcbiAgICAgICAgIXRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnNbMF0/LmFwcHJvdmVycz8ubGVuZ3RoICYmXHJcbiAgICAgICAgdGhpcy5wb2xpY3lBcHByb3ZhbEZsYWcgPT09IDApIHx8XHJcbiAgICAgICh0aGlzLmZvcm1hdEV2aWRlbmNlICYmIHRoaXMuZm9ybWF0RXZpZGVuY2UubmV3TGluay5jb250YWluc0Vycm9yKSB8fFxyXG4gICAgICAhdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9vd25lcnM/Lmxlbmd0aCB8fFxyXG4gICAgICAodGhpcy5pc1NlbmRGb3JBdHRlc3RhdGlvbiAmJlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXMubGVuZ3RoID09PSAwKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFrZXMgYW4gYXBpIGNhbGwgdG8gY3JlYXRlIGEgcG9saWN5XHJcbiAgICogQHBhcmFtIHBvbGljeSBjb250YWlucyBwb2xpY3lGb3JtIGRhdGFcclxuICAgKi9cclxuICBzdWJtaXRQb2xpY3koKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgY29uc3QgdmFsaWQgPSB0aGlzLnZhbGlkYXRlUG9saWN5KCk7XHJcbiAgICBpZiAoIXZhbGlkIHx8ICF0aGlzLmlzVmVyc2lvblZhbGlkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLm5vV29ya2Zsb3dTZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSB0aGlzLnNlbGVjdGVkV29ya2Zsb3c7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwb2xpY3kgPSB0aGlzLnBvbGljeUZvcm07XHJcbiAgICBsZXQgYXBwcm92ZXJzRGF0YTogYW55ID0gdGhpcy5jb252ZXJ0QXBwcm92YWxXb3JrZmxvdyhcclxuICAgICAgcG9saWN5LnNlbGVjdGVkQXBwcm92ZXJzXHJcbiAgICApO1xyXG4gICAgbGV0IHJldmlld2VyRmlsZXNBcnJheSA9IGNsb25lRGVlcChwb2xpY3kuZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0RmlsZXMpO1xyXG4gICAgY29uc3QgcmV2aWV3ZXJGaWxlcyA9IHJldmlld2VyRmlsZXNBcnJheS5tYXAoKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICBmaWxlLm5hbWUgPSBmaWxlLmZpbGVuYW1lO1xyXG4gICAgICBmaWxlLmZpbGVfcGF0aCA9IGZpbGUuZmlsZXBhdGg7XHJcbiAgICAgIGZpbGUub3JnX25hbWUgPSBmaWxlLm9yaWdpbmFsX2ZpbGVuYW1lO1xyXG4gICAgICBkZWxldGUgZmlsZS5maWxlbmFtZTtcclxuICAgICAgZGVsZXRlIGZpbGUuZmlsZXBhdGg7XHJcbiAgICAgIGRlbGV0ZSBmaWxlLm9yaWdpbmFsX2ZpbGVuYW1lO1xyXG4gICAgICBkZWxldGUgZmlsZS5saW5rU2V0O1xyXG4gICAgICByZXR1cm4gZmlsZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBhdHRlc3RhdGlvbkZpbGVzQXJyYXkgPSBjbG9uZURlZXAoXHJcbiAgICAgIHBvbGljeS5hc3NvY2lhdGVkRG9jdW1lbnRzLmZvcm1hdEZpbGVzXHJcbiAgICApO1xyXG4gICAgY29uc3QgYXR0ZXN0YXRpb25GaWxlcyA9IGF0dGVzdGF0aW9uRmlsZXNBcnJheS5tYXAoKGVsZTogYW55KSA9PiB7XHJcbiAgICAgIGVsZS5uYW1lID0gZWxlLmZpbGVuYW1lO1xyXG4gICAgICBlbGUuZmlsZV9wYXRoID0gZWxlLmZpbGVwYXRoO1xyXG4gICAgICBlbGUub3JpZ2luYWxfZmlsZV9uYW1lID0gZWxlLm9yaWdpbmFsX2ZpbGVuYW1lO1xyXG4gICAgICBlbGUuZm9sZGVyX2lkID0gZWxlPy5mb2xkZXJfaWQgPyBlbGUuZm9sZGVyX2lkIDogMDtcclxuICAgICAgZWxlLnBhdGggPSBlbGU/LnBhdGggPyBlbGUucGF0aCA6IGVsZS5maWxlcGF0aCArIGVsZS5maWxlbmFtZTtcclxuICAgICAgZWxlLmlzTGlua1NldCA9IGVsZS5saW5rU2V0O1xyXG4gICAgICBlbGUub3RoZXJfdHlwZSA9IGVsZT8ub3RoZXJzO1xyXG4gICAgICBkZWxldGUgZWxlLmZpbGVuYW1lO1xyXG4gICAgICBkZWxldGUgZWxlLmZpbGVwYXRoO1xyXG4gICAgICBkZWxldGUgZWxlLm9yaWdpbmFsX2ZpbGVuYW1lO1xyXG4gICAgICBkZWxldGUgZWxlLmxpbmtTZXQ7XHJcbiAgICAgIGRlbGV0ZSBlbGUuZmlsZV9uYW1lO1xyXG4gICAgICBkZWxldGUgZWxlLm90aGVycztcclxuICAgICAgcmV0dXJuIGVsZTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgcmV2aWV3ZXJJRCA9IHRoaXMucmV0dXJuSWRzKHBvbGljeS5zZWxlY3RlZFJldmlld2VycywgJ21lbWJlcl9pZCcpO1xyXG4gICAgY29uc3QgcG9saWN5QWNjZXNzVXNlcnNJZHMgPVxyXG4gICAgICB0aGlzLnJldHVybklkcyhwb2xpY3kucG9saWN5X2FjY2Vzc19vd25lcnMsICdtZW1iZXJfaWQnKSA/PyBbXTtcclxuICAgIGNvbnN0IHBvbGljeUFjY2Vzc0dyb3Vwc0lkcyA9XHJcbiAgICAgIHRoaXMucmV0dXJuSWRzKHBvbGljeS5wb2xpY3lfYWNjZXNzX2dyb3VwcywgJ19pZCcpID8/IFtdO1xyXG5cclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIHBvbGljeV9uYW1lOiBwb2xpY3kucG9saWN5TmFtZSxcclxuICAgICAgbm90ZXM6IHBvbGljeS5wb2xpY3lOb3RlcyxcclxuICAgICAgaXNfcG9ydGFsX2VuYWJsZTogcG9saWN5LmF2YWlsYWJsZU9uUG9ydGFsID8gMSA6IDAsXHJcbiAgICAgIGlzX3N1Z2dldGlvbl9lbmFibGU6IHBvbGljeS5hY2NlcHRTdWdnZXN0aW9ucyA/IDEgOiAwLFxyXG4gICAgICBjYXRlZ29yeV9pZF9hcnI6IHRoaXMucmV0dXJuSWRzKHBvbGljeS5zZWxlY3RlZENhdGVnb3JpZXMsICdpdGVtX2lkJyksXHJcbiAgICAgIGFwcHJvdmVyczogYXBwcm92ZXJzRGF0YSxcclxuICAgICAgYXNzaWduZWVfaWRzOiB0aGlzLnJldHVybklkcyhcclxuICAgICAgICBwb2xpY3k/LnNlbGVjdGVkQXNzaWduZWVzLFxyXG4gICAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICAgKS5tYXAoKGlkKSA9PiBOdW1iZXIoaWQpKSxcclxuICAgICAgdXNlcmdyb3VwX2lkczogdGhpcy5yZXR1cm5JZHMocG9saWN5LnNlbGVjdGVkR3JvdXBBc3NpZ25lZSwgJ19pZCcpID8/IFtdLFxyXG4gICAgICBJc19hcHByb3ZhbDogMCwgLy9uZWVkcyB0byBjaGVjayBpbiBmZVxyXG5cclxuICAgICAgYXNzb2NpYXRlZF9kb2N1bWVudHM6IHBvbGljeS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzXHJcbiAgICAgICAgPyBhdHRlc3RhdGlvbkZpbGVzXHJcbiAgICAgICAgOiBbXSxcclxuXHJcbiAgICAgIGN1c3RvbV90YWdzOiBKU09OLnN0cmluZ2lmeShwb2xpY3kuY3VzdG9tVGFncyksXHJcblxyXG4gICAgICBmcmVxdWVuY3lfZGV0YWlsczogcG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzXHJcbiAgICAgICAgPyBwb2xpY3kuZnJlcXVlbmN5X2RldGFpbHNcclxuICAgICAgICA6ICcnLFxyXG4gICAgICBmcmVxdWVuY3lfdGV4dDogcG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzID8gcG9saWN5LmZyZXF1ZW5jeV90ZXh0IDogJycsXHJcbiAgICAgIHJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZTogcG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzXHJcbiAgICAgICAgPyBwb2xpY3kucmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlXHJcbiAgICAgICAgOiAwLFxyXG4gICAgICBmYWlsZWRfdGltZTogcG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzID8gcG9saWN5LmZhaWxlZF90aW1lIDogJycsXHJcbiAgICAgIG1hcmtfZmFpbGVkX2FmdGVyOiBwb2xpY3kuZnJlcXVlbmN5X2RldGFpbHNcclxuICAgICAgICA/IHBvbGljeS5tYXJrX2ZhaWxlZF9hZnRlclxyXG4gICAgICAgIDogJycsXHJcbiAgICAgIC8vIHN0YXJ0RGF0ZTogcG9saWN5LnBvbGljeUR1ZURhdGUudG9EYXRlU3RyaW5nKCksXHJcbiAgICAgIHN0YXJ0RGF0ZTogbW9tZW50KHBvbGljeS5wb2xpY3lEdWVEYXRlKS5mb3JtYXQoJ2RkZCBNTU0gREQgWVlZWScpLFxyXG5cclxuICAgICAgUmV2aWV3ZXJBdHRhY2htZW50czpcclxuICAgICAgICBwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRGaWxlc1xyXG4gICAgICAgICAgPyByZXZpZXdlckZpbGVzXHJcbiAgICAgICAgICA6IFtdLFxyXG4gICAgICBSZXZpZXdlckxpbmtzOlxyXG4gICAgICAgIHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdExpbmtzXHJcbiAgICAgICAgICA/IHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRMaW5rc1xyXG4gICAgICAgICAgOiBbXSxcclxuICAgICAgUmV2aWV3ZXJNZW1iZXJJZDpcclxuICAgICAgICBwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHJldmlld2VySURbMF0gPyByZXZpZXdlcklEWzBdIDogMCxcclxuICAgICAgaXNSZXZpZXc6XHJcbiAgICAgICAgcG9saWN5LmFkZFJldmlld2VycyAmJlxyXG4gICAgICAgIChwb2xpY3kuZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0RmlsZXMgfHxcclxuICAgICAgICAgIHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRMaW5rcykgJiZcclxuICAgICAgICByZXZpZXdlcklEWzBdXHJcbiAgICAgICAgICA/IDFcclxuICAgICAgICAgIDogMCxcclxuXHJcbiAgICAgIHJldmlld0ZhaWxlZEFmdGVyOlxyXG4gICAgICAgIHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlsc1xyXG4gICAgICAgICAgPyBwb2xpY3kucmV2aWV3RmFpbGVkQWZ0ZXJcclxuICAgICAgICAgIDogMCxcclxuICAgICAgcmV2aWV3RmFpbGVkVGltZTpcclxuICAgICAgICBwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHNcclxuICAgICAgICAgID8gcG9saWN5LnJldmlld0ZhaWxlZFRpbWVcclxuICAgICAgICAgIDogJycsXHJcbiAgICAgIHJldmlld19mcmVxdWVuY3lfZGV0YWlsczpcclxuICAgICAgICBwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHNcclxuICAgICAgICAgID8gcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlsc1xyXG4gICAgICAgICAgOiAnJyxcclxuICAgICAgcmV2aWV3X2ZyZXF1ZW5jeV90eXBlOlxyXG4gICAgICAgIHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlsc1xyXG4gICAgICAgICAgPyBwb2xpY3kucmV2aWV3X2ZyZXF1ZW5jeV90eXBlXHJcbiAgICAgICAgICA6ICcnLFxyXG4gICAgICByZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlOlxyXG4gICAgICAgIHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlsc1xyXG4gICAgICAgICAgPyBwb2xpY3kucmV2aWV3X3JlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZVxyXG4gICAgICAgICAgOiAwLFxyXG5cclxuICAgICAgZW50aXRpZXM6IHRoaXMucG9saWN5Rm9ybT8uYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzXHJcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyhwb2xpY3kuc2VsZWN0ZWRSQ3MsICdpdGVtX2lkJykudG9TdHJpbmcoKVxyXG4gICAgICAgIDogJycsXHJcbiAgICAgIHJpc2tfY2xhc3M6IHBvbGljeS5yaXNrUmF0aW5nLnRvU3RyaW5nKCksXHJcblxyXG4gICAgICBDQ0ZhaWxFbWFpbDogcG9saWN5LmFkZE92ZXJzZWVyc1xyXG4gICAgICAgID8gdGhpcy5yZXR1cm5JZHMocG9saWN5LkNDRmFpbEVtYWlsLCAnZW1wbG95ZWVfZW1haWwnKS50b1N0cmluZygpXHJcbiAgICAgICAgOiAnJyxcclxuICAgICAgQ0NFbWFpbDogcG9saWN5LmFkZE92ZXJzZWVyc1xyXG4gICAgICAgID8gdGhpcy5yZXR1cm5JZHMocG9saWN5LkNDRW1haWwsICdlbXBsb3llZV9lbWFpbCcpLnRvU3RyaW5nKClcclxuICAgICAgICA6ICcnLFxyXG5cclxuICAgICAgY2hlY2twb2ludERldGFpbHM6IHBvbGljeS5jaGVja3BvaW50RGV0YWlscyA/PyBbXSxcclxuICAgICAgdG90YWxRdWVzdGlvbjogcG9saWN5LnRvdGFsUXVlc3Rpb24gPyBwb2xpY3kudG90YWxRdWVzdGlvbiA6IDAsIC8vXHJcbiAgICAgIHBhc3NpbmdNYXJrczogcG9saWN5LnBhc3NpbmdNYXJrcyA/IHBvbGljeS5wYXNzaW5nTWFya3MgOiAwLCAvL1xyXG5cclxuICAgICAgcG9saWN5QXBwcm92YWxGbGFnOiAwLFxyXG5cclxuICAgICAgaXNfc2lnbmF0dXJlX3JlcXVpcmVkOiBwb2xpY3kucmVxdWlyZXNTaWduYXR1cmVGb3JBdHRlc3RhdGlvbiA/IDEgOiAwLFxyXG4gICAgICBjY191c2VyZ3JvdXBfaWRzOiB0aGlzLmNjRW1haWxPYmpJZHMsXHJcbiAgICAgIGNjX2ZhaWxfdXNlcmdyb3VwX2lkczogdGhpcy5jY0ZhaWxHcm91cE9iaklkcyxcclxuICAgICAgcmV2aWV3ZXJfc3RhcnRfZGF0ZTogcG9saWN5LnJldmlld2VyX3N0YXJ0X2RhdGUgPz8gJycsXHJcbiAgICAgIGFzc2lnbmVlX3N0YXJ0X2RhdGU6IHBvbGljeS5hc3NpZ25lZV9zdGFydF9kYXRlLFxyXG4gICAgICBwb2xpY3lfdmVyc2lvbjogcG9saWN5LmFkZFZlcnNpb24gPyBwb2xpY3kucG9saWN5X3ZlcnNpb24gOiAnJyxcclxuICAgICAgYXNzZXNzbWVudDogcG9saWN5LmFkZExpbmtBc3Nlc3NtZW50XHJcbiAgICAgICAgPyBwb2xpY3kuYXNzZXNzbWVudC5tYXAoKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgYXNzZXNzbWVudF9pZDogZWxlLmFzc2Vzc21lbnRfaWQsXHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6IGVsZS5jYXRlZ29yeV9pZCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgOiBbXSxcclxuICAgICAgcG9saWN5X293bmVyczogdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9vd25lcnMubWFwKFxyXG4gICAgICAgIChlbGU6IGFueSkgPT4gZWxlLm1lbWJlcl9pZFxyXG4gICAgICApLFxyXG4gICAgICBhcHByb3ZhbF93b3JrZmxvd19pZDogcG9saWN5Py5zZWxlY3RlZEFwcHJvdmVyc1swXT8uX2lkXHJcbiAgICAgICAgPyBbcG9saWN5Py5zZWxlY3RlZEFwcHJvdmVyc1swXT8uX2lkXVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIGxpbmtQcm9ncmFtOiBPYmplY3Qua2V5cyhwb2xpY3k/LmxpbmtQcm9ncmFtKS5sZW5ndGhcclxuICAgICAgICA/IHBvbGljeT8ubGlua1Byb2dyYW1cclxuICAgICAgICA6IHtcclxuICAgICAgICAgICAgYWRkZWQ6IFtdLFxyXG4gICAgICAgICAgICByZW1vdmVkOiBbXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgIGJ1c2luZXNzX2N5Y2xlOiBPYmplY3Qua2V5cyhwb2xpY3k/LmxpbmtQcm9ncmFtKS5sZW5ndGhcclxuICAgICAgICA/IHBvbGljeT8uYnVzaW5lc3NDeWNsZVxyXG4gICAgICAgIDogdW5kZWZpbmVkLFxyXG4gICAgICBwb2xpY3lfYWNjZXNzX3R5cGU6IHBvbGljeS5wb2xpY3lfYWNjZXNzX3R5cGUgPz8gMCxcclxuICAgICAgcG9saWN5X2FjY2Vzc19vd25lcnM6IHBvbGljeS5hdmFpbGFibGVPblBvcnRhbFxyXG4gICAgICAgID8gW11cclxuICAgICAgICA6IHBvbGljeUFjY2Vzc1VzZXJzSWRzID8/IFtdLFxyXG4gICAgICBwb2xpY3lfYWNjZXNzX2dyb3VwczogcG9saWN5LmF2YWlsYWJsZU9uUG9ydGFsXHJcbiAgICAgICAgPyBbXVxyXG4gICAgICAgIDogcG9saWN5QWNjZXNzR3JvdXBzSWRzID8/IFtdLFxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0NSRUFURScpIHtcclxuICAgICAgdGhpcy5wb2xpY3lTZXJ2aWNlLnN1Ym1pdFBvbGljeShwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucG9saWN5SWQgPSByZXMuX2lkO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29udmVydEZpbGVEYXRhPy5maWxlTmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubGlua0RvY3VtZW50V2l0aFBvbGljeSh0aGlzLmNvbnZlcnRGaWxlRGF0YSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xyXG4gICAgICAgICAgdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gdHJ1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcclxuICAgICAgICAgICAgJ2FsZXJ0J1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdFRElUJykge1xyXG4gICAgICBpZiAodGhpcy5wb2xpY3lBcHByb3ZhbEZsYWcgIT09IDApIHtcclxuICAgICAgICBkZWxldGUgcGF5bG9hZC5hcHByb3ZlcnM7XHJcbiAgICAgICAgcGF5bG9hZC5wb2xpY3lBcHByb3ZhbEZsYWcgPSAyO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS51cGRhdGVQb2xpY3kocGF5bG9hZCwgdGhpcy5wb2xpY3lJZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUlkID0gcmVzLl9pZDtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5uYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VuZEZvckF0dGVzdGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgICAgICAgJ1RoZSBwb2xpY3kgaGFzIGJlZW4gc2VudCBmb3IgYXR0ZXN0YXRpb24nLFxyXG4gICAgICAgICAgICAgICAgJ3N1Y2Nlc3MnXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ1RoZSBwb2xpY3kgaGFzIGJlZW4gdXBkYXRlZCcsICdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPVxyXG4gICAgICAgICAgICAgIHRoaXMuYmFzZVVSTCArICcvYWxsL3BvbGljeS93b3Jrcm9vbT9pZD0nICsgdGhpcy5wb2xpY3lJZDtcclxuICAgICAgICAgICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcG9saWN5L3dvcmtyb29tJ10sIHsgcXVlcnlQYXJhbXM6IHsgaWQ6IHRoaXMucG9saWN5SWQgfSwgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgICAgICAgICAgLy8gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAgICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLFxyXG4gICAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxpbmtEb2N1bWVudFdpdGhQb2xpY3koZG9jdW1lbnQ6IGFueSkge1xyXG4gICAgaWYgKFxyXG4gICAgICBkb2N1bWVudC5maWxlTmFtZSAmJlxyXG4gICAgICAoZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ3BkZicgfHxcclxuICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnUERGJyB8fFxyXG4gICAgICAgIGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdkb2N4JyB8fFxyXG4gICAgICAgIGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdET0NYJylcclxuICAgICkge1xyXG4gICAgICB0aGlzLnBvbGljeVNlcnZpY2VcclxuICAgICAgICAuZXh0cmFjdEZpbGUoZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiwgZG9jdW1lbnQuZmlsZVBhdGgsIHRoaXMucG9saWN5SWQpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5tZXNzYWdlID09PSAnZG9uZScgfHwgcmVzLmNvbnRlbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdkb2N4JyB8fFxyXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnRE9DWCdcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wb2xpY3kvZWRpdC1wb2xpY3knXSwge1xyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGlkOiB0aGlzLnBvbGljeUlkIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAncGRmJyB8fFxyXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnUERGJ1xyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3BvbGljeS93b3Jrcm9vbSddLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgaWQ6IHRoaXMucG9saWN5SWQgfSxcclxuICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAgICAgXCJPb3BzISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgd2Ugd2VyZSB1bmFibGUgdG8gY29tcGxldGUgdGhpcyBhY3Rpb24uIExldCdzIGdpdmUgaXQgYW5vdGhlciB0cnksIHNoYWxsIHdlP1wiLFxyXG4gICAgICAgICAgICAgICdhbGVydCdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgIFwiT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHdlIHdlcmUgdW5hYmxlIHRvIGNvbXBsZXRlIHRoaXMgYWN0aW9uLiBMZXQncyBnaXZlIGl0IGFub3RoZXIgdHJ5LCBzaGFsbCB3ZT9cIixcclxuICAgICAgICAnYWxlcnQnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBvcGVucyB0aGUgZGF0ZSBwaWNrZXIgb24gcG9saWN5IGZvcm1cclxuICAgKi9cclxuICBvcGVuRGF0ZVBpY2tlcigpIHtcclxuICAgIHRoaXMuZGF0ZVBpY2tlcj8uYXBpPy5vcGVuKCk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZTtcclxuICAgIC8vIHRoaXMuc2V0QWN0aXZlRmllbGRTZWxlY3RvcignSVNTVUVfREFURV9USU1FJywgJ0lTU1VFX0RBVEVfVElNRScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogY2xvc2VzIHRoZSBkYXRlIHBpY2tlciBmcm9tIHBvbGljeSBmb3JtXHJcbiAgICovXHJcbiAgY2xvc2VEYXRlUGlja2VyKGV2dDogYW55KSB7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKCFldnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2dD8uZGF0ZT8uJGQpIHtcclxuICAgICAgbGV0IG1vbnRoQXJyYXkgPSBbXHJcbiAgICAgICAgJ0phbicsXHJcbiAgICAgICAgJ0ZlYicsXHJcbiAgICAgICAgJ01hcicsXHJcbiAgICAgICAgJ0FwcicsXHJcbiAgICAgICAgJ0p1bicsXHJcbiAgICAgICAgJ0p1bCcsXHJcbiAgICAgICAgJ0F1ZycsXHJcbiAgICAgICAgJ1NlcCcsXHJcbiAgICAgICAgJ09jdCcsXHJcbiAgICAgICAgJ05vdicsXHJcbiAgICAgICAgJ0RlYycsXHJcbiAgICAgIF07XHJcbiAgICAgIGNvbnN0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldERhdGUoKTtcclxuICAgICAgY29uc3QgbW9udGhWYWx1ZSA9IG1vbnRoQXJyYXlbbmV3IERhdGUoZXZ0Py5kYXRlPy4kZCkuZ2V0TW9udGgoKV07XHJcbiAgICAgIGNvbnN0IHllYXJWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSBgJHtkYXRlVmFsdWV9ICR7bW9udGhWYWx1ZX0gJHt5ZWFyVmFsdWV9YDtcclxuICAgIH1cclxuICAgIGlmIChldnQ/LmRhdGU/LiRkKSB7XHJcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lEdWVEYXRlID0gZXZ0Py5kYXRlPy4kZDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVBpY2tlcj8uYXBpPy5jbG9zZSgpO1xyXG4gIH1cclxuICBlZGl0UG9saWN5RnJvbURvY3VtZW50cygpIHtcclxuICAgIHRoaXMubW9kZSA9ICdFRElUJztcclxuICAgIHRoaXMuc2hpZnRUb0VkaXRNb2RlLmVtaXQoKTtcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICAgIHRoaXMuc2hvd0NyZWF0ZURvY3VtZW50cyA9IGZhbHNlO1xyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLmVkaXRQb2xpY3koKTtcclxuICB9XHJcblxyXG4gIGNoZWNrRm9yQ3JlYXRlRG9jdW1lbnRzKCkge1xyXG4gICAgY29uc3QgZGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzaG93Q3JlYXRlRG9jdW1lbnRzJyk7XHJcbiAgICB0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uID0gZGF0YSA9PT0gJ3RydWUnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMubmF2aWdhdGVUb0RvY3VtZW50c1NlY3Rpb24pIHtcclxuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XHJcbiAgICAgIHRoaXMuc2hvd0NyZWF0ZURvY3VtZW50cyA9IHRydWU7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdzaG93Q3JlYXRlRG9jdW1lbnRzJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlZGl0UG9saWN5KCkge1xyXG4gICAgdGhpcy5tb2RlID0gJ0VESVQnO1xyXG5cclxuICAgIGlmICh0aGlzLnBvbGljeUlkKSB7XHJcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS5lZGl0UG9saWN5KHRoaXMucG9saWN5SWQpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXNbMF07XHJcbiAgICAgICAgICBjb25zdCBjYXRlZ29yeUlkcyA9IGRhdGEuY2F0ZWdvcnlfZGV0YWlsc19hcnIubWFwKFxyXG4gICAgICAgICAgICAoaWQ6IGFueSkgPT4gaWQuY2F0T2JqSWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUFwcHJvdmFsRmxhZyA9IGRhdGEucG9saWN5QXBwcm92YWxGbGFnO1xyXG4gICAgICAgICAgdGhpcy5hcHByb3ZhbFdvcmtmbG93SWRzID0gZGF0YT8uYXBwcm92YWxXb3JrZmxvd0RldGFpbHM/Lm1hcChcclxuICAgICAgICAgICAgKHdvcmtmbG93OiBhbnkpID0+IHdvcmtmbG93Py5faWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3cgPSBbXTtcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdEVkaXRBcHByb3ZlcnMgPSBkYXRhPy5hcHByb3ZlcnM7XHJcbiAgICAgICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3coY2F0ZWdvcnlJZHMsIGRhdGEpO1xyXG5cclxuICAgICAgICAgIHRoaXMucG9wdWxhdGVQb2xpY3lGb3JtKGRhdGEsIGNhdGVnb3J5SWRzKTtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlUG9saWN5QWNjZXNzRGV0YWlscyhkYXRhKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVQb2xpY3lGb3JtKGRhdGE6IGFueSwgY2F0ZWdvcnlJZHM6IGFueSkge1xyXG4gICAgY29uc3QgcmV2aWV3ZXJGaWxlcyA9IGRhdGEuUmV2aWV3ZXJBdHRhY2htZW50cy5tYXAoKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICBmaWxlLmZpbGVuYW1lID0gZmlsZS5uYW1lO1xyXG4gICAgICBmaWxlLmZpbGVwYXRoID0gZmlsZS5maWxlX3BhdGg7XHJcbiAgICAgIGZpbGUub3JpZ2luYWxfZmlsZW5hbWUgPSBmaWxlLm9yZ19uYW1lO1xyXG4gICAgICBmaWxlLmZpbGVfbmFtZSA9IGZpbGUub3JnX25hbWU7XHJcbiAgICAgIGZpbGUubGlua1NldCA9ICcnO1xyXG4gICAgICBkZWxldGUgZmlsZS5uYW1lO1xyXG4gICAgICBkZWxldGUgZmlsZS5maWxlX3BhdGg7XHJcbiAgICAgIGRlbGV0ZSBmaWxlLm9yZ19uYW1lO1xyXG5cclxuICAgICAgcmV0dXJuIGZpbGU7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGF0dGVzdGF0aW9uRmlsZXMgPSBkYXRhLmFzc29jaWF0ZWRfZG9jdW1lbnRzLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgZWxlLmZpbGVuYW1lID0gZWxlLm5hbWU7XHJcbiAgICAgIGVsZS5maWxlcGF0aCA9IGVsZS5maWxlX3BhdGg7XHJcbiAgICAgIGVsZS5vcmlnaW5hbF9maWxlbmFtZSA9IGVsZS5vcmlnaW5hbF9maWxlX25hbWU7XHJcbiAgICAgIGVsZS5maWxlX25hbWUgPSBlbGUub3JpZ2luYWxfZmlsZV9uYW1lO1xyXG4gICAgICBlbGUubGlua1NldCA9IGVsZS5pc0xpbmtTZXQ7XHJcbiAgICAgIGVsZS5vdGhlcnMgPSBlbGU/Lm90aGVyX3R5cGU7XHJcblxyXG4gICAgICBkZWxldGUgZWxlLm5hbWU7XHJcbiAgICAgIGRlbGV0ZSBlbGUuZmlsZV9wYXRoO1xyXG4gICAgICBkZWxldGUgZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZTtcclxuICAgICAgZGVsZXRlIGVsZS5pc0xpbmtTZXQ7XHJcbiAgICAgIGRlbGV0ZSBlbGU/Lm90aGVyX3R5cGU7XHJcbiAgICAgIHJldHVybiBlbGU7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGdyb3VwX2VtcGxveWVlSWRzID0gZGF0YS5ncm91cF9lbXBsb3llZU5hbWVzLm1hcChcclxuICAgICAgKGlkOiBhbnkpID0+IGlkPy5lbXBsb3llZV9pZFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGdyb3VwX0lkcyA9IGRhdGE/LnVzZXJncm91cF9pZHM/Lm1hcCgoaWQ6IGFueSkgPT4gaWQpID8/IFtdO1xyXG5cclxuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0LFxyXG4gICAgICBjYXRlZ29yeUlkcyxcclxuICAgICAgJ19pZCdcclxuICAgICk7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2lkID0gZGF0YT8ucG9saWN5X2lkO1xyXG4gICAgKHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lID0gZGF0YS5wb2xpY3lfbmFtZSksXHJcbiAgICAgICh0aGlzLnBvbGljeUZvcm0ucG9saWN5Tm90ZXMgPSBkYXRhLm5vdGVzKSxcclxuICAgICAgKHRoaXMucG9saWN5Rm9ybS5jdXN0b21UYWdzID0gZGF0YS5jdXN0b21fdGFncyA/IGRhdGEuY3VzdG9tX3RhZ3MgOiBbXSk7XHJcblxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXNzaWduZWVzID1cclxuICAgICAgZ3JvdXBfZW1wbG95ZWVJZHMubGVuZ3RoID4gMFxyXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMuYXNzaWduZWVzTGlzdCwgZ3JvdXBfZW1wbG95ZWVJZHMsICdteV9tZW1iZXJfaWQnKVxyXG4gICAgICAgIDogW107IC8vZG91YnQgaW4gbmFtZVxyXG5cclxuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWUgPVxyXG4gICAgICBncm91cF9JZHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICA/IHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCwgZ3JvdXBfSWRzLCAnX2lkJylcclxuICAgICAgICA6IFtdO1xyXG5cclxuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJDcyA9IGRhdGEuZW50aXRpZXNcclxuICAgICAgPyB0aGlzLnNldExpc3QodGhpcy5yY0xpc3QsIGRhdGEuZW50aXRpZXMuc3BsaXQoJywnKSwgJ2l0ZW1faWQnKVxyXG4gICAgICA6IFtdO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsID0gZGF0YS5DQ0ZhaWxFbWFpbFxyXG4gICAgICA/IHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyc0xpc3QsIGRhdGEuQ0NGYWlsRW1haWwsICdlbXBsb3llZV9lbWFpbCcpXHJcbiAgICAgIDogW107XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWxHcm91cCA9XHJcbiAgICAgIGRhdGE/LmNjX2ZhaWxfdXNlcmdyb3VwX2lkcz8ubGVuZ3RoID4gMFxyXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICB0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCxcclxuICAgICAgICAgICAgZGF0YT8uY2NfZmFpbF91c2VyZ3JvdXBfaWRzLFxyXG4gICAgICAgICAgICAnX2lkJ1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgIDogW107XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbCA9IGRhdGEuQ0NFbWFpbFxyXG4gICAgICA/IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCxcclxuICAgICAgICAgIGRhdGEuQ0NFbWFpbC5zcGxpdCgnLCcpLFxyXG4gICAgICAgICAgJ2VtcGxveWVlX2VtYWlsJ1xyXG4gICAgICAgIClcclxuICAgICAgOiBbXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5DQ0dyb3VwRW1haWwgPVxyXG4gICAgICBkYXRhPy5jY191c2VyZ3JvdXBfaWRzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsIGRhdGE/LmNjX3VzZXJncm91cF9pZHMsICdfaWQnKVxyXG4gICAgICAgIDogW107XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYXZhaWxhYmxlT25Qb3J0YWwgPSBkYXRhLmVuYWJsZVBvcnRhbCA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hY2NlcHRTdWdnZXN0aW9ucyA9IGRhdGEuZW5hYmxlU3VnZ2VzdGlvbiA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXF1aXJlc1NpZ25hdHVyZUZvckF0dGVzdGF0aW9uID0gZGF0YS5pc19zaWduYXR1cmVfcmVxdWlyZWRcclxuICAgICAgPyB0cnVlXHJcbiAgICAgIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmlza1JhdGluZyA9IGRhdGEucmlza19jbGFzcyA/IE51bWJlcihkYXRhLnJpc2tfY2xhc3MpIDogMTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hc3NvY2lhdGVkRG9jdW1lbnRzID0gZGF0YS5hc3NvY2lhdGVkX2RvY3VtZW50c1xyXG4gICAgICA/IHtcclxuICAgICAgICAgIGZvcm1hdEZpbGVzOiBhdHRlc3RhdGlvbkZpbGVzLFxyXG4gICAgICAgIH1cclxuICAgICAgOiB7IGZvcm1hdEZpbGVzOiBbXSB9O1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeUR1ZURhdGUgPSBkYXRhLnN0YXJ0RGF0ZVxyXG4gICAgICA/IG1vbWVudChkYXRhLnN0YXJ0RGF0ZSlcclxuICAgICAgOiBtb21lbnQoKTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5jaGVja3BvaW50RGV0YWlscyA9IGRhdGEuY2hlY2twb2ludHNcclxuICAgICAgPyBkYXRhLmNoZWNrcG9pbnRzXHJcbiAgICAgIDogW107XHJcbiAgICB0aGlzLnBvbGljeUZvcm0udG90YWxRdWVzdGlvbiA9IGRhdGEudG90YWxfbWFya3MgPyBkYXRhLnRvdGFsX21hcmtzIDogMDtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5wYXNzaW5nTWFya3MgPSBkYXRhLnBhc3NfbWFya3MgPyBkYXRhLnBhc3NfbWFya3MgOiAwO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmRvY3VtZW50c0FuZExpbmtzID0gZGF0YS5SZXZpZXdlckF0dGFjaG1lbnRzXHJcbiAgICAgID8ge1xyXG4gICAgICAgICAgZm9ybWF0RmlsZXM6IHJldmlld2VyRmlsZXMsXHJcbiAgICAgICAgICBmb3JtYXRMaW5rczogZGF0YS5SZXZpZXdlckxpbmtzLFxyXG4gICAgICAgIH1cclxuICAgICAgOiB7IGZvcm1hdEZpbGVzOiBbXSwgZm9ybWF0TGlua3M6IFtdIH07XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzID1cclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmV2aWV3ZXJzID0gZGF0YS5SZXZpZXdlck1lbWJlcklkID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmFkZENoZWNrcG9pbnRzID1cclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLmNoZWNrcG9pbnREZXRhaWxzLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkT3ZlcnNlZXJzID1cclxuICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICB0aGlzLnBvbGljeUZvcm0/LkNDRW1haWw/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwPy5sZW5ndGggPiAwIHx8XHJcbiAgICAgIHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsPy5sZW5ndGggPiAwXHJcbiAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgOiBmYWxzZTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzID1cclxuICAgICAgZGF0YS5hc3NvY2lhdGVkX2RvY3VtZW50cy5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5jY0VtYWlsT2JqSWRzID1cclxuICAgICAgZGF0YT8uY2NfdXNlcmdyb3VwX2lkcz8ubGVuZ3RoID4gMCA/IGRhdGE/LmNjX3VzZXJncm91cF9pZHMgOiBbXTtcclxuICAgIHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMgPVxyXG4gICAgICBkYXRhPy5jY19mYWlsX3VzZXJncm91cF9pZHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICA/IGRhdGE/LmNjX2ZhaWxfdXNlcmdyb3VwX2lkc1xyXG4gICAgICAgIDogW107XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYXNzZXNzbWVudCA9IGRhdGE/LmFzc2Vzc21lbnQgPz8gW107XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkTGlua0Fzc2Vzc21lbnQgPSBkYXRhPy5hc3Nlc3NtZW50Py5sZW5ndGg7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkVmVyc2lvbiA9IGRhdGE/LnBvbGljeV92ZXJzaW9uID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgLy8gdGhpcy5jaGVja0ZvckNyZWF0ZURvY3VtZW50cygpO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uID0gZGF0YS5wb2xpY3lfdmVyc2lvbjtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXMucHJvZ3JhbSA9XHJcbiAgICAgIGRhdGE/LnByb2dyYW1DYXREZXRhaWxzICYmIGRhdGE/LnByb2dyYW1DYXREZXRhaWxzPy5sZW5ndGhcclxuICAgICAgICA/IGRhdGE/LnByb2dyYW1DYXREZXRhaWxzWzBdXHJcbiAgICAgICAgOiB7fTtcclxuICAgIHRoaXMuc2VsZWN0ZWRMaW5rUHJvZ3JhbSA9XHJcbiAgICAgIGRhdGE/LnByb2dyYW1DYXREZXRhaWxzICYmIGRhdGE/LnByb2dyYW1DYXREZXRhaWxzPy5sZW5ndGhcclxuICAgICAgICA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YT8ucHJvZ3JhbUNhdERldGFpbHNbMF0pKVxyXG4gICAgICAgIDoge307XHJcbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgfVxyXG4gIGNoYW5nZU5hbWUoZXZlbnQ6IHN0cmluZykge1xyXG4gICAgbGV0IHRleHQgPSBldmVudDtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLzwoLio/KT4vZ2ksICcnKTtcclxuICAgIHJldHVybiB0ZXh0O1xyXG4gIH1cclxuXHJcbiAgdHlwZVNlbGVjdGVkKGV2ZW50OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmV2aWV3ZXJzID0gZXZlbnQ7XHJcbiAgfVxyXG4gIG9uVmVyc2lvbihldmVudDogYW55KSB7XHJcbiAgICBjb25zdCByZWdleE1hdGNoID0gbmV3IFJlZ0V4cCgnXltBLVphLXowLTlcXFxcLi1dKiQnKTtcclxuICAgIHRoaXMuaXNWZXJzaW9uVmFsaWQgPSByZWdleE1hdGNoLnRlc3QodGhpcy5wb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uKTtcclxuICAgIGlmICghdGhpcy5pc1ZlcnNpb25WYWxpZCkge1xyXG4gICAgICBpZiAodGhpcy5wb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uPy5sZW5ndGggPiAyMCkge1xyXG4gICAgICAgIHRoaXMudmVyc2lvbkVycm9yTWVzc2FnZSA9XHJcbiAgICAgICAgICAnWW91ciBpbnB1dCBpcyBpbnZhbGlkLiBUaGUgdmVyc2lvbiBmaWVsZCBjYW4gb25seSBpbmNsdWRlIG51bWJlcnMsIGFscGhhYmV0cywgaHlwaGVuIG9yIGRvdHMuIFRoZSBtYXhpbXVtIGNoYXJhY3RlciBsaW1pdCBpcyAyMCBjaGFyYWN0ZXJzLic7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuaXNWZXJzaW9uVmFsaWQgJiZcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uPy5sZW5ndGggPiAyMFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMudmVyc2lvbkVycm9yTWVzc2FnZSA9XHJcbiAgICAgICAgJ1lvdXIgaW5wdXQgaXMgaW52YWxpZC4gVGhlIG1heGltdW0gY2hhcmFjdGVyIGxpbWl0IGlzIDIwIGNoYXJhY3RlcnMuJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vdGhpcyBmdW5jdGlvbiByZXNwb25zaWJsZSB3aGVuIHdlIGNsaWNrIG9uIGRpdiBzZWxlY3RcclxuICBjbGlja0FwcHJvdmFsV29ya2Zsb3coZXZlbnQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZW5hYmxlQXBwcm92YWxXb3JrZmxvdyA9IGV2ZW50O1xyXG4gICAgdGhpcy5jcmVhdGVBcHByb3ZhbENsaWNrID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgbGlzdENhbmNlbENsaWNrZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIHRoaXMuZW5hYmxlQXBwcm92YWxXb3JrZmxvdyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xyXG4gICAgICAvLyB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZEFwcHJvdmFsV29ya2Zsb3coZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93ID0gW2V2ZW50XTtcclxuICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd0lkcyA9IGV2ZW50Py5faWQgPyBbZXZlbnQ/Ll9pZF0gOiBbXTtcclxuICAgIHRoaXMuZW5hYmxlQXBwcm92YWxXb3JrZmxvdyA9IGZhbHNlO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gW2V2ZW50XTtcclxuICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVkUHJvZ3JhbURldGFpbHMoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmxpbmtQcm9ncmFtID0gZXZlbnQ/LmxpbmtQcm9ncmFtO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnByb2dyYW1TZWxlY3RlZFZhbHVlcyA9IGV2ZW50Py5zZWxlY3RlZFZhbHVlcztcclxuICAgIHRoaXMucG9saWN5Rm9ybS5idXNpbmVzc0N5Y2xlID0gZXZlbnQ/LmJ1c2luZXNzQ3ljbGU7XHJcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xyXG4gIH1cclxuXHJcbiAgb25Bc3Nlc3NtZW50U2VsZWN0KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hc3Nlc3NtZW50ID0gW2V2ZW50XTtcclxuICB9XHJcbiAgZ2V0QXNzZXNzbWVudERldGFpbHMoYXNzZXNzbWVudERldGFpbHM6IGFueSwgdHlwZT86IHN0cmluZykge1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2VcclxuICAgICAgLmdldEFzc2Vzc21lbnREZXRhaWxzQnlJRChhc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IGNhdGVnb3J5RGV0YWlscyA9IHJlc1swXS5jYXRlZ29yeS5maW5kKFxyXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZS5faWQgPT0gYXNzZXNzbWVudERldGFpbHMuY2F0ZWdvcnlfaWRcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFzc2Vzc21lbnQgPSBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBjYXRlZ29yeV9pZDogYXNzZXNzbWVudERldGFpbHMuY2F0ZWdvcnlfaWQsXHJcbiAgICAgICAgICAgICAgYXNzZXNzbWVudF9pZDogYXNzZXNzbWVudERldGFpbHMuYXNzZXNzbWVudF9pZCxcclxuICAgICAgICAgICAgICBhc3Nlc3NtZW50RGV0YWlsczoge1xyXG4gICAgICAgICAgICAgICAgaWQ6IGFzc2Vzc21lbnREZXRhaWxzLmFzc2Vzc21lbnRfaWQsXHJcbiAgICAgICAgICAgICAgICBhc3Nlc3NtZW50X25hbWU6IHJlc1swXS5hc3Nlc3NtZW50X25hbWUsXHJcbiAgICAgICAgICAgICAgICBxdWVzdGlvbnM6IHJlc1swXS5xdWVzdGlvbnNDb3VudCxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGNhdGVnb3J5X2RldGFpbHM6IGNhdGVnb3J5RGV0YWlscyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldE93bmVyc09uTG9hZCgpIHtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfb3duZXJzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICB0aGlzLmFsbEFwcHJvdmVycyxcclxuICAgICAgW3RoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKV0sXHJcbiAgICAgICdtZW1iZXJfaWQnXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXBwcm92YWxXb3JrZmxvd0FQSUNhbGwoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGNvbnN0IG9iamVjdElkcyA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMsXHJcbiAgICAgICAgJ19pZCdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5nZXRBcHByb3ZlcldvcmtGbG93KG9iamVjdElkcyk7XHJcbiAgICAgIHRoaXMuZW5hYmxlQXBwcm92YWxXb3JrZmxvdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0QXBwcm92YWxXb3JrZmxvdyhhcHByb3Zlckxpc3Q6IGFueSkge1xyXG4gICAgbGV0IHJldHVybkpzb246IGFueSA9IHt9O1xyXG4gICAgY29uc3QgbW9kaWZpZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShhcHByb3Zlckxpc3QpKTtcclxuICAgIG1vZGlmaWVkRGF0YT8uZm9yRWFjaCgod29ya2Zsb3c6IGFueSkgPT4ge1xyXG4gICAgICB3b3JrZmxvdz8uYXBwcm92YWxfd29ya2Zsb3c/LmZvckVhY2goKGFwcHJvdmVyOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBsZXQgaSA9IGluZGV4ICsgMTtcclxuICAgICAgICByZXR1cm5Kc29uWydsZXZlbCcgKyBpXSA9IGFwcHJvdmVyO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJldHVybkpzb247XHJcbiAgfVxyXG5cclxuICBkZWxldGVMZXZlbChpbmRleDogYW55KSB7XHJcbiAgICAvLyBBcHByb3ZlciBMZXZlbCBkZWxldGVcclxuICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvd1swXT8uYXBwcm92YWxfd29ya2Zsb3cuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGZvciAoXHJcbiAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgIGkgPCB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0/LmFwcHJvdmFsX3dvcmtmbG93Lmxlbmd0aDtcclxuICAgICAgaSsrXHJcbiAgICApIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvd1swXS5hcHByb3ZhbF93b3JrZmxvd1tpbmRleF1bJ2xldmVsMSddID09PVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvd1swXT8uYXBwcm92YWxfd29ya2Zsb3dbaW5kZXhdWydhbGlhc19uYW1lJ11cclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdLmFwcHJvdmFsX3dvcmtmbG93W2luZGV4XVtcclxuICAgICAgICAgICdhbGlhc19uYW1lJ1xyXG4gICAgICAgIF0gPSBgTGV2ZWwgJHtpICsgMX1gO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvd1swXS5hcHByb3ZhbF93b3JrZmxvd1tpbmRleF1bJ2xldmVsMSddID0gYExldmVsICR7XHJcbiAgICAgICAgaSArIDFcclxuICAgICAgfWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlZGl0V29ya2Zsb3coZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gdHJ1ZTtcclxuICAgIHRoaXMuZWRpdEFwcHJvdmFsV29ya2Zsb3cgPSBldmVudDtcclxuICAgIHRoaXMuY3JlYXRlQXBwcm92YWxDbGljayA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8vRnVuY3Rpb24gcmVzcG9uc2libGUgd2hlbiB3ZSBjbGljayBvbiBDUkVBVEUgQSBORVcgQVBQUk9WQUwgV09SS0ZMT1dcclxuICBjcmVhdGVBcHByb3ZhbFdvcmtmbG93KCkge1xyXG4gICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gdHJ1ZTtcclxuICAgIHRoaXMuY3JlYXRlQXBwcm92YWxDbGljayA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjbG9zZUNsaWNrZWRDcmVhdGVGb3JtKCkge1xyXG4gICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gZmFsc2U7XHJcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xyXG4gIH1cclxuXHJcbiAgZWRpdExldmVsQ2xpY2tlZChlZGl0TGV2ZWw6IGFueSwgaW5kZXg6IGFueSkge1xyXG4gICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gdHJ1ZTtcclxuICAgIHRoaXMuZWRpdFdvcmtmbG93TGV2ZWwgPSB7XHJcbiAgICAgIGVkaXRMZXZlbDogZWRpdExldmVsLFxyXG4gICAgICBpbmRleDogaW5kZXgsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIHNldEFjY2Vzc0ZpZWxkKGV2ZW50OiBudW1iZXIpIHtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX3R5cGUgPSBldmVudDtcclxuICAgIGlmIChldmVudCA9PSAwKSB7XHJcbiAgICAgIC8vIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX293bmVycyA9IHRoaXMudXNlcnNBY2Nlc3NMaXN0O1xyXG4gICAgICB0aGlzLnNhdmVTZWxlY3RlZExpc3QoJ3BvbGljeUFjY2VzcycsIHtcclxuICAgICAgICB1c2VyczogdGhpcy51c2Vyc0FjY2Vzc0xpc3QsXHJcbiAgICAgICAgZ3JvdXBzOiBbXSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRVc2Vyc0FjY2Vzc0xpc3RCeUNhdGVnb3J5KGNhdGVnb3J5RGV0YWlsczogYW55KSB7XHJcbiAgICBsZXQgdW5pcXVlVXNlcnM6IGFueSA9IFtdO1xyXG4gICAgbGV0IHVuaXF1ZUdyb3Vwc0lkOiBhbnkgPSBbXTtcclxuICAgIHVuaXF1ZVVzZXJzID0gdW5pcUJ5KFxyXG4gICAgICBjYXRlZ29yeURldGFpbHM/LmFsbF9tYW5hZ2Vycz8uY29uY2F0KFxyXG4gICAgICAgIGNhdGVnb3J5RGV0YWlscz8uYWxsX2FwcHJvdmVycyxcclxuICAgICAgICBjYXRlZ29yeURldGFpbHM/LmFsbF9hdXRob3JzXHJcbiAgICAgICksXHJcbiAgICAgICdtZW1iZXJfaWQnXHJcbiAgICApO1xyXG4gICAgdGhpcy51c2Vyc0FjY2Vzc0xpc3QgPSB1bmlxdWVVc2VycztcclxuICAgIHRoaXMudXNlcnNBY2Nlc3NMaXN0SWRzID0gdGhpcy5yZXR1cm5JZHModGhpcy51c2Vyc0FjY2Vzc0xpc3QsICdtZW1iZXJfaWQnKTtcclxuXHJcbiAgICB1bmlxdWVHcm91cHNJZCA9IFtcclxuICAgICAgLi4ubmV3IFNldChcclxuICAgICAgICBjYXRlZ29yeURldGFpbHM/LmF1dGhvcl91c2VyZ3JvdXBfaWRzPy5jb25jYXQoXHJcbiAgICAgICAgICBjYXRlZ29yeURldGFpbHM/Lm93bmVyX3VzZXJncm91cF9pZHNcclxuICAgICAgICApXHJcbiAgICAgICksXHJcbiAgICBdO1xyXG4gICAgdGhpcy5ncm91cHNBY2Nlc3NMaXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICB0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCxcclxuICAgICAgdW5pcXVlR3JvdXBzSWQsXHJcbiAgICAgICdfaWQnXHJcbiAgICApO1xyXG4gICAgdGhpcy5ncm91cHNBY2Nlc3NMaXN0SWRzID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgIHRoaXMuZ3JvdXBzQWNjZXNzTGlzdCxcclxuICAgICAgJ2dyb3VwX2lkJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHBvcHVsYXRlUG9saWN5QWNjZXNzRGV0YWlscyhwb2xpY3lEZXRhaWxzOiBhbnkpIHtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX3R5cGUgPSBwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX3R5cGU7XHJcbiAgICBpZiAocG9saWN5RGV0YWlscz8ucG9saWN5X2FjY2Vzc19vd25lcnM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc19vd25lcnMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgdGhpcy51c2Vyc0xpc3QsXHJcbiAgICAgICAgcG9saWN5RGV0YWlscz8ucG9saWN5X2FjY2Vzc19vd25lcnMsXHJcbiAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX2dyb3Vwcz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX2dyb3VwcyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICB0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCxcclxuICAgICAgICBwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX2dyb3VwcyxcclxuICAgICAgICAnX2lkJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRQb2xpY3lBY2Nlc3NEZXRhaWxzKCkge1xyXG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX3R5cGUgPT0gMCkge1xyXG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc19vd25lcnMgPSBbXTtcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9hY2Nlc3NfZ3JvdXBzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVGcmVxdWVuY3koKSB7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uZnJlcXVlbmN5X2RldGFpbHMgPSAnJztcclxuICAgIHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfdGV4dCA9ICcnO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLm1hcmtfZmFpbGVkX2FmdGVyID0gMDtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgPSAwO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmZhaWxlZF90aW1lID0gJyc7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYXNzaWduZWVfc3RhcnRfZGF0ZSA9ICcnO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnBhdHRlcm4gPSAnJztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gJyc7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMud2luZG93ID0gMDtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWQgPSAwO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmxpZmVjeWNsZSA9ICcnO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnN0YXJ0RGF0ZSA9IDA7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuc2VsZWN0ZWRSZXBvcnQgPSAwO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmRhdGVPZk1vZGlmaWVkID0gMDtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5jb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMDtcclxuICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAnSG93IG9mdGVuIGRvZXMgdGhpcyBwb2xpY3kgbmVlZCB0byBiZSBhdHRlc3RlZD8nO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIGRvY3VtZW50Q2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0ZVBpY2tlck9iamVjdCA9IHtcclxuICAgICAgZXZlbnQ6IGV2ZW50LFxyXG4gICAgICBjbGFzczogJ2VmZmVjdGl2ZS1kYXRlJyxcclxuICAgICAgcG9wdXA6IHRoaXMuZGF0ZVBpY2tlclBvcFVwLFxyXG4gICAgICBjb21wb25lbnQ6IHRoaXMuZGF0ZVBpY2tlcixcclxuICAgICAgb3ZlcmxheTogdGhpcy5kYXRlUGlja2VyT3ZlcmxheSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuaGFuZGxlRG9jdW1lbnRDbGljayhkYXRlUGlja2VyT2JqZWN0KTtcclxuICB9XHJcbn1cclxuIiwiPCEtLSA8cD53b3JrZmxvdy1wb2xpY3kgd29ya3MhPC9wPiAtLT5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd0NyZWF0ZURvY3VtZW50c1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1wb2xpY3lcIj5cclxuICAgIDwhLS0gUG9saWN5IE5hbWUgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8ucG9saWN5TmFtZVwiPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy93aGF0LnN2Z1wiXHJcbiAgICAgICAgICBhbHQ9XCJuYW1lXCJcclxuICAgICAgICAgICpuZ0lmPVwiIXBvbGljeUZvcm0/LnBvbGljeU5hbWUgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICduYW1lJ1wiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5wb2xpY3lOYW1lICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxyXG4gICAgICAgICAgICBQb2xpY3kgTmFtZSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJhY3RpdmVTZWxlY3RvciA9ICduYW1lJ1wiXHJcbiAgICAgICAgICAgIChmb2N1c2luKT1cImFjdGl2YXRlU2VsZWN0b3IoJ25hbWUnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybS5wb2xpY3lOYW1lID09ICcnIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnbmFtZSdcIlxyXG4gICAgICAgICAgICAoZm9jdXNvdXQpPVwiYWN0aXZhdGVTZWxlY3RvcignbmFtZScsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInBvbGljeUZvcm0ucG9saWN5TmFtZVwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInBvbGljeUZvcm0ucG9saWN5TmFtZSA9IGNoYW5nZU5hbWUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTmFtZSB0aGlzIHBvbGljeVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLnBvbGljeU5hbWUubGVuZ3RoICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3sgcG9saWN5Rm9ybS5wb2xpY3lOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ25hbWUnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAqbmdJZj1cInN1Ym1pdHRlZCAmJiAhcG9saWN5Rm9ybS5wb2xpY3lOYW1lLnRyaW0oKVwiXHJcbiAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFBsZWFzZSBlbnRlciBhIG5hbWUgZm9yIHRoaXMgcG9saWN5LlxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPHZjb21wbHktZWRpdG9yXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicG9saWN5Rm9ybS5wb2xpY3lOb3Rlc1wiXHJcbiAgICAgICAgICAgIFtlZGl0b3JDb25maWddPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgPjwvdmNvbXBseS1lZGl0b3I+XHJcbiAgICAgICAgICA8IS0tIDxhcHAtY3Mtc3dpdGNoXHJcbiAgICAgICAgICAgIFsobmdWYWx1ZSldPVwicG9saWN5Rm9ybS5hdmFpbGFibGVPblBvcnRhbFwiXHJcbiAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cImF2YWlsYWJpbGl0eU9uUG9ydGFsKCRldmVudClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBEbyB5b3Ugd2FudCB0aGlzIHBvbGljeSB0byBiZSBhdmFpbGFibGUgb24gdGhlIHBvcnRhbD9cclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICdUaGUgcG9saWNpZXMgdGhhdCB5b3UgaW50ZW5kIHRvIG1ha2UgYWNjZXNzaWJsZSB0byB0aGUgZW50aXJlIG9yZ2FuaXphdGlvbiBjYW4gYmUgYWRkZWQgdG8gdGhlIHBvbGljeSBwb3J0YWwuIEl0IGlzIGxpa2UgYSBzaGFyZWQgY2F0YWxvZyBvZiBhbGwgYWN0aXZlICYgdXBkYXRlZCBwb2xpY2llcyB0aGF0IGFueSBsb2dnZWQgaW4gdXNlciBjYW4gcmVhZC9kb3dubG9hZCBmb3IgcmVmZXJlbmNlLidcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgID4mI3hlOTMyOzwvaVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2FwcC1jcy1zd2l0Y2g+XHJcbiAgICAgICAgICA8YXBwLWNzLXN3aXRjaFxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0uYXZhaWxhYmxlT25Qb3J0YWxcIlxyXG4gICAgICAgICAgICBbKG5nVmFsdWUpXT1cInBvbGljeUZvcm0uYWNjZXB0U3VnZ2VzdGlvbnNcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBBY2NlcHQgc3VnZ2VzdGlvbnNcclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICdJZiBlbmFibGVkLCB1c2VycyBjYW4gcHJvdmlkZSBpbXByb3ZlbWVudCBzdWdnZXN0aW9ucyB0byB0aGUgcG9saWNpZXMgdGhhdCBhcmUgbGlzdGVkIG9uIHRoZSBQb2xpY3kgUG9ydGFsLidcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgID4mI3hlOTMyOzwvaVxyXG4gICAgICAgICAgICA+PC9hcHAtY3Mtc3dpdGNoPiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFBvbGljeSBDYXRlZ29yeSAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5JyAmJlxyXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJsZWZ0XCJcclxuICAgICAgICBbY2xhc3MuY2hlY2tlZF09XCJwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9jYXRlZ29yeS5zdmdcIlxyXG4gICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdjYXRlZ29yeSdcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjaXJjbGVcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXHJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxyXG4gICAgICAgICAgICBjeT1cIjI2XCJcclxuICAgICAgICAgICAgcj1cIjI1XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgICAgPlBvbGljeSBDYXRlZ29yeSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcclxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aCA9PSAwXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjYXRlZ29yeScsIHRydWUpXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhIGNhdGVnb3J5IGZvciB0aGlzIHBvbGljeS5cIlxyXG4gICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBjYXRlZ29yeSBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/LnNsaWNlKDAsIDEpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2NhdGVnb3J5JywgY2F0ZWdvcnkpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2F0ZWdvcnkuaXRlbV9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgID57eyBjYXRlZ29yeS5pdGVtX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2F0ZWdvcnkucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/LnNsaWNlKDEpLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgW2NsYXNzLm1vcmUtb25lXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoPjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5wbHVzXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoPjJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5zbGljZSgwLDIpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdjYXRlZ29yeScsY2F0ZWdvcnkpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y2F0ZWdvcnkuaXRlbV9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aCA+IDJcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlciAoY2xpY2spPVwiY2F0ZWdvcnkucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5J1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2F0ZWdvcnknLCB0cnVlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjY2F0ZWdvcnkgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjYXRlZ29yeSBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXMgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnY2F0ZWdvcnknLCBjYXRlZ29yeSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGNhdGVnb3J5Lml0ZW1fbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIHBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBQbGVhc2Ugc2VsZWN0IHRoZSBjYXRlZ29yeSBmb3IgdGhpcyBwb2xpY3kuXHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCIgKm5nSWY9XCJwb2xpY3lGb3JtPy5jdXN0b21UYWdzPy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWcgb2YgcG9saWN5Rm9ybT8uY3VzdG9tVGFnc1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LW10LTJcIj57eyB0YWcudGFnbmFtZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhZy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyB0YWcudGFnbmFtZSB9fVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEVmZmVjdGl2ZSBEYXRlIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3doZW4uc3ZnXCJcclxuICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgKm5nSWY9XCJmYWxzZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjaXJjbGVcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXHJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxyXG4gICAgICAgICAgICBjeT1cIjI2XCJcclxuICAgICAgICAgICAgcj1cIjI1XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+RWZmZWN0aXZlIERhdGU8L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtdGltZS1waWNrZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tlci1ncm91cFwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHRoZSBlZmZlY3RpdmUgZGF0ZSBvZiB0aGUgcG9saWN5LlwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwicG9saWN5Rm9ybS5wb2xpY3lEdWVEYXRlIHwgZGF0ZSA6ICdkZCBNTU0geXl5eSdcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5EYXRlUGlja2VyKClcIlxyXG4gICAgICAgICAgICAgICAgaWQ9XCJlZmZlY3RpdmUtZGF0ZVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkyZDs8L2k+XHJcbiAgICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyXHJcbiAgICAgICAgICAgICAgICAjZGF0ZVBpY2tlclxyXG4gICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cImRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7IGNsb3NlRGF0ZVBpY2tlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtjb25maWddPVwiZGF0ZUNvbmZpZ1wiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBvbGljeUZvcm0ucG9saWN5RHVlRGF0ZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvZHAtZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1vdmVybGF5XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGVQaWNrZXJPdmVybGF5XCJcclxuICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBQb2xpY3kgT3duZXIgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnb3duZXJzJ1wiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnb3duZXJzJyAmJlxyXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0ucG9saWN5X293bmVycz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgKm5nSWY9XCIhcG9saWN5Rm9ybS5wb2xpY3lfb3duZXJzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2ltLWNyZWF0aW5nLnN2Z1wiXHJcbiAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxzdmdcclxuICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybS5wb2xpY3lfb3duZXJzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5QT0xJQ1kgT1dORVIoUyk8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwiIXBvbGljeUZvcm0ucG9saWN5X293bmVycz8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ293bmVycycsIHRydWUpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIXBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdEJveFBsYWNlaG9kZXIgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC00XCI+XHJcbiAgICAgICAgICAgICAgU2VsZWN0IG93bmVycyBmb3IgdGhpcyBwb2xpY3kuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0ucG9saWN5X293bmVycz8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdvd25lcnMnLCBwb2xpY3lGb3JtPy5wb2xpY3lfb3duZXJzWzBdLCAwKVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInBvbGljeUZvcm0/LnBvbGljeV9vd25lcnNbMF0/Lm1lbWJlcl9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgID57eyBwb2xpY3lGb3JtPy5wb2xpY3lfb3duZXJzWzBdPy5tZW1iZXJfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5wb2xpY3lfb3duZXJzPy5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxyXG4gICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwb2xpY3lVc2VyUG9wb3Zlci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgKyB7eyBwb2xpY3lGb3JtPy5wb2xpY3lfb3duZXJzLmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTEgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgJlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCInU2FtYW50aGEgSm9uZXMnXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgID5TYW1hbnRoYSBKb25lczwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwb2xpY3lHcm91cFBvcG92ZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICArNFxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNwb2xpY3lVc2VyUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3duZXIgb2YgcG9saWN5Rm9ybT8ucG9saWN5X293bmVycyB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJvd25lcj8ubWVtYmVyX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ293bmVycycsIG93bmVyLCBpICsgMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3duZXI/Lm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcG9saWN5R3JvdXBQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBbMSwgMSwgMSwgMSwgMSwgMSwgMV1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIidIYXJzaHZhcmRoYW4gS2FyaXdhbGEnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBIYXJzaHZhcmRoYW4gS2FyaXdhbGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ293bmVycycsIHRydWUpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmICFwb2xpY3lGb3JtPy5wb2xpY3lfb3duZXJzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBTZWxlY3Qgb3duZXJzIGZvciB0aGlzIHBvbGljeS5cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFJldmlldyAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcicgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlckZyZXF1ZW5jeSdcclxuICAgICAgXCJcclxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXZpZXdlcicgJiZcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyRnJlcXVlbmN5JyAmJlxyXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0/LmFkZFJldmlld2Vyc1wiPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgICpuZ0lmPVwiIXBvbGljeUZvcm0/LmFkZFJldmlld2Vyc1wiXHJcbiAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvcmV2aWV3ZXIuc3ZnXCJcclxuICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5hZGRSZXZpZXdlcnNcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlJFVklFVzwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwicmV2aWV3U2VsZWN0aW9uIHZ4LXAtMyB2eC1wYi0wXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1tYi0xXCI+XHJcbiAgICAgICAgICAgICAgRG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIHJldmlld2VkP1xyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgICAgIG5hbWU9XCJyZXZpZXctdHlwZVwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwicG9saWN5Rm9ybT8uYWRkUmV2aWV3ZXJzXCJcclxuICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInR5cGVTZWxlY3RlZCh0cnVlKVwiXHJcbiAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0zXCI+XHJcbiAgICAgICAgICAgICAgICBZRVNcclxuICAgICAgICAgICAgICA8L2Rpdj48L2FwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxhcHAtY3MtcmFkaW9cclxuICAgICAgICAgICAgICBuYW1lPVwicmV2aWV3LXR5cGVcIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIiFwb2xpY3lGb3JtPy5hZGRSZXZpZXdlcnNcIlxyXG4gICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwidHlwZVNlbGVjdGVkKGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0zXCI+XHJcbiAgICAgICAgICAgICAgICBOT1xyXG4gICAgICAgICAgICAgIDwvZGl2PjwvYXBwLWNzLXJhZGlvXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwb2xpY3lGb3JtPy5hZGRSZXZpZXdlcnNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbCB2eC1tdC0yXCI+UkVWSUVXRVI8L2xhYmVsPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA9PSAwXCJcclxuICAgICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXInXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXZpZXdlcicgJiZcclxuICAgICAgICAgICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgU2VsZWN0IHRoZSBwZXJzb24gcmVzcG9uc2libGUgZm9yIHJldmlld2luZyB0aGlzIHBvbGljeVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkUmV2aWV3ZXJzPy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXInXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXZpZXdlcicgJiZcclxuICAgICAgICAgICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJldmlld2VyIG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkUmV2aWV3ZXJzXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyZXZpZXdlcicsIHJldmlld2VyKVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIidTYW1hbnRoYSBKb25lcydcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3sgcmV2aWV3ZXI/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdyZXZpZXdlcidcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LW10LTNcIj5SRVZJRVcgRlJFUVVFTkNZPC9sYWJlbD5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzID09ICcnXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJ1dHRvbiB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlckZyZXF1ZW5jeSdcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyRnJlcXVlbmN5JyAmJlxyXG4gICAgICAgICAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXJGcmVxdWVuY3knLCB0cnVlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJ1dHRvblBsYWNlaG9kZXIgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC00XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBXaGVuIGRvZXMgdGhpcyBwb2xpY3kgbmVlZHMgdG8gYmUgcmV2aWV3ZWQ/XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyRnJlcXVlbmN5JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBTRVQgQSBGUkVRVUVOQ1lcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgIT0gJydcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyRnJlcXVlbmN5JyAmJlxyXG4gICAgICAgICAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXJGcmVxdWVuY3knXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94VGV4dCB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInJldmlld2VyRnJlcXVlbmN5UGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgcmV2aWV3ZXJGcmVxdWVuY3lQbGFjZWhvbGRlciB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdyZXZpZXdlckZyZXF1ZW5jeSdcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyRnJlcXVlbmN5JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgc3VibWl0dGVkICYmXHJcbiAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZFJldmlld2Vycz8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgIXBvbGljeUZvcm0/LnJldmlld19mcmVxdWVuY3lfZGV0YWlsc1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcclxuICAgICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgU2VsZWN0IHRoZSByZXZpZXcgc2NoZWR1bGUgZm9yIHRoaXMgcG9saWN5LlxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIE5ldyBBcHByb3ZhbCBXb3JrZmxvdyAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhcHByb3ZlcnMnXCJcclxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhcHByb3ZlcnMnICYmXHJcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImxlZnRcIlxyXG4gICAgICAgIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzPy5sZW5ndGggPiAwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2FwcHJvdmVycydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvYXBwcm92YWwuc3ZnXCJcclxuICAgICAgICAgIGFsdD1cImltXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVycz8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2FwcHJvdmVycydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjaXJjbGVcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXHJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxyXG4gICAgICAgICAgICBjeT1cIjI2XCJcclxuICAgICAgICAgICAgcj1cIjI1XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiIFtjbGFzcy5kaXNhYmxlZF09XCJwb2xpY3lBcHByb3ZhbEZsYWcgIT09IDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgICAgID5BUFBST1ZBTCA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgIGNyZWF0ZUFwcHJvdmFsV29ya2Zsb3coKTsgYWN0aXZhdGVTZWxlY3RvcignYXBwcm92ZXJzJywgdHJ1ZSlcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3JlYXRlTmV3QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBDUkVBVEUgQSBORVcgQVBQUk9WQUwgV09SS0ZMT1dcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBzZWxlY3RlZFdvcmtmbG93Py5sZW5ndGggPT09IDAgfHxcclxuICAgICAgICAgICAgICAhc2VsZWN0ZWRXb3JrZmxvd1swXT8ud29ya2Zsb3dfbmFtZVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgY2xpY2tBcHByb3ZhbFdvcmtmbG93KHRydWUpOyBhY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Qm94UGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIj5cclxuICAgICAgICAgICAgICBTZWxlY3QgdGhlIGFwcHJvdmFsIHdvcmtmbG93IGZvciB0aGlzIHBvbGljeVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIHNlbGVjdGVkV29ya2Zsb3c/Lmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWRXb3JrZmxvd1swXT8ud29ya2Zsb3dfbmFtZVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LW1iLTJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1tdC0yIHZ4LW1iLTJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlV29ya2Zsb3coKVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInNlbGVjdGVkV29ya2Zsb3dbMF0/LndvcmtmbG93X25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IHNlbGVjdGVkV29ya2Zsb3dbMF0/LndvcmtmbG93X25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdFdvcmtmbG93KHNlbGVjdGVkV29ya2Zsb3dbMF0pXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFdvcmtmbG93Py5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgIGxldCBhcHByb3ZhbCBvZiBzZWxlY3RlZFdvcmtmbG93WzBdPy5hcHByb3ZhbF93b3JrZmxvdztcclxuICAgICAgICAgICAgICAgIGxldCBhcHByb3ZhbEluZGV4ID0gaW5kZXhcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtbWItMlwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxldmVsLWxlZnQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGV2ZWwtbmFtZSB2eC1mcy05IHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1saC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbD8uYWxpYXNfbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gYXBwcm92YWw/LmFsaWFzX25hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFwcHJvdmFsPy5sZXZlbDFcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbD8uYWxpYXNfbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gYXBwcm92YWw/LmFsaWFzX25hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFwcHJvdmFsPy5sZXZlbDFcclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy05IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LWxoLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsPy50eXBlID09PSBcIlJPVU5EUk9CSU5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJST1VORC1ST0JJTlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhcHByb3ZhbD8udHlwZSA9PT0gXCJBTllPTkVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJBTlkgT05FXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFwcHJvdmFsPy50eXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTIgdngtbWwtMlwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgICAgICA+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsPy50eXBlPy50b0xvd2VyQ2FzZSgpID09PSAnc2VxdWVudGlhbCcgJiZcclxuICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsPy5hcHByb3ZlcnM/Lmxlbmd0aCA8IDJcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid29ya2Zsb3dMYXZlbCB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTQgdngtbXItMSB2eC10ZXh0LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyAxID09IGFwcHJvdmFsPy5hcHByb3ZlcnM/Lmxlbmd0aCA/IFwiRmluYWxcIiA6IDEgfX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWw/LmFwcHJvdmVycz8ubGVuZ3RoID4gMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWw/LnR5cGU/LnRvTG93ZXJDYXNlKCkgPT09ICdzZXF1ZW50aWFsJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3b3JrZmxvd0xhdmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wbC0xIHZ4LXByLTEgdngtbGgtNCB2eC1tci0xIHZ4LXRleHQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDFcclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImFwcHJvdmFsPy5hcHByb3ZlcnNbMF0/Lm1lbWJlcl9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICA+e3sgYXBwcm92YWw/LmFwcHJvdmVyc1swXT8ubWVtYmVyX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhcHByb3ZhbD8uYXBwcm92ZXJzPy5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwid29ya2Zsb3dQb3BvdmVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgK3t7IGFwcHJvdmFsPy5hcHByb3ZlcnM/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjd29ya2Zsb3dQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXBwcm92ZXIgb2YgYXBwcm92YWw/LmFwcHJvdmVycyB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXBwcm92YWxJbmRleCA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImFwcHJvdmVyPy5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsPy50eXBlPy50b0xvd2VyQ2FzZSgpID09PSAnc2VxdWVudGlhbCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3b3JrZmxvd0xhdmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wbC0xIHZ4LXByLTEgdngtbGgtNCB2eC1tci0xIHZ4LXRleHQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWxJbmRleCArIDEgPT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWw/LmFwcHJvdmVycz8ubGVuZ3RoIC0gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIkZpbmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYXBwcm92YWxJbmRleCArIDJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFwcHJvdmVyPy5tZW1iZXJfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZWRpdExldmVsQ2xpY2tlZChhcHByb3ZhbCxhcHByb3ZhbEluZGV4KVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRlbGV0ZUxldmVsKGFwcHJvdmFsSW5kZXgpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkZWxldGVCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LW1sLTQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5YWU7PC9pPiBERUxFVEVcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgc3VibWl0dGVkICYmXHJcbiAgICAgICAgICAgICAgIXBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzWzBdPy5hcHByb3ZhbF93b3JrZmxvdz8ubGVuZ3RoICYmXHJcbiAgICAgICAgICAgICAgIXBvbGljeUFwcHJvdmFsRmxhZyAmJlxyXG4gICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVyc1swXT8uYXBwcm92ZXJzPy5sZW5ndGhcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgU2VsZWN0IG9yIGNyZWF0ZSBhbiBhcHByb3ZhbCB3b3JrZmxvdyBmb3IgdGhpcyBwb2xpY3kuXHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBQb2xpY3kgQWNjZXNzIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cInRydWVcIlxyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3BvbGljeUFjY2VzcydcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3BvbGljeUFjY2VzcycgJiZcclxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgIXBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3Nfb3duZXJzPy5sZW5ndGggJiZcclxuICAgICAgICAgICAgIXBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzPy5sZW5ndGggJiZcclxuICAgICAgICAgICAgIXBvbGljeUZvcm0/LmF2YWlsYWJsZU9uUG9ydGFsXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2xvY2stc2NvcGUuc3ZnXCJcclxuICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/Lmxlbmd0aCB8fFxyXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwcz8ubGVuZ3RoIHx8XHJcbiAgICAgICAgICAgIHBvbGljeUZvcm0/LmF2YWlsYWJsZU9uUG9ydGFsXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5QT0xJQ1kgUE9SVEFMIEFDQ0VTUzwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAhcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/Lmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwcz8ubGVuZ3RoICYmXHJcbiAgICAgICAgICAgICAgIXBvbGljeUZvcm0/LmF2YWlsYWJsZU9uUG9ydGFsXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdwb2xpY3lBY2Nlc3MnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94RW5hYmxlIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiPlxyXG4gICAgICAgICAgICAgIFdobyBzaG91bGQgYmUgYWJsZSB0byB2aWV3IHRoaXMgcG9saWN5P1xyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcG9saWN5Rm9ybT8uYXZhaWxhYmxlT25Qb3J0YWxcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTNcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVycz8ubGVuZ3RoIHx8XHJcbiAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwcz8ubGVuZ3RoXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtbXQtMiB2eC1tYi0yXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVycz8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc190eXBlID09PSAxXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwb2xpY3lBY2Nlc3MnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3Nfb3duZXJzWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVyc1swXT8uZW1wbG95ZWVfbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3Nfb3duZXJzWzBdPy5lbXBsb3llZV9uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3Nfb3duZXJzPy5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwb2xpY3lBY2Nlc3NQb3BvdmVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnMubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHMubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAmXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzLmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc190eXBlID09PSAxXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdhY2Nlc3NHcm91cCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHNbMF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzWzBdPy5ncm91cF9uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHNbMF0/Lmdyb3VwX25hbWVcclxuICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWNjZXNzR3JvdXAucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHMubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgK3t7IHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzLmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3BvbGljeUFjY2Vzc1BvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXNlciBvZiBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwidXNlcj8uZW1wbG95ZWVfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc190eXBlID09PSAxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdwb2xpY3lBY2Nlc3MnLCB1c2VyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdXNlcj8uZW1wbG95ZWVfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNhY2Nlc3NHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRhIG9mIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfdHlwZSA9PT0gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnYWNjZXNzR3JvdXAnLCBkYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YT8uZ3JvdXBfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3BvbGljeUFjY2VzcycsIHRydWUpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ2eC1tdC00IHZ4LW1iLTJcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW9cclxuICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ3BvbGljeUZvcm1BY2Nlc3NUeXBlJ1wiIFtjaGVja2VkXT1cInBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfdHlwZSA9PT0gMFwiIChjaGVja2VkRXZlbnQpPVwic2V0QWNjZXNzRmllbGQoMClcIlxyXG4gICAgICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHRcIj5cclxuICAgICAgICAgICAgICAgICAgICBFdmVyeW9uZSB3aG8gaGFzIGFjY2VzcyB0byB0aGlzIFBvbGljeSBDYXRlZ29yeVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj48L2FwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgICAgICAgICBbbmFtZV09XCIncG9saWN5Rm9ybUFjY2Vzc1R5cGUnXCIgW2NoZWNrZWRdPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc190eXBlID09PSAxXCIgKGNoZWNrZWRFdmVudCk9XCJzZXRBY2Nlc3NGaWVsZCgxKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LW10LTFcIlxyXG4gICAgICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHRcIj5cclxuICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdXNlcnMvZ3JvdXBzXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PjwvYXBwLWNzLXJhZGlvXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uYXZhaWxhYmxlT25Qb3J0YWxcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHRcIlxyXG4gICAgICAgICAgICAgID5WaXNpYmxlIHRvIEFsbCBDdXJyZW50ICYgRnV0dXJlIFVzZXJzPC9zcGFuXHJcbiAgICAgICAgICAgID5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncG9saWN5QWNjZXNzJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdCB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1tdC0yXCI+XHJcbiAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIHBvbGljeUZvcm0uYXZhaWxhYmxlT25Qb3J0YWwgfHxcclxuICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3Nfb3duZXJzPy5sZW5ndGggfHxcclxuICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzPy5sZW5ndGhcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFsobmdWYWx1ZSldPVwicG9saWN5Rm9ybS5hY2NlcHRTdWdnZXN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgPkFDQ0VQVCBTVUdHRVNUSU9OU1xyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIHZ4LWZzLTEyIHZ4LXR4dC1ibHVlIHZ4LW1sLTEgdngtbXItMlwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICAgJ0lmIGVuYWJsZWQsIHVzZXJzIGNhbiBwcm92aWRlIGltcHJvdmVtZW50IHN1Z2dlc3Rpb25zIHRvIHRoZSBwb2xpY2llcyB0aGF0IGFyZSBsaXN0ZWQgb24gdGhlIFBvbGljeSBQb3J0YWwuJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXHJcbiAgICAgICAgICAgICAgPjwvYXBwLWNzLXN3aXRjaFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEF0dGVzdGF0aW9ucyAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiZmFsc2VcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAqbmdJZj1cImZhbHNlXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9hdHRlc3RhdGlvbnMuc3ZnXCJcclxuICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgKm5nSWY9XCJmYWxzZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjaXJjbGVcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXHJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxyXG4gICAgICAgICAgICBjeT1cIjI2XCJcclxuICAgICAgICAgICAgcj1cIjI1XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkFUVEVTVEFUSU9OUzwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Qm94UGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIj5cclxuICAgICAgICAgICAgICBTZWxlY3QgdGhlIHBlcnNvbnMgcmVxdWlyZWQgdG8gYXR0ZXN0IHRvIHRoaXMgUG9saWN5XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIidTYW1hbnRoYSBKb25lcydcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+U2FtYW50aGEgSm9uZXM8L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwb2xpY3lBdHRlc3RhdGlvblBvcG92ZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICs0XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3BvbGljeUF0dGVzdGF0aW9uUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgWzEsIDEsIDEsIDEsIDEsIDEsIDFdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ0hhcnNodmFyZGhhbiBLYXJpd2FsYSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBIYXJzaHZhcmRoYW4gS2FyaXdhbGFcclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtbXQtMlwiPlxyXG4gICAgICAgICAgICA8YXBwLWNzLXN3aXRjaFxyXG4gICAgICAgICAgICAgID5SRVFVSVJFUyBFLVNJR05BVFVSRSBGT1IgQVRURVNUQVRJT05cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyB2eC1mcy0xMiB2eC10eHQtYmx1ZSB2eC1tbC0xIHZ4LW1yLTJcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAgICdSZXF1aXJlcyBlLXNpZ25hdHVyZSBmb3IgYXR0ZXN0YXRpb24gaW5mbyB0ZXh0IGhlcmUuLi4nXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcclxuICAgICAgICAgICAgICA+PC9hcHAtY3Mtc3dpdGNoXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtbXQtMlwiPldIRU4/PC9sYWJlbD5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCdXR0b24gdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0QnV0dG9uUGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgV2hhdCBpcyB0aGUgYXR0ZXN0YXRpb24gc2NoZWR1bGUgZm9yIHRoaXM8YnIgLz5wb2xpY3k/XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZVwiPlxyXG4gICAgICAgICAgICAgIFNFVCBBIEZSRVFVRU5DWVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RCb3hUZXh0IHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHRcIj5cclxuICAgICAgICAgICAgICBFdmVyeSBXZWRuZXNkYXkgYnkgMTE6NTkgcG1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LW10LTJcIlxyXG4gICAgICAgICAgICA+QVNTRVNTTUVOVCBPRiBVTkRFUlNUQU5ESU5HPC9sYWJlbFxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiPlxyXG4gICAgICAgICAgICAgIFNldCB1cCBhIHF1ZXN0aW9ubmFpcmUgdG8gY29uZmlybSB0aGUgcmVhZGVy4oCZczxiciAvPnVuZGVyc3RhbmRpbmdcclxuICAgICAgICAgICAgICBvZiB0aGUgcG9saWN5LlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIj41IFF1ZXN0aW9uczwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEFwcHJvdmFsIFdvcmtmbG93IC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgKm5nSWY9XCJmYWxzZVwiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhcHByb3ZlcnMnXCJcclxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhcHByb3ZlcnMnICYmXHJcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImxlZnRcIlxyXG4gICAgICAgIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzPy5sZW5ndGggPiAwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2FwcHJvdmVycydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvYXBwcm92YWwuc3ZnXCJcclxuICAgICAgICAgIGFsdD1cImltXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVycz8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2FwcHJvdmVycydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjaXJjbGVcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXHJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxyXG4gICAgICAgICAgICBjeT1cIjI2XCJcclxuICAgICAgICAgICAgcj1cIjI1XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwidngtZm9ybS1ncm91cCBhcHByb3ZhbC13b3JrZmxvd1wiXHJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwicG9saWN5QXBwcm92YWxGbGFnICE9PSAwXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+XHJcbiAgICAgICAgICAgIEFwcHJvdmFsIHdvcmtmbG93IDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgYWN0aXZhdGVTZWxlY3RvcignYXBwcm92ZXJzJywgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBhZGRNb3JlTGV2ZWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHdvcmtmbG93VHlwZSA9ICdTRVFVRU5USUFMJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgQ3JlYXRlIGEgbmV3IEFwcHJvdmFsIFdvcmtmbG93XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYXBwcm92ZXJXb3JrRmxvd0xpc3Q/Lmxlbmd0aCA9PSAwXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVyc1swXT8uYXBwcm92ZXJzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzLmxlbmd0aCA9PSAwXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxjcy1zZWxlY3RcclxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZEFwcHJvdmFsV29ya2Zsb3dcIlxyXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdGVkV29ya2Zsb3dDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QgYXBwcm92YWwgd29ya2Zsb3cgZm9yIHRoaXMgcG9saWN5J1wiXHJcbiAgICAgICAgICAgICAgbmFtZT1cInNlbGVjdGVkQXBwcm92YWxXb3JrZmxvd1wiXHJcbiAgICAgICAgICAgICAgW3NldE1heFdpZHRoXT1cInRydWVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGNzLW9wdGlvblxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgYXBwcm92ZXJXb3JrRmxvd0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IGRhdGEud29ya2Zsb3dfbmFtZSB9fVxyXG4gICAgICAgICAgICAgIDwvY3Mtb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxjcy1vcHRpb25cclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCItMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIGFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICBhZGRNb3JlTGV2ZWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgd29ya2Zsb3dUeXBlID0gJ1NFUVVFTlRJQUwnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPkNyZWF0ZSBhIG5ldyBhcHByb3ZhbCB3b3JrZmxvdzwvY3Mtb3B0aW9uXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2NzLXNlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzWzBdPy5hcHByb3ZlcnM/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxldmVsIG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0aXRsZVwiPkxldmVsIHt7IGkgKyAxIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJkZXNjcmlwdGlvblwiPnt7IGxldmVsLm5hbWUgfX08L3A+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgYXBwcm92ZXIgb2YgbGV2ZWwuYXBwcm92ZXJzLnNsaWNlKDAsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhcHByb3ZlcnMnLCBhcHByb3ZlciwgaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcFwiICpuZ0lmPVwibGV2ZWwubmFtZSA9PSAnU0VRVUVOVElBTCdcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgaiArIDFcclxuICAgICAgICAgICAgICAgICAgICB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgID57eyBhcHByb3Zlci5tZW1iZXJfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICA+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsZXZlbC5hcHByb3ZlcnM/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibGFiZWxOYW1lLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICArXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGxldmVsLmFwcHJvdmVycy5zbGljZSgxKS5sZW5ndGggfX1cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjbGFiZWxOYW1lIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFwcHJvdmVyIG9mIGxldmVsLmFwcHJvdmVycyB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnYXBwcm92ZXJzJywgYXBwcm92ZXIsIGkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3RlcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsZXZlbC5uYW1lID09ICdTRVFVRU5USUFMJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9PSBsZXZlbC5hcHByb3ZlcnMuc2xpY2UoMSkubGVuZ3RoIC0gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiRmluYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGogKyAyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHByb3Zlci5tZW1iZXJfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUsIGxldmVsLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGFwcHJvdmVyc0xpc3RJbmRleCA9IGlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPkVkaXRcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNsb3NlLWJ0blwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3dvcmtmbG93TGV2ZWwnLCBsZXZlbCwgaSlcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIHN1Ym1pdHRlZCAmJlxyXG4gICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVycz8ubGVuZ3RoICYmXHJcbiAgICAgICAgICAgICAgIXBvbGljeUFwcHJvdmFsRmxhZ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBTZWxlY3Qgb3IgY3JlYXRlIGFuIGFwcHJvdmFsIHdvcmtmbG93IGZvciB0aGlzIHBvbGljeS5cclxuICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzWzBdPy5hcHByb3ZlcnM/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICA+PGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICBhY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIGFkZE1vcmVMZXZlbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgd29ya2Zsb3dUeXBlID0gJ1NFUVVFTlRJQUwnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICsgQWRkIE1vcmUgTGV2ZWxzXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPjwvbGFiZWxcclxuICAgICAgICAgID5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFdobyAvIG5vdyBBdHRlc3RhdGlvbiAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25lZXMnXCJcclxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25lZXMnICYmXHJcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImxlZnRcIlxyXG4gICAgICAgIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPiAwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hvLnN2Z1wiXHJcbiAgICAgICAgICBhbHQ9XCJpbVwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25lZXMnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkF0dGVzdGF0aW9uPC9sYWJlbD5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbWItMlwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgKHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPT0gMCAmJiAhZ3JvdXBFbmFibGVkKSB8fFxyXG4gICAgICAgICAgICAgIChwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgICAgICAgIGdyb3VwRW5hYmxlZCAmJlxyXG4gICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzaWduZWVzJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Qm94UGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIj5cclxuICAgICAgICAgICAgICBTZWxlY3QgdGhlIHBlcnNvbnMgcmVzcG9uc2libGUgZm9yIGF0dGVzdGluZyB0aGlzIHBvbGljeS5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtbWItMlwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWU/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhZ3JvdXBFbmFibGVkXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgYXNzaWduZWUgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/LnNsaWNlKDAsIDEpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnYXNzaWduZWVzJywgYXNzaWduZWUpXCJcclxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImFzc2lnbmVlLmVtcGxveWVlX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IGFzc2lnbmVlLmVtcGxveWVlX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiXHJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXNzaWduZWVQb3BvdmVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8uc2xpY2UoMSkubGVuZ3RoIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBFbmFibGVkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JvdXBFbmFibGVkICYmIHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzLmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZSgnYXNzaWduZWVzJywgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXNbMF0pXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlc1swXT8uZW1wbG95ZWVfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXNbMF0/LmVtcGxveWVlX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiVXNlclBvcG92ZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzLmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXMubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZS5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICZcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWUubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgJ2dyb3VwQXNzaWduZWVzJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZVswXVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZVswXT8uZ3JvdXBfbmFtZVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IHBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZVswXT8uZ3JvdXBfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJncm91cC5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlLmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlLmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2Fzc2lnbmVlcycsIHRydWUpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPHBcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBzdWJtaXR0ZWQgJiZcclxuICAgICAgICAgICAgICAoKHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uZnJlcXVlbmN5X2RldGFpbHMgJiZcclxuICAgICAgICAgICAgICAgICFncm91cEVuYWJsZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAocG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0uc2VsZWN0ZWRHcm91cEFzc2lnbmVlLmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzICYmXHJcbiAgICAgICAgICAgICAgICAgIGdyb3VwRW5hYmxlZCkgfHxcclxuICAgICAgICAgICAgICAgIChpc1NlbmRGb3JBdHRlc3RhdGlvbiAmJlxyXG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID09PSAwKSlcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgaWQ9XCJ3aG92YWxpZGF0ZW1zZ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFNlbGVjdCB0aGUgcGVyc29ucyByZXF1aXJlZCB0byBhdHRlc3QgdG8gdGhpcyBQb2xpY3kuXHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICA8YXBwLWNzLXN3aXRjaFxyXG4gICAgICAgICAgICBbKG5nVmFsdWUpXT1cInBvbGljeUZvcm0ucmVxdWlyZXNTaWduYXR1cmVGb3JBdHRlc3RhdGlvblwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIndoby10b2dnbGVcIlxyXG4gICAgICAgICAgICA+VEhJUyBQT0xJQ1kgUkVRVUlSRVMgRS1TSUdOQVRVUkUgRk9SIEFUVEVTVEFUSU9OXHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAnSWYgc2VsZWN0ZWQsIHRoZSByZWFkZXJzIHdpbGwgYmUgcmVxdWlyZWQgdG8gYXR0ZXN0IHRoaXMgcG9saWN5IHVzaW5nIHRoZWlyIGVsZWN0cm9uaWMgc2lnbmF0dXJlLidcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgICA+PC9hcHAtY3Mtc3dpdGNoXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI2Fzc2lnbmVlUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFzc2lnbmVlIG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbmVlcycsIGFzc2lnbmVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgYXNzaWduZWUuZW1wbG95ZWVfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjVXNlclBvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBhc3NpZ25lZSBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcyB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLCBhc3NpZ25lZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGFzc2lnbmVlLmVtcGxveWVlX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI2dyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWUgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnZ3JvdXBBc3NpZ25lZXMnLCBkYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZGF0YS5ncm91cF9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG5cclxuICAgICAgICAgIDwhLS0gb3ZlcnNlZXIgLS0+XHJcbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG92ZXJzZWVyIG9mIHBvbGljeUZvcm0/LkNDRW1haWwgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnY2NFbWFpbCcsIG92ZXJzZWVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXI/LmVtcGxveWVlX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyR3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhIG9mIHBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbCB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdjY0dyb3VwRW1haWwnLCBkYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZGF0YT8uZ3JvdXBfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgIDwhLS0gb3ZlcnNlZXIgZW5kIC0tPlxyXG5cclxuICAgICAgICAgIDwhLS0gb3ZlcnNlZXIgZmFpbCBzdGFydCAtLT5cclxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJGYWlsUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG92ZXJzZWVyIG9mIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NjRmFpbCcsIG92ZXJzZWVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXI/LmVtcGxveWVlX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyRmFpbEdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSBvZiBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2NjR3JvdXBGYWlsRW1haWwnLCBkYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZGF0YT8uZ3JvdXBfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgIDwhLS0gb3ZlcnNlZXIgZmFpbCBlbmQgLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBXaGVuIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2ZyZXF1ZW5jeScgJiZcclxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5XaGVuPzwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzID09ICcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QgYnV0dG9uLXNlY1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1pbnB1dCBmcmVxdWVuY3ktY3VzdG9tLWlucHV0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgZnJlcXVlbmN5UGxhY2Vob2xkZXIgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCB0cnVlKVwiIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICBTZXQgQSBmcmVxdWVuY3lcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzICE9ICcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZCBidXR0b24tc2VjXCJcclxuICAgICAgICAgID4gLS0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uZnJlcXVlbmN5X2RldGFpbHMgIT0gJydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkIGJ1dHRvbi1zZWMgc2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdmcmVxdWVuY3knLCByYylcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJmcmVxdWVuY3lQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57eyBmcmVxdWVuY3lQbGFjZWhvbGRlciB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5J1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPkVkaXRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwhLS0gPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPnt7IGZyZXF1ZW5jeVBsYWNlaG9sZGVyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2ZyZXF1ZW5jeSdcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIHRydWUpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT5FZGl0XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPHBcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBzdWJtaXR0ZWQgJiZcclxuICAgICAgICAgICAgICAoKHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAhcG9saWN5Rm9ybT8uZnJlcXVlbmN5X2RldGFpbHMgJiZcclxuICAgICAgICAgICAgICAgICFncm91cEVuYWJsZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAoKHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8ubGVuZ3RoID4gMCkgJiZcclxuICAgICAgICAgICAgICAgICAgIXBvbGljeUZvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzICYmXHJcbiAgICAgICAgICAgICAgICAgIGdyb3VwRW5hYmxlZCkpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFNlbGVjdCBhbiBhdHRlc3RhdGlvbiBzY2hlZHVsZSBmb3IgdGhpcyBwb2xpY3kuXHJcbiAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgPCEtLSA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+RWZmZWN0aXZlIERhdGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS10aW1lLXBpY2tlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tlci1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IHBsYWNlaG9sZGVyPVwiU2VsZWN0IHRoZSBkYXRlIGZyb20gd2hpY2ggdGhpcyBwb2xpY3kgZ29lcyBpbnRvIGVmZmVjdC5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicG9saWN5Rm9ybS5wb2xpY3lEdWVEYXRlICB8IGRhdGU6ICdkZCBNTU0geXl5eSdcIiAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkyZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyICNkYXRlUGlja2VyIChvblNlbGVjdCk9XCJkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO2Nsb3NlRGF0ZVBpY2tlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRlQ29uZmlnXCIgWyhuZ01vZGVsKV09XCJwb2xpY3lGb3JtLnBvbGljeUR1ZURhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RwLWRhdGUtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1vdmVybGF5XCIgKGNsaWNrKT1cImNsb3NlRGF0ZVBpY2tlcigkZXZlbnQpXCIgKm5nSWY9XCJkYXRlUGlja2VyT3ZlcmxheVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIENoZWNrcG9pbnRzIC8gQXNzZXNzbWVudCBvZiBVbmRlcnN0YW5kaW5nIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICAgICpuZ0lmPVwidHJ1ZVwiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjaGVja3BvaW50cydcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NoZWNrcG9pbnRzJyAmJlxyXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxyXG4gICAgICAgICAgICBBc3Nlc3NtZW50IG9mIFVuZGVyc3RhbmRpbmdcclxuICAgICAgICAgICAgPCEtLSA8YnV0dG9uICAqbmdJZj1cInBvbGljeUZvcm0/LmNoZWNrcG9pbnREZXRhaWxzPy5sZW5ndGg9PT0wXCIgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMnLHRydWUpXCI+KyBBZGQgQ2hlY2twb2ludHM8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHM/Lmxlbmd0aCA9PT0gMFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cycsIHRydWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPCEtLSA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNldCB1cCBhIHF1ZXN0aW9ubmFpcmUgdG8gY29uZmlybSB0aGUgcmVhZGVy4oCZcyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwb2xpY3kuXCIgcmVhZG9ubHk+IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWlucHV0XCI+XHJcbiAgICAgICAgICAgICAgU2V0IHVwIGEgcXVlc3Rpb25uYWlyZSB0byBjb25maXJtIHRoZSByZWFkZXLigJlzPGJyIC8+dW5kZXJzdGFuZGluZ1xyXG4gICAgICAgICAgICAgIG9mIHRoZSBwb2xpY3kuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LmNoZWNrcG9pbnREZXRhaWxzPy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPnt7cG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHM/Lmxlbmd0aCArIChwb2xpY3lGb3JtPy5jaGVja3BvaW50RGV0YWlscz8ubGVuZ3RoID4gMSA/JyBDaGVja3BvaW50cyc6JyBDaGVja3BvaW50Jyl9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrcG9pbnQtcG9pbnQtdGV4dCBmaXJzdFwiPlRPVEFMIFBPSU5UUzogPHNwYW4gY2xhc3M9XCJub1wiPnt7cG9saWN5Rm9ybT8udG90YWxRdWVzdGlvbn19PC9zcGFuPjxicj48ZW0+RWFjaCBxdWVzdGlvbiBjYXJyaWVzIDEgcG9pbnQ8L2VtPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrcG9pbnQtcG9pbnQtdGV4dFwiPlBPSU5UUyBSRVFVSVJFRCBUTyBBVFRFU1QgOiA8c3BhbiBjbGFzcz1cIm5vXCI+e3twb2xpY3lGb3JtPy5wYXNzaW5nTWFya3N9fTwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnY2hlY2twb2ludHMnLCBwb2xpY3lGb3JtPy5jaGVja3BvaW50RGV0YWlscylcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCI+e3tcclxuICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LmNoZWNrcG9pbnREZXRhaWxzPy5sZW5ndGggK1xyXG4gICAgICAgICAgICAgICAgICAocG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHM/Lmxlbmd0aCA+IDFcclxuICAgICAgICAgICAgICAgICAgICA/IFwiIFF1ZXN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgOiBcIiBRdWVzdGlvblwiKVxyXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NoZWNrcG9pbnRzJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8IS0tIDxhcHAtcG9wb3ZlciAjY2hlY2twb2ludFBvcE92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBjaGVja3BvaW50IG9mIHBvbGljeUZvcm0/LmNoZWNrcG9pbnREZXRhaWxzIHwgc2xpY2U6IDE7IGxldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NoZWNrcG9pbnRzJyxjaGVja3BvaW50LGorMSlcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjaGVja3BvaW50Py5xdWVzdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBSaXNrIENsYXNzaWZpY2F0aW9uIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgKm5nSWY9XCJzaG93Umlza0NsYXNzaWZpY2F0aW9uICYmIGZhbHNlXCJcclxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0ucmlza1JhdGluZ1wiPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9yaXNrcy5zdmdcIlxyXG4gICAgICAgICAgYWx0PVwiaW1cIlxyXG4gICAgICAgICAgKm5nSWY9XCIhcG9saWN5Rm9ybT8ucmlza1JhdGluZ1wiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucmlza1JhdGluZ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UmlzayBDbGFzc2lmaWNhdGlvbjwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xhc3NpZmljYXRpb25cIj5cclxuICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJsb3dcIlxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjbGFzcyBvZiByaXNrQ2xhc3NpZmljYXRpb25cIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltjbGFzcy5jbGFzc11cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImNsYXNzaWZpY2F0aW9uXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjbGFzcy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJwb2xpY3lGb3JtPy5yaXNrUmF0aW5nID09PSBjbGFzcy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBvbGljeUZvcm0ucmlza1JhdGluZ1wiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8c3Bhbj57eyBjbGFzcy5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmFkZFJlc3BvbnNpYmlsaXR5Q2VudGVyc1wiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3JjJyAmJlxyXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkUkNzPy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/Lmxlbmd0aCA9PSAwIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAncmMnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3Jlc3BvbnNpYmlsaXR5LWNlbnRlci5zdmdcIlxyXG4gICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkUkNzPy5sZW5ndGggPiAwICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAncmMnXCJcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SZXNwb25zaWJpbGl0eSBDZW50ZXI8L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmMnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpIHRoYXQgdGhpcyBwb2xpY3kgcmVsYXRlcyB0by5cIlxyXG4gICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkUkNzPy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJjIG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkUkNzPy5zbGljZSgwLCAxKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyYycsIHJjKVwiXHJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyYy5pdGVtX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IHJjLml0ZW1fbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmNQb3BvdmVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8uc2xpY2UoMSkubGVuZ3RoIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmMnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcmNQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmMgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3MgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmMnLCByYylcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IHJjLml0ZW1fbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFZlcnNpb24gLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwicG9saWN5Rm9ybS5hZGRWZXJzaW9uXCJcclxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiYgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybS5wb2xpY3lfdmVyc2lvblwiPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9hc3NvY2lhdGVkLXJpc2tzLnN2Z1wiXHJcbiAgICAgICAgICBhbHQ9XCJuYW1lXCJcclxuICAgICAgICAgICpuZ0lmPVwiIXBvbGljeUZvcm0ucG9saWN5X3ZlcnNpb25cIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxzdmdcclxuICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybS5wb2xpY3lfdmVyc2lvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjaXJjbGVcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXHJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxyXG4gICAgICAgICAgICBjeT1cIjI2XCJcclxuICAgICAgICAgICAgcj1cIjI1XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+VkVSU0lPTjwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uXCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvblZlcnNpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTcGVjaWZ5IHRoZSBwb2xpY3kgdmVyc2lvbi5cIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzVmVyc2lvblZhbGlkXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcclxuICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgdmVyc2lvbkVycm9yTWVzc2FnZSB9fVxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUmV2aWV3ZXIgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmFkZFJldmlld2VycyAmJiBmYWxzZVwiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcidcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJyAmJlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXJGcmVxdWVuY3knICYmXHJcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImxlZnRcIlxyXG4gICAgICAgIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkUmV2aWV3ZXJzPy5sZW5ndGggPiAwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkUmV2aWV3ZXJzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9yZXZpZXdlci5zdmdcIlxyXG4gICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZFJldmlld2Vycz8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SZXZpZXdlciA8L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA9PSAwXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlcicsIHRydWUpXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCB0aGUgcGVyc29uIHJlc3BvbnNpYmxlIGZvciByZXZpZXdpbmcgdGhpcyBwb2xpY3lcIlxyXG4gICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkUmV2aWV3ZXJzPy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmV2aWV3ZXIgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnNcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncmV2aWV3ZXInLCByZXZpZXdlcilcIlxyXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmV2aWV3ZXIubWVtYmVyX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IHJldmlld2VyLm1lbWJlcl9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIHN1Ym1pdHRlZCAmJlxyXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkUmV2aWV3ZXJzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LnJldmlld19mcmVxdWVuY3lfZGV0YWlsc1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxyXG4gICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBTZWxlY3QgYSByZXZpZXdlciBmb3IgdGhpcyBwb2xpY3kuXHJcbiAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPldoZW4/IDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnJldmlld19mcmVxdWVuY3lfZGV0YWlscyA9PSAnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0IGJ1dHRvbi1zZWNcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyRnJlcXVlbmN5JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJyZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyRnJlcXVlbmN5JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgU2V0IEEgZnJlcXVlbmN5XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzICE9ICcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZCBidXR0b24tc2VjXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+e3sgcmV2aWV3ZXJGcmVxdWVuY3lQbGFjZWhvbGRlciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdyZXZpZXdlckZyZXF1ZW5jeSdcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyRnJlcXVlbmN5JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPkVkaXRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgc3VibWl0dGVkICYmXHJcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgICAhcG9saWN5Rm9ybT8ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFNlbGVjdCB0aGUgcmV2aWV3IHNjaGVkdWxlIGZvciB0aGlzIHBvbGljeS5cclxuICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICA8YXBwLWZvcm1hdC1hbmQtZXZpZGVuY2VcclxuICAgICAgICAgICAgKHVwZGF0ZUZpbGVzKT1cInNhdmVTZWxlY3RlZExpc3QoJ3Jldmlld2VyX2F0dGFjaG1lbnRzJywgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICNmb3JtYXRFdmlkZW5jZVxyXG4gICAgICAgICAgICBbbW9kZV09XCIncG9saWN5UmV2aWV3ZXInXCJcclxuICAgICAgICAgICAgW29yZ2FuaXphdGlvbl9pZF09XCJvcmdhbml6YXRpb25faWRcIlxyXG4gICAgICAgICAgICBbZm9ybWF0RXZpZGFuY2VEYXRhXT1cInBvbGljeUZvcm0/LmRvY3VtZW50c0FuZExpbmtzXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwvYXBwLWZvcm1hdC1hbmQtZXZpZGVuY2U+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBPdmVyc2VlciAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgICAqbmdJZj1cInBvbGljeUZvcm0uYWRkT3ZlcnNlZXJzXCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2NjRW1haWwnIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnY2NGYWlsJ1xyXG4gICAgICBcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NjRW1haWwnICYmXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdjY0ZhaWwnICYmXHJcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImxlZnRcIlxyXG4gICAgICAgIFtjbGFzcy5jaGVja2VkXT1cIlxyXG4gICAgICAgICAgcG9saWN5Rm9ybT8uQ0NFbWFpbD8ubGVuZ3RoID4gMCB8fCBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID4gMFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAocG9saWN5Rm9ybT8uQ0NGYWlsRW1haWw/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NFbWFpbD8ubGVuZ3RoID09IDApIHx8XHJcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnY2NFbWFpbCcgfHxcclxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdjY0ZhaWwnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L292ZXJzaWdodC5zdmdcIlxyXG4gICAgICAgICAgYWx0PVwiaW1cIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxzdmdcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIChwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LkNDRW1haWw/Lmxlbmd0aCA+IDApICYmXHJcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2NFbWFpbCcgJiZcclxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdjY0ZhaWwnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk92ZXJzaWdodDwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0VtYWlsPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbC5sZW5ndGggPT0gMFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NjRW1haWwnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJXaG8gc2hvdWxkIGhhdmUgb3ZlcnNpZ2h0IG9mIHRoaXMgcG9saWN5P1wiXHJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0VtYWlsPy5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhZ3JvdXBFbmFibGVkXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjY0VtYWlsIG9mIHBvbGljeUZvcm0/LkNDRW1haWw/LnNsaWNlKDAsIDEpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2NjRW1haWwnLCBjY0VtYWlsKVwiXHJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjY0VtYWlsLmVtcGxveWVlX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IGNjRW1haWwuZW1wbG95ZWVfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjY0VtYWlsUG9wb3Zlci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LkNDRW1haWw/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5DQ0VtYWlsPy5zbGljZSgxKS5sZW5ndGggfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXBFbmFibGVkXCIgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdyb3VwRW5hYmxlZCAmJiBwb2xpY3lGb3JtPy5DQ0VtYWlsPy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2NjRW1haWwnLCBwb2xpY3lGb3JtPy5DQ0VtYWlsWzBdKVwiXHJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJwb2xpY3lGb3JtPy5DQ0VtYWlsWzBdLmVtcGxveWVlX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IHBvbGljeUZvcm0/LkNDRW1haWxbMF0uZW1wbG95ZWVfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiXHJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyUG9wb3Zlci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uQ0NFbWFpbD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5DQ0VtYWlsPy5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0VtYWlsLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICZcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsLmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnY2NHcm91cEVtYWlsJywgcG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsWzBdKVwiXHJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJwb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWxbMF0/Lmdyb3VwX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IHBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbFswXT8uZ3JvdXBfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2Vlckdyb3VwLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWw/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsPy5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2NFbWFpbCcsIHRydWUpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXA/Lmxlbmd0aCA9PSAwXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2NGYWlsJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hvIHNob3VsZCBiZSBub3RpZmllZCBpZiB0aGUgcG9saWN5IGlzIG5vdCBhdHRlc3RlZCBvbiB0aW1lP1wiXHJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWw/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWdyb3VwRW5hYmxlZFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2NGYWlsIG9mIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsPy5zbGljZSgwLCAxKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdjY0ZhaWwnLCBjY0ZhaWwpXCJcclxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImNjRmFpbC5lbXBsb3llZV9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgID57eyBjY0ZhaWwuZW1wbG95ZWVfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjY0ZhaWxQb3BvdmVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LkNDRmFpbEVtYWlsPy5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWw/LnNsaWNlKDEpLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJncm91cEVuYWJsZWRcIiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JvdXBFbmFibGVkICYmIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsLmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnY2NGYWlsJywgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxbMF0pXCJcclxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInBvbGljeUZvcm0/LkNDRmFpbEVtYWlsWzBdPy5lbXBsb3llZV9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgID57eyBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbFswXT8uZW1wbG95ZWVfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiXHJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyRmFpbFBvcG92ZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LkNDRmFpbEVtYWlsPy5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgK3t7IHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsPy5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICZcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cD8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKCdjY0dyb3VwRmFpbEVtYWlsJywgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cFswXSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXBbMF0/Lmdyb3VwX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXBbMF0/Lmdyb3VwX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3ZlcnNlZXJGYWlsR3JvdXAucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXA/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cD8ubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2NGYWlsJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI2NjRW1haWxQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2NFbWFpbCBvZiBwb2xpY3lGb3JtPy5DQ0VtYWlsIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NjRW1haWwnLCBjY0VtYWlsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgY2NFbWFpbC5lbXBsb3llZV9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgPGFwcC1wb3BvdmVyICNjY0ZhaWxQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2NGYWlsIG9mIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NjRmFpbCcsIGNjRmFpbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGNjRmFpbC5lbXBsb3llZV9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUmVsYXRlZCBEb2N1bWVudHMgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmFkZEFzc29jaWF0ZWREb2N1bWVudHNcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmFzc29jaWF0ZWREb2N1bWVudHMuZm9ybWF0RmlsZXM/Lmxlbmd0aCA9PSAwXCJcclxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9mb3JtYXQtZXZpZGVuY2Uuc3ZnXCJcclxuICAgICAgICAgIGFsdD1cImltXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0uYXNzb2NpYXRlZERvY3VtZW50cy5mb3JtYXRGaWxlcz8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjaXJjbGVcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXHJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxyXG4gICAgICAgICAgICBjeT1cIjI2XCJcclxuICAgICAgICAgICAgcj1cIjI1XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UkVMQVRFRCBET0NVTUVOVFM8L2xhYmVsPlxyXG4gICAgICAgICAgPGFwcC1mb3JtYXQtYW5kLWV2aWRlbmNlXHJcbiAgICAgICAgICAgICh1cGRhdGVGaWxlcyk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdhc3NvY2lhdGVkRG9jdW1lbnRzJywgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFttb2RlXT1cIidwb2xpY3knXCJcclxuICAgICAgICAgICAgW29yZ2FuaXphdGlvbl9pZF09XCJvcmdhbml6YXRpb25faWRcIlxyXG4gICAgICAgICAgICBbZm9ybWF0RXZpZGFuY2VEYXRhXT1cInBvbGljeUZvcm0/LmFzc29jaWF0ZWREb2N1bWVudHNcIlxyXG4gICAgICAgICAgPjwvYXBwLWZvcm1hdC1hbmQtZXZpZGVuY2U+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBMaW5rIFByb2dyYW1zICYgUmVzcG9uc2liaWxpdGllcyAtLT5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5hZGRMaW5rUHJvZ3JhbVwiXHJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2xpbmtQcm9ncmFtJ1wiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnbGlua1Byb2dyYW0nICYmXHJcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImxlZnRcIlxyXG4gICAgICAgIFtjbGFzcy5jaGVja2VkXT1cIlxyXG4gICAgICAgICAgcG9saWN5Rm9ybT8ucHJvZ3JhbVNlbGVjdGVkVmFsdWVzPy5wcm9ncmFtPy5jYXRlZ29yeV9pZFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAqbmdJZj1cIiFwb2xpY3lGb3JtPy5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkXCJcclxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9saW5rLWl0ZW1zLnN2Z1wiXHJcbiAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxzdmdcclxuICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucHJvZ3JhbVNlbGVjdGVkVmFsdWVzPy5wcm9ncmFtPy5jYXRlZ29yeV9pZFwiXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjaXJjbGVcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXHJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxyXG4gICAgICAgICAgICBjeT1cIjI2XCJcclxuICAgICAgICAgICAgcj1cIjI1XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgICAgPkxJTksgUFJPR1JBTVMgJiBSRVNQT05TSUJJTElUSUVTPC9sYWJlbFxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cIiFwb2xpY3lGb3JtPy5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2xpbmtQcm9ncmFtJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiPlxyXG4gICAgICAgICAgICAgIFNlbGVjdCBQcm9ncmFtcyAmIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmU8YnIgLz5hc3NvY2lhdGVkIHdpdGhcclxuICAgICAgICAgICAgICB0aGlzIHBvbGljeS5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZSgnbGlua1Byb2dyYW0nLCBwb2xpY3lGb3JtPy5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXMpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJwb2xpY3lGb3JtPy5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXM/LnByb2dyYW0/Lm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+e3sgcG9saWN5Rm9ybT8ucHJvZ3JhbVNlbGVjdGVkVmFsdWVzPy5wcm9ncmFtPy5uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwhLS0gPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwcm9ncmFtUmVzcG9uc2liaWxpdHlQb3BvdmVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICArNFxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlclxyXG4gICAgICAgICAgICAgICNwcm9ncmFtUmVzcG9uc2liaWxpdHlQb3BvdmVyXHJcbiAgICAgICAgICAgICAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBbMSwgMSwgMSwgMSwgMSwgMSwgMV1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAnUmVwb3J0aW5nIGluZm9ybWF0aW9uIHNlY3VyaXR5IHdlYWtuZXNzZXMnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydGluZyBpbmZvcm1hdGlvbiBzZWN1cml0eSB3ZWFrbmVzc2VzXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignbGlua1Byb2dyYW0nLCB0cnVlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gTGluayBBc3Nlc3NtZW50IC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cInBvbGljeUZvcm0uYWRkTGlua0Fzc2Vzc21lbnRcIlxyXG4gICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdpc0Fzc2Vzc21lbnQnXCJcclxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdpc0Fzc2Vzc21lbnQnICYmXHJcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8uYXNzZXNzbWVudD8ubGVuZ3RoXCI+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgKm5nSWY9XCIhcG9saWN5Rm9ybT8uYXNzZXNzbWVudD8ubGVuZ3RoXCJcclxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9hc3Nlc3NtZW50cy5zdmdcIlxyXG4gICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LmFzc2Vzc21lbnQ/Lmxlbmd0aFwiXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjaXJjbGVcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXHJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxyXG4gICAgICAgICAgICBjeT1cIjI2XCJcclxuICAgICAgICAgICAgcj1cIjI1XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+TElOSyBBU1NFU1NNRU5UUzwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uYXNzZXNzbWVudD8ubGVuZ3RoID09PSAwXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2lzQXNzZXNzbWVudCcsIHRydWUpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Qm94UGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIj5cclxuICAgICAgICAgICAgICBTZWxlY3QgYXNzZXNzbWVudHMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXM8YnIgLz5wb2xpY3kuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LmFzc2Vzc21lbnQ/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtLmFzc2Vzc21lbnRbMF0/LmFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X25hbWVcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57e1xyXG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtLmFzc2Vzc21lbnRbMF0/LmFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X25hbWVcclxuICAgICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyXHJcbiAgICAgICAgICAgICAgI3Byb2dyYW1SZXNwb25zaWJpbGl0eVBvcG92ZXJcclxuICAgICAgICAgICAgICBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFzc2Vzc21lbnQgb2YgcG9saWN5Rm9ybS5hc3Nlc3NtZW50IHwgc2xpY2UgOiAxXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2Vzc21lbnQ/LmFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X25hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgYXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdpc0Fzc2Vzc21lbnQnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxhcHAtY2hlY2tib3gtbGlzdFxyXG4gICAgW2NvbmZpZ109XCJjYXRlZ29yeUNvbmZpZ1wiXHJcbiAgICBbdHdvQ29sdW1uXT1cImZhbHNlXCJcclxuICAgIFtpdGVtc0xpc3RdPVwiY2F0ZWdvcnlMaXN0XCJcclxuICAgIFtzZWxlY3RlZEl0ZW1zXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzXCJcclxuICAgIFtpZGVudGlmaWVyS2V5XT1cIidfaWQnXCJcclxuICAgIFtkaXNwbGF5S2V5XT1cIidpdGVtX25hbWUnXCJcclxuICAgIFt0b29sdGlwS2V5XT1cIidpdGVtX25hbWUnXCJcclxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcIlxyXG4gICAgKHNhdmVMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgJGV2ZW50KVwiXHJcbiAgICAoY2xvc2VMaXN0KT1cImRpc2FibGVTZWxlY3RvcigpXCJcclxuICAgIFtsb2FkZWRdPVwiIWNhdGVnb3JpZXNMaXN0TG9hZGVkXCJcclxuICA+XHJcbiAgPC9hcHAtY2hlY2tib3gtbGlzdD5cclxuICA8IS0tIDxhcHAtY2hlY2tib3gtbGlzdCBbY29uZmlnXT1cImFwcHJvdmFsV29ya2Zsb3dDb25maWdcIiBbdHdvQ29sdW1uXT1cInRydWVcIlxyXG4gIFtpdGVtc0xpc3RdPVwiXCJcclxuICBbc2VsZWN0ZWRJdGVtc109XCJwb2xpY3lGb3JtLmlzc3VlQ0NVc2Vyc1wiIFtpZGVudGlmaWVyS2V5XT1cIidlbXBsb3llZV9lbWFpbCdcIiBbZGlzcGxheUtleV09XCInZW1wbG95ZWVfbmFtZSdcIiBbdG9vbHRpcEtleV09XCInZW1wbG95ZWVfZW1haWwnXCJcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yPT09J0lTU1VFX0NDJ1wiIChzYXZlTGlzdCk9XCJzZWxlY3RvckFjdGlvbigkZXZlbnQsJ0lTU1VFX0NDJylcIlxyXG4gIChjbG9zZUxpc3QpPVwiZmllbGREZXNlbGVjdG9yKCdJU1NVRV9DQycpXCI+XHJcbjwvYXBwLWNoZWNrYm94LWxpc3Q+IC0tPlxyXG5cclxuICA8YXBwLXJlc3BvbnNpYmlsaXR5LWNlbnRlcnMtbGlzdFxyXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3JjJ1wiXHJcbiAgICBbcmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdF09XCJyY0xpc3RcIlxyXG4gICAgW3NlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRSQ3NcIlxyXG4gICAgW3JjSWRLZXldPVwiJ2l0ZW1faWQnXCJcclxuICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ3JjJywgJGV2ZW50KVwiXHJcbiAgICAoY2xvc2VSY0xpc3QpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxyXG4gICAgW2xvYWRlZF09XCJyY0xpc3RMb2FkZWRcIlxyXG4gID5cclxuICA8L2FwcC1yZXNwb25zaWJpbGl0eS1jZW50ZXJzLWxpc3Q+XHJcblxyXG4gIDxhcHAtdXNlcnMtcmFkaW8tbGlzdFxyXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyJ1wiXHJcbiAgICBbaXRlbUVtYWlsS2V5XT1cIidtZW1iZXJfZW1haWwnXCJcclxuICAgIFt1c2Vyc0xpc3RdPVwiYWxsUmV2aWV3ZXJzXCJcclxuICAgIFtoZWFkZXJUZXh0XT1cIidTZWxlY3QgYSBSZXZpZXdlcidcIlxyXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwicG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2Vyc1wiXHJcbiAgICBbdXNlcklkS2V5XT1cIidtZW1iZXJfaWQnXCJcclxuICAgIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCJcclxuICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ3Jldmlld2VyJywgJGV2ZW50KVwiXHJcbiAgICAoY2xvc2VVc2Vyc0xpc3QpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxyXG4gID5cclxuICA8L2FwcC11c2Vycy1yYWRpby1saXN0PlxyXG5cclxuICA8YXBwLW93bmVyLWxpc3RcclxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjY0VtYWlsJyAmJiAhZ3JvdXBFbmFibGVkXCJcclxuICAgIFt1c2Vyc0xpc3RdPVwib3ZlcnNlZXJzTGlzdFwiXHJcbiAgICBbc2luZ3VsYXJUZXh0XT1cIidVc2VyIHNlbGVjdGVkJ1wiXHJcbiAgICBbcGx1cmFsVGV4dF09XCInVXNlcnMgc2VsZWN0ZWQnXCJcclxuICAgIFtzZWxlY3RlZFVzZXJzXT1cInBvbGljeUZvcm0uQ0NFbWFpbFwiXHJcbiAgICBbdXNlcklkS2V5XT1cIidlbXBsb3llZV9pZCdcIlxyXG4gICAgW2l0ZW1OYW1lS2V5XT1cIidlbXBsb3llZV9uYW1lJ1wiXHJcbiAgICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdjY0VtYWlsJywgJGV2ZW50KVwiXHJcbiAgICAoY2xvc2VVc2Vyc0xpc3QpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxyXG4gID5cclxuICA8L2FwcC1vd25lci1saXN0PlxyXG5cclxuICA8dXNlci1ncm91cC1saXN0XHJcbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2NFbWFpbCcgJiYgZ3JvdXBFbmFibGVkXCJcclxuICAgIFtncm91cEVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICBbdXNlcmxpc3RdPVwib3ZlcnNlZXJzTGlzdFwiXHJcbiAgICBbZ3JvdXBMaXN0XT1cIm92ZXJzZWVyR3JvdXBzTGlzdFwiXHJcbiAgICBbc2VsZWN0ZWRVc2Vyc109XCJwb2xpY3lGb3JtLkNDRW1haWxcIlxyXG4gICAgW3NlbGVjdGVkR3JvdXBzXT1cInBvbGljeUZvcm0uQ0NHcm91cEVtYWlsXCJcclxuICAgIChzYXZlKT1cInNhdmVTZWxlY3RlZExpc3QoJ2NjRW1haWwnLCAkZXZlbnQpXCJcclxuICAgIChjYW5jZWwpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxyXG4gICAgW2ZlYXR1cmVmbGFnXT1cImdyb3VwRW5hYmxlZFwiXHJcbiAgPlxyXG4gIDwvdXNlci1ncm91cC1saXN0PlxyXG5cclxuICA8YXBwLW93bmVyLWxpc3RcclxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjY0ZhaWwnICYmICFncm91cEVuYWJsZWRcIlxyXG4gICAgW3VzZXJzTGlzdF09XCJvdmVyc2VlcnNMaXN0XCJcclxuICAgIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCJcclxuICAgIFtwbHVyYWxUZXh0XT1cIidVc2VycyBzZWxlY3RlZCdcIlxyXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwicG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbFwiXHJcbiAgICBbdXNlcklkS2V5XT1cIidlbXBsb3llZV9pZCdcIlxyXG4gICAgW2l0ZW1OYW1lS2V5XT1cIidlbXBsb3llZV9uYW1lJ1wiXHJcbiAgICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdjY0ZhaWwnLCAkZXZlbnQpXCJcclxuICAgIChjbG9zZVVzZXJzTGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXHJcbiAgPlxyXG4gIDwvYXBwLW93bmVyLWxpc3Q+XHJcblxyXG4gIDx1c2VyLWdyb3VwLWxpc3RcclxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjY0ZhaWwnICYmIGdyb3VwRW5hYmxlZFwiXHJcbiAgICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxyXG4gICAgW3VzZXJsaXN0XT1cIm92ZXJzZWVyc0xpc3RcIlxyXG4gICAgW2dyb3VwTGlzdF09XCJvdmVyc2Vlckdyb3Vwc0xpc3RcIlxyXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwicG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbFwiXHJcbiAgICBbc2VsZWN0ZWRHcm91cHNdPVwicG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbEdyb3VwXCJcclxuICAgIChzYXZlKT1cInNhdmVTZWxlY3RlZExpc3QoJ2NjRmFpbCcsICRldmVudClcIlxyXG4gICAgKGNhbmNlbCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXHJcbiAgICBbZmVhdHVyZWZsYWddPVwiZ3JvdXBFbmFibGVkXCJcclxuICA+XHJcbiAgPC91c2VyLWdyb3VwLWxpc3Q+XHJcblxyXG4gIDxhcHAtZ3JvdXAtdXNlcnMtbGlzdFxyXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcycgJiYgIWdyb3VwRW5hYmxlZFwiXHJcbiAgICBbdXNlcnNMaXN0XT1cImFzc2lnbmVlc0xpc3RcIlxyXG4gICAgW2dyb3Vwc0xpc3RdPVwib3ZlcnNlZXJHcm91cHNMaXN0XCJcclxuICAgIFtzZWxlY3RlZFVzZXJzXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXNcIlxyXG4gICAgW3VzZXJJZEtleV09XCInbXlfbWVtYmVyX2lkJ1wiXHJcbiAgICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdhc3NpZ25lZXMnLCAkZXZlbnQpXCJcclxuICAgIChjbG9zZVVzZXJzTGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXHJcbiAgPlxyXG4gIDwvYXBwLWdyb3VwLXVzZXJzLWxpc3Q+XHJcblxyXG4gIDx1c2VyLWdyb3VwLWxpc3RcclxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25lZXMnICYmIGdyb3VwRW5hYmxlZFwiXHJcbiAgICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxyXG4gICAgW3VzZXJsaXN0XT1cIm93bmVybGlzdFwiXHJcbiAgICBbZ3JvdXBMaXN0XT1cIm92ZXJzZWVyR3JvdXBzTGlzdFwiXHJcbiAgICAoc2F2ZSk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdhc3NpZ25lZXMnLCAkZXZlbnQpXCJcclxuICAgIChjYW5jZWwpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxyXG4gICAgW3NlbGVjdGVkR3JvdXBzXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRHcm91cEFzc2lnbmVlXCJcclxuICAgIFtzZWxlY3RlZFVzZXJzXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXNcIlxyXG4gICAgW2ZlYXR1cmVmbGFnXT1cImdyb3VwRW5hYmxlZFwiXHJcbiAgPlxyXG4gIDwvdXNlci1ncm91cC1saXN0PlxyXG5cclxuICA8YXBwLW93bmVyLWxpc3RcclxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhcHByb3ZlcnMnICYmIGZhbHNlXCJcclxuICAgIFtsaXN0SGVhZGluZ109XCInU2VsZWN0IEFwcHJvdmVycydcIlxyXG4gICAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxyXG4gICAgW3BsdXJhbFRleHRdPVwiJ1VzZXJzIHNlbGVjdGVkJ1wiXHJcbiAgICBbdXNlcnNMaXN0XT1cImFsbEFwcHJvdmVyc1wiXHJcbiAgICBbc2hvd1dvcmtmbG93XT1cInRydWVcIlxyXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwiXHJcbiAgICAgIGFkZE1vcmVMZXZlbHNcclxuICAgICAgICA/IFtdXHJcbiAgICAgICAgOiBwb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzW2FwcHJvdmVyc0xpc3RJbmRleF0uYXBwcm92ZXJzXHJcbiAgICBcIlxyXG4gICAgW3VzZXJJZEtleV09XCInbWVtYmVyX2lkJ1wiXHJcbiAgICBbaXRlbUVtYWlsS2V5XT1cIidtZW1iZXJfZW1haWwnXCJcclxuICAgIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCJcclxuICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2FwcHJvdmVycycsICRldmVudClcIlxyXG4gICAgKGNsb3NlVXNlcnNMaXN0KT1cImRpc2FibGVTZWxlY3RvcigpXCJcclxuICAgIFttb2RlXT1cIm1vZGVcIlxyXG4gICAgW3Jldmlld2VyV29ya2Zsb3dUeXBlXT1cIndvcmtmbG93VHlwZVwiXHJcbiAgICAocmV2aWV3ZXJXb3JrZmxvd1R5cGVDaGFuZ2UpPVwicmV2aWV3ZXJUeXBlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgW3dvcmtmbG93TGlzdF09XCJ3b3JrZmxvd0xpc3RcIlxyXG4gICAgW3dvcmtmbG93VGV4dF09XCInQXBwcm92YWwgV29ya2Zsb3cnXCJcclxuICA+XHJcbiAgPC9hcHAtb3duZXItbGlzdD5cclxuXHJcbiAgPGFwcC1mcmVxdWVuY3ktY29udGFpbmVyXHJcbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1wiXHJcbiAgICBbbW9kZV09XCIncG9saWN5J1wiXHJcbiAgICBbZnJlcXVlbmN5RGV0YWlsc109XCJmcmVxdWVuY3lEZXRhaWxzXCJcclxuICAgIChzZWxlY3RlZEZyZXF1ZW5jeSk9XCJmcmVxdWVuY3lEYXRhKCRldmVudClcIlxyXG4gICAgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiXHJcbiAgICBbcGFnZVR5cGVdPVwiJ3BvbGljeSdcIlxyXG4gICAgKGNsb3NlRnJlcXVlbmN5KT1cImRpc2FibGVTZWxlY3RvcigpXCJcclxuICA+PC9hcHAtZnJlcXVlbmN5LWNvbnRhaW5lcj5cclxuXHJcbiAgPGFwcC1mcmVxdWVuY3ktY29udGFpbmVyXHJcbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXJGcmVxdWVuY3knXCJcclxuICAgIFttb2RlXT1cIidyZXZpZXdlckZyZXF1ZW5jeSdcIlxyXG4gICAgW2ZyZXF1ZW5jeURldGFpbHNdPVwicmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzXCJcclxuICAgIChzZWxlY3RlZEZyZXF1ZW5jeSk9XCJyZXZpZXdlckZyZXF1ZW5jeURhdGEoJGV2ZW50KVwiXHJcbiAgICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcclxuICAgIFtwYWdlVHlwZV09XCIncG9saWN5J1wiXHJcbiAgICAoY2xvc2VGcmVxdWVuY3kpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxyXG4gID48L2FwcC1mcmVxdWVuY3ktY29udGFpbmVyPlxyXG5cclxuICA8dmMtbGluay1wcm9ncmFtXHJcbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnbGlua1Byb2dyYW0nXCJcclxuICAgIChjbG9zZSk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXHJcbiAgICBbcG9saWN5XT1cInBvbGljeUZvcm1cIlxyXG4gICAgW3NlbGVjdGVkUHJvZ3JhbV09XCJwb2xpY3lGb3JtPy5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXNcIlxyXG4gICAgW21vZGVdPVwibW9kZVwiXHJcbiAgICBbc2VsZWN0ZWRMaW5rUHJvZ3JhbV09XCJzZWxlY3RlZExpbmtQcm9ncmFtXCJcclxuICAgIChjaGFuZ2VUYWIpPVwiY2hhbmdlVGFiKCdsaW5rZWRQcm9ncmFtcycpXCJcclxuICAgICh1cGRhdGVkUHJvZ3JhbURldGFpbHMpPVwidXBkYXRlZFByb2dyYW1EZXRhaWxzKCRldmVudClcIlxyXG4gID5cclxuICA8L3ZjLWxpbmstcHJvZ3JhbT5cclxuXHJcbiAgPGFwcC1jaGVja3BvaW50cy1wb2xpY3ktY29udGFpbmVyXHJcbiAgICAoY2xvc2VDaGVja1BvaW50KT1cImRpc2FibGVTZWxlY3RvcigpXCJcclxuICAgIFtjaGVja3BvaW50RGF0YV09XCJwb2xpY3lGb3JtPy5jaGVja3BvaW50RGV0YWlsc1wiXHJcbiAgICBbcmVxdWlyZWRQb2ludF09XCJwb2xpY3lGb3JtPy5wYXNzaW5nTWFya3NcIlxyXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzJ1wiXHJcbiAgICAoc2F2ZUNoZWNrUG9pbnQpPVwic2F2ZVNlbGVjdGVkTGlzdCgnY2hlY2twb2ludHMnLCAkZXZlbnQpXCJcclxuICA+PC9hcHAtY2hlY2twb2ludHMtcG9saWN5LWNvbnRhaW5lcj5cclxuICA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxyXG5cclxuICA8YXBwLWFwcHJvdmFsLXdvcmtmbG93XHJcbiAgICAqbmdJZj1cImVuYWJsZUFwcHJvdmFsV29ya2Zsb3dcIlxyXG4gICAgW3NlbGVjdGVkQ2F0ZWdvcnldPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzXCJcclxuICAgIFthcHByb3ZlcldvcmtGbG93TGlzdF09XCJhcHByb3ZlcldvcmtGbG93TGlzdFwiXHJcbiAgICBbYWxsQXBwcm92ZXJzXT1cImFsbEFwcHJvdmVyc1wiXHJcbiAgICAobGlzdENhbmNlbENsaWNrZWQpPVwibGlzdENhbmNlbENsaWNrZWQoJGV2ZW50KVwiXHJcbiAgICAoc2VsZWN0ZWRXb3JrZmxvd05leHQpPVwic2VsZWN0ZWRBcHByb3ZhbFdvcmtmbG93KCRldmVudClcIlxyXG4gICAgKHNhdmVBcHByb3ZhbFdvcmtmbG93KT1cImFwcHJvdmFsV29ya2Zsb3dBUElDYWxsKCRldmVudClcIlxyXG4gICAgW2VkaXRBcHByb3ZhbFdvcmtmbG93XT1cImVkaXRBcHByb3ZhbFdvcmtmbG93XCJcclxuICAgIFtjcmVhdGVBcHByb3ZhbENsaWNrXT1cImNyZWF0ZUFwcHJvdmFsQ2xpY2tcIlxyXG4gICAgKGNsb3NlQ3JlYXRlQ2xpY2tlZCk9XCJjbG9zZUNsaWNrZWRDcmVhdGVGb3JtKClcIlxyXG4gICAgW2VkaXRXb3JrZmxvd0xldmVsXT1cImVkaXRXb3JrZmxvd0xldmVsXCJcclxuICA+PC9hcHAtYXBwcm92YWwtd29ya2Zsb3c+XHJcbiAgPCEtLSA8YXBwLXNlbGVjdC1hcHByb3ZlcnM+PC9hcHAtc2VsZWN0LWFwcHJvdmVycz4gLS0+XHJcblxyXG4gIDxhcHAtcG9saWN5LWFjY2Vzc1xyXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3BvbGljeUFjY2VzcydcIlxyXG4gICAgW3BvbGljeUFjY2Vzc1R5cGVdPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc190eXBlXCJcclxuICAgIChjbG9zZSk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXHJcbiAgICBbb3JnVXNlcnNMaXN0XT1cInVzZXJzTGlzdFwiXHJcbiAgICBbdXNlcnNBY2Nlc3NMaXN0XT1cInVzZXJzQWNjZXNzTGlzdFwiXHJcbiAgICBbZ3JvdXBMaXN0XT1cIm92ZXJzZWVyR3JvdXBzTGlzdFwiXHJcbiAgICBbZ3JvdXBzQWNjZXNzTGlzdF09XCJncm91cHNBY2Nlc3NMaXN0XCJcclxuICAgIFtzZWxlY3RlZFVzZXJzXT1cInBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3Nfb3duZXJzXCJcclxuICAgIFtzZWxlY3RlZEdyb3Vwc109XCJwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwc1wiXHJcbiAgICBbZGlzYWJsZWRJZHNdPVwidXNlcnNBY2Nlc3NMaXN0SWRzXCJcclxuICAgIFtkaXNhYmxlZEdyb3VwSWRzXT1cImdyb3Vwc0FjY2Vzc0xpc3RJZHNcIlxyXG4gICAgW2Z1dHVyZVVzZXJzV2lsbFNlbGVjdF09XCJwb2xpY3lGb3JtPy5hdmFpbGFibGVPblBvcnRhbFwiXHJcbiAgICAoc2F2ZUNoZWNrUG9pbnQpPVwic2F2ZVNlbGVjdGVkTGlzdCgncG9saWN5QWNjZXNzJywgJGV2ZW50KVwiXHJcbiAgICAoc2V0UG9saWN5QWNjZXNzVHlwZSk9XCJwb2xpY3lGb3JtLnBvbGljeV9hY2Nlc3NfdHlwZSA9ICRldmVudFwiXHJcbiAgPlxyXG4gIDwvYXBwLXBvbGljeS1hY2Nlc3M+XHJcbjwvbmctY29udGFpbmVyPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0NyZWF0ZURvY3VtZW50c1wiPlxyXG4gIDwhLS0gPGFwcC1jcmVhdGUtZG9jdW1lbnRzICpuZ0lmPVwic2hvd0NyZWF0ZURvY3VtZW50c1wiXHJcbiAgIFtvcmdhbml6YXRpb25faWRdPVwib3JnYW5pemF0aW9uX2lkXCJcclxuICAgW21lbWJlcl9vYmpfaWRdPVwibWVtYmVyX29ial9pZFwiXHJcbiAgIFt1c2VySW5mb109XCJ1c2VySW5mb1wiXHJcbiAgIFtwb2xpY3lJZF09XCJwb2xpY3lJZFwiXHJcbiAgIFtwb2xpY3lOYW1lXT1cInBvbGljeUZvcm0ucG9saWN5TmFtZVwiXHJcbiAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJkaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKVwiXHJcbiAgIChlZGl0UG9saWN5KT1cImVkaXRQb2xpY3lGcm9tRG9jdW1lbnRzKClcIlxyXG4gICA+PC9hcHAtY3JlYXRlLWRvY3VtZW50cz4gLS0+XHJcbiAgPGxpYi1kb2N1bWVudC1zZWN0aW9uXHJcbiAgICAqbmdJZj1cInNob3dDcmVhdGVEb2N1bWVudHNcIlxyXG4gICAgW29yZ2FuaXphdGlvbl9pZF09XCJvcmdhbml6YXRpb25faWRcIlxyXG4gICAgW21lbWJlcl9vYmpfaWRdPVwibWVtYmVyX29ial9pZFwiXHJcbiAgICBbdXNlckluZm9dPVwidXNlckluZm9cIlxyXG4gICAgW3BvbGljeUlkXT1cInBvbGljeUlkXCJcclxuICAgIFtwb2xpY3lOYW1lXT1cInBvbGljeUZvcm0ucG9saWN5TmFtZVwiXHJcbiAgICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSlcIlxyXG4gICAgKGVkaXRQb2xpY3kpPVwiZWRpdFBvbGljeUZyb21Eb2N1bWVudHMoKVwiXHJcbiAgPjwvbGliLWRvY3VtZW50LXNlY3Rpb24+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPGFwcC1hc3Nlc3NtZW50LWxpc3RcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnaXNBc3Nlc3NtZW50J1wiXHJcbiAgW3Byb2dyYW1faWRzXT1cIicnXCJcclxuICBbaXNFZGl0XT1cInBvbGljeUZvcm0/LmFzc2Vzc21lbnQ/Lmxlbmd0aFwiXHJcbiAgKGNhbmNlbEFzc2Vzc21lbnQpPVwic2F2ZVNlbGVjdGVkTGlzdCgnaXNBc3Nlc3NtZW50JywgZmFsc2UpXCJcclxuICBbc2VsZWN0ZWRBc3Nlc3NtZW50XT1cInBvbGljeUZvcm0/LmFzc2Vzc21lbnRbMF1cIlxyXG4gIFttb2RlXT1cIidwb2xpY3knXCJcclxuICAob25Bc3Nlc3NtZW50U2VsZWN0KT1cIlxyXG4gICAgb25Bc3Nlc3NtZW50U2VsZWN0KCRldmVudCk7IHNhdmVTZWxlY3RlZExpc3QoJ2lzQXNzZXNzbWVudCcsIGZhbHNlKVxyXG4gIFwiXHJcbj48L2FwcC1hc3Nlc3NtZW50LWxpc3Q+XHJcblxyXG48YXBwLW93bmVyLWxpc3RcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXBwcm92ZXJzJyAmJiBmYWxzZVwiXHJcbiAgW2xpc3RIZWFkaW5nXT1cIidTZWxlY3QgQXBwcm92ZXJzJ1wiXHJcbiAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxyXG4gIFtwbHVyYWxUZXh0XT1cIidVc2VycyBzZWxlY3RlZCdcIlxyXG4gIFt1c2Vyc0xpc3RdPVwiYWxsQXBwcm92ZXJzXCJcclxuICBbc2hvd1dvcmtmbG93XT1cInRydWVcIlxyXG4gIFtzZWxlY3RlZFVzZXJzXT1cIlxyXG4gICAgYWRkTW9yZUxldmVsc1xyXG4gICAgICA/IFtdXHJcbiAgICAgIDogcG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1thcHByb3ZlcnNMaXN0SW5kZXhdLmFwcHJvdmVyc1xyXG4gIFwiXHJcbiAgW3VzZXJJZEtleV09XCInbWVtYmVyX2lkJ1wiXHJcbiAgW2l0ZW1FbWFpbEtleV09XCInbWVtYmVyX2VtYWlsJ1wiXHJcbiAgW2l0ZW1OYW1lS2V5XT1cIidtZW1iZXJfbmFtZSdcIlxyXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2FwcHJvdmVycycsICRldmVudClcIlxyXG4gIChjbG9zZVVzZXJzTGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXHJcbiAgW21vZGVdPVwibW9kZVwiXHJcbiAgW3Jldmlld2VyV29ya2Zsb3dUeXBlXT1cIndvcmtmbG93VHlwZVwiXHJcbiAgKHJldmlld2VyV29ya2Zsb3dUeXBlQ2hhbmdlKT1cInJldmlld2VyVHlwZUNoYW5nZSgkZXZlbnQpXCJcclxuICBbd29ya2Zsb3dMaXN0XT1cIndvcmtmbG93TGlzdFwiXHJcbiAgW3dvcmtmbG93VGV4dF09XCInQXBwcm92YWwgV29ya2Zsb3cnXCJcclxuPlxyXG48L2FwcC1vd25lci1saXN0PlxyXG5cclxuPGFwcC1vd25lci1saXN0XHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ293bmVycydcIlxyXG4gIFtsaXN0SGVhZGluZ109XCInU2VsZWN0IE93bmVyKHMpJ1wiXHJcbiAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxyXG4gIFtwbHVyYWxUZXh0XT1cIidVc2VycyBzZWxlY3RlZCdcIlxyXG4gIFt1c2Vyc0xpc3RdPVwiYWxsQXBwcm92ZXJzXCJcclxuICBbc2hvd1dvcmtmbG93XT1cImZhbHNlXCJcclxuICBbdXNlcklkS2V5XT1cIidtZW1iZXJfaWQnXCJcclxuICBbaXRlbUVtYWlsS2V5XT1cIidtZW1iZXJfZW1haWwnXCJcclxuICBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiXHJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnb3duZXJzJywgJGV2ZW50KVwiXHJcbiAgKGNsb3NlVXNlcnNMaXN0KT1cImRpc2FibGVTZWxlY3RvcigpXCJcclxuICBbbW9kZV09XCJtb2RlXCJcclxuICBbc2VsZWN0ZWRVc2Vyc109XCJwb2xpY3lGb3JtPy5wb2xpY3lfb3duZXJzID8/IFtdXCJcclxuPlxyXG48L2FwcC1vd25lci1saXN0PlxyXG4iXX0=
|
|
1956
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXBvbGljeS93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcG9saWN5L3dvcmtmbG93LXBvbGljeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBVzNDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUtuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBS3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU92RSxNQUFNLE9BQU8sdUJBQXVCO0lBdUtsQyxZQUNVLGFBQTRCLEVBQzVCLFFBQXlCLEVBQ3pCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLHFCQUE0QyxFQUM1QyxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsZ0JBQWtDLEVBQzFDLGdCQUFrQyxFQUMxQixTQUE0QixFQUM1QixjQUE4QixFQUM5QixhQUE0QixFQUM1Qix1QkFBZ0QsRUFDaEQseUJBQW9ELEVBQ3BELHVCQUFnRDtRQWRoRCxrQkFBYSxHQUFiLGFBQWEsQ0FB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QUFNO2dCQUNFLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ2tCLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDYixjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNFLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFdUIsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBRTNCLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBaXVFNUQsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAsIHVuaXFCeSB9IGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICduZzItZGF0ZS1waWNrZXInO1xyXG5pbXBvcnQgeyBFZGl0b3JDb25maWcgfSBmcm9tICd2Y29tcGx5LWVkaXRvcic7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkFsZXJ0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maXJtYXRpb24tYWxlcnQnO1xyXG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9saWN5Rm9ybSB9IGZyb20gJy4uL3dvcmtmbG93LWludGVyZmFjZXMvY3JlYXRlLXBvbGljeS1mb3JtJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb2xpY3lTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvcG9saWN5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9yZXNwb25zaWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVWlLaXRTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvdWkta2l0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQbGF0Zm9ybUxvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1hdEFuZEV2aWRlbmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9mb3JtYXQtYW5kLWV2aWRlbmNlL2Zvcm1hdC1hbmQtZXZpZGVuY2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdEFwaVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL2xpbmstcHJvZ3JhbS9yZXN0YXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBERUZBVUxUXzI0SFIsIERFRkFVTFRfVElNRSB9IGZyb20gJy4uL2NvbnN0YW50cy90aW1lLmNvbnN0YW50cyc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvblVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvb3JnYW5pemF0aW9uLXVzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9jb21tb24td29ya2Zsb3ctc2VydmljZXMvb3JnYW5pemF0aW9uLWNvbW1vbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcGxpYW5jZUNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9jb21tb24td29ya2Zsb3ctc2VydmljZXMvY29tcGxpYW5jZS1jb21tb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENPTlNUQU5UUyB9IGZyb20gJy4uL2xpbmstcmVsYXRlZC1wb2xpY2llcy9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBMSU5LUyB9IGZyb20gJy4uL3dvcmtmbG93L3NoYXJlZC9jb25zdGFudHMvY2RuLWxpbmsuY29uc3RhbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtd29ya2Zsb3ctcG9saWN5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dQb2xpY3lDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIENPTlNUQU5UUzogYW55ID0gQ09OU1RBTlRTXHJcbiAgTElOS1M6IGFueSA9IExJTktTXHJcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgbW9kZSA9ICdDUkVBVEUnO1xyXG4gIEBJbnB1dCgpIHBvbGljeUlkID0gJyc7XHJcbiAgQElucHV0KCkgZmVhdHVyZTogYW55O1xyXG4gIEBPdXRwdXQoKSBzaG93Q29uZmlybWF0aW9uQWxlcnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpIGRhdGVQaWNrZXIhOiBEYXRlUGlja2VyQ29tcG9uZW50O1xyXG4gIEBPdXRwdXQoKSBwb3B1bGF0ZU9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNoaWZ0VG9FZGl0TW9kZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBjb252ZXJ0RmlsZURhdGE6IGFueSA9IHt9O1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkQ2F0ZWdvcnkgPSAnJztcclxuICBASW5wdXQoKSBpc1NlbmRGb3JBdHRlc3RhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAVmlld0NoaWxkKCdmb3JtYXRFdmlkZW5jZScpIGZvcm1hdEV2aWRlbmNlITogRm9ybWF0QW5kRXZpZGVuY2VDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGRhdGVQaWNrZXJQb3BVcCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGRlc2NyaXB0aW9uOiBFZGl0b3JDb25maWcgPSB7XHJcbiAgICBtb2RlOiAncHJpbWUnLFxyXG4gICAgY29sb3JQYWxldHRlOiB0cnVlLFxyXG4gICAgbGluazogdHJ1ZSxcclxuICAgIHBsYWNlaG9sZGVyOiAnQWRkIGEgZGVzY3JpcHRpb24gZm9yIHRoaXMgcG9saWN5LicsXHJcbiAgfTtcclxuICB3b3JrZmxvd1R5cGUgPSAnU0VRVUVOVElBTCc7XHJcbiAgc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcclxuICBuYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbiA9IGZhbHNlO1xyXG5cclxuICBhY3RpdmVTZWxlY3RvciA9ICcnO1xyXG4gIHJjTGlzdDogYW55ID0gW107XHJcbiAgdXNlcnNMaXN0OiBhbnkgPSBbXTtcclxuICBhbGxBcHByb3ZlcnM6IGFueSA9IFtdO1xyXG4gIGFsbFJldmlld2VyczogYW55ID0gW107XHJcbiAgYXNzaWduZWVzTGlzdDogYW55ID0gW107XHJcbiAgb3duZXJsaXN0OiBhbnkgPSBbXTtcclxuICByZXZpZXdlcnNMaXN0OiBhbnkgPSBbXTtcclxuICBvdmVyc2VlcnNMaXN0OiBhbnkgPSBbXTtcclxuICByY0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICB1c2Vyc0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBjYXRlZ29yeUxpc3Q6IGFueSA9IFtdO1xyXG4gIGdyb3Vwc0xpc3Q6IGFueVtdID0gW107XHJcbiAgd29ya0Zsb3dMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGFwcHJvdmVyV29ya0Zsb3dMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gIGNjRW1haWxPYmpJZHM6IGFueVtdID0gW107XHJcbiAgY2NGYWlsR3JvdXBPYmpJZHM6IGFueVtdID0gW107XHJcbiAgdXNlcnNBY2Nlc3NMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHVzZXJzQWNjZXNzTGlzdElkczogYW55W10gPSBbXTtcclxuICBncm91cHNBY2Nlc3NMaXN0SWRzOiBhbnlbXSA9IFtdO1xyXG4gIGdyb3Vwc0FjY2Vzc0xpc3Q6IGFueVtdID0gW107XHJcbiAgbGlzdE9mUG9saWNpZXM6IGFueVtdID0gW107XHJcblxyXG4gIGxvYWRlciA9IGZhbHNlO1xyXG4gIGNhdGVnb3JpZXNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgZ3JvdXBzTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIGNhdGVnb3J5Q29uZmlnID0ge1xyXG4gICAgcGFuZWxUaXRsZTogJ1NlbGVjdCBQb2xpY3kgQ2F0ZWdvcnknLFxyXG4gICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdQb2xpY3kgQ2F0ZWdvcnkgU2VsZWN0ZWQnLFxyXG4gICAgZmxvYXRpbmdUZXh0UGx1cmFsOiAnUG9saWN5IENhdGVnb3JpZXMgU2VsZWN0ZWQnLFxyXG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggUG9saWN5IENhdGVnb3J5JyxcclxuICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICBzZWxlY3RBbGxFbmFibGVkOiB0cnVlLFxyXG4gICAgd29ya2Zsb3c6ICdwb2xpY3knLFxyXG4gIH07XHJcbiAgYXBwcm92YWxXb3JrZmxvd0NvbmZpZyA9IHtcclxuICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgdXNlcihzKScsXHJcbiAgICBmbG9hdGluZ1RleHRTaW5ndWxhcjogJ1VzZXIgc2VsZWN0ZWQnLFxyXG4gICAgZmxvYXRpbmdUZXh0UGx1cmFsOiAnVXNlcnMgc2VsZWN0ZWQnLFxyXG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggVXNlcicsXHJcbiAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgc2VsZWN0QWxsRW5hYmxlZDogdHJ1ZSxcclxuICB9O1xyXG5cclxuICBhZGRNb3JlTGV2ZWxzID0gZmFsc2U7XHJcbiAgYXBwcm92ZXJzTGlzdEluZGV4ID0gMDtcclxuICB3b3JrZmxvd0xpc3QgPSBbJ1NFUVVFTlRJQUwnLCAnUk9VTkQtUk9CSU4nLCAnQU5ZIE9ORSddO1xyXG4gIGRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XHJcbiAgZGF0ZUNvbmZpZyA9IHtcclxuICAgIGRpc2FibGVLZXlwcmVzczogdHJ1ZSxcclxuICAgIGZvcm1hdDogJ0REIE1NIFlZWVknLFxyXG4gICAgdW5TZWxlY3RPbkNsaWNrOiB0cnVlLFxyXG4gICAgb3Blbk9uQ2xpY2s6IGZhbHNlLFxyXG4gICAgb3Blbk9uRm9jdXM6IGZhbHNlLFxyXG4gIH07XHJcbiAgZnJlcXVlbmN5RGV0YWlscyA9IHtcclxuICAgIHBhdHRlcm46ICcnLFxyXG4gICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcclxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxyXG4gICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXHJcbiAgICBzZWxlY3RlZFJlcG9ydDogMCxcclxuICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxyXG4gICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICB3aW5kb3c6IDAsXHJcbiAgICBmYWlsZWQ6IDAsXHJcbiAgICB0aW1lOiBERUZBVUxUX1RJTUUsXHJcbiAgICBmYWlsZWRUaW1lOiAnJyxcclxuICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXHJcbiAgfTtcclxuICByZXZpZXdlckZyZXF1ZW5jeURldGFpbHMgPSB7XHJcbiAgICBwYXR0ZXJuOiAnJyxcclxuICAgIG5vdGlmaWNhdGlvblBlbmRpbmc6IDAsXHJcbiAgICBkYXRlT2ZNb2RpZmllZDogMCxcclxuICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxyXG4gICAgc2VsZWN0ZWRSZXBvcnQ6IDAsXHJcbiAgICBsaWZlY3ljbGU6ICcwMDAwLTAwLTAwfn4wJyxcclxuICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgc3RhcnRPblRoZURheTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgd2luZG93OiAwLFxyXG4gICAgZmFpbGVkOiAwLFxyXG4gICAgdGltZTogREVGQVVMVF9USU1FLFxyXG4gICAgZmFpbGVkVGltZTogJycsXHJcbiAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAzLFxyXG4gIH07XHJcbiAgZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAnV2hhdCBpcyB0aGUgYXR0ZXN0YXRpb24gc2NoZWR1bGUgZm9yIHRoaXMgcG9saWN5Pyc7XHJcbiAgcmV2aWV3ZXJGcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdXaGVuIGRvZXMgdGhpcyBwb2xpY3kgbmVlZCB0byBiZSByZXZpZXdlZD8nO1xyXG5cclxuICBzaWRlU2VsZWN0b3JFbGVtZW50cyA9IFtcclxuICAgICdhcHByb3ZhbFdvcmtmbG93JyxcclxuICAgICdhc3NpZ25lZXMnLFxyXG4gICAgJ2FwcHJvdmVycycsXHJcbiAgICAncmV2aWV3ZXInLFxyXG4gICAgJ2NjRW1haWwnLFxyXG4gICAgJ2NjRmFpbCcsXHJcbiAgICAncmMnLFxyXG4gICAgJ2NhdGVnb3J5JyxcclxuICAgICdmcmVxdWVuY3knLFxyXG4gICAgJ3Jldmlld2VyRnJlcXVlbmN5JyxcclxuICAgICdjaGVja3BvaW50cycsXHJcbiAgICAnbGlua1Byb2dyYW0nLFxyXG4gICAgJ2lzQXNzZXNzbWVudCcsXHJcbiAgICAnaXNMaW5rZWRQb2xpY2VzJyxcclxuICAgICdvd25lcnMnLFxyXG4gICAgJ3BvbGljeUFjY2VzcycsXHJcbiAgXTtcclxuICByaXNrQ2xhc3NpZmljYXRpb24gPSBbXHJcbiAgICB7IG5hbWU6ICdMT1cnLCB2YWx1ZTogMSwgY2xhc3M6ICdsb3cnIH0sXHJcbiAgICB7IG5hbWU6ICdMT1ctTWVkaXVtJywgdmFsdWU6IDIsIGNsYXNzOiAnbG93LW1lZCcgfSxcclxuICAgIHsgbmFtZTogJ01lZGl1bS1IaWdoJywgdmFsdWU6IDMsIGNsYXNzOiAnbWVkLWhpZ2gnIH0sXHJcbiAgICB7IG5hbWU6ICdIaWdoJywgdmFsdWU6IDQsIGNsYXNzOiAnaGlnaCcgfSxcclxuICBdO1xyXG4gIHNob3dSaXNrQ2xhc3NpZmljYXRpb24gPSB0cnVlO1xyXG4gIHNob3dDcmVhdGVEb2N1bWVudHMgPSBmYWxzZTtcclxuICBvcmdhbml6YXRpb25faWQgPSAnJztcclxuICBtZW1iZXJfb2JqX2lkID0gJyc7XHJcbiAgbWVtYmVySWQgPSAwO1xyXG4gIHVzZXJJbmZvITogYW55O1xyXG5cclxuICBwb2xpY3lBcHByb3ZhbEZsYWcgPSAwO1xyXG4gIGJhc2VVUkwgPSAnJztcclxuICBncm91cEVuYWJsZWQ6IGFueSA9IHRydWU7XHJcbiAgb3ZlcnNlZXJHcm91cHNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGVuYWJsZUFwcHJvdmFsV29ya2Zsb3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1ZlcnNpb25WYWxpZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgc2VsZWN0ZWRMaW5rUHJvZ3JhbTogYW55ID0ge307XHJcbiAgdmVyc2lvbkVycm9yTWVzc2FnZTogc3RyaW5nID1cclxuICAgICdZb3UgaGF2ZSBlbnRlcmVkIGFuIGluY29ycmVjdCBmb3JtYXQuIFRoZSB2ZXJzaW9uIGZpZWxkIGNhbiBlaXRoZXIgaW5jbHVkZSBudW1iZXJzLCBhbHBoYWJldHMsIGh5cGhlbiBvciBkb3RzLic7XHJcbiAgc2VsZWN0ZWRXb3JrZmxvdzogYW55W10gPSBbXTtcclxuICBlZGl0QXBwcm92YWxXb3JrZmxvdyE6IGFueTtcclxuICBhcHByb3ZhbFdvcmtmbG93SWRzOiBhbnlbXSA9IFtdO1xyXG4gIGRlZmF1bHRFZGl0QXBwcm92ZXJzOiBhbnkgPSB7fTtcclxuICBjcmVhdGVBcHByb3ZhbENsaWNrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZWRpdFdvcmtmbG93TGV2ZWwgPSB7fTtcclxuICBub1dvcmtmbG93U2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBvbGljeVNlcnZpY2U6IFBvbGljeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVpS2l0U2VydmljZTogVWlLaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc3BvbnNpYmlsaXR5U2VydmljZTogUmVzcG9uc2liaWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlLFxyXG4gICAgcGxhdGZvcm1Mb2NhdGlvbjogUGxhdGZvcm1Mb2NhdGlvbixcclxuICAgIHByaXZhdGUgY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcmVzdEFwaVNlcnZpY2U6IFJlc3RBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25Vc2VyU2VydmljZTogT3JnYW5pemF0aW9uVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2U6IE9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbXBsaWFuY2VDb21tb25TZXJ2aWNlOiBDb21wbGlhbmNlQ29tbW9uU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5iYXNlVVJMID0gbG9jYXRpb24/Lm9yaWdpbjtcclxuICAgIGlmICh0aGlzLmJhc2VVUkwgPT0gJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMCcpIHtcclxuICAgICAgdGhpcy5iYXNlVVJMID0gJ2h0dHBzOi8vZGV2LnYtY29tcGx5LmNvbSc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHBvbGljeUZvcm06IFBvbGljeUZvcm0gPSB7XHJcbiAgICBwb2xpY3lOYW1lOiAnJyxcclxuICAgIHBvbGljeU5vdGVzOiAnJyxcclxuICAgIHNlbGVjdGVkQ2F0ZWdvcmllczogW10sXHJcbiAgICBzZWxlY3RlZEFwcHJvdmVyczogW10sXHJcbiAgICBzZWxlY3RlZEFzc2lnbmVlczogW10sIC8vZG91YnQgaW4gbmFtZVxyXG4gICAgc2VsZWN0ZWRHcm91cEFzc2lnbmVlOiBbXSxcclxuICAgIHNlbGVjdGVkUmV2aWV3ZXJzOiBbXSxcclxuXHJcbiAgICBzZWxlY3RlZFJDczogW10sXHJcbiAgICBDQ0ZhaWxFbWFpbDogW10sXHJcbiAgICBDQ0ZhaWxFbWFpbEdyb3VwOiBbXSxcclxuICAgIENDRW1haWw6IFtdLFxyXG4gICAgQ0NHcm91cEVtYWlsOiBbXSxcclxuICAgIGF2YWlsYWJsZU9uUG9ydGFsOiBmYWxzZSxcclxuICAgIGFjY2VwdFN1Z2dlc3Rpb25zOiBmYWxzZSxcclxuICAgIHJlcXVpcmVzU2lnbmF0dXJlRm9yQXR0ZXN0YXRpb246IGZhbHNlLFxyXG4gICAgcmlza1JhdGluZzogMSxcclxuICAgIGFzc29jaWF0ZWREb2N1bWVudHM6IHtcclxuICAgICAgZm9ybWF0RmlsZXM6IFtdLFxyXG4gICAgfSxcclxuICAgIHBvbGljeUR1ZURhdGU6IG1vbWVudCgpLFxyXG4gICAgY3VzdG9tVGFnczogW10sXHJcbiAgICBjaGVja3BvaW50RGV0YWlsczogW10sXHJcbiAgICBMaW5rZWRQb2xpY2llczogW10sXHJcbiAgICB0b3RhbFF1ZXN0aW9uOiAwLFxyXG4gICAgcGFzc2luZ01hcmtzOiAwLFxyXG4gICAgZG9jdW1lbnRzQW5kTGlua3M6IHtcclxuICAgICAgZm9ybWF0RmlsZXM6IFtdLFxyXG4gICAgICBmb3JtYXRMaW5rczogW10sXHJcbiAgICB9LFxyXG4gICAgYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzOiBmYWxzZSxcclxuICAgIGFkZFJldmlld2VyczogZmFsc2UsXHJcbiAgICBhZGRDaGVja3BvaW50czogZmFsc2UsXHJcbiAgICBhZGRPdmVyc2VlcnM6IGZhbHNlLFxyXG4gICAgYWRkQXNzb2NpYXRlZERvY3VtZW50czogZmFsc2UsXHJcbiAgICBhZGRWZXJzaW9uOiBmYWxzZSxcclxuICAgIGFkZExpbmtBc3Nlc3NtZW50OiBmYWxzZSxcclxuICAgIGFkZExpbmtQcm9ncmFtOiBmYWxzZSxcclxuICAgIGFkZExpbmtQb2xpY2llczogZmFsc2UsXHJcbiAgICBpc1BvcnRhbERpc3BsYXlFbmFibGVkOiBmYWxzZSxcclxuXHJcbiAgICBmYWlsZWRfdGltZTogJycsXHJcbiAgICBmcmVxdWVuY3lfZGV0YWlsczogJycsXHJcbiAgICBmcmVxdWVuY3lfdGV4dDogJycsXHJcbiAgICBtYXJrX2ZhaWxlZF9hZnRlcjogMCxcclxuICAgIHJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZTogMCxcclxuXHJcbiAgICByZXZpZXdGYWlsZWRBZnRlcjogMCxcclxuICAgIHJldmlld0ZhaWxlZFRpbWU6ICcnLFxyXG4gICAgcmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzOiAnJyxcclxuICAgIHJldmlld19mcmVxdWVuY3lfdHlwZTogJycsXHJcbiAgICByZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlOiAwLFxyXG4gICAgcmV2aWV3OiBmYWxzZSxcclxuICAgIGxpbmtQcm9ncmFtOiB7fSxcclxuICAgIHByb2dyYW1TZWxlY3RlZFZhbHVlczoge30sXHJcbiAgICBhc3NpZ25lZV9zdGFydF9kYXRlOiAnJywgLy9UaHUgRmViIDIyIDIwMjRcclxuICAgIHJldmlld2VyX3N0YXJ0X2RhdGU6ICcnLCAvL1RodSBGZWIgMjIgMjAyNFxyXG4gICAgcG9saWN5X3ZlcnNpb246ICcnLCAvLyBpdCB3aWxsIGFjY2VwdCBtYXRjaGVzIGFscGhhYmV0cywgaHlwaGVucyAoLSksIGRvdHMgKC4pLCBhbmQgbnVtZXJpYyB2YWx1ZXMgb25seSBhbmQgc2hvdWxkIGJlIHNtYWxsZXIgb3IgZXF1YWwgdG8gNiBjaGFyYWN0ZXJzXHJcbiAgICBhc3Nlc3NtZW50OiBbXSxcclxuICAgIHBvbGljeV9vd25lcnM6IFtdLFxyXG4gICAgcG9saWN5X2dyb3VwX293bmVyczogW10sXHJcbiAgICBidXNpbmVzc0N5Y2xlOiB7fSxcclxuICAgIHBvbGljeV9pZDogMCxcclxuICAgIHBvbGljeV9hY2Nlc3NfdHlwZTogMCxcclxuICAgIHBvbGljeV9hY2Nlc3Nfb3duZXJzOiBbXSxcclxuICAgIHBvbGljeV9hY2Nlc3NfZ3JvdXBzOiBbXSxcclxuICB9O1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5pdGlhdGVBUEkoKTtcclxuICAgIHRoaXMub3ZlcnNlZXJHcm91cExpc3QoKTtcclxuICB9XHJcblxyXG4gIF9pbml0aWF0ZUFQSSgpIHtcclxuICAgIHRoaXMuZ3JvdXBFbmFibGVkID1cclxuICAgICAgdGhpcy5mZWF0dXJlPy5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wb2xpY3lfZ3JvdXBzJykgfHwgdHJ1ZTtcclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICB0aGlzLl9pbml0aWF0ZUVkaXRBUEkoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0VXNlcnNMaXN0KCk7XHJcbiAgICB0aGlzLmNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCk7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRoaXMubW9kZSA9PT0gJ0VESVQnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5nZXRPcmdEZXRhaWxzKCk7XHJcbiAgICB0aGlzLm1lbWJlcl9vYmpfaWQgPSB0aGlzLmF1dGhTZXJ2aWNlPy5nZXRVc2VyRGV0YWlscygpPy5faWQ7XHJcbiAgICB0aGlzLnVzZXJJbmZvID0gdGhpcy5hdXRoU2VydmljZT8uZ2V0VXNlckRldGFpbHMoKT8udXNlcjtcclxuICAgIHRoaXMubWVtYmVySWQgPSB0aGlzLmF1dGhTZXJ2aWNlPy5nZXRNZW1iZXJJZCgpO1xyXG4gICAgdGhpcy5jaGFuZ2VSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmJ1c2luZXNzQ3ljbGUgPSB0aGlzLnJlc3RBcGlTZXJ2aWNlPy5nZXRCdXNpbmVzc0N5Y2xlKCk7XHJcbiAgfVxyXG5cclxuICBfaW5pdGlhdGVFZGl0QVBJKCkge1xyXG4gICAgdGhpcy5nZXRSQ0xpc3QoKTtcclxuICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcclxuICAgIHRoaXMub3ZlcnNlZXJHcm91cExpc3QoKTtcclxuICAgIHRoaXMuZ2V0R3JvdXBzTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3JnRGV0YWlscygpIHtcclxuICAgIHRoaXMub3JnYW5pemF0aW9uQ29tbW9uU2VydmljZT8uZ2V0T3JnRGV0YWlsc0luZm8oKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKCFyZXM/LmVuYWJsZV9yaXNrY2xhc3MpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1Jpc2tDbGFzc2lmaWNhdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzPy5faWQpIHtcclxuICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uX2lkID0gcmVzPy5faWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogRXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldExpbmtlZFBvbGljaWVzKHBvbGljeUlkOiBudW1iZXIpIHtcclxuICAgIHRoaXMucG9saWN5U2VydmljZS5MaW5rZWRQb2xpY2llc0xpc3QocG9saWN5SWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RPZlBvbGljaWVzID0gWy4uLm5ldyBTZXQocmVzcG9uc2U/LmRhdGEpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uTGlua2VkUG9saWNpZXMgPSB0aGlzLmxpc3RPZlBvbGljaWVzPy5maWx0ZXIoaXRlbSA9PiBpdGVtPy5jb250cmFjdF9uYW1lKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgIH0sXHJcbiAgICB9KTtcclxufVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheXMgdGhlIGxpc3RpbmcgcGFnZXMgdGhlIGxlZnQgc2lkZSBvZiBwb2xpY3kgZm9ybSB0byBzZXQgYW5kIGVkaXQgdGhlIGRyb3Bkb3duIGZpZWxkcyB2YWx1ZXNcclxuICAgKiBAcGFyYW0gdHlwZSBob2xkcyBuYW1lIG9mIHBhcnRpY3VsYXIgbGlzdCBpcyB0byBiZSBkaXNwbGF5ZWRcclxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgYm9vbGVhbiB2YWx1ZSB0byBkaXNwbGF5IHRoZSBsaXN0IG9yIG5vdFxyXG4gICAqIEBwYXJhbSB3b3JrZmxvd1R5cGUgaXQgc2V0cyB0aGUgYXBwcm92YWwgd29ya2Zsb3cgdHlwZSB3aGlsZSBlZGl0aW5nIHRoZSBhcHByb3ZhbCB3b3JrZmxvdy5cclxuICAgKi9cclxuICBhY3RpdmF0ZVNlbGVjdG9yKHR5cGU6IGFueSwgZXZlbnQ6IGJvb2xlYW4sIHdvcmtmbG93VHlwZT86IGFueSkge1xyXG4gICAgaWYgKHdvcmtmbG93VHlwZSkge1xyXG4gICAgICB0aGlzLndvcmtmbG93VHlwZSA9IHdvcmtmbG93VHlwZTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSBldmVudCA/IHR5cGUgOiAnJztcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdyYyc6XHJcbiAgICAgICAgdGhpcy5nZXRSQ0xpc3QoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2F0ZWdvcnknOlxyXG4gICAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2NFbWFpbCc6XHJcbiAgICAgIGNhc2UgJ2NjRmFpbCc6XHJcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XHJcbiAgICAgICAgdGhpcy5nZXRHcm91cHNMaXN0KCk7XHJcbiAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3VwTGlzdCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXModHlwZSkpIHtcclxuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2VzIHRoZSBsaXN0aW5nIHBhZ2VzXHJcbiAgICovXHJcbiAgZGlzYWJsZVNlbGVjdG9yKCkge1xyXG4gICAgdGhpcy5hZGRNb3JlTGV2ZWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gJyc7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIFJlc3BvbnNpYmlsaXR5IGNlbnRlcnMgbGlzdFxyXG4gICAqL1xyXG4gIGdldFJDTGlzdCgpIHtcclxuICAgIHRoaXMuY29tcGxpYW5jZUNvbW1vblNlcnZpY2U/LmdldFJjTGlzdEluZm8oKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5yY0xpc3QgPSByZXM7XHJcbiAgICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogRXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIG9yZ2FuaXphdGlvbiB1c2VycyBsaXN0XHJcbiAgICovXHJcbiAgZ2V0VXNlcnNMaXN0KCkge1xyXG4gICAgdGhpcy5vcmdhbml6YXRpb25Vc2VyU2VydmljZS5nZXRPcmdhbml6YXRpb25Vc2VycygpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XHJcbiAgICAgICAgICB0aGlzLnVzZXJzTGlzdCA9IHRoaXMudXBkYXRlTWVtYmVySWRLZXkocmVzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy51c2Vyc0xpc3QgPSByZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXNlcnNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLnVzZXJzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyByZXBsYWNlIG1lbWJlcl9pZCB2YWx1ZSB0byBteV9tZW1iZXJfaWRcclxuICB1cGRhdGVNZW1iZXJJZEtleShsaXN0OiBhbnkpIHtcclxuICAgIGxldCB1cGRhdGVkTGlzdCA9IGxpc3QubWFwKChlbGU6IGFueSkgPT4gKHtcclxuICAgICAgLi4uZWxlLFxyXG4gICAgICBtZW1iZXJfaWQ6IGVsZT8ubXlfbWVtYmVyX2lkLFxyXG4gICAgfSkpO1xyXG4gICAgcmV0dXJuIHVwZGF0ZWRMaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBQb2xpY3kgQ2F0ZWdvcmllcyBsaXN0XHJcbiAgICovXHJcbiAgZ2V0Q2F0ZWdvcmllc0xpc3QoKSB7XHJcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuZ2V0Q2F0ZWdvcmllc0xpc3QoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0ID0gcmVzO1xyXG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgb3JnYW5pemF0aW9uIHVzZXJzIGdyb3VwcyBsaXN0XHJcbiAgICovXHJcbiAgZ2V0R3JvdXBzTGlzdCgpIHtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmdldE9yZ2FuaXphdGlvblBvbGljeUdyb3VwcygpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHJlcy5kYXRhO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwczogYW55ID0gW107XHJcbiAgICAgICAgZGF0YT8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgICAgICAgIGdyb3VwTmFtZTogZWxlbWVudC5ncm91cF9uYW1lLFxyXG4gICAgICAgICAgICB1c2VySWRzOiBlbGVtZW50Lm1lbWJlcl9pZHMsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgZ3JvdXBzLnB1c2gob2JqKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmdyb3Vwc0xpc3QgPSBncm91cHM7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmdyb3Vwc0xpc3QgPSBkYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvL0dldCB0aGUgbGlzdCBvZiBvdmVyc2VlcnMgZ3JvdXAuXHJcbiAgb3ZlcnNlZXJHcm91cExpc3QoKSB7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZT8uZ2V0T3JnYW5pemF0aW9uT3ZlcnNlZXJzR3JvdXBzKCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCA9IHJlcz8uZGF0YTtcclxuICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBhcHByb3ZlcnMgd29ya2Zsb3cgZnJvbSB0aGUgc2VsZWN0ZWQgd29ya2Zsb3cgb24gQXBwcm92ZXJzIHdvcmtmbG93IGxpc3RcclxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgcHJlZGVmaW5lZCB3b3JrZmxvd1xyXG4gICAqL1xyXG4gIHNlbGVjdGVkV29ya2Zsb3dDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50ID09PSAtMSkge1xyXG4gICAgICAvLyB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSBbXTtcclxuICAgICAgLy8gdGhpcy5hZGRNb3JlTGV2ZWxzID0gdHJ1ZVxyXG4gICAgICAvLyB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGRhdGEgPSBjbG9uZURlZXAoZXZlbnQuYXBwcm92YWxfd29ya2Zsb3cpO1xyXG4gICAgICBjb25zdCBuZXdBcnJheSA9IGRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpdGVtLm5hbWUgPSBpdGVtLnR5cGU7XHJcbiAgICAgICAgY29uc3QgaWRzID0gaXRlbS5hcHByb3ZlcnMubWFwKChhcHByb3ZlcjogYW55KSA9PiBhcHByb3Zlci5tZW1iZXJfaWQpO1xyXG4gICAgICAgIGl0ZW0uYXBwcm92ZXJzID0gdGhpcy5zZXRMaXN0KHRoaXMuYWxsQXBwcm92ZXJzLCBpZHMsICdtZW1iZXJfaWQnKTtcclxuICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IG5ld0FycmF5LmZpbHRlcihcclxuICAgICAgICAobGV2ZWw6IGFueSkgPT4gbGV2ZWwuYXBwcm92ZXJzLmxlbmd0aCA+IDBcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgQXBwcm92ZXJzIHdvcmtmbG93IGxpc3QgYmFzZWQgb24gc2VsZWN0ZWQgcG9saWN5IGNhdGVnb3JpZXNcclxuICAgKiBAcGFyYW0gaWQgY29udGFpbnMgc2VsZWN0ZWQgY2F0ZWdvcmllcyBpZCdzXHJcbiAgICovXHJcbiAgZ2V0QXBwcm92ZXJXb3JrRmxvdyhpZDogYW55LCBkYXRhPzogYW55KSB7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuZ2V0V29ya2Zsb3dMaXN0KGlkKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXM/Lmxlbmd0aCA+PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLmFwcHJvdmVyV29ya0Zsb3dMaXN0ID0gcmVzOyAvLyBnZXR0aW5nIGFsbCBhcHByb3ZlciBzYXZlZCB3b3JrZmxvd3NcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvdyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5hcHByb3ZlcldvcmtGbG93TGlzdD8uZm9yRWFjaCgod29ya2Zsb3cpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXBwcm92YWxXb3JrZmxvd0lkcz8uaW5jbHVkZXMod29ya2Zsb3c/Ll9pZCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3c/LnB1c2god29ya2Zsb3cpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBjb25zdCBhcHByb3ZhbERhdGE6IGFueSA9IFtdO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkV29ya2Zsb3c/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLm5vV29ya2Zsb3dTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGxldCBhcHByb3ZhbFdvcmtmbG93OiBhbnlbXSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZVdvcmtmbG93KCk7XHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZGVmYXVsdEVkaXRBcHByb3ZlcnMpLmZvckVhY2goKGFwcHJvdmVyc0xldmVsKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0RWRpdEFwcHJvdmVyc1thcHByb3ZlcnNMZXZlbF0uYXBwcm92ZXJzID1cclxuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEVkaXRBcHByb3ZlcnNbYXBwcm92ZXJzTGV2ZWxdPy5hcHByb3ZlcnM/Lm1hcChcclxuICAgICAgICAgICAgICAgICAgKGFwcDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhcHAubWVtYmVyX25hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwcHJvdmVyVXNlciA9IHRoaXMudXNlcnNMaXN0Py5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAodXNlcjogYW55KSA9PiB1c2VyLm15X21lbWJlcl9pZCA9PSBhcHAubWVtYmVyX2lkXHJcbiAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcHJvdmVyVXNlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAubWVtYmVyX25hbWUgPSBhcHByb3ZlclVzZXI/Lm1lbWJlcl9uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGFwcHJvdmFsV29ya2Zsb3cucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBsZXZlbDE6IGFwcHJvdmVyc0xldmVsLFxyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5kZWZhdWx0RWRpdEFwcHJvdmVyc1thcHByb3ZlcnNMZXZlbF0sXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBhcHByb3ZhbERhdGEucHVzaCh7XHJcbiAgICAgICAgICAgICAgd29ya2Zsb3dfbmFtZTogJycsXHJcbiAgICAgICAgICAgICAgd29ya2Zsb3dfbW9kdWxlOiAnUE9MSUNZJyxcclxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjoge30sXHJcbiAgICAgICAgICAgICAgYXBwcm92YWxfd29ya2Zsb3c6IGFwcHJvdmFsV29ya2Zsb3csXHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnlfYXJyOiBbXSxcclxuICAgICAgICAgICAgICBjcmVhdG9yOiB7fSxcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFdvcmtmbG93Py5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0uYXBwcm92YWxfd29ya2Zsb3cgPSBhcHByb3ZhbERhdGE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IHRoaXMuc2VsZWN0ZWRXb3JrZmxvdztcclxuICAgICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChcclxuICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIFtkYXRhLlJldmlld2VyTWVtYmVySWRdLFxyXG4gICAgICAgICAgICAgIGRhdGFcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVXb3JrZmxvdygpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvdyA9IFtdO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gW107XHJcbiAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dJZHMgPSBbXTtcclxuICAgIHRoaXMuZWRpdEFwcHJvdmFsV29ya2Zsb3cgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIEFwcHJvdmVycyBhbmQgcmV2aWV3ZXJzIGxpc3QgYmFzZWQgb24gc2VsZWN0ZWQgcG9saWN5IGNhdGVnb3JpZXNcclxuICAgKiBAcGFyYW0gY2F0ZWdvcnlJZHMgY29udGFpbnMgc2VsZWN0ZWQgY2F0ZWdvcmllcyBpZCdzXHJcbiAgICovXHJcbiAgZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChcclxuICAgIGNhdGVnb3J5SWRzOiBhbnksXHJcbiAgICBhcHByb3Zlcklkcz86IGFueSxcclxuICAgIHJldmlld2VySWRzPzogYW55LFxyXG4gICAgcG9saWN5PzogYW55XHJcbiAgKSB7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLmFsbEFwcHJvdmVycyA9IFtdO1xyXG4gICAgdGhpcy5hbGxSZXZpZXdlcnMgPSBbXTtcclxuICAgIHRoaXMucG9saWN5U2VydmljZS5nZXRSZXZpZXdlcnMoY2F0ZWdvcnlJZHMpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcz8ubGVuZ3RoID49IDApIHtcclxuICAgICAgICAgIHJlcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hbGxBcHByb3ZlcnMgPSB1bmlxQnkoXHJcbiAgICAgICAgICAgICAgdGhpcy5hbGxBcHByb3ZlcnMuY29uY2F0KGVsZW1lbnQuYWxsX2FwcHJvdmVycyksXHJcbiAgICAgICAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5hbGxSZXZpZXdlcnMgPSB1bmlxQnkoXHJcbiAgICAgICAgICAgICAgZWxlbWVudC5hbGxfYXBwcm92ZXJzLmNvbmNhdChcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsUmV2aWV3ZXJzLFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5hbGxfYXV0aG9yc1xyXG4gICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ0NSRUFURScpIHRoaXMuc2V0T3duZXJzT25Mb2FkKCk7XHJcbiAgICAgICAgICAgIGlmIChwb2xpY3k/LnBvbGljeV9vd25lcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9vd25lcnMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEFwcHJvdmVycyxcclxuICAgICAgICAgICAgICAgIHBvbGljeT8ucG9saWN5X293bmVycyA/PyBbXSxcclxuICAgICAgICAgICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmdldFVzZXJzQWNjZXNzTGlzdEJ5Q2F0ZWdvcnkoZWxlbWVudCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGFwcHJvdmVySWRzPy5hcHByb3ZlcnMpIHtcclxuICAgICAgICAgIGxldCBvYmogPSBhcHByb3Zlcklkcz8uYXBwcm92ZXJzO1xyXG4gICAgICAgICAgbGV0IGFwcHJvdmVyTGV2ZWxzID0gW107XHJcbiAgICAgICAgICAvLyBmb3IgKHZhciBpdGVtIGluIG9iaikge1xyXG4gICAgICAgICAgLy8gICBjb25zdCBpZHMgPSBvYmpbaXRlbV0/LmFwcHJvdmVycz8ubWFwKFxyXG4gICAgICAgICAgLy8gICAgIChhcHByb3ZlcjogYW55KSA9PiBhcHByb3Zlci5tZW1iZXJfaWRcclxuICAgICAgICAgIC8vICAgKTtcclxuXHJcbiAgICAgICAgICAvLyAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgLy8gICAgIG5hbWU6IG9ialtpdGVtXT8udHlwZSxcclxuICAgICAgICAgIC8vICAgICBhcHByb3ZlcnM6IHRoaXMuc2V0TGlzdCh0aGlzLmFsbEFwcHJvdmVycywgaWRzLCAnbWVtYmVyX2lkJyksXHJcbiAgICAgICAgICAvLyAgIH07XHJcbiAgICAgICAgICAvLyAgIGlmIChkYXRhLm5hbWUgPT0gJ1JPVU5EUk9CSU4nKSB7XHJcbiAgICAgICAgICAvLyAgICAgZGF0YS5uYW1lID0gJ1JPVU5ELVJPQklOJztcclxuICAgICAgICAgIC8vICAgfSBlbHNlIGlmIChkYXRhLm5hbWUgPT0gJ0FOWU9ORScpIHtcclxuICAgICAgICAgIC8vICAgICBkYXRhLm5hbWUgPSAnQU5ZIE9ORSc7XHJcbiAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgIC8vICAgYXBwcm92ZXJMZXZlbHMucHVzaChkYXRhKTtcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIGlmIChhcHByb3Zlcklkcz8uYXBwcm92ZXJzKSB7XHJcbiAgICAgICAgICAgIGxldCBvYmogPSBhcHByb3Zlcklkcz8uYXBwcm92ZXJzO1xyXG4gICAgICAgICAgICBsZXQgYXBwcm92ZXJMZXZlbHMgPSBbXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaXRlbSBpbiBvYmopIHtcclxuICAgICAgICAgICAgICBjb25zdCBpZHMgPSBvYmpbaXRlbV0/LmFwcHJvdmVycz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGFwcHJvdmVyOiBhbnkpID0+IGFwcHJvdmVyLm1lbWJlcl9pZFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBvYmpbaXRlbV0/Lm5hbWUgPz8gb2JqW2l0ZW1dPy50eXBlLFxyXG4gICAgICAgICAgICAgICAgYXBwcm92ZXJzOiBvYmpbaXRlbV0/LmFwcHJvdmVycyxcclxuICAgICAgICAgICAgICAgIGFwcHJvdmFsX2RvbmU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgbGV2ZWwxOiBvYmpbaXRlbV0/LmxldmVsMSB8fCBpdGVtLFxyXG4gICAgICAgICAgICAgICAgYWxpYXNfbmFtZTogb2JqW2l0ZW1dPy5hbGlhc19uYW1lLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgLy9DcmVhdGluZyBpc3N1ZSBpbiBhcHByb3ZhbCB3b3JrZmxvdyBwYXlsb2FkICh0eXBlKSB3aGlsZSBlZGl0aW5nIHBvbGljeVxyXG4gICAgICAgICAgICAgIC8vIGlmIChkYXRhLnR5cGUgPT0gJ1JPVU5EUk9CSU4nKSB7XHJcbiAgICAgICAgICAgICAgLy8gICBkYXRhLnR5cGUgPSAnUk9VTkQtUk9CSU4nO1xyXG4gICAgICAgICAgICAgIC8vIH0gZWxzZSBpZiAoZGF0YS50eXBlID09ICdBTllPTkUnKSB7XHJcbiAgICAgICAgICAgICAgLy8gICBkYXRhLnR5cGUgPSAnQU5ZIE9ORSc7XHJcbiAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgIGFwcHJvdmVyTGV2ZWxzLnB1c2goZGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRXb3JrZmxvdz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdLmFwcHJvdmFsX3dvcmtmbG93ID0gYXBwcm92ZXJMZXZlbHM7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93ID0gW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBhcHByb3ZhbF93b3JrZmxvdzogYXBwcm92ZXJMZXZlbHMsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gdGhpcy5zZWxlY3RlZFdvcmtmbG93O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJldmlld2VySWRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2VycyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgICB0aGlzLmFsbFJldmlld2VycyxcclxuICAgICAgICAgICAgICByZXZpZXdlcklkcyxcclxuICAgICAgICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnI6IEVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKioqKioqKlxyXG4gICAqIEl0IGlzIHRvIHBvcHVsYXRlIG1vcmUgb3B0aW9ucyBlbGVtZW50cyB3aGlsZSBlZGl0aW5nIHRoZSBwb2xpY3kgZm9ybVxyXG4gICAqL1xyXG4gIHBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKSB7XHJcbiAgICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XHJcbiAgICBpZiAodGhpcy5wb2xpY3lGb3JtLmFkZFJlc3BvbnNpYmlsaXR5Q2VudGVycykge1xyXG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ1JFU1BPTlNJQklMSVRZX0NFTlRFUicpO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRSZXZpZXdlcnMpIHsgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdSRVZJRVdFUicpOyB9XHJcbiAgICAvLyBpZiAodGhpcy5wb2xpY3lGb3JtLmFkZENoZWNrcG9pbnRzKSB7IGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnQ0hFQ0tQT0lOVFMnKTsgfVxyXG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRPdmVyc2VlcnMpIHtcclxuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdPVkVSU0VFUicpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzKSB7XHJcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnUkVMQVRFRF9ET0NVTUVOVFMnKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0ucG9saWN5X3ZlcnNpb24pIHtcclxuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdWRVJTSU9OJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hc3Nlc3NtZW50Lmxlbmd0aCkge1xyXG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ0xJTktfQVNTRVNTTUVOVFMnKTtcclxuICAgICAgdGhpcy5nZXRBc3Nlc3NtZW50RGV0YWlscyh0aGlzLnBvbGljeUZvcm0uYXNzZXNzbWVudFswXSk7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucG9saWN5Rm9ybT8ucHJvZ3JhbVNlbGVjdGVkVmFsdWVzPy5wcm9ncmFtICYmXHJcbiAgICAgIHRoaXMucG9saWN5Rm9ybT8ucHJvZ3JhbVNlbGVjdGVkVmFsdWVzPy5wcm9ncmFtPy5jYXRlZ29yeV9pZFxyXG4gICAgKSB7XHJcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnTElOS19QUk9HUkFNX1JFU1BPTlNJQklMSVRJRVMnKTtcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZExpbmtQcm9ncmFtID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChhY3RpdmF0ZWRPcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSXQgaXMgdG8gYWRkIGFuZCByZW1vdmUgdGhlIGVsZW1lbnRzIGZyb20gTW9yZSBvcHRpb24gdG8gdGhlIHBvbGljeSBGb3JtXHJcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIGRldGFpbHMgcmVsYXRlZCB0byBjaGVja2VkIHZhbHVlLCBjb2RlIHBhcnRpY3VsYXIgZWxlbWVudHMgZnJvbSBNb3JlIG9wdGlvbnNcclxuICAgKi9cclxuICBhZGRNb3JlSW5mbyhldmVudDogYW55KSB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcclxuICAgICAgY2FzZSAnUkVTUE9OU0lCSUxJVFlfQ0VOVEVSJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzID0gZXZlbnQuY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8gY2FzZSAnUkVWSUVXRVInOlxyXG4gICAgICAvLyAgIHRoaXMucG9saWN5Rm9ybS5hZGRSZXZpZXdlcnMgPSBldmVudC5jaGVja2VkO1xyXG4gICAgICAvLyAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdDSEVDS1BPSU5UUyc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZENoZWNrcG9pbnRzID0gZXZlbnQuY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnT1ZFUlNFRVInOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRPdmVyc2VlcnMgPSBldmVudC5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdSRUxBVEVEX0RPQ1VNRU5UUyc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZEFzc29jaWF0ZWREb2N1bWVudHMgPSBldmVudC5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdWRVJTSU9OJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkVmVyc2lvbiA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0xJTktfUFJPR1JBTV9SRVNQT05TSUJJTElUSUVTJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkTGlua1Byb2dyYW0gPSBldmVudC5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdMSU5LX0FTU0VTU01FTlRTJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkTGlua0Fzc2Vzc21lbnQgPSBldmVudC5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdMSU5LX1JFTEFURURfUE9MSUNJRVMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRMaW5rUG9saWNpZXMgPSBldmVudC5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCBpcyB0byBlbnN1cmUgd2hldGhlciBhbGwgcmVxdWlyZWQgbGlzdHMgb24gUG9saWN5IGZyb20gaXMgbG9hZGVkIGZyb20gdGhlIGFwaSBjYWxsIG9yIG5vdFxyXG4gICAqL1xyXG4gIGNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCkge1xyXG4gICAgY29uc3QgZWRpdExvYWRlciA9XHJcbiAgICAgIHRoaXMubW9kZSA9PT0gJ0VESVQnXHJcbiAgICAgICAgPyB0aGlzLnJjTGlzdExvYWRlZCAmJlxyXG4gICAgICAgICAgdGhpcy5jYXRlZ29yaWVzTGlzdExvYWRlZCAmJlxyXG4gICAgICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkXHJcbiAgICAgICAgOiB0cnVlO1xyXG4gICAgaWYgKHRoaXMudXNlcnNMaXN0TG9hZGVkICYmIGVkaXRMb2FkZXIpIHtcclxuICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgaWYgKHRoaXMuY29udmVydEZpbGVEYXRhICYmIHRoaXMuY29udmVydEZpbGVEYXRhLmZpbGVOYW1lKSB7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWUgPSB0aGlzLmNvbnZlcnRGaWxlRGF0YS5maWxlTmFtZS5zdWJzdHJpbmcoXHJcbiAgICAgICAgICAwLFxyXG4gICAgICAgICAgdGhpcy5jb252ZXJ0RmlsZURhdGEuZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udmVydEZpbGVEYXRhLmNhdGVnb3J5SWQpIHtcclxuICAgICAgICAgIHRoaXMuc2F2ZVNlbGVjdGVkTGlzdCgnY2F0ZWdvcnknLCBbdGhpcy5jb252ZXJ0RmlsZURhdGEuY2F0ZWdvcnlJZF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZENhdGVnb3J5KSB7XHJcbiAgICAgICAgdGhpcy5zYXZlU2VsZWN0ZWRMaXN0KCdjYXRlZ29yeScsIFt0aGlzLnNlbGVjdGVkQ2F0ZWdvcnldKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLmVkaXRQb2xpY3koKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCk7XHJcbiAgICAgIH0sIDMwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmlnZ2VycyB0aGUgY29uZmlybWF0aW9uIHBvcHVwIHdoZW4gYXZhaWxhYmlsaXR5IG9uIFBvbGljeSBwb3J0YWwgdG9nZ2xlIGluIE9OXHJcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHRvZ2dsZSB2YWx1ZSB3aGljaCBpcyBhbHdheXMgdHJ1ZSBvciBmYWxzZVxyXG4gICAqL1xyXG4gIGF2YWlsYWJpbGl0eU9uUG9ydGFsKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICBjb25zdCBjb25maXJtYXRpb25EZXRhaWxzOiBDb25maXJtYXRpb25BbGVydCA9IHtcclxuICAgICAgICBpc1Zpc2libGU6IHRydWUsXHJcbiAgICAgICAgbWVzc2FnZTogYFRoZSBwb2xpY2llcyB0aGF0IHlvdSBpbnRlbmQgdG8gbWFrZSBhY2Nlc3NpYmxlIHRvIHRoZSBlbnRpcmUgb3JnYW5pemF0aW9uIGNhbiBiZSBhZGRlZCB0byB0aGUgcG9saWN5IHBvcnRhbC5cclxuICAgICAgICBJdCBpcyBsaWtlIGEgc2hhcmVkIGNhdGFsb2cgb2YgYWxsIGFjdGl2ZSAmIHVwZGF0ZWQgcG9saWNpZXMgdGhhdCBhbnkgbG9nZ2VkIGluIHVzZXIgY2FuIHJlYWQvIGRvd25sb2FkIGZvciByZWZlcmVuY2UuXHJcbiAgICAgICAgSGVuY2UsIGlmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIGl0IGlzIG5vdCBuZWNlc3NhcnkgZm9yIHlvdSB0byBzZXQgdXAgYW4gYXR0ZXN0YXRpb24gc2NoZWR1bGUgb3Igc2VsZWN0XHJcbiAgICAgICAgcmVhZGVycyB0byBhdHRlc3QgdGhlIHBvbGljaWVzLmAsXHJcbiAgICAgICAgYWN0aW9uOiAnUE9MSUNZX1BPUlRBTCcsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbkFsZXJ0LmVtaXQoY29uZmlybWF0aW9uRGV0YWlscyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWNlaXZlcyB0aGUgaW5wdXQgZnJvbSB0aGUgQ29uZmlybWF0aW9uIGRpYWxvZyBvZiBhdmFpbGFibGUgb24gUG9saWN5IHBvcnRhbFxyXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBvcHRpb24gZnJvbSB0aGUgY29uZmlybWF0aW9uIGRpYWxvZyB3aGljaCBpcyBhbHdheXMgZWl0aGVyICdZRVMnIG9yICdOTydcclxuICAgKi9cclxuICBjb25maXJtUG9saWN5UG9ydGFsKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hdmFpbGFibGVPblBvcnRhbCA9IGV2ZW50ID09ICdZRVMnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgaWYgKGV2ZW50ID09ICdOTycpIHtcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLmFjY2VwdFN1Z2dlc3Rpb25zID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBwb2xpY3lGb3JtIHdpdGggc2VsZWN0ZWQgZWxlbWVudHMgZnJvbSB0aGUgbGlzdGluZywgZnJlcXVlbmN5LCBmaWxlIHVwbG9hZCBjb21wb25lbnRzXHJcbiAgICogQHBhcmFtIHR5cGUgZGVmaW5lcyB0aGUgcGFydGljdWxhciBmaWVsZCBvbiBQb2xpY3kgZm9ybS5cclxuICAgKiBAcGFyYW0gc2VsZWN0ZWRJdGVtcyBjb250YWlucyB0aGUgbGlzdCBvZiBzZWxlY3RlZCBpdGVtcyBmcm9tIHRoZSBsaXN0XHJcbiAgICovXHJcbiAgc2F2ZVNlbGVjdGVkTGlzdCh0eXBlOiBzdHJpbmcsIHNlbGVjdGVkSXRlbXM6IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ3JjJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3MgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLnJjTGlzdCxcclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXHJcbiAgICAgICAgICAnaXRlbV9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjYXRlZ29yeSc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0LFxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcclxuICAgICAgICAgICdfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBvYmplY3RJZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMsXHJcbiAgICAgICAgICAnX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gW107XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzID0gW107XHJcbiAgICAgICAgdGhpcy5yZXNldFBvbGljeUFjY2Vzc0RldGFpbHMoKTtcclxuICAgICAgICB0aGlzLnJlc2V0UmV2aWV3ZXJGcmVxdWVuY3koKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uY3VzdG9tVGFncyA9IFtdO1xyXG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJXb3JrRmxvdyhvYmplY3RJZHMpO1xyXG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChvYmplY3RJZHMpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB0YWcgPSBlbGVtZW50LmN1c3RvbV90YWdzO1xyXG4gICAgICAgICAgaWYgKHRhZy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRhZy5mb3JFYWNoKCh0YWdEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucG9saWN5Rm9ybS5jdXN0b21UYWdzLmZpbmRJbmRleChcclxuICAgICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnbmFtZSA9PSB0YWdEYXRhLnRhZ25hbWVcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MucHVzaCh0YWdEYXRhKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXNzaWduZWVzJzpcclxuICAgICAgICBsZXQgdXNlcklkcywgZ3JvdXBJZHM7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XHJcbiAgICAgICAgICB1c2VySWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcy51c2VycywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICAgICAgZ3JvdXBJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zLmdyb3VwcywgJ2dyb3VwX2lkJyk7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRHcm91cEFzc2lnbmVlID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICB0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCxcclxuICAgICAgICAgICAgZ3JvdXBJZHMsXHJcbiAgICAgICAgICAgICdncm91cF9pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHVzZXJJZHMgPSBzZWxlY3RlZEl0ZW1zO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXHJcbiAgICAgICAgICB1c2VySWRzLFxyXG4gICAgICAgICAgJ215X21lbWJlcl9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdyZXZpZXdlcic6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5hbGxSZXZpZXdlcnMsXHJcbiAgICAgICAgICBbc2VsZWN0ZWRJdGVtcy5tZW1iZXJfaWRdLFxyXG4gICAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjY0VtYWlsJzpcclxuICAgICAgICBsZXQgc2VsZWN0ZWRVc2VySWRzLCBzZWxlY3RlZEdyb3VwSWRzO1xyXG4gICAgICAgIGlmICh0aGlzLmdyb3VwRW5hYmxlZCkge1xyXG4gICAgICAgICAgc2VsZWN0ZWRVc2VySWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcz8udXNlcnMsICdtZW1iZXJfaWQnKTtcclxuICAgICAgICAgIHNlbGVjdGVkR3JvdXBJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zPy5ncm91cHMsICdncm91cF9pZCcpO1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDR3JvdXBFbWFpbCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkR3JvdXBJZHMsXHJcbiAgICAgICAgICAgICdncm91cF9pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy51c2Vyc0xpc3QsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkVXNlcklkcyxcclxuICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmNjRW1haWxPYmpJZHMgPSB0aGlzLmdldEdyb3VwT2JqZWN0SWQoXHJcbiAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy51c2Vyc0xpc3QsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXHJcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NjRmFpbCc6XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkRmFpbFVzZXJJZHMsIHNlbGVjdGVkRmFpbEdyb3VwSWRzO1xyXG4gICAgICAgIGlmICh0aGlzLmdyb3VwRW5hYmxlZCkge1xyXG4gICAgICAgICAgc2VsZWN0ZWRGYWlsVXNlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy51c2VycyxcclxuICAgICAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBzZWxlY3RlZEZhaWxHcm91cElkcyA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5ncm91cHMsXHJcbiAgICAgICAgICAgICdncm91cF9pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWxHcm91cCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkRmFpbEdyb3VwSWRzLFxyXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICB0aGlzLnVzZXJzTGlzdCxcclxuICAgICAgICAgICAgc2VsZWN0ZWRGYWlsVXNlcklkcyxcclxuICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmNjRmFpbEdyb3VwT2JqSWRzID0gdGhpcy5nZXRHcm91cE9iamVjdElkKFxyXG4gICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy51c2Vyc0xpc3QsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXHJcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2FwcHJvdmVycyc6XHJcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5hbGxBcHByb3ZlcnMsXHJcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxyXG4gICAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vcmVMZXZlbHMpIHtcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycy5wdXNoKHtcclxuICAgICAgICAgICAgbmFtZTogdGhpcy53b3JrZmxvd1R5cGUsXHJcbiAgICAgICAgICAgIGFwcHJvdmVycyxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5hZGRNb3JlTGV2ZWxzID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnNbdGhpcy5hcHByb3ZlcnNMaXN0SW5kZXhdID0ge1xyXG4gICAgICAgICAgbmFtZTogdGhpcy53b3JrZmxvd1R5cGUsXHJcbiAgICAgICAgICBhcHByb3ZlcnMsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncmV2aWV3ZXJfYXR0YWNobWVudHMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRGaWxlcyA9XHJcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5maWxlcyA/PyBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdExpbmtzID1cclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmxpbmtzID8/IFtdO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhc3NvY2lhdGVkRG9jdW1lbnRzJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYXNzb2NpYXRlZERvY3VtZW50cy5mb3JtYXRGaWxlcyA9XHJcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5maWxlcyA/PyBbXTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NoZWNrcG9pbnRzJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uY2hlY2twb2ludERldGFpbHMgPVxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uY2hlY2twb2ludERldGFpbHMgPz8gW107XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnRvdGFsUXVlc3Rpb24gPVxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uY2hlY2twb2ludERldGFpbHM/Lmxlbmd0aCA/PyAwO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wYXNzaW5nTWFya3MgPSBzZWxlY3RlZEl0ZW1zPy5yZXF1aXJlZFBvaW50ID8/IDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ293bmVycyc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9vd25lcnMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLmFsbEFwcHJvdmVycyxcclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXHJcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3BvbGljeUFjY2Vzcyc6XHJcbiAgICAgICAgbGV0IGFjY2Vzc0lkcywgYWNjZXNzR3JvdXBJZHM7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmF2YWlsYWJsZU9uUG9ydGFsID1cclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmZ1dHVyZVVzZXJzV2lsbFNlbGVjdDtcclxuICAgICAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcclxuICAgICAgICAgIGFjY2Vzc0lkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXMudXNlcnMsICdtZW1iZXJfaWQnKTtcclxuICAgICAgICAgIGFjY2Vzc0dyb3VwSWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcy5ncm91cHMsICdncm91cF9pZCcpO1xyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9hY2Nlc3NfZ3JvdXBzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICB0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCxcclxuICAgICAgICAgICAgYWNjZXNzR3JvdXBJZHMsXHJcbiAgICAgICAgICAgICdncm91cF9pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGFjY2Vzc0lkcyA9IHNlbGVjdGVkSXRlbXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX293bmVycyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcclxuICAgICAgICAgIGFjY2Vzc0lkcyxcclxuICAgICAgICAgICdteV9tZW1iZXJfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdpc0xpbmtlZFBvbGljZXMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5MaW5rZWRQb2xpY2llcyA9XHJcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnNlbGVjdGVkUG9saWN5TGlzdCAmJlxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcy5zZWxlY3RlZFBvbGljeUxpc3QubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICA/IFsuLi5uZXcgU2V0KHNlbGVjdGVkSXRlbXMuc2VsZWN0ZWRQb2xpY3lMaXN0KV1cclxuICAgICAgICAgICAgOiBbXTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xyXG4gIH1cclxuXHJcbiAgLy9yZXR1cm4gdGhlIF9pZCBmcm9tIHRoZSBzZWxlY3RlZCBvdmVyc2VlciBncm91cC5cclxuICBnZXRHcm91cE9iamVjdElkKG92ZXJzZWVyR3JvdXA/OiBhbnkpIHtcclxuICAgIGxldCBvdmVyc2Vlckdyb3VwSWRBcnJheSA9IG92ZXJzZWVyR3JvdXAubWFwKChlbGU6IGFueSkgPT4gZWxlLl9pZCk7XHJcbiAgICByZXR1cm4gb3ZlcnNlZXJHcm91cElkQXJyYXk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIHRoZSBwYXJ0aWN1bGFyIGVsZW1lbnQgZnJvbSBzZWxlY3RlZCBsaXN0XHJcbiAgICogQHBhcmFtIHR5cGUgZGVmaW5lcyB0aGUgcGFydGljdWxhciBjYXNlXHJcbiAgICogQHBhcmFtIGV2ZW50IGhvbGRzIHRoZSBpZCBvciBrZXkgb2YgZWxlbWVudCB0byBiZSByZW1vdmVkXHJcbiAgICogQHBhcmFtIHJlbW92ZUluZGV4IGNvbnRhaW5zIHRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB0byBiZSByZW1vdmVkXHJcbiAgICovXHJcbiAgcmVtb3ZlKHR5cGU6IGFueSwgZXZlbnQ6IGFueSwgcmVtb3ZlSW5kZXg/OiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdyYyc6XHJcbiAgICAgICAgY29uc3QgcmNJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJDcy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAocmM6IGFueSkgPT4gcmMucmNfaWQgPT0gZXZlbnQucmNfaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJDcy5zcGxpY2UocmNJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XHJcbiAgICAgICAgY29uc3QgZW50cnVzdEluZGV4ID0gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXNzaWduZWVzLmZpbmRJbmRleChcclxuICAgICAgICAgIChvd25lcjogYW55KSA9PiBvd25lci5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXNzaWduZWVzLnNwbGljZShlbnRydXN0SW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2dyb3VwQXNzaWduZWVzJzpcclxuICAgICAgICBjb25zdCBncm91cEluZGV4OiBhbnkgPVxyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8uZmluZEluZGV4KFxyXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT4gZ3JvdXAuZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8uc3BsaWNlKGdyb3VwSW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyZXZpZXdlcic6XHJcbiAgICAgICAgY29uc3QgcmV2aWV3ZXJJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2Vycy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAocmV2aWV3ZXI6IGFueSkgPT4gcmV2aWV3ZXIubWVtYmVyX2lkID09IGV2ZW50Lm1lbWJlcl9pZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzLnNwbGljZShyZXZpZXdlckluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLnJlc2V0UmV2aWV3ZXJGcmVxdWVuY3koKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2NFbWFpbCc6XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsLmZpbmRJbmRleChcclxuICAgICAgICAgIChvdmVyc2VlcjogYW55KSA9PiBvdmVyc2Vlci5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRW1haWwuc3BsaWNlKG92ZXJzZWVySW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NjR3JvdXBFbWFpbCc6XHJcbiAgICAgICAgY29uc3QgY2NHcm91cEluZGV4OiBhbnkgPSB0aGlzLnBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbD8uZmluZEluZGV4KFxyXG4gICAgICAgICAgKGdyb3VwOiBhbnkpID0+IGdyb3VwPy5ncm91cF9pZCA9PSBldmVudD8uZ3JvdXBfaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0dyb3VwRW1haWw/LnNwbGljZShjY0dyb3VwSW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuY2NFbWFpbE9iaklkcyA9IHRoaXMuZ2V0R3JvdXBPYmplY3RJZChcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjY0ZhaWwnOlxyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyTm90aWZ5SW5kZXggPSB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwuZmluZEluZGV4KFxyXG4gICAgICAgICAgKG92ZXJzZWVyTjogYW55KSA9PiBvdmVyc2Vlck4uZW1wbG95ZWVfaWQgPT0gZXZlbnQuZW1wbG95ZWVfaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbC5zcGxpY2Uob3ZlcnNlZXJOb3RpZnlJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2NHcm91cEZhaWxFbWFpbCc6XHJcbiAgICAgICAgY29uc3QgY2NGYWlsR3JvdXBJbmRleDogYW55ID1cclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cD8uZmluZEluZGV4KFxyXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT4gZ3JvdXA/Lmdyb3VwX2lkID09IGV2ZW50Py5ncm91cF9pZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWxHcm91cD8uc3BsaWNlKGNjRmFpbEdyb3VwSW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMgPSB0aGlzLmdldEdyb3VwT2JqZWN0SWQoXHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXBcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2FwcHJvdmVycyc6XHJcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzSW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnNbXHJcbiAgICAgICAgICByZW1vdmVJbmRleFxyXG4gICAgICAgIF0uYXBwcm92ZXJzLmZpbmRJbmRleChcclxuICAgICAgICAgIChhcHByb3ZlcjogYW55KSA9PiBhcHByb3Zlci5tZW1iZXJfaWQgPT0gZXZlbnQubWVtYmVyX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnNbcmVtb3ZlSW5kZXhdLmFwcHJvdmVycy5zcGxpY2UoXHJcbiAgICAgICAgICBhcHByb3ZlcnNJbmRleCxcclxuICAgICAgICAgIDFcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1tyZW1vdmVJbmRleF0uYXBwcm92ZXJzLmxlbmd0aCA9PSAwXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcclxuICAgICAgICBjb25zdCBjYXRlZ29yeUluZGV4ID0gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAoY2F0ZWdvcnk6IGFueSkgPT4gY2F0ZWdvcnkuaXRlbV9pZCA9PSBldmVudC5pdGVtX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLnNwbGljZShjYXRlZ29yeUluZGV4LCAxKTtcclxuICAgICAgICBjb25zdCB0YWcgPSBldmVudC5jdXN0b21fdGFncztcclxuICAgICAgICBpZiAodGFnLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRhZy5mb3JFYWNoKCh0YWdEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhDVCA9IHRoaXMucG9saWN5Rm9ybS5jdXN0b21UYWdzLmZpbmRJbmRleChcclxuICAgICAgICAgICAgICAodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ25hbWUgPT0gdGFnRGF0YS50YWduYW1lXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleENUICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3Muc3BsaWNlKGluZGV4Q1QsIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgb2JqZWN0SWRzID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLFxyXG4gICAgICAgICAgJ19pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVzZXRSZXZpZXdlckZyZXF1ZW5jeSgpO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycy5zcGxpY2UoXHJcbiAgICAgICAgICAwLFxyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzLmxlbmd0aFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybSA9IE9iamVjdC5hc3NpZ24odGhpcy5wb2xpY3lGb3JtKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMgPSBbXTtcclxuICAgICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3cob2JqZWN0SWRzKTtcclxuICAgICAgICB0aGlzLmdldEFwcHJvdmVyc0FuZFJldmlld2Vyc0xpc3Qob2JqZWN0SWRzKTtcclxuICAgICAgICB0aGlzLnJlc2V0UG9saWN5QWNjZXNzRGV0YWlscygpO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2hlY2twb2ludHMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5jaGVja3BvaW50RGV0YWlscyA9IFtdO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS50b3RhbFF1ZXN0aW9uID0gMDtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0ucGFzc2luZ01hcmtzID0gMDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnd29ya2Zsb3dMZXZlbCc6XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVycy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMucmVtb3ZlV29ya2Zsb3coKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbGlua1Byb2dyYW0nOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5saW5rUHJvZ3JhbSA9IHtcclxuICAgICAgICAgIGFkZGVkOiBbXSxcclxuICAgICAgICAgIHJlbW92ZWQ6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBvbGljeUlkczogW3RoaXMucG9saWN5Rm9ybT8ucG9saWN5X2lkID8/IDBdLFxyXG4gICAgICAgICAgICAgIHByb2dyYW1JZDogdGhpcy5zZWxlY3RlZExpbmtQcm9ncmFtPy5faWQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnByb2dyYW1TZWxlY3RlZFZhbHVlcyA9IHt9O1xyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdvd25lcnMnOlxyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X293bmVycy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdwb2xpY3lBY2Nlc3MnOlxyXG4gICAgICAgIGNvbnN0IHVzZXJBY2Nlc3NJbmRleCA9IHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnMuZmluZEluZGV4KFxyXG4gICAgICAgICAgKG93bmVyOiBhbnkpID0+IG93bmVyPy5lbXBsb3llZV9pZCA9PSBldmVudD8uZW1wbG95ZWVfaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/LnNwbGljZSh1c2VyQWNjZXNzSW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2FjY2Vzc0dyb3VwJzpcclxuICAgICAgICBjb25zdCBncm91cEFjY2Vzc0luZGV4OiBhbnkgPVxyXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwcz8uZmluZEluZGV4KFxyXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT4gZ3JvdXA/Lmdyb3VwX2lkID09IGV2ZW50Py5ncm91cF9pZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzPy5zcGxpY2UoZ3JvdXBBY2Nlc3NJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2ZyZXF1ZW5jeSc6XHJcbiAgICAgICAgdGhpcy5yZW1vdmVGcmVxdWVuY3koKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnaXNMaW5rZWRQb2xpY2VzJzpcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uTGlua2VkUG9saWNpZXMgPSB0aGlzLnBvbGljeUZvcm0uTGlua2VkUG9saWNpZXMuZmlsdGVyKChwb2xpY3lOYW1lOiBhbnkpID0+IGV2ZW50ICE9PSBwb2xpY3lOYW1lKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmVmcmVzaGVzIHRoZSBhc3NpZ25lZXMgYW5kIG92ZXJzZWVycyBsaXN0IHN1Y2ggdGhhdCBib3RoIGxpc3QgZG9lcyBub3QgY29udGFpbiB0aGUgc2FtZSB1c2VycyBiYXNlZCBvbiBzZWxlY3Rpb25cclxuICAgKi9cclxuICByZWZyZXNoQWxsTGlzdHMoKSB7XHJcbiAgICBsZXQgYXNzaWduZWVzSWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCByZXZpZXdlcnNJZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IG92ZXJzZWVySWRzOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGFsbFVzZXJzID0gY2xvbmVEZWVwKHRoaXMudXNlcnNMaXN0KTtcclxuICAgIGNvbnN0IGFzc2lnbmVlcyA9IGNsb25lRGVlcCh0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMpO1xyXG4gICAgY29uc3Qgb3ZlcnNlZXJMaXN0ID0gY2xvbmVEZWVwKHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsKTtcclxuICAgIGNvbnN0IG5vdGlmeU92ZXJzZWVycyA9IGNsb25lRGVlcCh0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwpO1xyXG4gICAgYXNzaWduZWVzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgYXNzaWduZWVzSWRzLnB1c2godXNlci5lbXBsb3llZV9pZCk7XHJcbiAgICB9KTtcclxuICAgIG92ZXJzZWVyTGlzdD8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlci5lbXBsb3llZV9pZCk7XHJcbiAgICB9KTtcclxuICAgIG5vdGlmeU92ZXJzZWVycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlci5lbXBsb3llZV9pZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBhc3NpZ25lZXNJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25lZXNJZHMpXTtcclxuICAgIHJldmlld2Vyc0lkcyA9IFsuLi5uZXcgU2V0KHJldmlld2Vyc0lkcyldO1xyXG4gICAgb3ZlcnNlZXJJZHMgPSBbLi4ubmV3IFNldChvdmVyc2VlcklkcyldO1xyXG5cclxuICAgIC8vIHRoaXMuYXNzaWdub3JzTGlzdCA9IGJlaGFsZlVzZXJzLmZpbHRlcigodXNlcjogYW55KSA9PiAhKHJldmlld2Vyc0lkcy5pbmNsdWRlcyh1c2VyLm1lbWJlcl9pZCkgfHwgb3ZlcnNlZXJJZHMuaW5jbHVkZXModXNlci5tZW1iZXJfaWQpKSk7XHJcbiAgICB0aGlzLmFzc2lnbmVlc0xpc3QgPSBhbGxVc2Vycy5maWx0ZXIoXHJcbiAgICAgICh1c2VyOiBhbnkpID0+XHJcbiAgICAgICAgIShcclxuICAgICAgICAgIHJldmlld2Vyc0lkcy5pbmNsdWRlcyh1c2VyLmVtcGxveWVlX2lkKSB8fFxyXG4gICAgICAgICAgb3ZlcnNlZXJJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZClcclxuICAgICAgICApXHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XHJcbiAgICAgIGNvbnN0IHVzZXJPYmogPSB0aGlzLmFzc2lnbmVlc0xpc3Q7XHJcbiAgICAgIHVzZXJPYmo/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICAgIHVzZXIubWVtYmVyX2lkID0gdXNlci5teV9tZW1iZXJfaWQ7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLm93bmVybGlzdCA9IHVzZXJPYmo7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnJldmlld2Vyc0xpc3QgPSBhbGxVc2Vycy5maWx0ZXIoKHVzZXI6IGFueSkgPT4gIShhc3NpZ25lZXNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkgfHwgb3ZlcnNlZXJJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkpKTtcclxuICAgIHRoaXMub3ZlcnNlZXJzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcclxuICAgICAgKHVzZXI6IGFueSkgPT5cclxuICAgICAgICAhKFxyXG4gICAgICAgICAgYXNzaWduZWVzSWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpIHx8XHJcbiAgICAgICAgICByZXZpZXdlcnNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZClcclxuICAgICAgICApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aG9sZSBsaXN0IGJhc2VkIG9uIHNlbGVjdGVkIGlkJ3MgZnJvbSBhIHBhcnRpY3VsYXIgbGlzdCBlbGVtZW50c1xyXG4gICAqIEBwYXJhbSBsaXN0IGl0IGlzIHRoZSBtYWluIGxpc3QgIHdoaWNoIGNvbnRhaW5zIGFsbCBlbGVtZW50cyBsaXN0XHJcbiAgICogQHBhcmFtIGtleSBjb250YWlucyBrZXkgdG8gZmlsdGVyIHNlbGVjdGVkIGxpc3QgZnJvbSB0aGUgbGlzdFxyXG4gICAqIEBwYXJhbSBpZHMgc2VsZWN0ZWQgaWRzIGFycmF5XHJcbiAgICovXHJcbiAgc2V0TGlzdChsaXN0OiBhbnlbXSwgaWRzOiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xyXG4gICAgaWRzPy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgaW5kZXggPSBsaXN0Py5maW5kSW5kZXgoXHJcbiAgICAgICAgKGxpc3RFbGVtZW50OiBhbnkpID0+IGxpc3RFbGVtZW50W2tleV0gPT0gZWxlbWVudFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgaWQncyBmcm9tIGEgcGFydGljdWxhciBsaXN0IGVsZW1lbnRzXHJcbiAgICogQHBhcmFtIGxpc3QgYWN0dWFsIHNlbGVjdGVkIGxpc3RcclxuICAgKiBAcGFyYW0ga2V5IGNvbnRhaW5zIGtleSB0byBleHRyYWN0IGlkIGZyb20gdGhlIGxpc3RcclxuICAgKi9cclxuICByZXR1cm5JZHMobGlzdDogYW55W10sIGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbGlzdC5tYXAoKGVsZSkgPT4ge1xyXG4gICAgICBpZiAoZWxlW2tleV0pIHtcclxuICAgICAgICByZXR1cm4gZWxlW2tleV07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgcmV2aWV3ZXIgdHlwZSBpbiBhcHByb3ZhbCB3b3JrZmxvd1xyXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCByZXZpZXdlciB0eXBlXHJcbiAgICovXHJcbiAgcmV2aWV3ZXJUeXBlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMud29ya2Zsb3dUeXBlID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIGZyZXF1ZW5jeSBpbiBlZGl0ICBtb2RlXHJcbiAgICovXHJcbiAgZnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZXZlbnQ6IGFueSwgbW9kZTogJ1NFTEVDVCcgfCAnUE9QVUxBVEUnID0gJ1NFTEVDVCcpIHtcclxuICAgIC8vbmVlZHMgdG8gZGlzY3VzcyB3aXRoIGJhY2tlbmQgYWJvdXQgZWRpdCBhbmQgZGVmYXVsdCB2YWx1ZXNcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIHBhdHRlcm46IGV2ZW50Py5mcmVxdWVuY3lfZGV0YWlscywgLy9cclxuICAgICAgd2luZG93OiBldmVudD8ucmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlLFxyXG4gICAgICBmYWlsZWRBZnRlcjogZXZlbnQ/Lm1hcmtfZmFpbGVkX2FmdGVyLFxyXG4gICAgICBmYWlsZWRfdGltZV91dGM6ICcnLFxyXG4gICAgICBsaWZlY3ljbGVEZXRhaWxzOiAnMDAwMC0wMC0wMH5+MCcsXHJcbiAgICAgIHRpbWVJbjI0SHI6IGV2ZW50LmZhaWxlZF90aW1lICE9ICcnID8gZXZlbnQuZmFpbGVkX3RpbWUgOiBERUZBVUxUXzI0SFIsXHJcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXHJcbiAgICAgIHN0YXJ0RnJvbTogTWF0aC5mbG9vcihcclxuICAgICAgICBuZXcgRGF0ZShldmVudC5hc3NpZ25lZV9zdGFydF9kYXRlKS5nZXRUaW1lKCkgLyAxMDAwXHJcbiAgICAgICksXHJcbiAgICAgIHN0YXJ0RGF0ZTogJycsXHJcbiAgICAgIHJlcG9ydElkOiAwLFxyXG4gICAgICB0aW1lSW4xMmhyOiB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UudGltZUluMTIoXHJcbiAgICAgICAgZXZlbnQuZmFpbGVkX3RpbWUgIT0gJycgPyBldmVudC5mYWlsZWRfdGltZSA6IERFRkFVTFRfMjRIUlxyXG4gICAgICApLFxyXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQuZnJlcXVlbmN5X3RleHQsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZnJlcXVlbmN5RGF0YShkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHNlbGVjdGVkIGZyZXF1ZW5jeSBkZXRhaWxzIGluIHRoZSBwb2xpY3lGb3JtXHJcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIGZyZXF1ZW5jeSBkZXRhaWxzXHJcbiAgICovXHJcbiAgZnJlcXVlbmN5RGF0YShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uZnJlcXVlbmN5X2RldGFpbHMgPSBldmVudC5wYXR0ZXJuO1xyXG4gICAgKHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfdGV4dCA9IGV2ZW50LnBsYWNlaG9sZGVyKSxcclxuICAgICAgKHRoaXMucG9saWN5Rm9ybS5tYXJrX2ZhaWxlZF9hZnRlciA9IGV2ZW50LmZhaWxlZEFmdGVyKTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgPSBldmVudC53aW5kb3c7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uZmFpbGVkX3RpbWUgPSBldmVudC50aW1lSW4yNEhyO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmFzc2lnbmVlX3N0YXJ0X2RhdGUgPSBtb21lbnQoZXZlbnQuc3RhcnRGcm9tICogMTAwMCkuZm9ybWF0KFxyXG4gICAgICAnZGRkIE1NTSBERCBZWVlZJ1xyXG4gICAgKTtcclxuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgZmFsc2UpO1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IGV2ZW50LnBhdHRlcm4sXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBldmVudC50aW1lSW4xMmhyLFxyXG4gICAgICByZW1pbmRlcl9iZWZvcmVfZGF5czogZXZlbnQud2luZG93LFxyXG4gICAgICBmYWlsZWRfYWZ0ZXJfZGF5czogZXZlbnQuZmFpbGVkQWZ0ZXIsXHJcbiAgICAgIGxpZmVjeWNsZV9kZXRhaWxzOiBldmVudC5saWZlY3ljbGVEZXRhaWxzLFxyXG4gICAgICBzdGFydF9vZl9kYXlfdXRjOiBldmVudC5zdGFydEZyb20sXHJcbiAgICAgIG9uX2NvbXBsZXRpb25fb2Y6IFtldmVudC5yZXBvcnRJZF0sXHJcbiAgICAgIGRvbV91dGM6IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxyXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzLFxyXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQucGxhY2Vob2xkZXIsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5mcmVxdWVuY3lQb3B1bGF0aW9uKHBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUG9wdWxhdGVzIHRoZSBmcmVxdWVuY3kgZmllbGQgd2l0aCBzZWxlY3RlZCBkYXRhIGZyb20gZnJlcXVlbmN5IGNvbXBvbmVudFxyXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBmcmVxdWVuY3kgZGV0YWlsc1xyXG4gICAqL1xyXG4gIGZyZXF1ZW5jeVBvcHVsYXRpb24oZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnBhdHRlcm4gPSBldmVudD8uZnJlcXVlbmN5X2RldGFpbHM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuZmFpbGVkVGltZSA9IGV2ZW50Py5mcmVxdWVuY3lfdGltZTtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy53aW5kb3cgPSBldmVudD8ucmVtaW5kZXJfYmVmb3JlX2RheXM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuZmFpbGVkID0gZXZlbnQ/LmZhaWxlZF9hZnRlcl9kYXlzO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmxpZmVjeWNsZSA9IGV2ZW50Py5saWZlY3ljbGVfZGV0YWlscztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zdGFydERhdGUgPSBldmVudD8uc3RhcnRfb2ZfZGF5X3V0YztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zZWxlY3RlZFJlcG9ydCA9IGV2ZW50Py5vbl9jb21wbGV0aW9uX29mWzBdID8/IDA7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuZGF0ZU9mTW9kaWZpZWQgPSBldmVudD8uZG9tX3V0YztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5jb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMztcclxuICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSBldmVudD8ucGxhY2Vob2xkZXJcclxuICAgICAgPyBldmVudC5wbGFjZWhvbGRlclxyXG4gICAgICA6ICdIb3cgb2Z0ZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIGF0dGVzdGVkPyc7XHJcbiAgfVxyXG5cclxuICByZXZpZXdlckZyZXF1ZW5jeURhdGFQb3B1bGF0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIC8vbmVlZHMgdG8gZGlzY3VzcyB3aXRoIGJhY2tlbmQgYWJvdXQgZWRpdCBhbmQgZGVmYXVsdCB2YWx1ZXNcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIHBhdHRlcm46IGV2ZW50Py5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMsIC8vXHJcbiAgICAgIHdpbmRvdzogZXZlbnQ/LnJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUsXHJcbiAgICAgIGZhaWxlZEFmdGVyOiBldmVudD8ucmV2aWV3RmFpbGVkQWZ0ZXIsXHJcbiAgICAgIGZhaWxlZF90aW1lX3V0YzogJycsXHJcbiAgICAgIGxpZmVjeWNsZURldGFpbHM6ICcwMDAwLTAwLTAwfn4wJyxcclxuICAgICAgdGltZUluMjRIcjpcclxuICAgICAgICBldmVudC5yZXZpZXdGYWlsZWRUaW1lICE9ICcnID8gZXZlbnQucmV2aWV3RmFpbGVkVGltZSA6IERFRkFVTFRfMjRIUixcclxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogMCxcclxuICAgICAgc3RhcnRGcm9tOiBNYXRoLmZsb29yKFxyXG4gICAgICAgIG5ldyBEYXRlKGV2ZW50LnJldmlld2VyX3N0YXJ0X2RhdGUpLmdldFRpbWUoKSAvIDEwMDBcclxuICAgICAgKSxcclxuICAgICAgc3RhcnREYXRlOiAnJyxcclxuICAgICAgcmVwb3J0SWQ6IDAsXHJcbiAgICAgIHRpbWVJbjEyaHI6IHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lSW4xMihcclxuICAgICAgICBldmVudC5yZXZpZXdGYWlsZWRUaW1lICE9ICcnID8gZXZlbnQucmV2aWV3RmFpbGVkVGltZSA6IERFRkFVTFRfMjRIUlxyXG4gICAgICApLFxyXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQucmV2aWV3ZnJlcXVlbmN5RGV0YWlscyxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURhdGEoZGF0YSk7XHJcbiAgfVxyXG5cclxuICByZXNldFJldmlld2VyRnJlcXVlbmN5KCkge1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMgPSB7XHJcbiAgICAgIHBhdHRlcm46ICcnLFxyXG4gICAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxyXG4gICAgICBkYXRlT2ZNb2RpZmllZDogMCxcclxuICAgICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXHJcbiAgICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxyXG4gICAgICBsaWZlY3ljbGU6ICcwMDAwLTAwLTAwfn4wJyxcclxuICAgICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgICAgd2luZG93OiAwLFxyXG4gICAgICBmYWlsZWQ6IDAsXHJcbiAgICAgIHRpbWU6IERFRkFVTFRfVElNRSxcclxuICAgICAgZmFpbGVkVGltZTogJycsXHJcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDMsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld0ZhaWxlZEFmdGVyID0gMDtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgPSAnJztcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X3R5cGUgPSAnJztcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlID0gMDtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdGYWlsZWRUaW1lID0gREVGQVVMVF8yNEhSO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgJ1doZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIHJldmlld2VkID8nO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgc2VsZWN0ZWQgcmV2aWV3ZXIgZnJlcXVlbmN5IGRldGFpbHMgaW4gdGhlIHBvbGljeUZvcm1cclxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcclxuICAgKi9cclxuICByZXZpZXdlckZyZXF1ZW5jeURhdGEoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld0ZhaWxlZEFmdGVyID0gZXZlbnQuZmFpbGVkQWZ0ZXI7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzID0gZXZlbnQucGF0dGVybjtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X3R5cGUgPSBldmVudC5wYXR0ZXJuLnNwbGl0KCd+JylbMF07XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X3JlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA9IGV2ZW50LndpbmRvdztcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdGYWlsZWRUaW1lID0gZXZlbnQudGltZUluMjRIcjtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdlcl9zdGFydF9kYXRlID0gbW9tZW50KGV2ZW50LnN0YXJ0RnJvbSAqIDEwMDApLmZvcm1hdChcclxuICAgICAgJ2RkZCBNTU0gREQgWVlZWSdcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlckZyZXF1ZW5jeScsIGZhbHNlKTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiBldmVudC5wYXR0ZXJuLFxyXG4gICAgICBmcmVxdWVuY3lfdGltZTogZXZlbnQudGltZUluMTJocixcclxuICAgICAgcmVtaW5kZXJfYmVmb3JlX2RheXM6IGV2ZW50LndpbmRvdyxcclxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IGV2ZW50LmZhaWxlZEFmdGVyLFxyXG4gICAgICBsaWZlY3ljbGVfZGV0YWlsczogZXZlbnQubGlmZWN5Y2xlRGV0YWlscyxcclxuICAgICAgc3RhcnRfb2ZfZGF5X3V0YzogZXZlbnQuc3RhcnRGcm9tLFxyXG4gICAgICBvbl9jb21wbGV0aW9uX29mOiBbZXZlbnQucmVwb3J0SWRdLFxyXG4gICAgICBkb21fdXRjOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcclxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogZXZlbnQuY29udGludW91c19mYWlsZWRfZGF5cyxcclxuICAgICAgcGxhY2Vob2xkZXI6IGV2ZW50LnBsYWNlaG9sZGVyLFxyXG4gICAgfTtcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lQb3B1bGF0aW9uKHBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUG9wdWxhdGVzIHRoZSByZXZpZXdlciBmcmVxdWVuY3kgZmllbGQgd2l0aCBzZWxlY3RlZCBkYXRhIGZyb20gZnJlcXVlbmN5IGNvbXBvbmVudFxyXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBmcmVxdWVuY3kgZGV0YWlsc1xyXG4gICAqL1xyXG4gIHJldmlld2VyRnJlcXVlbmN5UG9wdWxhdGlvbihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5wYXR0ZXJuID0gZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuZmFpbGVkVGltZSA9IGV2ZW50Py5mcmVxdWVuY3lfdGltZTtcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLndpbmRvdyA9IGV2ZW50Py5yZW1pbmRlcl9iZWZvcmVfZGF5cztcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLmZhaWxlZCA9IGV2ZW50Py5mYWlsZWRfYWZ0ZXJfZGF5cztcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLmxpZmVjeWNsZSA9IGV2ZW50Py5saWZlY3ljbGVfZGV0YWlscztcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLnN0YXJ0RGF0ZSA9IGV2ZW50Py5zdGFydF9vZl9kYXlfdXRjO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuc2VsZWN0ZWRSZXBvcnQgPVxyXG4gICAgICBldmVudD8ub25fY29tcGxldGlvbl9vZlswXSA/PyAwO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuZGF0ZU9mTW9kaWZpZWQgPSBldmVudD8uZG9tX3V0YztcclxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAzO1xyXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gZXZlbnQ/LnBsYWNlaG9sZGVyXHJcbiAgICAgID8gZXZlbnQucGxhY2Vob2xkZXJcclxuICAgICAgOiAnV2hlbiBkb2VzIHRoaXMgcG9saWN5IG5lZWQgdG8gYmUgcmV2aWV3ZWQgPyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGF0ZXMgdGhlIGRhdGEgc3VibWl0dGVkIG9uIGNyZWF0ZSBwb2xpY3kgZm9ybVxyXG4gICAqL1xyXG4gIHZhbGlkYXRlUG9saWN5KCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcclxuICAgIH0sIDEwMCk7XHJcbiAgICBjb25zdCBldmVudCA9IHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lO1xyXG4gICAgY29uc3QgcmUgPSAvJm5ic3A7fDxicj4vZztcclxuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lID0gZXZlbnQucmVwbGFjZShyZSwgJycpLnRyaW0oKTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lLnRyaW0oKSA9PSAnJyB8fFxyXG4gICAgICAoIXRoaXMucG9saWN5Rm9ybT8uZnJlcXVlbmN5X2RldGFpbHMgJiZcclxuICAgICAgICAoKHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICF0aGlzLmdyb3VwRW5hYmxlZCkgfHxcclxuICAgICAgICAgICgodGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8ubGVuZ3RoID4gMCkgJiZcclxuICAgICAgICAgICAgdGhpcy5ncm91cEVuYWJsZWQpKSkgfHxcclxuICAgICAgKHRoaXMucG9saWN5Rm9ybT8uZnJlcXVlbmN5X2RldGFpbHMgJiZcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICghdGhpcy5ncm91cEVuYWJsZWQgfHxcclxuICAgICAgICAgICh0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgICAgdGhpcy5ncm91cEVuYWJsZWQpKSkgfHxcclxuICAgICAgKCF0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzICYmXHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzLmxlbmd0aCA+IDApIHx8XHJcbiAgICAgICh0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzICYmXHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzLmxlbmd0aCA9PSAwKSB8fFxyXG4gICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICghdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVyc1swXT8uYXBwcm92YWxfd29ya2Zsb3c/Lmxlbmd0aCAmJlxyXG4gICAgICAgICF0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzWzBdPy5hcHByb3ZlcnM/Lmxlbmd0aCAmJlxyXG4gICAgICAgIHRoaXMucG9saWN5QXBwcm92YWxGbGFnID09PSAwKSB8fFxyXG4gICAgICAodGhpcy5mb3JtYXRFdmlkZW5jZSAmJiB0aGlzLmZvcm1hdEV2aWRlbmNlLm5ld0xpbmsuY29udGFpbnNFcnJvcikgfHxcclxuICAgICAgIXRoaXMucG9saWN5Rm9ybS5wb2xpY3lfb3duZXJzPy5sZW5ndGggfHxcclxuICAgICAgKHRoaXMuaXNTZW5kRm9yQXR0ZXN0YXRpb24gJiZcclxuICAgICAgICB0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzLmxlbmd0aCA9PT0gMClcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIGFuIGFwaSBjYWxsIHRvIGNyZWF0ZSBhIHBvbGljeVxyXG4gICAqIEBwYXJhbSBwb2xpY3kgY29udGFpbnMgcG9saWN5Rm9ybSBkYXRhXHJcbiAgICovXHJcbiAgc3VibWl0UG9saWN5KCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZVBvbGljeSgpO1xyXG4gICAgaWYgKCF2YWxpZCB8fCAhdGhpcy5pc1ZlcnNpb25WYWxpZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5ub1dvcmtmbG93U2VsZWN0ZWQpIHtcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gdGhpcy5zZWxlY3RlZFdvcmtmbG93O1xyXG4gICAgfVxyXG4gICAgY29uc3QgcG9saWN5ID0gdGhpcy5wb2xpY3lGb3JtO1xyXG4gICAgbGV0IGFwcHJvdmVyc0RhdGE6IGFueSA9IHRoaXMuY29udmVydEFwcHJvdmFsV29ya2Zsb3coXHJcbiAgICAgIHBvbGljeS5zZWxlY3RlZEFwcHJvdmVyc1xyXG4gICAgKTtcclxuICAgIGxldCByZXZpZXdlckZpbGVzQXJyYXkgPSBjbG9uZURlZXAocG9saWN5LmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdEZpbGVzKTtcclxuICAgIGNvbnN0IHJldmlld2VyRmlsZXMgPSByZXZpZXdlckZpbGVzQXJyYXkubWFwKChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgZmlsZS5uYW1lID0gZmlsZS5maWxlbmFtZTtcclxuICAgICAgZmlsZS5maWxlX3BhdGggPSBmaWxlLmZpbGVwYXRoO1xyXG4gICAgICBmaWxlLm9yZ19uYW1lID0gZmlsZS5vcmlnaW5hbF9maWxlbmFtZTtcclxuICAgICAgZGVsZXRlIGZpbGUuZmlsZW5hbWU7XHJcbiAgICAgIGRlbGV0ZSBmaWxlLmZpbGVwYXRoO1xyXG4gICAgICBkZWxldGUgZmlsZS5vcmlnaW5hbF9maWxlbmFtZTtcclxuICAgICAgZGVsZXRlIGZpbGUubGlua1NldDtcclxuICAgICAgcmV0dXJuIGZpbGU7XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgYXR0ZXN0YXRpb25GaWxlc0FycmF5ID0gY2xvbmVEZWVwKFxyXG4gICAgICBwb2xpY3kuYXNzb2NpYXRlZERvY3VtZW50cy5mb3JtYXRGaWxlc1xyXG4gICAgKTtcclxuICAgIGNvbnN0IGF0dGVzdGF0aW9uRmlsZXMgPSBhdHRlc3RhdGlvbkZpbGVzQXJyYXkubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICBlbGUubmFtZSA9IGVsZS5maWxlbmFtZTtcclxuICAgICAgZWxlLmZpbGVfcGF0aCA9IGVsZS5maWxlcGF0aDtcclxuICAgICAgZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZSA9IGVsZS5vcmlnaW5hbF9maWxlbmFtZTtcclxuICAgICAgZWxlLmZvbGRlcl9pZCA9IGVsZT8uZm9sZGVyX2lkID8gZWxlLmZvbGRlcl9pZCA6IDA7XHJcbiAgICAgIGVsZS5wYXRoID0gZWxlPy5wYXRoID8gZWxlLnBhdGggOiBlbGUuZmlsZXBhdGggKyBlbGUuZmlsZW5hbWU7XHJcbiAgICAgIGVsZS5pc0xpbmtTZXQgPSBlbGUubGlua1NldDtcclxuICAgICAgZWxlLm90aGVyX3R5cGUgPSBlbGU/Lm90aGVycztcclxuICAgICAgZGVsZXRlIGVsZS5maWxlbmFtZTtcclxuICAgICAgZGVsZXRlIGVsZS5maWxlcGF0aDtcclxuICAgICAgZGVsZXRlIGVsZS5vcmlnaW5hbF9maWxlbmFtZTtcclxuICAgICAgZGVsZXRlIGVsZS5saW5rU2V0O1xyXG4gICAgICBkZWxldGUgZWxlLmZpbGVfbmFtZTtcclxuICAgICAgZGVsZXRlIGVsZS5vdGhlcnM7XHJcbiAgICAgIHJldHVybiBlbGU7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHJldmlld2VySUQgPSB0aGlzLnJldHVybklkcyhwb2xpY3kuc2VsZWN0ZWRSZXZpZXdlcnMsICdtZW1iZXJfaWQnKTtcclxuICAgIGNvbnN0IHBvbGljeUFjY2Vzc1VzZXJzSWRzID1cclxuICAgICAgdGhpcy5yZXR1cm5JZHMocG9saWN5LnBvbGljeV9hY2Nlc3Nfb3duZXJzLCAnbWVtYmVyX2lkJykgPz8gW107XHJcbiAgICBjb25zdCBwb2xpY3lBY2Nlc3NHcm91cHNJZHMgPVxyXG4gICAgICB0aGlzLnJldHVybklkcyhwb2xpY3kucG9saWN5X2FjY2Vzc19ncm91cHMsICdfaWQnKSA/PyBbXTtcclxuXHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBwb2xpY3lfbmFtZTogcG9saWN5LnBvbGljeU5hbWUsXHJcbiAgICAgIG5vdGVzOiBwb2xpY3kucG9saWN5Tm90ZXMsXHJcbiAgICAgIGlzX3BvcnRhbF9lbmFibGU6IHBvbGljeS5hdmFpbGFibGVPblBvcnRhbCA/IDEgOiAwLFxyXG4gICAgICBpc19zdWdnZXRpb25fZW5hYmxlOiBwb2xpY3kuYWNjZXB0U3VnZ2VzdGlvbnMgPyAxIDogMCxcclxuICAgICAgY2F0ZWdvcnlfaWRfYXJyOiB0aGlzLnJldHVybklkcyhwb2xpY3kuc2VsZWN0ZWRDYXRlZ29yaWVzLCAnaXRlbV9pZCcpLFxyXG4gICAgICBhcHByb3ZlcnM6IGFwcHJvdmVyc0RhdGEsXHJcbiAgICAgIGFzc2lnbmVlX2lkczogdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgcG9saWN5Py5zZWxlY3RlZEFzc2lnbmVlcyxcclxuICAgICAgICAnZW1wbG95ZWVfaWQnXHJcbiAgICAgICkubWFwKChpZCkgPT4gTnVtYmVyKGlkKSksXHJcbiAgICAgIHVzZXJncm91cF9pZHM6IHRoaXMucmV0dXJuSWRzKHBvbGljeS5zZWxlY3RlZEdyb3VwQXNzaWduZWUsICdfaWQnKSA/PyBbXSxcclxuICAgICAgSXNfYXBwcm92YWw6IDAsIC8vbmVlZHMgdG8gY2hlY2sgaW4gZmVcclxuXHJcbiAgICAgIGFzc29jaWF0ZWRfZG9jdW1lbnRzOiBwb2xpY3kuYWRkQXNzb2NpYXRlZERvY3VtZW50c1xyXG4gICAgICAgID8gYXR0ZXN0YXRpb25GaWxlc1xyXG4gICAgICAgIDogW10sXHJcblxyXG4gICAgICBjdXN0b21fdGFnczogSlNPTi5zdHJpbmdpZnkocG9saWN5LmN1c3RvbVRhZ3MpLFxyXG5cclxuICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IHBvbGljeS5mcmVxdWVuY3lfZGV0YWlsc1xyXG4gICAgICAgID8gcG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzXHJcbiAgICAgICAgOiAnJyxcclxuICAgICAgZnJlcXVlbmN5X3RleHQ6IHBvbGljeS5mcmVxdWVuY3lfZGV0YWlscyA/IHBvbGljeS5mcmVxdWVuY3lfdGV4dCA6ICcnLFxyXG4gICAgICByZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGU6IHBvbGljeS5mcmVxdWVuY3lfZGV0YWlsc1xyXG4gICAgICAgID8gcG9saWN5LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZVxyXG4gICAgICAgIDogMCxcclxuICAgICAgZmFpbGVkX3RpbWU6IHBvbGljeS5mcmVxdWVuY3lfZGV0YWlscyA/IHBvbGljeS5mYWlsZWRfdGltZSA6ICcnLFxyXG4gICAgICBtYXJrX2ZhaWxlZF9hZnRlcjogcG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzXHJcbiAgICAgICAgPyBwb2xpY3kubWFya19mYWlsZWRfYWZ0ZXJcclxuICAgICAgICA6ICcnLFxyXG4gICAgICAvLyBzdGFydERhdGU6IHBvbGljeS5wb2xpY3lEdWVEYXRlLnRvRGF0ZVN0cmluZygpLFxyXG4gICAgICBzdGFydERhdGU6IG1vbWVudChwb2xpY3kucG9saWN5RHVlRGF0ZSkuZm9ybWF0KCdkZGQgTU1NIEREIFlZWVknKSxcclxuXHJcbiAgICAgIFJldmlld2VyQXR0YWNobWVudHM6XHJcbiAgICAgICAgcG9saWN5LmFkZFJldmlld2VycyAmJiBwb2xpY3kuZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0RmlsZXNcclxuICAgICAgICAgID8gcmV2aWV3ZXJGaWxlc1xyXG4gICAgICAgICAgOiBbXSxcclxuICAgICAgUmV2aWV3ZXJMaW5rczpcclxuICAgICAgICBwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRMaW5rc1xyXG4gICAgICAgICAgPyBwb2xpY3kuZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0TGlua3NcclxuICAgICAgICAgIDogW10sXHJcbiAgICAgIFJldmlld2VyTWVtYmVySWQ6XHJcbiAgICAgICAgcG9saWN5LmFkZFJldmlld2VycyAmJiByZXZpZXdlcklEWzBdID8gcmV2aWV3ZXJJRFswXSA6IDAsXHJcbiAgICAgIGlzUmV2aWV3OlxyXG4gICAgICAgIHBvbGljeS5hZGRSZXZpZXdlcnMgJiZcclxuICAgICAgICAocG9saWN5LmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdEZpbGVzIHx8XHJcbiAgICAgICAgICBwb2xpY3kuZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0TGlua3MpICYmXHJcbiAgICAgICAgcmV2aWV3ZXJJRFswXVxyXG4gICAgICAgICAgPyAxXHJcbiAgICAgICAgICA6IDAsXHJcblxyXG4gICAgICByZXZpZXdGYWlsZWRBZnRlcjpcclxuICAgICAgICBwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHNcclxuICAgICAgICAgID8gcG9saWN5LnJldmlld0ZhaWxlZEFmdGVyXHJcbiAgICAgICAgICA6IDAsXHJcbiAgICAgIHJldmlld0ZhaWxlZFRpbWU6XHJcbiAgICAgICAgcG9saWN5LmFkZFJldmlld2VycyAmJiBwb2xpY3kucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzXHJcbiAgICAgICAgICA/IHBvbGljeS5yZXZpZXdGYWlsZWRUaW1lXHJcbiAgICAgICAgICA6ICcnLFxyXG4gICAgICByZXZpZXdfZnJlcXVlbmN5X2RldGFpbHM6XHJcbiAgICAgICAgcG9saWN5LmFkZFJldmlld2VycyAmJiBwb2xpY3kucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzXHJcbiAgICAgICAgICA/IHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHNcclxuICAgICAgICAgIDogJycsXHJcbiAgICAgIHJldmlld19mcmVxdWVuY3lfdHlwZTpcclxuICAgICAgICBwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHNcclxuICAgICAgICAgID8gcG9saWN5LnJldmlld19mcmVxdWVuY3lfdHlwZVxyXG4gICAgICAgICAgOiAnJyxcclxuICAgICAgcmV2aWV3X3JlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZTpcclxuICAgICAgICBwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHNcclxuICAgICAgICAgID8gcG9saWN5LnJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGVcclxuICAgICAgICAgIDogMCxcclxuXHJcbiAgICAgIGVudGl0aWVzOiB0aGlzLnBvbGljeUZvcm0/LmFkZFJlc3BvbnNpYmlsaXR5Q2VudGVyc1xyXG4gICAgICAgID8gdGhpcy5yZXR1cm5JZHMocG9saWN5LnNlbGVjdGVkUkNzLCAnaXRlbV9pZCcpLnRvU3RyaW5nKClcclxuICAgICAgICA6ICcnLFxyXG4gICAgICByaXNrX2NsYXNzOiBwb2xpY3kucmlza1JhdGluZy50b1N0cmluZygpLFxyXG5cclxuICAgICAgQ0NGYWlsRW1haWw6IHBvbGljeS5hZGRPdmVyc2VlcnNcclxuICAgICAgICA/IHRoaXMucmV0dXJuSWRzKHBvbGljeS5DQ0ZhaWxFbWFpbCwgJ2VtcGxveWVlX2VtYWlsJykudG9TdHJpbmcoKVxyXG4gICAgICAgIDogJycsXHJcbiAgICAgIENDRW1haWw6IHBvbGljeS5hZGRPdmVyc2VlcnNcclxuICAgICAgICA/IHRoaXMucmV0dXJuSWRzKHBvbGljeS5DQ0VtYWlsLCAnZW1wbG95ZWVfZW1haWwnKS50b1N0cmluZygpXHJcbiAgICAgICAgOiAnJyxcclxuXHJcbiAgICAgIGNoZWNrcG9pbnREZXRhaWxzOiBwb2xpY3kuY2hlY2twb2ludERldGFpbHMgPz8gW10sXHJcbiAgICAgIHRvdGFsUXVlc3Rpb246IHBvbGljeS50b3RhbFF1ZXN0aW9uID8gcG9saWN5LnRvdGFsUXVlc3Rpb24gOiAwLCAvL1xyXG4gICAgICBwYXNzaW5nTWFya3M6IHBvbGljeS5wYXNzaW5nTWFya3MgPyBwb2xpY3kucGFzc2luZ01hcmtzIDogMCwgLy9cclxuXHJcbiAgICAgIHBvbGljeUFwcHJvdmFsRmxhZzogMCxcclxuXHJcbiAgICAgIGlzX3NpZ25hdHVyZV9yZXF1aXJlZDogcG9saWN5LnJlcXVpcmVzU2lnbmF0dXJlRm9yQXR0ZXN0YXRpb24gPyAxIDogMCxcclxuICAgICAgY2NfdXNlcmdyb3VwX2lkczogdGhpcy5jY0VtYWlsT2JqSWRzLFxyXG4gICAgICBjY19mYWlsX3VzZXJncm91cF9pZHM6IHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMsXHJcbiAgICAgIHJldmlld2VyX3N0YXJ0X2RhdGU6IHBvbGljeS5yZXZpZXdlcl9zdGFydF9kYXRlID8/ICcnLFxyXG4gICAgICBhc3NpZ25lZV9zdGFydF9kYXRlOiBwb2xpY3kuYXNzaWduZWVfc3RhcnRfZGF0ZSxcclxuICAgICAgcG9saWN5X3ZlcnNpb246IHBvbGljeS5hZGRWZXJzaW9uID8gcG9saWN5LnBvbGljeV92ZXJzaW9uIDogJycsXHJcbiAgICAgIGFzc2Vzc21lbnQ6IHBvbGljeS5hZGRMaW5rQXNzZXNzbWVudFxyXG4gICAgICAgID8gcG9saWN5LmFzc2Vzc21lbnQubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGFzc2Vzc21lbnRfaWQ6IGVsZS5hc3Nlc3NtZW50X2lkLFxyXG4gICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiBlbGUuY2F0ZWdvcnlfaWQsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIHBvbGljeV9vd25lcnM6IHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfb3duZXJzLm1hcChcclxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZS5tZW1iZXJfaWRcclxuICAgICAgKSxcclxuICAgICAgYXBwcm92YWxfd29ya2Zsb3dfaWQ6IHBvbGljeT8uc2VsZWN0ZWRBcHByb3ZlcnNbMF0/Ll9pZFxyXG4gICAgICAgID8gW3BvbGljeT8uc2VsZWN0ZWRBcHByb3ZlcnNbMF0/Ll9pZF1cclxuICAgICAgICA6IFtdLFxyXG4gICAgICBsaW5rUHJvZ3JhbTogT2JqZWN0LmtleXMocG9saWN5Py5saW5rUHJvZ3JhbSkubGVuZ3RoXHJcbiAgICAgICAgPyBwb2xpY3k/LmxpbmtQcm9ncmFtXHJcbiAgICAgICAgOiB7XHJcbiAgICAgICAgICAgIGFkZGVkOiBbXSxcclxuICAgICAgICAgICAgcmVtb3ZlZDogW10sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICBidXNpbmVzc19jeWNsZTogT2JqZWN0LmtleXMocG9saWN5Py5saW5rUHJvZ3JhbSkubGVuZ3RoXHJcbiAgICAgICAgPyBwb2xpY3k/LmJ1c2luZXNzQ3ljbGVcclxuICAgICAgICA6IHVuZGVmaW5lZCxcclxuICAgICAgcG9saWN5X2FjY2Vzc190eXBlOiBwb2xpY3kucG9saWN5X2FjY2Vzc190eXBlID8/IDAsXHJcbiAgICAgIHBvbGljeV9hY2Nlc3Nfb3duZXJzOiBwb2xpY3kuYXZhaWxhYmxlT25Qb3J0YWxcclxuICAgICAgICA/IFtdXHJcbiAgICAgICAgOiBwb2xpY3lBY2Nlc3NVc2Vyc0lkcyA/PyBbXSxcclxuICAgICAgcG9saWN5X2FjY2Vzc19ncm91cHM6IHBvbGljeS5hdmFpbGFibGVPblBvcnRhbFxyXG4gICAgICAgID8gW11cclxuICAgICAgICA6IHBvbGljeUFjY2Vzc0dyb3Vwc0lkcyA/PyBbXSxcclxuICAgICAgZGlzcGxheU9uUG9ydGFsOiBwb2xpY3kuaXNQb3J0YWxEaXNwbGF5RW5hYmxlZCA/PyBmYWxzZSxcclxuICAgICAgbGlua2VkUG9saWNpZXM6IFsuLi5uZXcgU2V0KHBvbGljeS5MaW5rZWRQb2xpY2llcyldLFxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0NSRUFURScpIHtcclxuICAgICAgdGhpcy5wb2xpY3lTZXJ2aWNlLnN1Ym1pdFBvbGljeShwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucG9saWN5SWQgPSByZXMuX2lkO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29udmVydEZpbGVEYXRhPy5maWxlTmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubGlua0RvY3VtZW50V2l0aFBvbGljeSh0aGlzLmNvbnZlcnRGaWxlRGF0YSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xyXG4gICAgICAgICAgdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gdHJ1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcclxuICAgICAgICAgICAgJ2FsZXJ0J1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdFRElUJykge1xyXG4gICAgICBpZiAodGhpcy5wb2xpY3lBcHByb3ZhbEZsYWcgIT09IDApIHtcclxuICAgICAgICBkZWxldGUgcGF5bG9hZC5hcHByb3ZlcnM7XHJcbiAgICAgICAgcGF5bG9hZC5wb2xpY3lBcHByb3ZhbEZsYWcgPSAyO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS51cGRhdGVQb2xpY3kocGF5bG9hZCwgdGhpcy5wb2xpY3lJZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUlkID0gcmVzLl9pZDtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5uYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VuZEZvckF0dGVzdGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgICAgICAgJ1RoZSBwb2xpY3kgaGFzIGJlZW4gc2VudCBmb3IgYXR0ZXN0YXRpb24nLFxyXG4gICAgICAgICAgICAgICAgJ3N1Y2Nlc3MnXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ1RoZSBwb2xpY3kgaGFzIGJlZW4gdXBkYXRlZCcsICdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPVxyXG4gICAgICAgICAgICAgIHRoaXMuYmFzZVVSTCArICcvYWxsL3BvbGljeS93b3Jrcm9vbT9pZD0nICsgdGhpcy5wb2xpY3lJZDtcclxuICAgICAgICAgICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcG9saWN5L3dvcmtyb29tJ10sIHsgcXVlcnlQYXJhbXM6IHsgaWQ6IHRoaXMucG9saWN5SWQgfSwgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgICAgICAgICAgLy8gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAgICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLFxyXG4gICAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxpbmtEb2N1bWVudFdpdGhQb2xpY3koZG9jdW1lbnQ6IGFueSkge1xyXG4gICAgaWYgKFxyXG4gICAgICBkb2N1bWVudC5maWxlTmFtZSAmJlxyXG4gICAgICAoZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ3BkZicgfHxcclxuICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnUERGJyB8fFxyXG4gICAgICAgIGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdkb2N4JyB8fFxyXG4gICAgICAgIGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdET0NYJylcclxuICAgICkge1xyXG4gICAgICB0aGlzLnBvbGljeVNlcnZpY2VcclxuICAgICAgICAuZXh0cmFjdEZpbGUoZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiwgZG9jdW1lbnQuZmlsZVBhdGgsIHRoaXMucG9saWN5SWQpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5tZXNzYWdlID09PSAnZG9uZScgfHwgcmVzLmNvbnRlbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdkb2N4JyB8fFxyXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnRE9DWCdcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wb2xpY3kvZWRpdC1wb2xpY3knXSwge1xyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGlkOiB0aGlzLnBvbGljeUlkIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAncGRmJyB8fFxyXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnUERGJ1xyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3BvbGljeS93b3Jrcm9vbSddLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgaWQ6IHRoaXMucG9saWN5SWQgfSxcclxuICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAgICAgXCJPb3BzISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgd2Ugd2VyZSB1bmFibGUgdG8gY29tcGxldGUgdGhpcyBhY3Rpb24uIExldCdzIGdpdmUgaXQgYW5vdGhlciB0cnksIHNoYWxsIHdlP1wiLFxyXG4gICAgICAgICAgICAgICdhbGVydCdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgIFwiT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHdlIHdlcmUgdW5hYmxlIHRvIGNvbXBsZXRlIHRoaXMgYWN0aW9uLiBMZXQncyBnaXZlIGl0IGFub3RoZXIgdHJ5LCBzaGFsbCB3ZT9cIixcclxuICAgICAgICAnYWxlcnQnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBvcGVucyB0aGUgZGF0ZSBwaWNrZXIgb24gcG9saWN5IGZvcm1cclxuICAgKi9cclxuICBvcGVuRGF0ZVBpY2tlcigpIHtcclxuICAgIHRoaXMuZGF0ZVBpY2tlcj8uYXBpPy5vcGVuKCk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZTtcclxuICAgIC8vIHRoaXMuc2V0QWN0aXZlRmllbGRTZWxlY3RvcignSVNTVUVfREFURV9USU1FJywgJ0lTU1VFX0RBVEVfVElNRScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogY2xvc2VzIHRoZSBkYXRlIHBpY2tlciBmcm9tIHBvbGljeSBmb3JtXHJcbiAgICovXHJcbiAgY2xvc2VEYXRlUGlja2VyKGV2dDogYW55KSB7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKCFldnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2dD8uZGF0ZT8uJGQpIHtcclxuICAgICAgbGV0IG1vbnRoQXJyYXkgPSBbXHJcbiAgICAgICAgJ0phbicsXHJcbiAgICAgICAgJ0ZlYicsXHJcbiAgICAgICAgJ01hcicsXHJcbiAgICAgICAgJ0FwcicsXHJcbiAgICAgICAgJ0p1bicsXHJcbiAgICAgICAgJ0p1bCcsXHJcbiAgICAgICAgJ0F1ZycsXHJcbiAgICAgICAgJ1NlcCcsXHJcbiAgICAgICAgJ09jdCcsXHJcbiAgICAgICAgJ05vdicsXHJcbiAgICAgICAgJ0RlYycsXHJcbiAgICAgIF07XHJcbiAgICAgIGNvbnN0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldERhdGUoKTtcclxuICAgICAgY29uc3QgbW9udGhWYWx1ZSA9IG1vbnRoQXJyYXlbbmV3IERhdGUoZXZ0Py5kYXRlPy4kZCkuZ2V0TW9udGgoKV07XHJcbiAgICAgIGNvbnN0IHllYXJWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSBgJHtkYXRlVmFsdWV9ICR7bW9udGhWYWx1ZX0gJHt5ZWFyVmFsdWV9YDtcclxuICAgIH1cclxuICAgIGlmIChldnQ/LmRhdGU/LiRkKSB7XHJcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lEdWVEYXRlID0gZXZ0Py5kYXRlPy4kZDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVBpY2tlcj8uYXBpPy5jbG9zZSgpO1xyXG4gIH1cclxuICBlZGl0UG9saWN5RnJvbURvY3VtZW50cygpIHtcclxuICAgIHRoaXMubW9kZSA9ICdFRElUJztcclxuICAgIHRoaXMuc2hpZnRUb0VkaXRNb2RlLmVtaXQoKTtcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICAgIHRoaXMuc2hvd0NyZWF0ZURvY3VtZW50cyA9IGZhbHNlO1xyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLmVkaXRQb2xpY3koKTtcclxuICB9XHJcblxyXG4gIGNoZWNrRm9yQ3JlYXRlRG9jdW1lbnRzKCkge1xyXG4gICAgY29uc3QgZGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzaG93Q3JlYXRlRG9jdW1lbnRzJyk7XHJcbiAgICB0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uID0gZGF0YSA9PT0gJ3RydWUnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMubmF2aWdhdGVUb0RvY3VtZW50c1NlY3Rpb24pIHtcclxuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XHJcbiAgICAgIHRoaXMuc2hvd0NyZWF0ZURvY3VtZW50cyA9IHRydWU7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdzaG93Q3JlYXRlRG9jdW1lbnRzJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlZGl0UG9saWN5KCkge1xyXG4gICAgdGhpcy5tb2RlID0gJ0VESVQnO1xyXG5cclxuICAgIGlmICh0aGlzLnBvbGljeUlkKSB7XHJcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS5lZGl0UG9saWN5KHRoaXMucG9saWN5SWQpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXNbMF07XHJcbiAgICAgICAgICBjb25zdCBjYXRlZ29yeUlkcyA9IGRhdGEuY2F0ZWdvcnlfZGV0YWlsc19hcnIubWFwKFxyXG4gICAgICAgICAgICAoaWQ6IGFueSkgPT4gaWQuY2F0T2JqSWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnBvbGljeUFwcHJvdmFsRmxhZyA9IGRhdGEucG9saWN5QXBwcm92YWxGbGFnO1xyXG4gICAgICAgICAgdGhpcy5hcHByb3ZhbFdvcmtmbG93SWRzID0gZGF0YT8uYXBwcm92YWxXb3JrZmxvd0RldGFpbHM/Lm1hcChcclxuICAgICAgICAgICAgKHdvcmtmbG93OiBhbnkpID0+IHdvcmtmbG93Py5faWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3cgPSBbXTtcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdEVkaXRBcHByb3ZlcnMgPSBkYXRhPy5hcHByb3ZlcnM7XHJcbiAgICAgICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3coY2F0ZWdvcnlJZHMsIGRhdGEpO1xyXG4gICAgICAgICAgdGhpcy5nZXRMaW5rZWRQb2xpY2llcyhkYXRhPy5wb2xpY3lfaWQpO1xyXG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZVBvbGljeUZvcm0oZGF0YSwgY2F0ZWdvcnlJZHMpO1xyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhUG9wdWxhdGlvbihkYXRhKTtcclxuICAgICAgICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEYXRhUG9wdWxhdGlvbihkYXRhKTtcclxuICAgICAgICAgIHRoaXMucG9wdWxhdGVQb2xpY3lBY2Nlc3NEZXRhaWxzKGRhdGEpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZVBvbGljeUZvcm0oZGF0YTogYW55LCBjYXRlZ29yeUlkczogYW55KSB7XHJcbiAgICBjb25zdCByZXZpZXdlckZpbGVzID0gZGF0YS5SZXZpZXdlckF0dGFjaG1lbnRzLm1hcCgoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgIGZpbGUuZmlsZW5hbWUgPSBmaWxlLm5hbWU7XHJcbiAgICAgIGZpbGUuZmlsZXBhdGggPSBmaWxlLmZpbGVfcGF0aDtcclxuICAgICAgZmlsZS5vcmlnaW5hbF9maWxlbmFtZSA9IGZpbGUub3JnX25hbWU7XHJcbiAgICAgIGZpbGUuZmlsZV9uYW1lID0gZmlsZS5vcmdfbmFtZTtcclxuICAgICAgZmlsZS5saW5rU2V0ID0gJyc7XHJcbiAgICAgIGRlbGV0ZSBmaWxlLm5hbWU7XHJcbiAgICAgIGRlbGV0ZSBmaWxlLmZpbGVfcGF0aDtcclxuICAgICAgZGVsZXRlIGZpbGUub3JnX25hbWU7XHJcblxyXG4gICAgICByZXR1cm4gZmlsZTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgYXR0ZXN0YXRpb25GaWxlcyA9IGRhdGEuYXNzb2NpYXRlZF9kb2N1bWVudHMubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICBlbGUuZmlsZW5hbWUgPSBlbGUubmFtZTtcclxuICAgICAgZWxlLmZpbGVwYXRoID0gZWxlLmZpbGVfcGF0aDtcclxuICAgICAgZWxlLm9yaWdpbmFsX2ZpbGVuYW1lID0gZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZTtcclxuICAgICAgZWxlLmZpbGVfbmFtZSA9IGVsZS5vcmlnaW5hbF9maWxlX25hbWU7XHJcbiAgICAgIGVsZS5saW5rU2V0ID0gZWxlLmlzTGlua1NldDtcclxuICAgICAgZWxlLm90aGVycyA9IGVsZT8ub3RoZXJfdHlwZTtcclxuXHJcbiAgICAgIGRlbGV0ZSBlbGUubmFtZTtcclxuICAgICAgZGVsZXRlIGVsZS5maWxlX3BhdGg7XHJcbiAgICAgIGRlbGV0ZSBlbGUub3JpZ2luYWxfZmlsZV9uYW1lO1xyXG4gICAgICBkZWxldGUgZWxlLmlzTGlua1NldDtcclxuICAgICAgZGVsZXRlIGVsZT8ub3RoZXJfdHlwZTtcclxuICAgICAgcmV0dXJuIGVsZTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgZ3JvdXBfZW1wbG95ZWVJZHMgPSBkYXRhLmdyb3VwX2VtcGxveWVlTmFtZXMubWFwKFxyXG4gICAgICAoaWQ6IGFueSkgPT4gaWQ/LmVtcGxveWVlX2lkXHJcbiAgICApO1xyXG4gICAgY29uc3QgZ3JvdXBfSWRzID0gZGF0YT8udXNlcmdyb3VwX2lkcz8ubWFwKChpZDogYW55KSA9PiBpZCkgPz8gW107XHJcblxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgdGhpcy5jYXRlZ29yeUxpc3QsXHJcbiAgICAgIGNhdGVnb3J5SWRzLFxyXG4gICAgICAnX2lkJ1xyXG4gICAgKTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfaWQgPSBkYXRhPy5wb2xpY3lfaWQ7XHJcbiAgICAodGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWUgPSBkYXRhLnBvbGljeV9uYW1lKSxcclxuICAgICAgKHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOb3RlcyA9IGRhdGEubm90ZXMpLFxyXG4gICAgICAodGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MgPSBkYXRhLmN1c3RvbV90YWdzID8gZGF0YS5jdXN0b21fdGFncyA6IFtdKTtcclxuXHJcbiAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMgPVxyXG4gICAgICBncm91cF9lbXBsb3llZUlkcy5sZW5ndGggPiAwXHJcbiAgICAgICAgPyB0aGlzLnNldExpc3QodGhpcy5hc3NpZ25lZXNMaXN0LCBncm91cF9lbXBsb3llZUlkcywgJ215X21lbWJlcl9pZCcpXHJcbiAgICAgICAgOiBbXTsgLy9kb3VidCBpbiBuYW1lXHJcblxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZSA9XHJcbiAgICAgIGdyb3VwX0lkcz8ubGVuZ3RoID4gMFxyXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LCBncm91cF9JZHMsICdfaWQnKVxyXG4gICAgICAgIDogW107XHJcblxyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzID0gZGF0YS5lbnRpdGllc1xyXG4gICAgICA/IHRoaXMuc2V0TGlzdCh0aGlzLnJjTGlzdCwgZGF0YS5lbnRpdGllcy5zcGxpdCgnLCcpLCAnaXRlbV9pZCcpXHJcbiAgICAgIDogW107XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwgPSBkYXRhLkNDRmFpbEVtYWlsXHJcbiAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMub3ZlcnNlZXJzTGlzdCwgZGF0YS5DQ0ZhaWxFbWFpbCwgJ2VtcGxveWVlX2VtYWlsJylcclxuICAgICAgOiBbXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbEdyb3VwID1cclxuICAgICAgZGF0YT8uY2NfZmFpbF91c2VyZ3JvdXBfaWRzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgPyB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LFxyXG4gICAgICAgICAgICBkYXRhPy5jY19mYWlsX3VzZXJncm91cF9pZHMsXHJcbiAgICAgICAgICAgICdfaWQnXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgOiBbXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsID0gZGF0YS5DQ0VtYWlsXHJcbiAgICAgID8gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0LFxyXG4gICAgICAgICAgZGF0YS5DQ0VtYWlsLnNwbGl0KCcsJyksXHJcbiAgICAgICAgICAnZW1wbG95ZWVfZW1haWwnXHJcbiAgICAgICAgKVxyXG4gICAgICA6IFtdO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLkNDR3JvdXBFbWFpbCA9XHJcbiAgICAgIGRhdGE/LmNjX3VzZXJncm91cF9pZHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICA/IHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCwgZGF0YT8uY2NfdXNlcmdyb3VwX2lkcywgJ19pZCcpXHJcbiAgICAgICAgOiBbXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hdmFpbGFibGVPblBvcnRhbCA9IGRhdGEuZW5hYmxlUG9ydGFsID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmFjY2VwdFN1Z2dlc3Rpb25zID0gZGF0YS5lbmFibGVTdWdnZXN0aW9uID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJlcXVpcmVzU2lnbmF0dXJlRm9yQXR0ZXN0YXRpb24gPSBkYXRhLmlzX3NpZ25hdHVyZV9yZXF1aXJlZFxyXG4gICAgICA/IHRydWVcclxuICAgICAgOiBmYWxzZTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5yaXNrUmF0aW5nID0gZGF0YS5yaXNrX2NsYXNzID8gTnVtYmVyKGRhdGEucmlza19jbGFzcykgOiAxO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmFzc29jaWF0ZWREb2N1bWVudHMgPSBkYXRhLmFzc29jaWF0ZWRfZG9jdW1lbnRzXHJcbiAgICAgID8ge1xyXG4gICAgICAgICAgZm9ybWF0RmlsZXM6IGF0dGVzdGF0aW9uRmlsZXMsXHJcbiAgICAgICAgfVxyXG4gICAgICA6IHsgZm9ybWF0RmlsZXM6IFtdIH07XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5RHVlRGF0ZSA9IGRhdGEuc3RhcnREYXRlXHJcbiAgICAgID8gbW9tZW50KGRhdGEuc3RhcnREYXRlKVxyXG4gICAgICA6IG1vbWVudCgpO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmNoZWNrcG9pbnREZXRhaWxzID0gZGF0YS5jaGVja3BvaW50c1xyXG4gICAgICA/IGRhdGEuY2hlY2twb2ludHNcclxuICAgICAgOiBbXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS50b3RhbFF1ZXN0aW9uID0gZGF0YS50b3RhbF9tYXJrcyA/IGRhdGEudG90YWxfbWFya3MgOiAwO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnBhc3NpbmdNYXJrcyA9IGRhdGEucGFzc19tYXJrcyA/IGRhdGEucGFzc19tYXJrcyA6IDA7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uZG9jdW1lbnRzQW5kTGlua3MgPSBkYXRhLlJldmlld2VyQXR0YWNobWVudHNcclxuICAgICAgPyB7XHJcbiAgICAgICAgICBmb3JtYXRGaWxlczogcmV2aWV3ZXJGaWxlcyxcclxuICAgICAgICAgIGZvcm1hdExpbmtzOiBkYXRhLlJldmlld2VyTGlua3MsXHJcbiAgICAgICAgfVxyXG4gICAgICA6IHsgZm9ybWF0RmlsZXM6IFtdLCBmb3JtYXRMaW5rczogW10gfTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRSZXNwb25zaWJpbGl0eUNlbnRlcnMgPVxyXG4gICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3MubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRSZXZpZXdlcnMgPSBkYXRhLlJldmlld2VyTWVtYmVySWQgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkQ2hlY2twb2ludHMgPVxyXG4gICAgICB0aGlzLnBvbGljeUZvcm0uY2hlY2twb2ludERldGFpbHMubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRPdmVyc2VlcnMgPVxyXG4gICAgICB0aGlzLnBvbGljeUZvcm0/LkNDRmFpbEVtYWlsPy5sZW5ndGggPiAwIHx8XHJcbiAgICAgIHRoaXMucG9saWN5Rm9ybT8uQ0NFbWFpbD8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICB0aGlzLnBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXA/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWw/Lmxlbmd0aCA+IDBcclxuICAgICAgICA/IHRydWVcclxuICAgICAgICA6IGZhbHNlO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmFkZEFzc29jaWF0ZWREb2N1bWVudHMgPVxyXG4gICAgICBkYXRhLmFzc29jaWF0ZWRfZG9jdW1lbnRzLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLmNjRW1haWxPYmpJZHMgPVxyXG4gICAgICBkYXRhPy5jY191c2VyZ3JvdXBfaWRzPy5sZW5ndGggPiAwID8gZGF0YT8uY2NfdXNlcmdyb3VwX2lkcyA6IFtdO1xyXG4gICAgdGhpcy5jY0ZhaWxHcm91cE9iaklkcyA9XHJcbiAgICAgIGRhdGE/LmNjX2ZhaWxfdXNlcmdyb3VwX2lkcz8ubGVuZ3RoID4gMFxyXG4gICAgICAgID8gZGF0YT8uY2NfZmFpbF91c2VyZ3JvdXBfaWRzXHJcbiAgICAgICAgOiBbXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hc3Nlc3NtZW50ID0gZGF0YT8uYXNzZXNzbWVudCA/PyBbXTtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRMaW5rQXNzZXNzbWVudCA9IGRhdGE/LmFzc2Vzc21lbnQ/Lmxlbmd0aDtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRWZXJzaW9uID0gZGF0YT8ucG9saWN5X3ZlcnNpb24gPyB0cnVlIDogZmFsc2U7XHJcbiAgICAvLyB0aGlzLmNoZWNrRm9yQ3JlYXRlRG9jdW1lbnRzKCk7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X3ZlcnNpb24gPSBkYXRhLnBvbGljeV92ZXJzaW9uO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnByb2dyYW1TZWxlY3RlZFZhbHVlcy5wcm9ncmFtID1cclxuICAgICAgZGF0YT8ucHJvZ3JhbUNhdERldGFpbHMgJiYgZGF0YT8ucHJvZ3JhbUNhdERldGFpbHM/Lmxlbmd0aFxyXG4gICAgICAgID8gZGF0YT8ucHJvZ3JhbUNhdERldGFpbHNbMF1cclxuICAgICAgICA6IHt9O1xyXG4gICAgdGhpcy5zZWxlY3RlZExpbmtQcm9ncmFtID1cclxuICAgICAgZGF0YT8ucHJvZ3JhbUNhdERldGFpbHMgJiYgZGF0YT8ucHJvZ3JhbUNhdERldGFpbHM/Lmxlbmd0aFxyXG4gICAgICAgID8gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhPy5wcm9ncmFtQ2F0RGV0YWlsc1swXSkpXHJcbiAgICAgICAgOiB7fTtcclxuICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICB9XHJcbiAgY2hhbmdlTmFtZShldmVudDogc3RyaW5nKSB7XHJcbiAgICBsZXQgdGV4dCA9IGV2ZW50O1xyXG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvPCguKj8pPi9naSwgJycpO1xyXG4gICAgcmV0dXJuIHRleHQ7XHJcbiAgfVxyXG5cclxuICB0eXBlU2VsZWN0ZWQoZXZlbnQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRSZXZpZXdlcnMgPSBldmVudDtcclxuICB9XHJcbiAgb25WZXJzaW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IHJlZ2V4TWF0Y2ggPSBuZXcgUmVnRXhwKCdeW0EtWmEtejAtOVxcXFwuLV0qJCcpO1xyXG4gICAgdGhpcy5pc1ZlcnNpb25WYWxpZCA9IHJlZ2V4TWF0Y2gudGVzdCh0aGlzLnBvbGljeUZvcm0ucG9saWN5X3ZlcnNpb24pO1xyXG4gICAgaWYgKCF0aGlzLmlzVmVyc2lvblZhbGlkKSB7XHJcbiAgICAgIGlmICh0aGlzLnBvbGljeUZvcm0ucG9saWN5X3ZlcnNpb24/Lmxlbmd0aCA+IDIwKSB7XHJcbiAgICAgICAgdGhpcy52ZXJzaW9uRXJyb3JNZXNzYWdlID1cclxuICAgICAgICAgICdZb3VyIGlucHV0IGlzIGludmFsaWQuIFRoZSB2ZXJzaW9uIGZpZWxkIGNhbiBvbmx5IGluY2x1ZGUgbnVtYmVycywgYWxwaGFiZXRzLCBoeXBoZW4gb3IgZG90cy4gVGhlIG1heGltdW0gY2hhcmFjdGVyIGxpbWl0IGlzIDIwIGNoYXJhY3RlcnMuJztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5pc1ZlcnNpb25WYWxpZCAmJlxyXG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X3ZlcnNpb24/Lmxlbmd0aCA+IDIwXHJcbiAgICApIHtcclxuICAgICAgdGhpcy52ZXJzaW9uRXJyb3JNZXNzYWdlID1cclxuICAgICAgICAnWW91ciBpbnB1dCBpcyBpbnZhbGlkLiBUaGUgbWF4aW11bSBjaGFyYWN0ZXIgbGltaXQgaXMgMjAgY2hhcmFjdGVycy4nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy90aGlzIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIHdoZW4gd2UgY2xpY2sgb24gZGl2IHNlbGVjdFxyXG4gIGNsaWNrQXBwcm92YWxXb3JrZmxvdyhldmVudDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gZXZlbnQ7XHJcbiAgICB0aGlzLmNyZWF0ZUFwcHJvdmFsQ2xpY2sgPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignYXBwcm92ZXJzJywgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBsaXN0Q2FuY2VsQ2xpY2tlZChldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XHJcbiAgICAgIC8vIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdGVkQXBwcm92YWxXb3JrZmxvdyhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3cgPSBbZXZlbnRdO1xyXG4gICAgdGhpcy5hcHByb3ZhbFdvcmtmbG93SWRzID0gZXZlbnQ/Ll9pZCA/IFtldmVudD8uX2lkXSA6IFtdO1xyXG4gICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gZmFsc2U7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSBbZXZlbnRdO1xyXG4gICAgdGhpcy5kaXNhYmxlU2VsZWN0b3IoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZWRQcm9ncmFtRGV0YWlscyhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ubGlua1Byb2dyYW0gPSBldmVudD8ubGlua1Byb2dyYW07XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ucHJvZ3JhbVNlbGVjdGVkVmFsdWVzID0gZXZlbnQ/LnNlbGVjdGVkVmFsdWVzO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmJ1c2luZXNzQ3ljbGUgPSBldmVudD8uYnVzaW5lc3NDeWNsZTtcclxuICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XHJcbiAgfVxyXG5cclxuICBvbkFzc2Vzc21lbnRTZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmFzc2Vzc21lbnQgPSBbZXZlbnRdO1xyXG4gIH1cclxuICBnZXRBc3Nlc3NtZW50RGV0YWlscyhhc3Nlc3NtZW50RGV0YWlsczogYW55LCB0eXBlPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZVxyXG4gICAgICAuZ2V0QXNzZXNzbWVudERldGFpbHNCeUlEKGFzc2Vzc21lbnREZXRhaWxzLmFzc2Vzc21lbnRfaWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgY2F0ZWdvcnlEZXRhaWxzID0gcmVzWzBdLmNhdGVnb3J5LmZpbmQoXHJcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlLl9pZCA9PSBhc3Nlc3NtZW50RGV0YWlscy5jYXRlZ29yeV9pZFxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uYXNzZXNzbWVudCA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiBhc3Nlc3NtZW50RGV0YWlscy5jYXRlZ29yeV9pZCxcclxuICAgICAgICAgICAgICBhc3Nlc3NtZW50X2lkOiBhc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkLFxyXG4gICAgICAgICAgICAgIGFzc2Vzc21lbnREZXRhaWxzOiB7XHJcbiAgICAgICAgICAgICAgICBpZDogYXNzZXNzbWVudERldGFpbHMuYXNzZXNzbWVudF9pZCxcclxuICAgICAgICAgICAgICAgIGFzc2Vzc21lbnRfbmFtZTogcmVzWzBdLmFzc2Vzc21lbnRfbmFtZSxcclxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uczogcmVzWzBdLnF1ZXN0aW9uc0NvdW50LFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnlfZGV0YWlsczogY2F0ZWdvcnlEZXRhaWxzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0T3duZXJzT25Mb2FkKCkge1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9vd25lcnMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgIHRoaXMuYWxsQXBwcm92ZXJzLFxyXG4gICAgICBbdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpXSxcclxuICAgICAgJ21lbWJlcl9pZCdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhcHByb3ZhbFdvcmtmbG93QVBJQ2FsbChldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgY29uc3Qgb2JqZWN0SWRzID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcyxcclxuICAgICAgICAnX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3cob2JqZWN0SWRzKTtcclxuICAgICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnZlcnRBcHByb3ZhbFdvcmtmbG93KGFwcHJvdmVyTGlzdDogYW55KSB7XHJcbiAgICBsZXQgcmV0dXJuSnNvbjogYW55ID0ge307XHJcbiAgICBjb25zdCBtb2RpZmllZERhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGFwcHJvdmVyTGlzdCkpO1xyXG4gICAgbW9kaWZpZWREYXRhPy5mb3JFYWNoKCh3b3JrZmxvdzogYW55KSA9PiB7XHJcbiAgICAgIHdvcmtmbG93Py5hcHByb3ZhbF93b3JrZmxvdz8uZm9yRWFjaCgoYXBwcm92ZXI6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGxldCBpID0gaW5kZXggKyAxO1xyXG4gICAgICAgIHJldHVybkpzb25bJ2xldmVsJyArIGldID0gYXBwcm92ZXI7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmV0dXJuSnNvbjtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUxldmVsKGluZGV4OiBhbnkpIHtcclxuICAgIC8vIEFwcHJvdmVyIExldmVsIGRlbGV0ZVxyXG4gICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdPy5hcHByb3ZhbF93b3JrZmxvdy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgZm9yIChcclxuICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgaSA8IHRoaXMuc2VsZWN0ZWRXb3JrZmxvd1swXT8uYXBwcm92YWxfd29ya2Zsb3cubGVuZ3RoO1xyXG4gICAgICBpKytcclxuICAgICkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdLmFwcHJvdmFsX3dvcmtmbG93W2luZGV4XVsnbGV2ZWwxJ10gPT09XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdPy5hcHByb3ZhbF93b3JrZmxvd1tpbmRleF1bJ2FsaWFzX25hbWUnXVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0uYXBwcm92YWxfd29ya2Zsb3dbaW5kZXhdW1xyXG4gICAgICAgICAgJ2FsaWFzX25hbWUnXHJcbiAgICAgICAgXSA9IGBMZXZlbCAke2kgKyAxfWA7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdLmFwcHJvdmFsX3dvcmtmbG93W2luZGV4XVsnbGV2ZWwxJ10gPSBgTGV2ZWwgJHtcclxuICAgICAgICBpICsgMVxyXG4gICAgICB9YDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVkaXRXb3JrZmxvdyhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmVuYWJsZUFwcHJvdmFsV29ya2Zsb3cgPSB0cnVlO1xyXG4gICAgdGhpcy5lZGl0QXBwcm92YWxXb3JrZmxvdyA9IGV2ZW50O1xyXG4gICAgdGhpcy5jcmVhdGVBcHByb3ZhbENsaWNrID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLy9GdW5jdGlvbiByZXNwb25zaWJsZSB3aGVuIHdlIGNsaWNrIG9uIENSRUFURSBBIE5FVyBBUFBST1ZBTCBXT1JLRkxPV1xyXG4gIGNyZWF0ZUFwcHJvdmFsV29ya2Zsb3coKSB7XHJcbiAgICB0aGlzLmVuYWJsZUFwcHJvdmFsV29ya2Zsb3cgPSB0cnVlO1xyXG4gICAgdGhpcy5jcmVhdGVBcHByb3ZhbENsaWNrID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNsb3NlQ2xpY2tlZENyZWF0ZUZvcm0oKSB7XHJcbiAgICB0aGlzLmVuYWJsZUFwcHJvdmFsV29ya2Zsb3cgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XHJcbiAgfVxyXG5cclxuICBlZGl0TGV2ZWxDbGlja2VkKGVkaXRMZXZlbDogYW55LCBpbmRleDogYW55KSB7XHJcbiAgICB0aGlzLmVuYWJsZUFwcHJvdmFsV29ya2Zsb3cgPSB0cnVlO1xyXG4gICAgdGhpcy5lZGl0V29ya2Zsb3dMZXZlbCA9IHtcclxuICAgICAgZWRpdExldmVsOiBlZGl0TGV2ZWwsXHJcbiAgICAgIGluZGV4OiBpbmRleCxcclxuICAgIH07XHJcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0QWNjZXNzRmllbGQoZXZlbnQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9hY2Nlc3NfdHlwZSA9IGV2ZW50O1xyXG4gICAgaWYgKGV2ZW50ID09IDApIHtcclxuICAgICAgLy8gdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9hY2Nlc3Nfb3duZXJzID0gdGhpcy51c2Vyc0FjY2Vzc0xpc3Q7XHJcbiAgICAgIHRoaXMuc2F2ZVNlbGVjdGVkTGlzdCgncG9saWN5QWNjZXNzJywge1xyXG4gICAgICAgIHVzZXJzOiB0aGlzLnVzZXJzQWNjZXNzTGlzdCxcclxuICAgICAgICBncm91cHM6IFtdLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFVzZXJzQWNjZXNzTGlzdEJ5Q2F0ZWdvcnkoY2F0ZWdvcnlEZXRhaWxzOiBhbnkpIHtcclxuICAgIGxldCB1bmlxdWVVc2VyczogYW55ID0gW107XHJcbiAgICBsZXQgdW5pcXVlR3JvdXBzSWQ6IGFueSA9IFtdO1xyXG4gICAgdW5pcXVlVXNlcnMgPSB1bmlxQnkoXHJcbiAgICAgIGNhdGVnb3J5RGV0YWlscz8uYWxsX21hbmFnZXJzPy5jb25jYXQoXHJcbiAgICAgICAgY2F0ZWdvcnlEZXRhaWxzPy5hbGxfYXBwcm92ZXJzLFxyXG4gICAgICAgIGNhdGVnb3J5RGV0YWlscz8uYWxsX2F1dGhvcnNcclxuICAgICAgKSxcclxuICAgICAgJ21lbWJlcl9pZCdcclxuICAgICk7XHJcbiAgICB0aGlzLnVzZXJzQWNjZXNzTGlzdCA9IHVuaXF1ZVVzZXJzO1xyXG4gICAgdGhpcy51c2Vyc0FjY2Vzc0xpc3RJZHMgPSB0aGlzLnJldHVybklkcyh0aGlzLnVzZXJzQWNjZXNzTGlzdCwgJ21lbWJlcl9pZCcpO1xyXG5cclxuICAgIHVuaXF1ZUdyb3Vwc0lkID0gW1xyXG4gICAgICAuLi5uZXcgU2V0KFxyXG4gICAgICAgIGNhdGVnb3J5RGV0YWlscz8uYXV0aG9yX3VzZXJncm91cF9pZHM/LmNvbmNhdChcclxuICAgICAgICAgIGNhdGVnb3J5RGV0YWlscz8ub3duZXJfdXNlcmdyb3VwX2lkc1xyXG4gICAgICAgIClcclxuICAgICAgKSxcclxuICAgIF07XHJcbiAgICB0aGlzLmdyb3Vwc0FjY2Vzc0xpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LFxyXG4gICAgICB1bmlxdWVHcm91cHNJZCxcclxuICAgICAgJ19pZCdcclxuICAgICk7XHJcbiAgICB0aGlzLmdyb3Vwc0FjY2Vzc0xpc3RJZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgdGhpcy5ncm91cHNBY2Nlc3NMaXN0LFxyXG4gICAgICAnZ3JvdXBfaWQnXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVQb2xpY3lBY2Nlc3NEZXRhaWxzKHBvbGljeURldGFpbHM6IGFueSkge1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9hY2Nlc3NfdHlwZSA9IHBvbGljeURldGFpbHM/LnBvbGljeV9hY2Nlc3NfdHlwZTtcclxuICAgIGlmIChwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX293bmVycz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX293bmVycyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICB0aGlzLnVzZXJzTGlzdCxcclxuICAgICAgICBwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX293bmVycyxcclxuICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKHBvbGljeURldGFpbHM/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9hY2Nlc3NfZ3JvdXBzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LFxyXG4gICAgICAgIHBvbGljeURldGFpbHM/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzLFxyXG4gICAgICAgICdfaWQnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldFBvbGljeUFjY2Vzc0RldGFpbHMoKSB7XHJcbiAgICBpZiAodGhpcy5wb2xpY3lGb3JtLnBvbGljeV9hY2Nlc3NfdHlwZSA9PSAwKSB7XHJcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX293bmVycyA9IFtdO1xyXG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc19ncm91cHMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUZyZXF1ZW5jeSgpIHtcclxuICAgIHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscyA9ICcnO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLmZyZXF1ZW5jeV90ZXh0ID0gJyc7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0ubWFya19mYWlsZWRfYWZ0ZXIgPSAwO1xyXG4gICAgdGhpcy5wb2xpY3lGb3JtLnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA9IDA7XHJcbiAgICB0aGlzLnBvbGljeUZvcm0uZmFpbGVkX3RpbWUgPSAnJztcclxuICAgIHRoaXMucG9saWN5Rm9ybS5hc3NpZ25lZV9zdGFydF9kYXRlID0gJyc7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMucGF0dGVybiA9ICcnO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZFRpbWUgPSAnJztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy53aW5kb3cgPSAwO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZCA9IDA7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gJyc7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuc3RhcnREYXRlID0gMDtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zZWxlY3RlZFJlcG9ydCA9IDA7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuZGF0ZU9mTW9kaWZpZWQgPSAwO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAwO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICdIb3cgb2Z0ZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIGF0dGVzdGVkPyc7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgZG9jdW1lbnRDbGljayhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRlUGlja2VyT2JqZWN0ID0ge1xyXG4gICAgICBldmVudDogZXZlbnQsXHJcbiAgICAgIGNsYXNzOiAnZWZmZWN0aXZlLWRhdGUnLFxyXG4gICAgICBwb3B1cDogdGhpcy5kYXRlUGlja2VyUG9wVXAsXHJcbiAgICAgIGNvbXBvbmVudDogdGhpcy5kYXRlUGlja2VyLFxyXG4gICAgICBvdmVybGF5OiB0aGlzLmRhdGVQaWNrZXJPdmVybGF5LFxyXG4gICAgfTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5oYW5kbGVEb2N1bWVudENsaWNrKGRhdGVQaWNrZXJPYmplY3QpO1xyXG4gIH1cclxufVxyXG4iLCI8IS0tIDxwPndvcmtmbG93LXBvbGljeSB3b3JrcyE8L3A+IC0tPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93Q3JlYXRlRG9jdW1lbnRzXCI+XHJcbiAgPGRpdiBjbGFzcz1cIndvcmtmbG93LXBvbGljeVwiPlxyXG4gICAgPCEtLSBQb2xpY3kgTmFtZSAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJwb2xpY3lGb3JtPy5wb2xpY3lOYW1lXCI+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3doYXQuc3ZnXCJcclxuICAgICAgICAgIGFsdD1cIm5hbWVcIlxyXG4gICAgICAgICAgKm5nSWY9XCIhcG9saWN5Rm9ybT8ucG9saWN5TmFtZSB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ25hbWUnXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnBvbGljeU5hbWUgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjaXJjbGVcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXHJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxyXG4gICAgICAgICAgICBjeT1cIjI2XCJcclxuICAgICAgICAgICAgcj1cIjI1XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+XHJcbiAgICAgICAgICAgIFBvbGljeSBOYW1lIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIChrZXlkb3duKT1cImFjdGl2ZVNlbGVjdG9yID0gJ25hbWUnXCJcclxuICAgICAgICAgICAgKGZvY3VzaW4pPVwiYWN0aXZhdGVTZWxlY3RvcignbmFtZScsIHRydWUpXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLnBvbGljeU5hbWUgPT0gJycgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICduYW1lJ1wiXHJcbiAgICAgICAgICAgIChmb2N1c291dCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJywgZmFsc2UpXCJcclxuICAgICAgICAgICAgW25nTW9kZWxdPVwicG9saWN5Rm9ybS5wb2xpY3lOYW1lXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicG9saWN5Rm9ybS5wb2xpY3lOYW1lID0gY2hhbmdlTmFtZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lIHRoaXMgcG9saWN5XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0ucG9saWN5TmFtZS5sZW5ndGggJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57eyBwb2xpY3lGb3JtLnBvbGljeU5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignbmFtZScsIHRydWUpXCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmICFwb2xpY3lGb3JtLnBvbGljeU5hbWUudHJpbSgpXCJcclxuICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgUGxlYXNlIGVudGVyIGEgbmFtZSBmb3IgdGhpcyBwb2xpY3kuXHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICA8dmNvbXBseS1lZGl0b3JcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwb2xpY3lGb3JtLnBvbGljeU5vdGVzXCJcclxuICAgICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJkZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICA+PC92Y29tcGx5LWVkaXRvcj5cclxuICAgICAgICAgIDwhLS0gPGFwcC1jcy1zd2l0Y2hcclxuICAgICAgICAgICAgWyhuZ1ZhbHVlKV09XCJwb2xpY3lGb3JtLmF2YWlsYWJsZU9uUG9ydGFsXCJcclxuICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwiYXZhaWxhYmlsaXR5T25Qb3J0YWwoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIERvIHlvdSB3YW50IHRoaXMgcG9saWN5IHRvIGJlIGF2YWlsYWJsZSBvbiB0aGUgcG9ydGFsP1xyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgJ1RoZSBwb2xpY2llcyB0aGF0IHlvdSBpbnRlbmQgdG8gbWFrZSBhY2Nlc3NpYmxlIHRvIHRoZSBlbnRpcmUgb3JnYW5pemF0aW9uIGNhbiBiZSBhZGRlZCB0byB0aGUgcG9saWN5IHBvcnRhbC4gSXQgaXMgbGlrZSBhIHNoYXJlZCBjYXRhbG9nIG9mIGFsbCBhY3RpdmUgJiB1cGRhdGVkIHBvbGljaWVzIHRoYXQgYW55IGxvZ2dlZCBpbiB1c2VyIGNhbiByZWFkL2Rvd25sb2FkIGZvciByZWZlcmVuY2UuJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgPiYjeGU5MzI7PC9pXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvYXBwLWNzLXN3aXRjaD5cclxuICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybS5hdmFpbGFibGVPblBvcnRhbFwiXHJcbiAgICAgICAgICAgIFsobmdWYWx1ZSldPVwicG9saWN5Rm9ybS5hY2NlcHRTdWdnZXN0aW9uc1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIEFjY2VwdCBzdWdnZXN0aW9uc1xyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgJ0lmIGVuYWJsZWQsIHVzZXJzIGNhbiBwcm92aWRlIGltcHJvdmVtZW50IHN1Z2dlc3Rpb25zIHRvIHRoZSBwb2xpY2llcyB0aGF0IGFyZSBsaXN0ZWQgb24gdGhlIFBvbGljeSBQb3J0YWwuJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgPiYjeGU5MzI7PC9pXHJcbiAgICAgICAgICAgID48L2FwcC1jcy1zd2l0Y2g+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUG9saWN5IENhdGVnb3J5IC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1wiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2F0ZWdvcnknICYmXHJcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImxlZnRcIlxyXG4gICAgICAgIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID4gMFwiXHJcbiAgICAgID5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnY2F0ZWdvcnknXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2NhdGVnb3J5LnN2Z1wiXHJcbiAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxzdmdcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5J1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgICA+UG9saWN5IENhdGVnb3J5IDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NhdGVnb3J5JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGEgY2F0ZWdvcnkgZm9yIHRoaXMgcG9saWN5LlwiXHJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IGNhdGVnb3J5IG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8uc2xpY2UoMCwgMSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnY2F0ZWdvcnknLCBjYXRlZ29yeSlcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjYXRlZ29yeS5pdGVtX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IGNhdGVnb3J5Lml0ZW1fbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjYXRlZ29yeS5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgK3t7IHBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8uc2xpY2UoMSkubGVuZ3RoIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiBbY2xhc3MubW9yZS1vbmVdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGg+MVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnBsdXNdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGg+MlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/LnNsaWNlKDAsMilcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NhdGVnb3J5JyxjYXRlZ29yeSlcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjYXRlZ29yeS5pdGVtX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJjYXRlZ29yeS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPitcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3twb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/LnNsaWNlKDIpLmxlbmd0aH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnY2F0ZWdvcnknXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjYXRlZ29yeScsIHRydWUpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGFwcC1wb3BvdmVyICNjYXRlZ29yeSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNhdGVnb3J5IG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcyB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdjYXRlZ29yeScsIGNhdGVnb3J5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgY2F0ZWdvcnkuaXRlbV9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgPHBcclxuICAgICAgICAgICAgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggPT0gMFwiXHJcbiAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFBsZWFzZSBzZWxlY3QgdGhlIGNhdGVnb3J5IGZvciB0aGlzIHBvbGljeS5cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIiAqbmdJZj1cInBvbGljeUZvcm0/LmN1c3RvbVRhZ3M/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhZyBvZiBwb2xpY3lGb3JtPy5jdXN0b21UYWdzXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtbXQtMlwiPnt7IHRhZy50YWduYW1lIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFnLnZhbHVlXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHRhZy50YWduYW1lIH19XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gRWZmZWN0aXZlIERhdGUgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hlbi5zdmdcIlxyXG4gICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAqbmdJZj1cImZhbHNlXCJcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5FZmZlY3RpdmUgRGF0ZTwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS10aW1lLXBpY2tlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGhlIGVmZmVjdGl2ZSBkYXRlIG9mIHRoZSBwb2xpY3kuXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJwb2xpY3lGb3JtLnBvbGljeUR1ZURhdGUgfCBkYXRlIDogJ2RkIE1NTSB5eXl5J1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBpZD1cImVmZmVjdGl2ZS1kYXRlXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTJkOzwvaT5cclxuICAgICAgICAgICAgICA8ZHAtZGF0ZS1waWNrZXJcclxuICAgICAgICAgICAgICAgICNkYXRlUGlja2VyXHJcbiAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwiZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTsgY2xvc2VEYXRlUGlja2VyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRlQ29uZmlnXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicG9saWN5Rm9ybS5wb2xpY3lEdWVEYXRlXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9kcC1kYXRlLXBpY2tlcj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LW92ZXJsYXlcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlRGF0ZVBpY2tlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0ZVBpY2tlck92ZXJsYXlcIlxyXG4gICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFBvbGljeSBPd25lciAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvd25lcnMnXCJcclxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdvd25lcnMnICYmXHJcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybS5wb2xpY3lfb3duZXJzPy5sZW5ndGhcIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAqbmdJZj1cIiFwb2xpY3lGb3JtLnBvbGljeV9vd25lcnM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvaW0tY3JlYXRpbmcuc3ZnXCJcclxuICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLnBvbGljeV9vd25lcnM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjaXJjbGVcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXHJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxyXG4gICAgICAgICAgICBjeT1cIjI2XCJcclxuICAgICAgICAgICAgcj1cIjI1XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlBPTElDWSBPV05FUihTKTwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCIhcG9saWN5Rm9ybS5wb2xpY3lfb3duZXJzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcignb3duZXJzJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Qm94UGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIj5cclxuICAgICAgICAgICAgICBTZWxlY3Qgb3duZXJzIGZvciB0aGlzIHBvbGljeS5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybS5wb2xpY3lfb3duZXJzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ293bmVycycsIHBvbGljeUZvcm0/LnBvbGljeV9vd25lcnNbMF0sIDApXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicG9saWN5Rm9ybT8ucG9saWN5X293bmVyc1swXT8ubWVtYmVyX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IHBvbGljeUZvcm0/LnBvbGljeV9vd25lcnNbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+XHJcblxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnBvbGljeV9vd25lcnM/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiXHJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInBvbGljeVVzZXJQb3BvdmVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICArIHt7IHBvbGljeUZvcm0/LnBvbGljeV9vd25lcnMubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMSB2eC1tci0xXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAmXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIidTYW1hbnRoYSBKb25lcydcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPlNhbWFudGhhIEpvbmVzPC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInBvbGljeUdyb3VwUG9wb3Zlci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICs0XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3BvbGljeVVzZXJQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvd25lciBvZiBwb2xpY3lGb3JtPy5wb2xpY3lfb3duZXJzIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIm93bmVyPy5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3duZXJzJywgb3duZXIsIGkgKyAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvd25lcj8ubWVtYmVyX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNwb2xpY3lHcm91cFBvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIFsxLCAxLCAxLCAxLCAxLCAxLCAxXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ0hhcnNodmFyZGhhbiBLYXJpd2FsYSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEhhcnNodmFyZGhhbiBLYXJpd2FsYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcignb3duZXJzJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPHBcclxuICAgICAgICAgICAgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgIXBvbGljeUZvcm0/LnBvbGljeV9vd25lcnM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFNlbGVjdCBvd25lcnMgZm9yIHRoaXMgcG9saWN5LlxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUmV2aWV3IC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyJyB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyRnJlcXVlbmN5J1xyXG4gICAgICBcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJyAmJlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXJGcmVxdWVuY3knICYmXHJcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8uYWRkUmV2aWV3ZXJzXCI+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgKm5nSWY9XCIhcG9saWN5Rm9ybT8uYWRkUmV2aWV3ZXJzXCJcclxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9yZXZpZXdlci5zdmdcIlxyXG4gICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LmFkZFJldmlld2Vyc1wiXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjaXJjbGVcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXHJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxyXG4gICAgICAgICAgICBjeT1cIjI2XCJcclxuICAgICAgICAgICAgcj1cIjI1XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UkVWSUVXPC9sYWJlbD5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJyZXZpZXdTZWxlY3Rpb24gdngtcC0zIHZ4LXBiLTBcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiYgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1iLTFcIj5cclxuICAgICAgICAgICAgICBEb2VzIHRoaXMgcG9saWN5IG5lZWQgdG8gYmUgcmV2aWV3ZWQ/XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXHJcbiAgICAgICAgICAgICAgbmFtZT1cInJldmlldy10eXBlXCJcclxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJwb2xpY3lGb3JtPy5hZGRSZXZpZXdlcnNcIlxyXG4gICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwidHlwZVNlbGVjdGVkKHRydWUpXCJcclxuICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTNcIj5cclxuICAgICAgICAgICAgICAgIFlFU1xyXG4gICAgICAgICAgICAgIDwvZGl2PjwvYXBwLWNzLXJhZGlvXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgICAgIG5hbWU9XCJyZXZpZXctdHlwZVwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiIXBvbGljeUZvcm0/LmFkZFJldmlld2Vyc1wiXHJcbiAgICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJ0eXBlU2VsZWN0ZWQoZmFsc2UpXCJcclxuICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTNcIj5cclxuICAgICAgICAgICAgICAgIE5PXHJcbiAgICAgICAgICAgICAgPC9kaXY+PC9hcHAtY3MtcmFkaW9cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvbGljeUZvcm0/LmFkZFJldmlld2Vyc1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LW10LTJcIj5SRVZJRVdFUjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZFJldmlld2Vycz8ubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcidcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJyAmJlxyXG4gICAgICAgICAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCB0cnVlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFBsYWNlaG9kZXIgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC00XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBTZWxlY3QgdGhlIHBlcnNvbiByZXNwb25zaWJsZSBmb3IgcmV2aWV3aW5nIHRoaXMgcG9saWN5XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcidcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJyAmJlxyXG4gICAgICAgICAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmV2aWV3ZXIgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnNcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3Jldmlld2VyJywgcmV2aWV3ZXIpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ1NhbWFudGhhIEpvbmVzJ1wiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7eyByZXZpZXdlcj8ubWVtYmVyX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJ1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtbXQtM1wiPlJFVklFVyBGUkVRVUVOQ1k8L2xhYmVsPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgPT0gJydcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0QnV0dG9uIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyRnJlcXVlbmN5J1wiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXJGcmVxdWVuY3knICYmXHJcbiAgICAgICAgICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlckZyZXF1ZW5jeScsIHRydWUpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0QnV0dG9uUGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIFdoZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkcyB0byBiZSByZXZpZXdlZD9cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXJGcmVxdWVuY3knLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2VcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIFNFVCBBIEZSRVFVRU5DWVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnJldmlld19mcmVxdWVuY3lfZGV0YWlscyAhPSAnJ1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXJGcmVxdWVuY3knICYmXHJcbiAgICAgICAgICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlckZyZXF1ZW5jeSdcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hUZXh0IHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmV2aWV3ZXJGcmVxdWVuY3lQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyByZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyRnJlcXVlbmN5J1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXJGcmVxdWVuY3knLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICBzdWJtaXR0ZWQgJiZcclxuICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkUmV2aWV3ZXJzPy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAhcG9saWN5Rm9ybT8ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBTZWxlY3QgdGhlIHJldmlldyBzY2hlZHVsZSBmb3IgdGhpcyBwb2xpY3kuXHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gTmV3IEFwcHJvdmFsIFdvcmtmbG93IC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2FwcHJvdmVycydcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2FwcHJvdmVycycgJiZcclxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwibGVmdFwiXHJcbiAgICAgICAgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnM/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnYXBwcm92ZXJzJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9hcHByb3ZhbC5zdmdcIlxyXG4gICAgICAgICAgYWx0PVwiaW1cIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxzdmdcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzPy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXBwcm92ZXJzJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCIgW2NsYXNzLmRpc2FibGVkXT1cInBvbGljeUFwcHJvdmFsRmxhZyAhPT0gMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXHJcbiAgICAgICAgICAgICAgPkFQUFJPVkFMIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgY3JlYXRlQXBwcm92YWxXb3JrZmxvdygpOyBhY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjcmVhdGVOZXdCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIENSRUFURSBBIE5FVyBBUFBST1ZBTCBXT1JLRkxPV1xyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIHNlbGVjdGVkV29ya2Zsb3c/Lmxlbmd0aCA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICFzZWxlY3RlZFdvcmtmbG93WzBdPy53b3JrZmxvd19uYW1lXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICBjbGlja0FwcHJvdmFsV29ya2Zsb3codHJ1ZSk7IGFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94RW5hYmxlIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiPlxyXG4gICAgICAgICAgICAgIFNlbGVjdCB0aGUgYXBwcm92YWwgd29ya2Zsb3cgZm9yIHRoaXMgcG9saWN5XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRXb3JrZmxvdz8ubGVuZ3RoID4gMCAmJiBzZWxlY3RlZFdvcmtmbG93WzBdPy53b3JrZmxvd19uYW1lXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtbWItMlwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LW10LTIgdngtbWItMlwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVXb3JrZmxvdygpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwic2VsZWN0ZWRXb3JrZmxvd1swXT8ud29ya2Zsb3dfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgc2VsZWN0ZWRXb3JrZmxvd1swXT8ud29ya2Zsb3dfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0V29ya2Zsb3coc2VsZWN0ZWRXb3JrZmxvd1swXSlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkV29ya2Zsb3c/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgbGV0IGFwcHJvdmFsIG9mIHNlbGVjdGVkV29ya2Zsb3dbMF0/LmFwcHJvdmFsX3dvcmtmbG93O1xyXG4gICAgICAgICAgICAgICAgbGV0IGFwcHJvdmFsSW5kZXggPSBpbmRleFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1tYi0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGV2ZWwtbGVmdCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsZXZlbC1uYW1lIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LWxoLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsPy5hbGlhc19uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhcHByb3ZhbD8uYWxpYXNfbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogYXBwcm92YWw/LmxldmVsMVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsPy5hbGlhc19uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhcHByb3ZhbD8uYWxpYXNfbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogYXBwcm92YWw/LmxldmVsMVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTkgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbGgtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWw/LnR5cGUgPT09IFwiUk9VTkRST0JJTlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIlJPVU5ELVJPQklOXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFwcHJvdmFsPy50eXBlID09PSBcIkFOWU9ORVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIkFOWSBPTkVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogYXBwcm92YWw/LnR5cGVcclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMiB2eC1tbC0yXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICAgID4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWw/LnR5cGU/LnRvTG93ZXJDYXNlKCkgPT09ICdzZXF1ZW50aWFsJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWw/LmFwcHJvdmVycz8ubGVuZ3RoIDwgMlxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3b3JrZmxvd0xhdmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wbC0xIHZ4LXByLTEgdngtbGgtNCB2eC1tci0xIHZ4LXRleHQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IDEgPT0gYXBwcm92YWw/LmFwcHJvdmVycz8ubGVuZ3RoID8gXCJGaW5hbFwiIDogMSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbD8uYXBwcm92ZXJzPy5sZW5ndGggPiAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbD8udHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3NlcXVlbnRpYWwnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndvcmtmbG93TGF2ZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LXBsLTEgdngtcHItMSB2eC1saC00IHZ4LW1yLTEgdngtdGV4dC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgMVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiYXBwcm92YWw/LmFwcHJvdmVyc1swXT8ubWVtYmVyX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgID57eyBhcHByb3ZhbD8uYXBwcm92ZXJzWzBdPy5tZW1iZXJfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFwcHJvdmFsPy5hcHByb3ZlcnM/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ3b3JrZmxvd1BvcG92ZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAre3sgYXBwcm92YWw/LmFwcHJvdmVycz8ubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGFwcC1wb3BvdmVyICN3b3JrZmxvd1BvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcHByb3ZlciBvZiBhcHByb3ZhbD8uYXBwcm92ZXJzIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcHByb3ZhbEluZGV4ID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiYXBwcm92ZXI/Lm1lbWJlcl9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWw/LnR5cGU/LnRvTG93ZXJDYXNlKCkgPT09ICdzZXF1ZW50aWFsJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndvcmtmbG93TGF2ZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LXBsLTEgdngtcHItMSB2eC1saC00IHZ4LW1yLTEgdngtdGV4dC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbEluZGV4ICsgMSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbD8uYXBwcm92ZXJzPy5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiRmluYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhcHByb3ZhbEluZGV4ICsgMlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwcm92ZXI/Lm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJlZGl0TGV2ZWxDbGlja2VkKGFwcHJvdmFsLGFwcHJvdmFsSW5kZXgpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlTGV2ZWwoYXBwcm92YWxJbmRleClcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRlbGV0ZUJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtbWwtNCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTlhZTs8L2k+IERFTEVURVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPHBcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBzdWJtaXR0ZWQgJiZcclxuICAgICAgICAgICAgICAhcG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnNbMF0/LmFwcHJvdmFsX3dvcmtmbG93Py5sZW5ndGggJiZcclxuICAgICAgICAgICAgICAhcG9saWN5QXBwcm92YWxGbGFnICYmXHJcbiAgICAgICAgICAgICAgIXBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzWzBdPy5hcHByb3ZlcnM/Lmxlbmd0aFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBTZWxlY3Qgb3IgY3JlYXRlIGFuIGFwcHJvdmFsIHdvcmtmbG93IGZvciB0aGlzIHBvbGljeS5cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFBvbGljeSBBY2Nlc3MgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwidHJ1ZVwiXHJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncG9saWN5QWNjZXNzJ1wiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncG9saWN5QWNjZXNzJyAmJlxyXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInRydWVcIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAhcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/Lmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAhcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHM/Lmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAhcG9saWN5Rm9ybT8uYXZhaWxhYmxlT25Qb3J0YWxcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvbG9jay1zY29wZS5zdmdcIlxyXG4gICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVycz8ubGVuZ3RoIHx8XHJcbiAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzPy5sZW5ndGggfHxcclxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uYXZhaWxhYmxlT25Qb3J0YWxcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjaXJjbGVcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXHJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxyXG4gICAgICAgICAgICBjeT1cIjI2XCJcclxuICAgICAgICAgICAgcj1cIjI1XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlBPTElDWSBQT1JUQUwgQUNDRVNTPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVycz8ubGVuZ3RoICYmXHJcbiAgICAgICAgICAgICAgIXBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzPy5sZW5ndGggJiZcclxuICAgICAgICAgICAgICAhcG9saWN5Rm9ybT8uYXZhaWxhYmxlT25Qb3J0YWxcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3BvbGljeUFjY2VzcycsIHRydWUpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIXBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdEJveFBsYWNlaG9kZXIgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC00XCI+XHJcbiAgICAgICAgICAgICAgV2hvIHNob3VsZCBiZSBhYmxlIHRvIHZpZXcgdGhpcyBwb2xpY3k/XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwb2xpY3lGb3JtPy5hdmFpbGFibGVPblBvcnRhbFwiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItM1wiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3Nfb3duZXJzPy5sZW5ndGggfHxcclxuICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzPy5sZW5ndGhcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1tdC0yIHZ4LW1iLTJcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3Nfb3duZXJzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX3R5cGUgPT09IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvbGljeUFjY2VzcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnNbMF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3Nfb3duZXJzWzBdPy5lbXBsb3llZV9uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnNbMF0/LmVtcGxveWVlX25hbWVcclxuICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInBvbGljeUFjY2Vzc1BvcG92ZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVycy5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVycy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwcy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICZcclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHMubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX3R5cGUgPT09IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjY2Vzc0dyb3VwJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwc1swXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHNbMF0/Lmdyb3VwX25hbWVcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgID57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwc1swXT8uZ3JvdXBfbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY2Nlc3NHcm91cC5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwcy5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHMubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcG9saWN5QWNjZXNzUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1c2VyIG9mIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3Nfb3duZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJ1c2VyPy5lbXBsb3llZV9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX3R5cGUgPT09IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3BvbGljeUFjY2VzcycsIHVzZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB1c2VyPy5lbXBsb3llZV9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI2FjY2Vzc0dyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgb2YgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc190eXBlID09PSAxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhY2Nlc3NHcm91cCcsIGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy5ncm91cF9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncG9saWN5QWNjZXNzJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInZ4LW10LTQgdngtbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgICAgICAgICBbbmFtZV09XCIncG9saWN5Rm9ybUFjY2Vzc1R5cGUnXCIgW2NoZWNrZWRdPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc190eXBlID09PSAwXCIgKGNoZWNrZWRFdmVudCk9XCJzZXRBY2Nlc3NGaWVsZCgwKVwiXHJcbiAgICAgICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEV2ZXJ5b25lIHdobyBoYXMgYWNjZXNzIHRvIHRoaXMgUG9saWN5IENhdGVnb3J5XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PjwvYXBwLWNzLXJhZGlvXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvXHJcbiAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidwb2xpY3lGb3JtQWNjZXNzVHlwZSdcIiBbY2hlY2tlZF09XCJwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX3R5cGUgPT09IDFcIiAoY2hlY2tlZEV2ZW50KT1cInNldEFjY2Vzc0ZpZWxkKDEpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtbXQtMVwiXHJcbiAgICAgICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFNlbGVjdCB1c2Vycy9ncm91cHNcclxuICAgICAgICAgICAgICAgICAgPC9kaXY+PC9hcHAtY3MtcmFkaW9cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5hdmFpbGFibGVPblBvcnRhbFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dFwiXHJcbiAgICAgICAgICAgICAgPlZpc2libGUgdG8gQWxsIEN1cnJlbnQgJiBGdXR1cmUgVXNlcnM8L3NwYW5cclxuICAgICAgICAgICAgPlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdwb2xpY3lBY2Nlc3MnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0IHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LW10LTJcIj5cclxuICAgICAgICAgICAgPGFwcC1jcy1zd2l0Y2hcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgcG9saWN5Rm9ybS5hdmFpbGFibGVPblBvcnRhbCB8fFxyXG4gICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/Lmxlbmd0aCB8fFxyXG4gICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHM/Lmxlbmd0aFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgWyhuZ1ZhbHVlKV09XCJwb2xpY3lGb3JtLmFjY2VwdFN1Z2dlc3Rpb25zXCJcclxuICAgICAgICAgICAgICA+QUNDRVBUIFNVR0dFU1RJT05TXHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMSB2eC1tci0yXCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICAnSWYgZW5hYmxlZCwgdXNlcnMgY2FuIHByb3ZpZGUgaW1wcm92ZW1lbnQgc3VnZ2VzdGlvbnMgdG8gdGhlIHBvbGljaWVzIHRoYXQgYXJlIGxpc3RlZCBvbiB0aGUgUG9saWN5IFBvcnRhbC4nXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcclxuICAgICAgICAgICAgICA+PC9hcHAtY3Mtc3dpdGNoXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQXR0ZXN0YXRpb25zIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJmYWxzZVwiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICpuZ0lmPVwiZmFsc2VcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2F0dGVzdGF0aW9ucy5zdmdcIlxyXG4gICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAqbmdJZj1cImZhbHNlXCJcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+QVRURVNUQVRJT05TPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiPlxyXG4gICAgICAgICAgICAgIFNlbGVjdCB0aGUgcGVyc29ucyByZXF1aXJlZCB0byBhdHRlc3QgdG8gdGhpcyBQb2xpY3lcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ1NhbWFudGhhIEpvbmVzJ1wiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID5TYW1hbnRoYSBKb25lczwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInBvbGljeUF0dGVzdGF0aW9uUG9wb3Zlci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgKzRcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcG9saWN5QXR0ZXN0YXRpb25Qb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBbMSwgMSwgMSwgMSwgMSwgMSwgMV1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCInSGFyc2h2YXJkaGFuIEthcml3YWxhJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEhhcnNodmFyZGhhbiBLYXJpd2FsYVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1tdC0yXCI+XHJcbiAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXHJcbiAgICAgICAgICAgICAgPlJFUVVJUkVTIEUtU0lHTkFUVVJFIEZPUiBBVFRFU1RBVElPTlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIHZ4LWZzLTEyIHZ4LXR4dC1ibHVlIHZ4LW1sLTEgdngtbXItMlwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICAgJ1JlcXVpcmVzIGUtc2lnbmF0dXJlIGZvciBhdHRlc3RhdGlvbiBpbmZvIHRleHQgaGVyZS4uLidcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgICAgID48L2FwcC1jcy1zd2l0Y2hcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbCB2eC1tdC0yXCI+V0hFTj88L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJ1dHRvbiB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCdXR0b25QbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBXaGF0IGlzIHRoZSBhdHRlc3RhdGlvbiBzY2hlZHVsZSBmb3IgdGhpczxiciAvPnBvbGljeT9cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlXCI+XHJcbiAgICAgICAgICAgICAgU0VUIEEgRlJFUVVFTkNZXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdEJveFRleHQgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dFwiPlxyXG4gICAgICAgICAgICAgIEV2ZXJ5IFdlZG5lc2RheSBieSAxMTo1OSBwbVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtbXQtMlwiXHJcbiAgICAgICAgICAgID5BU1NFU1NNRU5UIE9GIFVOREVSU1RBTkRJTkc8L2xhYmVsXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94RW5hYmxlIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdEJveFBsYWNlaG9kZXIgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC00XCI+XHJcbiAgICAgICAgICAgICAgU2V0IHVwIGEgcXVlc3Rpb25uYWlyZSB0byBjb25maXJtIHRoZSByZWFkZXLigJlzPGJyIC8+dW5kZXJzdGFuZGluZ1xyXG4gICAgICAgICAgICAgIG9mIHRoZSBwb2xpY3kuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiPjUgUXVlc3Rpb25zPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQXBwcm92YWwgV29ya2Zsb3cgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICAqbmdJZj1cImZhbHNlXCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2FwcHJvdmVycydcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2FwcHJvdmVycycgJiZcclxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwibGVmdFwiXHJcbiAgICAgICAgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnM/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnYXBwcm92ZXJzJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9hcHByb3ZhbC5zdmdcIlxyXG4gICAgICAgICAgYWx0PVwiaW1cIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxzdmdcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzPy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXBwcm92ZXJzJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwIGFwcHJvdmFsLXdvcmtmbG93XCJcclxuICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJwb2xpY3lBcHByb3ZhbEZsYWcgIT09IDBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5cclxuICAgICAgICAgICAgQXBwcm92YWwgd29ya2Zsb3cgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICBhY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIGFkZE1vcmVMZXZlbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgd29ya2Zsb3dUeXBlID0gJ1NFUVVFTlRJQUwnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBDcmVhdGUgYSBuZXcgQXBwcm92YWwgV29ya2Zsb3dcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhcHByb3ZlcldvcmtGbG93TGlzdD8ubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzWzBdPy5hcHByb3ZlcnM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnMubGVuZ3RoID09IDBcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGNzLXNlbGVjdFxyXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkQXBwcm92YWxXb3JrZmxvd1wiXHJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRXb3JrZmxvd0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBhcHByb3ZhbCB3b3JrZmxvdyBmb3IgdGhpcyBwb2xpY3knXCJcclxuICAgICAgICAgICAgICBuYW1lPVwic2VsZWN0ZWRBcHByb3ZhbFdvcmtmbG93XCJcclxuICAgICAgICAgICAgICBbc2V0TWF4V2lkdGhdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8Y3Mtb3B0aW9uXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBhcHByb3ZlcldvcmtGbG93TGlzdFwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgZGF0YS53b3JrZmxvd19uYW1lIH19XHJcbiAgICAgICAgICAgICAgPC9jcy1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPGNzLW9wdGlvblxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIi0xXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgYWN0aXZhdGVTZWxlY3RvcignYXBwcm92ZXJzJywgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIGFkZE1vcmVMZXZlbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB3b3JrZmxvd1R5cGUgPSAnU0VRVUVOVElBTCdcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+Q3JlYXRlIGEgbmV3IGFwcHJvdmFsIHdvcmtmbG93PC9jcy1vcHRpb25cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvY3Mtc2VsZWN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnNbMF0/LmFwcHJvdmVycz8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbGV2ZWwgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndvcmtmbG93LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRpdGxlXCI+TGV2ZWwge3sgaSArIDEgfX08L3A+XHJcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImRlc2NyaXB0aW9uXCI+e3sgbGV2ZWwubmFtZSB9fTwvcD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBhcHByb3ZlciBvZiBsZXZlbC5hcHByb3ZlcnMuc2xpY2UoMCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICA+PGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2FwcHJvdmVycycsIGFwcHJvdmVyLCBpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwXCIgKm5nSWY9XCJsZXZlbC5uYW1lID09ICdTRVFVRU5USUFMJ1wiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICBqICsgMVxyXG4gICAgICAgICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgPnt7IGFwcHJvdmVyLm1lbWJlcl9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgID5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxldmVsLmFwcHJvdmVycz8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJsYWJlbE5hbWUucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAge3sgbGV2ZWwuYXBwcm92ZXJzLnNsaWNlKDEpLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNsYWJlbE5hbWUgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXBwcm92ZXIgb2YgbGV2ZWwuYXBwcm92ZXJzIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhcHByb3ZlcnMnLCBhcHByb3ZlciwgaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdGVwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxldmVsLm5hbWUgPT0gJ1NFUVVFTlRJQUwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID09IGxldmVsLmFwcHJvdmVycy5zbGljZSgxKS5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJGaW5hbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaiArIDJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFwcHJvdmVyLm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZhdGVTZWxlY3RvcignYXBwcm92ZXJzJywgdHJ1ZSwgbGV2ZWwubmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXBwcm92ZXJzTGlzdEluZGV4ID0gaVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+RWRpdFxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2xvc2UtYnRuXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnd29ya2Zsb3dMZXZlbCcsIGxldmVsLCBpKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgc3VibWl0dGVkICYmXHJcbiAgICAgICAgICAgICAgIXBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzPy5sZW5ndGggJiZcclxuICAgICAgICAgICAgICAhcG9saWN5QXBwcm92YWxGbGFnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFNlbGVjdCBvciBjcmVhdGUgYW4gYXBwcm92YWwgd29ya2Zsb3cgZm9yIHRoaXMgcG9saWN5LlxyXG4gICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnNbMF0/LmFwcHJvdmVycz8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgID48YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgIGFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgYWRkTW9yZUxldmVscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB3b3JrZmxvd1R5cGUgPSAnU0VRVUVOVElBTCdcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgKyBBZGQgTW9yZSBMZXZlbHNcclxuICAgICAgICAgICAgPC9idXR0b24+PC9sYWJlbFxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gV2hvIC8gbm93IEF0dGVzdGF0aW9uIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcydcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbmVlcycgJiZcclxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwibGVmdFwiXHJcbiAgICAgICAgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnYXNzaWduZWVzJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy93aG8uc3ZnXCJcclxuICAgICAgICAgIGFsdD1cImltXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbmVlcydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjaXJjbGVcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXHJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxyXG4gICAgICAgICAgICBjeT1cIjI2XCJcclxuICAgICAgICAgICAgcj1cIjI1XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+QXR0ZXN0YXRpb248L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1tYi0yXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAocG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA9PSAwICYmICFncm91cEVuYWJsZWQpIHx8XHJcbiAgICAgICAgICAgICAgKHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgZ3JvdXBFbmFibGVkICYmXHJcbiAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWUubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3NpZ25lZXMnLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiPlxyXG4gICAgICAgICAgICAgIFNlbGVjdCB0aGUgcGVyc29ucyByZXNwb25zaWJsZSBmb3IgYXR0ZXN0aW5nIHRoaXMgcG9saWN5LlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1tYi0yXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8ubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIiFncm91cEVuYWJsZWRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBhc3NpZ25lZSBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8uc2xpY2UoMCwgMSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLCBhc3NpZ25lZSlcIlxyXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiYXNzaWduZWUuZW1wbG95ZWVfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgYXNzaWduZWUuZW1wbG95ZWVfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhc3NpZ25lZVBvcG92ZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgK3t7IHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5zbGljZSgxKS5sZW5ndGggfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cEVuYWJsZWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJncm91cEVuYWJsZWQgJiYgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXMubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKCdhc3NpZ25lZXMnLCBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlc1swXSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzWzBdPy5lbXBsb3llZV9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgID57eyBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlc1swXT8uZW1wbG95ZWVfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJVc2VyUG9wb3Zlci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXMubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcy5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgJlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZS5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICByZW1vdmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAnZ3JvdXBBc3NpZ25lZXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlWzBdPy5ncm91cF9uYW1lXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgcG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlWzBdPy5ncm91cF9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdyb3VwLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWUubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWUubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzaWduZWVzJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIHN1Ym1pdHRlZCAmJlxyXG4gICAgICAgICAgICAgICgocG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAmJlxyXG4gICAgICAgICAgICAgICAgIWdyb3VwRW5hYmxlZCkgfHxcclxuICAgICAgICAgICAgICAgIChwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWUubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uZnJlcXVlbmN5X2RldGFpbHMgJiZcclxuICAgICAgICAgICAgICAgICAgZ3JvdXBFbmFibGVkKSB8fFxyXG4gICAgICAgICAgICAgICAgKGlzU2VuZEZvckF0dGVzdGF0aW9uICYmXHJcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPT09IDApKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBpZD1cIndob3ZhbGlkYXRlbXNnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcclxuICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgU2VsZWN0IHRoZSBwZXJzb25zIHJlcXVpcmVkIHRvIGF0dGVzdCB0byB0aGlzIFBvbGljeS5cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXHJcbiAgICAgICAgICAgIFsobmdWYWx1ZSldPVwicG9saWN5Rm9ybS5yZXF1aXJlc1NpZ25hdHVyZUZvckF0dGVzdGF0aW9uXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPT0gMFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwid2hvLXRvZ2dsZVwiXHJcbiAgICAgICAgICAgID5USElTIFBPTElDWSBSRVFVSVJFUyBFLVNJR05BVFVSRSBGT1IgQVRURVNUQVRJT05cclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICdJZiBzZWxlY3RlZCwgdGhlIHJlYWRlcnMgd2lsbCBiZSByZXF1aXJlZCB0byBhdHRlc3QgdGhpcyBwb2xpY3kgdXNpbmcgdGhlaXIgZWxlY3Ryb25pYyBzaWduYXR1cmUuJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXHJcbiAgICAgICAgICAgID48L2FwcC1jcy1zd2l0Y2hcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjYXNzaWduZWVQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYXNzaWduZWUgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXMgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnYXNzaWduZWVzJywgYXNzaWduZWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBhc3NpZ25lZS5lbXBsb3llZV9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgPGFwcC1wb3BvdmVyICNVc2VyUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFzc2lnbmVlIG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbmVlcycsIGFzc2lnbmVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgYXNzaWduZWUuZW1wbG95ZWVfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjZ3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhIG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZSB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdncm91cEFzc2lnbmVlcycsIGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhLmdyb3VwX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcblxyXG4gICAgICAgICAgPCEtLSBvdmVyc2VlciAtLT5cclxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcG9saWN5Rm9ybT8uQ0NFbWFpbCB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdjY0VtYWlsJywgb3ZlcnNlZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8uZW1wbG95ZWVfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgb2YgcG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NjR3JvdXBFbWFpbCcsIGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy5ncm91cF9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgPCEtLSBvdmVyc2VlciBlbmQgLS0+XHJcblxyXG4gICAgICAgICAgPCEtLSBvdmVyc2VlciBmYWlsIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2VlckZhaWxQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWwgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnY2NGYWlsJywgb3ZlcnNlZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8uZW1wbG95ZWVfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJGYWlsR3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhIG9mIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXAgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnY2NHcm91cEZhaWxFbWFpbCcsIGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy5ncm91cF9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgPCEtLSBvdmVyc2VlciBmYWlsIGVuZCAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFdoZW4gLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1wiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5JyAmJlxyXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPldoZW4/PC9sYWJlbD5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uZnJlcXVlbmN5X2RldGFpbHMgPT0gJydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdCBidXR0b24tc2VjXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWlucHV0IGZyZXF1ZW5jeS1jdXN0b20taW5wdXRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCB0cnVlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBmcmVxdWVuY3lQbGFjZWhvbGRlciB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIHRydWUpXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgIFNldCBBIGZyZXF1ZW5jeVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPCEtLSA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uZnJlcXVlbmN5X2RldGFpbHMgIT0gJydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkIGJ1dHRvbi1zZWNcIlxyXG4gICAgICAgICAgPiAtLT5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAhPSAnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQgYnV0dG9uLXNlYyBzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2ZyZXF1ZW5jeScsIHJjKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImZyZXF1ZW5jeVBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7IGZyZXF1ZW5jeVBsYWNlaG9sZGVyIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdmcmVxdWVuY3knXCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCB0cnVlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+RWRpdFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPCEtLSA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+e3sgZnJlcXVlbmN5UGxhY2Vob2xkZXIgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5J1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPkVkaXRcclxuICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIHN1Ym1pdHRlZCAmJlxyXG4gICAgICAgICAgICAgICgocG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAmJlxyXG4gICAgICAgICAgICAgICAgIWdyb3VwRW5hYmxlZCkgfHxcclxuICAgICAgICAgICAgICAgICgocG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlPy5sZW5ndGggPiAwKSAmJlxyXG4gICAgICAgICAgICAgICAgICAhcG9saWN5Rm9ybT8uZnJlcXVlbmN5X2RldGFpbHMgJiZcclxuICAgICAgICAgICAgICAgICAgZ3JvdXBFbmFibGVkKSlcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcclxuICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgU2VsZWN0IGFuIGF0dGVzdGF0aW9uIHNjaGVkdWxlIGZvciB0aGlzIHBvbGljeS5cclxuICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICA8IS0tIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5FZmZlY3RpdmUgRGF0ZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXRpbWUtcGlja2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGhlIGRhdGUgZnJvbSB3aGljaCB0aGlzIHBvbGljeSBnb2VzIGludG8gZWZmZWN0LlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJwb2xpY3lGb3JtLnBvbGljeUR1ZURhdGUgIHwgZGF0ZTogJ2RkIE1NTSB5eXl5J1wiIChjbGljayk9XCJvcGVuRGF0ZVBpY2tlcigpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTJkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHAtZGF0ZS1waWNrZXIgI2RhdGVQaWNrZXIgKG9uU2VsZWN0KT1cImRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7Y2xvc2VEYXRlUGlja2VyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRhdGVDb25maWdcIiBbKG5nTW9kZWwpXT1cInBvbGljeUZvcm0ucG9saWN5RHVlRGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHAtZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LW92ZXJsYXlcIiAoY2xpY2spPVwiY2xvc2VEYXRlUGlja2VyKCRldmVudClcIiAqbmdJZj1cImRhdGVQaWNrZXJPdmVybGF5XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQ2hlY2twb2ludHMgLyBBc3Nlc3NtZW50IG9mIFVuZGVyc3RhbmRpbmcgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgICAgKm5nSWY9XCJ0cnVlXCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzJ1wiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2hlY2twb2ludHMnICYmXHJcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+XHJcbiAgICAgICAgICAgIEFzc2Vzc21lbnQgb2YgVW5kZXJzdGFuZGluZ1xyXG4gICAgICAgICAgICA8IS0tIDxidXR0b24gICpuZ0lmPVwicG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHM/Lmxlbmd0aD09PTBcIiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cycsdHJ1ZSlcIj4rIEFkZCBDaGVja3BvaW50czwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcclxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5jaGVja3BvaW50RGV0YWlscz8ubGVuZ3RoID09PSAwXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NoZWNrcG9pbnRzJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2V0IHVwIGEgcXVlc3Rpb25uYWlyZSB0byBjb25maXJtIHRoZSByZWFkZXLigJlzIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBvbGljeS5cIiByZWFkb25seT4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20taW5wdXRcIj5cclxuICAgICAgICAgICAgICBTZXQgdXAgYSBxdWVzdGlvbm5haXJlIHRvIGNvbmZpcm0gdGhlIHJlYWRlcuKAmXM8YnIgLz51bmRlcnN0YW5kaW5nXHJcbiAgICAgICAgICAgICAgb2YgdGhlIHBvbGljeS5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHM/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+e3twb2xpY3lGb3JtPy5jaGVja3BvaW50RGV0YWlscz8ubGVuZ3RoICsgKHBvbGljeUZvcm0/LmNoZWNrcG9pbnREZXRhaWxzPy5sZW5ndGggPiAxID8nIENoZWNrcG9pbnRzJzonIENoZWNrcG9pbnQnKX19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2twb2ludC1wb2ludC10ZXh0IGZpcnN0XCI+VE9UQUwgUE9JTlRTOiA8c3BhbiBjbGFzcz1cIm5vXCI+e3twb2xpY3lGb3JtPy50b3RhbFF1ZXN0aW9ufX08L3NwYW4+PGJyPjxlbT5FYWNoIHF1ZXN0aW9uIGNhcnJpZXMgMSBwb2ludDwvZW0+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2twb2ludC1wb2ludC10ZXh0XCI+UE9JTlRTIFJFUVVJUkVEIFRPIEFUVEVTVCA6IDxzcGFuIGNsYXNzPVwibm9cIj57e3BvbGljeUZvcm0/LnBhc3NpbmdNYXJrc319PC9zcGFuPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdjaGVja3BvaW50cycsIHBvbGljeUZvcm0/LmNoZWNrcG9pbnREZXRhaWxzKVwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIj57e1xyXG4gICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHM/Lmxlbmd0aCArXHJcbiAgICAgICAgICAgICAgICAgIChwb2xpY3lGb3JtPy5jaGVja3BvaW50RGV0YWlscz8ubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICAgICAgICAgID8gXCIgUXVlc3Rpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICA6IFwiIFF1ZXN0aW9uXCIpXHJcbiAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gPGFwcC1wb3BvdmVyICNjaGVja3BvaW50UG9wT3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGNoZWNrcG9pbnQgb2YgcG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHMgfCBzbGljZTogMTsgbGV0IGogPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnY2hlY2twb2ludHMnLGNoZWNrcG9pbnQsaisxKVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoZWNrcG9pbnQ/LnF1ZXN0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFJpc2sgQ2xhc3NpZmljYXRpb24gLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICAqbmdJZj1cInNob3dSaXNrQ2xhc3NpZmljYXRpb24gJiYgZmFsc2VcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybS5yaXNrUmF0aW5nXCI+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3Jpc2tzLnN2Z1wiXHJcbiAgICAgICAgICBhbHQ9XCJpbVwiXHJcbiAgICAgICAgICAqbmdJZj1cIiFwb2xpY3lGb3JtPy5yaXNrUmF0aW5nXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5yaXNrUmF0aW5nXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SaXNrIENsYXNzaWZpY2F0aW9uPC9sYWJlbD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGFzc2lmaWNhdGlvblwiPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICBjbGFzcz1cImxvd1wiXHJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNsYXNzIG9mIHJpc2tDbGFzc2lmaWNhdGlvblwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiW2NsYXNzLmNsYXNzXVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgICBuYW1lPVwiY2xhc3NpZmljYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNsYXNzLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInBvbGljeUZvcm0/LnJpc2tSYXRpbmcgPT09IGNsYXNzLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicG9saWN5Rm9ybS5yaXNrUmF0aW5nXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7IGNsYXNzLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFJlc3BvbnNpYmlsaXR5IENlbnRlciAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgICAqbmdJZj1cInBvbGljeUZvcm0uYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzXCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3JjJ1wiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmMnICYmXHJcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8ubGVuZ3RoID09IDAgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvcmVzcG9uc2liaWxpdHktY2VudGVyLnN2Z1wiXHJcbiAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxzdmdcclxuICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/Lmxlbmd0aCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdyYydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlJlc3BvbnNpYmlsaXR5IENlbnRlcjwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8ubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyYycsIHRydWUpXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSZXNwb25zaWJpbGl0eSBDZW50ZXIocykgdGhhdCB0aGlzIHBvbGljeSByZWxhdGVzIHRvLlwiXHJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmMgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/LnNsaWNlKDAsIDEpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3JjJywgcmMpXCJcclxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInJjLml0ZW1fbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgcmMuaXRlbV9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyY1BvcG92ZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgK3t7IHBvbGljeUZvcm0/LnNlbGVjdGVkUkNzPy5zbGljZSgxKS5sZW5ndGggfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyYycsIHRydWUpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGFwcC1wb3BvdmVyICNyY1BvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCByYyBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcyB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyYycsIHJjKVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgcmMuaXRlbV9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gVmVyc2lvbiAtLT5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmFkZFZlcnNpb25cIlxyXG4gICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJiBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJwb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uXCI+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2Fzc29jaWF0ZWQtcmlza3Muc3ZnXCJcclxuICAgICAgICAgIGFsdD1cIm5hbWVcIlxyXG4gICAgICAgICAgKm5nSWY9XCIhcG9saWN5Rm9ybS5wb2xpY3lfdmVyc2lvblwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5WRVJTSU9OPC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBvbGljeUZvcm0ucG9saWN5X3ZlcnNpb25cIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uVmVyc2lvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNwZWNpZnkgdGhlIHBvbGljeSB2ZXJzaW9uLlwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHBcclxuICAgICAgICAgICAgKm5nSWY9XCIhaXNWZXJzaW9uVmFsaWRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxyXG4gICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyB2ZXJzaW9uRXJyb3JNZXNzYWdlIH19XHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBSZXZpZXdlciAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgICAqbmdJZj1cInBvbGljeUZvcm0uYWRkUmV2aWV3ZXJzICYmIGZhbHNlXCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyJ1wiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXInICYmXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXZpZXdlckZyZXF1ZW5jeScgJiZcclxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwibGVmdFwiXHJcbiAgICAgICAgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXInXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3Jldmlld2VyLnN2Z1wiXHJcbiAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxzdmdcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkUmV2aWV3ZXJzPy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXInXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlJldmlld2VyIDwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcclxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZFJldmlld2Vycz8ubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHRoZSBwZXJzb24gcmVzcG9uc2libGUgZm9yIHJldmlld2luZyB0aGlzIHBvbGljeVwiXHJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCByZXZpZXdlciBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZFJldmlld2Vyc1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyZXZpZXdlcicsIHJldmlld2VyKVwiXHJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyZXZpZXdlci5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgcmV2aWV3ZXIubWVtYmVyX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCB0cnVlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgc3VibWl0dGVkICYmXHJcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFNlbGVjdCBhIHJldmlld2VyIGZvciB0aGlzIHBvbGljeS5cclxuICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+V2hlbj8gPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzID09ICcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QgYnV0dG9uLXNlY1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXJGcmVxdWVuY3knLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInJldmlld2VyRnJlcXVlbmN5UGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXJGcmVxdWVuY3knLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBTZXQgQSBmcmVxdWVuY3lcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgIT0gJydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkIGJ1dHRvbi1zZWNcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj57eyByZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyRnJlcXVlbmN5J1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXJGcmVxdWVuY3knLCB0cnVlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+RWRpdFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPHBcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBzdWJtaXR0ZWQgJiZcclxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZFJldmlld2Vycz8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHNcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcclxuICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgU2VsZWN0IHRoZSByZXZpZXcgc2NoZWR1bGUgZm9yIHRoaXMgcG9saWN5LlxyXG4gICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgIDxhcHAtZm9ybWF0LWFuZC1ldmlkZW5jZVxyXG4gICAgICAgICAgICAodXBkYXRlRmlsZXMpPVwic2F2ZVNlbGVjdGVkTGlzdCgncmV2aWV3ZXJfYXR0YWNobWVudHMnLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgI2Zvcm1hdEV2aWRlbmNlXHJcbiAgICAgICAgICAgIFttb2RlXT1cIidwb2xpY3lSZXZpZXdlcidcIlxyXG4gICAgICAgICAgICBbb3JnYW5pemF0aW9uX2lkXT1cIm9yZ2FuaXphdGlvbl9pZFwiXHJcbiAgICAgICAgICAgIFtmb3JtYXRFdmlkYW5jZURhdGFdPVwicG9saWN5Rm9ybT8uZG9jdW1lbnRzQW5kTGlua3NcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9hcHAtZm9ybWF0LWFuZC1ldmlkZW5jZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIE92ZXJzZWVyIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICAgICpuZ0lmPVwicG9saWN5Rm9ybS5hZGRPdmVyc2VlcnNcIlxyXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cIlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnY2NFbWFpbCcgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdjY0ZhaWwnXHJcbiAgICAgIFwiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2NFbWFpbCcgJiZcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NjRmFpbCcgJiZcclxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwibGVmdFwiXHJcbiAgICAgICAgW2NsYXNzLmNoZWNrZWRdPVwiXHJcbiAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0VtYWlsPy5sZW5ndGggPiAwIHx8IHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsPy5sZW5ndGggPiAwXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIChwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0VtYWlsPy5sZW5ndGggPT0gMCkgfHxcclxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdjY0VtYWlsJyB8fFxyXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2NjRmFpbCdcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvb3ZlcnNpZ2h0LnN2Z1wiXHJcbiAgICAgICAgICBhbHQ9XCJpbVwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgKHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsPy5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NFbWFpbD8ubGVuZ3RoID4gMCkgJiZcclxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdjY0VtYWlsJyAmJlxyXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NjRmFpbCdcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxjaXJjbGVcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXHJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxyXG4gICAgICAgICAgICBjeT1cIjI2XCJcclxuICAgICAgICAgICAgcj1cIjI1XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+T3ZlcnNpZ2h0PC9sYWJlbD5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LkNDRW1haWw/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsLmxlbmd0aCA9PSAwXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2NFbWFpbCcsIHRydWUpXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldobyBzaG91bGQgaGF2ZSBvdmVyc2lnaHQgb2YgdGhpcyBwb2xpY3k/XCJcclxuICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LkNDRW1haWw/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWwubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIiFncm91cEVuYWJsZWRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNjRW1haWwgb2YgcG9saWN5Rm9ybT8uQ0NFbWFpbD8uc2xpY2UoMCwgMSlcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnY2NFbWFpbCcsIGNjRW1haWwpXCJcclxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImNjRW1haWwuZW1wbG95ZWVfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgY2NFbWFpbC5lbXBsb3llZV9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxyXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNjRW1haWxQb3BvdmVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uQ0NFbWFpbD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgK3t7IHBvbGljeUZvcm0/LkNDRW1haWw/LnNsaWNlKDEpLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJncm91cEVuYWJsZWRcIiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JvdXBFbmFibGVkICYmIHBvbGljeUZvcm0/LkNDRW1haWw/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnY2NFbWFpbCcsIHBvbGljeUZvcm0/LkNDRW1haWxbMF0pXCJcclxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInBvbGljeUZvcm0/LkNDRW1haWxbMF0uZW1wbG95ZWVfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgcG9saWN5Rm9ybT8uQ0NFbWFpbFswXS5lbXBsb3llZV9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcclxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3ZlcnNlZXJQb3BvdmVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5DQ0VtYWlsPy5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgK3t7IHBvbGljeUZvcm0/LkNDRW1haWw/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LkNDRW1haWwubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWw/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgJlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWwubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdjY0dyb3VwRW1haWwnLCBwb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWxbMF0pXCJcclxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbFswXT8uZ3JvdXBfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgcG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsWzBdPy5ncm91cF9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyR3JvdXAucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWw/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjY0VtYWlsJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWw/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cD8ubGVuZ3RoID09IDBcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjY0ZhaWwnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJXaG8gc2hvdWxkIGJlIG5vdGlmaWVkIGlmIHRoZSBwb2xpY3kgaXMgbm90IGF0dGVzdGVkIG9uIHRpbWU/XCJcclxuICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXA/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhZ3JvdXBFbmFibGVkXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjY0ZhaWwgb2YgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWw/LnNsaWNlKDAsIDEpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2NjRmFpbCcsIGNjRmFpbClcIlxyXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2NGYWlsLmVtcGxveWVlX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IGNjRmFpbC5lbXBsb3llZV9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxyXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNjRmFpbFBvcG92ZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uQ0NGYWlsRW1haWw/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8uc2xpY2UoMSkubGVuZ3RoIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdyb3VwRW5hYmxlZFwiIGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJncm91cEVuYWJsZWQgJiYgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWwubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdjY0ZhaWwnLCBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbFswXSlcIlxyXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxbMF0/LmVtcGxveWVlX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsWzBdPy5lbXBsb3llZV9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcclxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3ZlcnNlZXJGYWlsUG9wb3Zlci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uQ0NGYWlsRW1haWw/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWw/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsPy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXA/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgJlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwPy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICByZW1vdmUoJ2NjR3JvdXBGYWlsRW1haWwnLCBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwWzBdKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cFswXT8uZ3JvdXBfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cFswXT8uZ3JvdXBfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2VlckZhaWxHcm91cC5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwPy5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjY0ZhaWwnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjY2NFbWFpbFBvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjY0VtYWlsIG9mIHBvbGljeUZvcm0/LkNDRW1haWwgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnY2NFbWFpbCcsIGNjRW1haWwpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBjY0VtYWlsLmVtcGxveWVlX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI2NjRmFpbFBvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjY0ZhaWwgb2YgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWwgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnY2NGYWlsJywgY2NGYWlsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgY2NGYWlsLmVtcGxveWVlX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBSZWxhdGVkIERvY3VtZW50cyAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgICAqbmdJZj1cInBvbGljeUZvcm0uYWRkQXNzb2NpYXRlZERvY3VtZW50c1wiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0uYXNzb2NpYXRlZERvY3VtZW50cy5mb3JtYXRGaWxlcz8ubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2Zvcm1hdC1ldmlkZW5jZS5zdmdcIlxyXG4gICAgICAgICAgYWx0PVwiaW1cIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxzdmdcclxuICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybS5hc3NvY2lhdGVkRG9jdW1lbnRzLmZvcm1hdEZpbGVzPy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SRUxBVEVEIERPQ1VNRU5UUzwvbGFiZWw+XHJcbiAgICAgICAgICA8YXBwLWZvcm1hdC1hbmQtZXZpZGVuY2VcclxuICAgICAgICAgICAgKHVwZGF0ZUZpbGVzKT1cInNhdmVTZWxlY3RlZExpc3QoJ2Fzc29jaWF0ZWREb2N1bWVudHMnLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgW21vZGVdPVwiJ3BvbGljeSdcIlxyXG4gICAgICAgICAgICBbb3JnYW5pemF0aW9uX2lkXT1cIm9yZ2FuaXphdGlvbl9pZFwiXHJcbiAgICAgICAgICAgIFtmb3JtYXRFdmlkYW5jZURhdGFdPVwicG9saWN5Rm9ybT8uYXNzb2NpYXRlZERvY3VtZW50c1wiXHJcbiAgICAgICAgICA+PC9hcHAtZm9ybWF0LWFuZC1ldmlkZW5jZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIExpbmsgUHJvZ3JhbXMgJiBSZXNwb25zaWJpbGl0aWVzIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cInBvbGljeUZvcm0/LmFkZExpbmtQcm9ncmFtXCJcclxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnbGlua1Byb2dyYW0nXCJcclxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdsaW5rUHJvZ3JhbScgJiZcclxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwibGVmdFwiXHJcbiAgICAgICAgW2NsYXNzLmNoZWNrZWRdPVwiXHJcbiAgICAgICAgICBwb2xpY3lGb3JtPy5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgICpuZ0lmPVwiIXBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRcIlxyXG4gICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2xpbmstaXRlbXMuc3ZnXCJcclxuICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkXCJcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgICA+TElOSyBQUk9HUkFNUyAmIFJFU1BPTlNJQklMSVRJRVM8L2xhYmVsXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwiIXBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignbGlua1Byb2dyYW0nLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94RW5hYmxlIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdEJveFBsYWNlaG9kZXIgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC00XCI+XHJcbiAgICAgICAgICAgICAgU2VsZWN0IFByb2dyYW1zICYgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZTxiciAvPmFzc29jaWF0ZWQgd2l0aFxyXG4gICAgICAgICAgICAgIHRoaXMgcG9saWN5LlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucHJvZ3JhbVNlbGVjdGVkVmFsdWVzPy5wcm9ncmFtPy5jYXRlZ29yeV9pZFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKCdsaW5rUHJvZ3JhbScsIHBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcylcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8ubmFtZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57eyBwb2xpY3lGb3JtPy5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXM/LnByb2dyYW0/Lm5hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInByb2dyYW1SZXNwb25zaWJpbGl0eVBvcG92ZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICs0XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyXHJcbiAgICAgICAgICAgICAgI3Byb2dyYW1SZXNwb25zaWJpbGl0eVBvcG92ZXJcclxuICAgICAgICAgICAgICBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIFsxLCAxLCAxLCAxLCAxLCAxLCAxXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdSZXBvcnRpbmcgaW5mb3JtYXRpb24gc2VjdXJpdHkgd2Vha25lc3NlcydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVwb3J0aW5nIGluZm9ybWF0aW9uIHNlY3VyaXR5IHdlYWtuZXNzZXNcclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdsaW5rUHJvZ3JhbScsIHRydWUpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBMaW5rIEFzc2Vzc21lbnQgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwicG9saWN5Rm9ybS5hZGRMaW5rQXNzZXNzbWVudFwiXHJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2lzQXNzZXNzbWVudCdcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2lzQXNzZXNzbWVudCcgJiZcclxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJwb2xpY3lGb3JtPy5hc3Nlc3NtZW50Py5sZW5ndGhcIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAqbmdJZj1cIiFwb2xpY3lGb3JtPy5hc3Nlc3NtZW50Py5sZW5ndGhcIlxyXG4gICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2Fzc2Vzc21lbnRzLnN2Z1wiXHJcbiAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxzdmdcclxuICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uYXNzZXNzbWVudD8ubGVuZ3RoXCJcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5MSU5LIEFTU0VTU01FTlRTPC9sYWJlbD5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5hc3Nlc3NtZW50Py5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignaXNBc3Nlc3NtZW50JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiPlxyXG4gICAgICAgICAgICAgIFNlbGVjdCBhc3Nlc3NtZW50cyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpczxiciAvPnBvbGljeS5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uYXNzZXNzbWVudD8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0uYXNzZXNzbWVudFswXT8uYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7XHJcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0uYXNzZXNzbWVudFswXT8uYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZVxyXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXJcclxuICAgICAgICAgICAgICAjcHJvZ3JhbVJlc3BvbnNpYmlsaXR5UG9wb3ZlclxyXG4gICAgICAgICAgICAgIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXNzZXNzbWVudCBvZiBwb2xpY3lGb3JtLmFzc2Vzc21lbnQgfCBzbGljZSA6IDFcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBhc3Nlc3NtZW50Py5hc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2lzQXNzZXNzbWVudCcsIHRydWUpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIExpbmsgUmVsYXRlZCBQb2xpY2VzIC0tPlxyXG5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmFkZExpbmtQb2xpY2llc1wiXHJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gQ09OU1RBTlRTLkxJTktfUE9MSUNZXCJcclxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdpc0xpbmtlZFBvbGljZXMnICYmXHJcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8uTGlua2VkUG9saWNpZXM/Lmxlbmd0aFwiPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgICpuZ0lmPVwiIXBvbGljeUZvcm0/LkxpbmtlZFBvbGljaWVzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgW3NyY109XCJMSU5LUy5saW5rZWRQb2xpY3lJbWFnZVwiXHJcbiAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxzdmdcclxuICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uTGlua2VkUG9saWNpZXM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICBbeG1sbnNdPVwiTElOS1MuY2hlY2tlZFwiXHJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkxJTksgUE9MSUNJRVM8L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LkxpbmtlZFBvbGljaWVzPy5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignaXNMaW5rZWRQb2xpY2VzJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiPlxyXG4gICAgICAgICAgICAgIFNlbGVjdCBwb2xpY2llcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpczxiciAvPnBvbGljeS5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LkxpbmtlZFBvbGljaWVzPy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IHBvbGljeU5hbWUgb2YgcG9saWN5Rm9ybT8uTGlua2VkUG9saWNpZXM/LnNsaWNlKDAsIDEpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoQ09OU1RBTlRTLkxJTktfUE9MSUNZLCBwb2xpY3lOYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInBvbGljeU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IHBvbGljeU5hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5MaW5rZWRQb2xpY2llcz8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWxhdGVkUG9saWN5LnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uTGlua2VkUG9saWNpZXM/LnNsaWNlKDEpLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09IENPTlNUQU5UUy5MSU5LX1BPTElDWVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcihDT05TVEFOVFMuTElOS19QT0xJQ1ksIHRydWUpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGFwcC1wb3BvdmVyICNyZWxhdGVkUG9saWN5IFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9saWN5TmFtZSBvZiBwb2xpY3lGb3JtPy5MaW5rZWRQb2xpY2llcyB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKENPTlNUQU5UUy5MSU5LX1BPTElDWSwgcG9saWN5TmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IHBvbGljeU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXHJcbiAgICAgICAgICAgIFsobmdWYWx1ZSldPVwicG9saWN5Rm9ybS5pc1BvcnRhbERpc3BsYXlFbmFibGVkXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInBvbGljeUZvcm0/LkxpbmtlZFBvbGljaWVzPT0gMFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwid2hvLXRvZ2dsZVwiXHJcbiAgICAgICAgICAgID5ESVNQTEFZIE9OIFRIRSBQT0xJQ1kgUE9SVEFMXHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAgQ09OU1RBTlRTLkxJTktfUE9MSUNZX0hFTFBfVEVYVFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXHJcbiAgICAgICAgICAgID48L2FwcC1jcy1zd2l0Y2hcclxuICAgICAgICAgID5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gIDxhcHAtY2hlY2tib3gtbGlzdFxyXG4gICAgW2NvbmZpZ109XCJjYXRlZ29yeUNvbmZpZ1wiXHJcbiAgICBbdHdvQ29sdW1uXT1cImZhbHNlXCJcclxuICAgIFtpdGVtc0xpc3RdPVwiY2F0ZWdvcnlMaXN0XCJcclxuICAgIFtzZWxlY3RlZEl0ZW1zXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzXCJcclxuICAgIFtpZGVudGlmaWVyS2V5XT1cIidfaWQnXCJcclxuICAgIFtkaXNwbGF5S2V5XT1cIidpdGVtX25hbWUnXCJcclxuICAgIFt0b29sdGlwS2V5XT1cIidpdGVtX25hbWUnXCJcclxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcIlxyXG4gICAgKHNhdmVMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgJGV2ZW50KVwiXHJcbiAgICAoY2xvc2VMaXN0KT1cImRpc2FibGVTZWxlY3RvcigpXCJcclxuICAgIFtsb2FkZWRdPVwiIWNhdGVnb3JpZXNMaXN0TG9hZGVkXCJcclxuICA+XHJcbiAgPC9hcHAtY2hlY2tib3gtbGlzdD5cclxuICA8IS0tIDxhcHAtY2hlY2tib3gtbGlzdCBbY29uZmlnXT1cImFwcHJvdmFsV29ya2Zsb3dDb25maWdcIiBbdHdvQ29sdW1uXT1cInRydWVcIlxyXG4gIFtpdGVtc0xpc3RdPVwiXCJcclxuICBbc2VsZWN0ZWRJdGVtc109XCJwb2xpY3lGb3JtLmlzc3VlQ0NVc2Vyc1wiIFtpZGVudGlmaWVyS2V5XT1cIidlbXBsb3llZV9lbWFpbCdcIiBbZGlzcGxheUtleV09XCInZW1wbG95ZWVfbmFtZSdcIiBbdG9vbHRpcEtleV09XCInZW1wbG95ZWVfZW1haWwnXCJcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yPT09J0lTU1VFX0NDJ1wiIChzYXZlTGlzdCk9XCJzZWxlY3RvckFjdGlvbigkZXZlbnQsJ0lTU1VFX0NDJylcIlxyXG4gIChjbG9zZUxpc3QpPVwiZmllbGREZXNlbGVjdG9yKCdJU1NVRV9DQycpXCI+XHJcbjwvYXBwLWNoZWNrYm94LWxpc3Q+IC0tPlxyXG5cclxuICA8YXBwLXJlc3BvbnNpYmlsaXR5LWNlbnRlcnMtbGlzdFxyXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3JjJ1wiXHJcbiAgICBbcmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdF09XCJyY0xpc3RcIlxyXG4gICAgW3NlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRSQ3NcIlxyXG4gICAgW3JjSWRLZXldPVwiJ2l0ZW1faWQnXCJcclxuICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ3JjJywgJGV2ZW50KVwiXHJcbiAgICAoY2xvc2VSY0xpc3QpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxyXG4gICAgW2xvYWRlZF09XCJyY0xpc3RMb2FkZWRcIlxyXG4gID5cclxuICA8L2FwcC1yZXNwb25zaWJpbGl0eS1jZW50ZXJzLWxpc3Q+XHJcblxyXG4gIDxhcHAtbGluay1yZWxhdGVkLXBvbGljaWVzXHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gQ09OU1RBTlRTLkxJTktfUE9MSUNZXCJcclxuICBbc2VsZWN0ZWRQb2xpY2llc109XCJwb2xpY3lGb3JtLkxpbmtlZFBvbGljaWVzXCJcclxuICAoY2xvc2VMaW5rUG9saWN5TGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXHJcbiAgKHNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KENPTlNUQU5UUy5MSU5LX1BPTElDWSwkZXZlbnQpXCJcclxuPjwvYXBwLWxpbmstcmVsYXRlZC1wb2xpY2llcz5cclxuXHJcblxyXG4gIDxhcHAtdXNlcnMtcmFkaW8tbGlzdFxyXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyJ1wiXHJcbiAgICBbaXRlbUVtYWlsS2V5XT1cIidtZW1iZXJfZW1haWwnXCJcclxuICAgIFt1c2Vyc0xpc3RdPVwiYWxsUmV2aWV3ZXJzXCJcclxuICAgIFtoZWFkZXJUZXh0XT1cIidTZWxlY3QgYSBSZXZpZXdlcidcIlxyXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwicG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2Vyc1wiXHJcbiAgICBbdXNlcklkS2V5XT1cIidtZW1iZXJfaWQnXCJcclxuICAgIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCJcclxuICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ3Jldmlld2VyJywgJGV2ZW50KVwiXHJcbiAgICAoY2xvc2VVc2Vyc0xpc3QpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxyXG4gID5cclxuICA8L2FwcC11c2Vycy1yYWRpby1saXN0PlxyXG5cclxuICA8YXBwLW93bmVyLWxpc3RcclxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjY0VtYWlsJyAmJiAhZ3JvdXBFbmFibGVkXCJcclxuICAgIFt1c2Vyc0xpc3RdPVwib3ZlcnNlZXJzTGlzdFwiXHJcbiAgICBbc2luZ3VsYXJUZXh0XT1cIidVc2VyIHNlbGVjdGVkJ1wiXHJcbiAgICBbcGx1cmFsVGV4dF09XCInVXNlcnMgc2VsZWN0ZWQnXCJcclxuICAgIFtzZWxlY3RlZFVzZXJzXT1cInBvbGljeUZvcm0uQ0NFbWFpbFwiXHJcbiAgICBbdXNlcklkS2V5XT1cIidlbXBsb3llZV9pZCdcIlxyXG4gICAgW2l0ZW1OYW1lS2V5XT1cIidlbXBsb3llZV9uYW1lJ1wiXHJcbiAgICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdjY0VtYWlsJywgJGV2ZW50KVwiXHJcbiAgICAoY2xvc2VVc2Vyc0xpc3QpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxyXG4gID5cclxuICA8L2FwcC1vd25lci1saXN0PlxyXG5cclxuICA8dXNlci1ncm91cC1saXN0XHJcbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2NFbWFpbCcgJiYgZ3JvdXBFbmFibGVkXCJcclxuICAgIFtncm91cEVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICBbdXNlcmxpc3RdPVwib3ZlcnNlZXJzTGlzdFwiXHJcbiAgICBbZ3JvdXBMaXN0XT1cIm92ZXJzZWVyR3JvdXBzTGlzdFwiXHJcbiAgICBbc2VsZWN0ZWRVc2Vyc109XCJwb2xpY3lGb3JtLkNDRW1haWxcIlxyXG4gICAgW3NlbGVjdGVkR3JvdXBzXT1cInBvbGljeUZvcm0uQ0NHcm91cEVtYWlsXCJcclxuICAgIChzYXZlKT1cInNhdmVTZWxlY3RlZExpc3QoJ2NjRW1haWwnLCAkZXZlbnQpXCJcclxuICAgIChjYW5jZWwpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxyXG4gICAgW2ZlYXR1cmVmbGFnXT1cImdyb3VwRW5hYmxlZFwiXHJcbiAgPlxyXG4gIDwvdXNlci1ncm91cC1saXN0PlxyXG5cclxuICA8YXBwLW93bmVyLWxpc3RcclxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjY0ZhaWwnICYmICFncm91cEVuYWJsZWRcIlxyXG4gICAgW3VzZXJzTGlzdF09XCJvdmVyc2VlcnNMaXN0XCJcclxuICAgIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCJcclxuICAgIFtwbHVyYWxUZXh0XT1cIidVc2VycyBzZWxlY3RlZCdcIlxyXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwicG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbFwiXHJcbiAgICBbdXNlcklkS2V5XT1cIidlbXBsb3llZV9pZCdcIlxyXG4gICAgW2l0ZW1OYW1lS2V5XT1cIidlbXBsb3llZV9uYW1lJ1wiXHJcbiAgICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdjY0ZhaWwnLCAkZXZlbnQpXCJcclxuICAgIChjbG9zZVVzZXJzTGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXHJcbiAgPlxyXG4gIDwvYXBwLW93bmVyLWxpc3Q+XHJcblxyXG4gIDx1c2VyLWdyb3VwLWxpc3RcclxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjY0ZhaWwnICYmIGdyb3VwRW5hYmxlZFwiXHJcbiAgICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxyXG4gICAgW3VzZXJsaXN0XT1cIm92ZXJzZWVyc0xpc3RcIlxyXG4gICAgW2dyb3VwTGlzdF09XCJvdmVyc2Vlckdyb3Vwc0xpc3RcIlxyXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwicG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbFwiXHJcbiAgICBbc2VsZWN0ZWRHcm91cHNdPVwicG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbEdyb3VwXCJcclxuICAgIChzYXZlKT1cInNhdmVTZWxlY3RlZExpc3QoJ2NjRmFpbCcsICRldmVudClcIlxyXG4gICAgKGNhbmNlbCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXHJcbiAgICBbZmVhdHVyZWZsYWddPVwiZ3JvdXBFbmFibGVkXCJcclxuICA+XHJcbiAgPC91c2VyLWdyb3VwLWxpc3Q+XHJcblxyXG4gIDxhcHAtZ3JvdXAtdXNlcnMtbGlzdFxyXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcycgJiYgIWdyb3VwRW5hYmxlZFwiXHJcbiAgICBbdXNlcnNMaXN0XT1cImFzc2lnbmVlc0xpc3RcIlxyXG4gICAgW2dyb3Vwc0xpc3RdPVwib3ZlcnNlZXJHcm91cHNMaXN0XCJcclxuICAgIFtzZWxlY3RlZFVzZXJzXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXNcIlxyXG4gICAgW3VzZXJJZEtleV09XCInbXlfbWVtYmVyX2lkJ1wiXHJcbiAgICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdhc3NpZ25lZXMnLCAkZXZlbnQpXCJcclxuICAgIChjbG9zZVVzZXJzTGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXHJcbiAgPlxyXG4gIDwvYXBwLWdyb3VwLXVzZXJzLWxpc3Q+XHJcblxyXG4gIDx1c2VyLWdyb3VwLWxpc3RcclxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25lZXMnICYmIGdyb3VwRW5hYmxlZFwiXHJcbiAgICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxyXG4gICAgW3VzZXJsaXN0XT1cIm93bmVybGlzdFwiXHJcbiAgICBbZ3JvdXBMaXN0XT1cIm92ZXJzZWVyR3JvdXBzTGlzdFwiXHJcbiAgICAoc2F2ZSk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdhc3NpZ25lZXMnLCAkZXZlbnQpXCJcclxuICAgIChjYW5jZWwpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxyXG4gICAgW3NlbGVjdGVkR3JvdXBzXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRHcm91cEFzc2lnbmVlXCJcclxuICAgIFtzZWxlY3RlZFVzZXJzXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXNcIlxyXG4gICAgW2ZlYXR1cmVmbGFnXT1cImdyb3VwRW5hYmxlZFwiXHJcbiAgPlxyXG4gIDwvdXNlci1ncm91cC1saXN0PlxyXG5cclxuICA8YXBwLW93bmVyLWxpc3RcclxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhcHByb3ZlcnMnICYmIGZhbHNlXCJcclxuICAgIFtsaXN0SGVhZGluZ109XCInU2VsZWN0IEFwcHJvdmVycydcIlxyXG4gICAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxyXG4gICAgW3BsdXJhbFRleHRdPVwiJ1VzZXJzIHNlbGVjdGVkJ1wiXHJcbiAgICBbdXNlcnNMaXN0XT1cImFsbEFwcHJvdmVyc1wiXHJcbiAgICBbc2hvd1dvcmtmbG93XT1cInRydWVcIlxyXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwiXHJcbiAgICAgIGFkZE1vcmVMZXZlbHNcclxuICAgICAgICA/IFtdXHJcbiAgICAgICAgOiBwb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzW2FwcHJvdmVyc0xpc3RJbmRleF0uYXBwcm92ZXJzXHJcbiAgICBcIlxyXG4gICAgW3VzZXJJZEtleV09XCInbWVtYmVyX2lkJ1wiXHJcbiAgICBbaXRlbUVtYWlsS2V5XT1cIidtZW1iZXJfZW1haWwnXCJcclxuICAgIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCJcclxuICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2FwcHJvdmVycycsICRldmVudClcIlxyXG4gICAgKGNsb3NlVXNlcnNMaXN0KT1cImRpc2FibGVTZWxlY3RvcigpXCJcclxuICAgIFttb2RlXT1cIm1vZGVcIlxyXG4gICAgW3Jldmlld2VyV29ya2Zsb3dUeXBlXT1cIndvcmtmbG93VHlwZVwiXHJcbiAgICAocmV2aWV3ZXJXb3JrZmxvd1R5cGVDaGFuZ2UpPVwicmV2aWV3ZXJUeXBlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgW3dvcmtmbG93TGlzdF09XCJ3b3JrZmxvd0xpc3RcIlxyXG4gICAgW3dvcmtmbG93VGV4dF09XCInQXBwcm92YWwgV29ya2Zsb3cnXCJcclxuICA+XHJcbiAgPC9hcHAtb3duZXItbGlzdD5cclxuXHJcbiAgPGFwcC1mcmVxdWVuY3ktY29udGFpbmVyXHJcbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1wiXHJcbiAgICBbbW9kZV09XCIncG9saWN5J1wiXHJcbiAgICBbZnJlcXVlbmN5RGV0YWlsc109XCJmcmVxdWVuY3lEZXRhaWxzXCJcclxuICAgIChzZWxlY3RlZEZyZXF1ZW5jeSk9XCJmcmVxdWVuY3lEYXRhKCRldmVudClcIlxyXG4gICAgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiXHJcbiAgICBbcGFnZVR5cGVdPVwiJ3BvbGljeSdcIlxyXG4gICAgKGNsb3NlRnJlcXVlbmN5KT1cImRpc2FibGVTZWxlY3RvcigpXCJcclxuICA+PC9hcHAtZnJlcXVlbmN5LWNvbnRhaW5lcj5cclxuXHJcbiAgPGFwcC1mcmVxdWVuY3ktY29udGFpbmVyXHJcbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXJGcmVxdWVuY3knXCJcclxuICAgIFttb2RlXT1cIidyZXZpZXdlckZyZXF1ZW5jeSdcIlxyXG4gICAgW2ZyZXF1ZW5jeURldGFpbHNdPVwicmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzXCJcclxuICAgIChzZWxlY3RlZEZyZXF1ZW5jeSk9XCJyZXZpZXdlckZyZXF1ZW5jeURhdGEoJGV2ZW50KVwiXHJcbiAgICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcclxuICAgIFtwYWdlVHlwZV09XCIncG9saWN5J1wiXHJcbiAgICAoY2xvc2VGcmVxdWVuY3kpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxyXG4gID48L2FwcC1mcmVxdWVuY3ktY29udGFpbmVyPlxyXG5cclxuICA8dmMtbGluay1wcm9ncmFtXHJcbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnbGlua1Byb2dyYW0nXCJcclxuICAgIChjbG9zZSk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXHJcbiAgICBbcG9saWN5XT1cInBvbGljeUZvcm1cIlxyXG4gICAgW3NlbGVjdGVkUHJvZ3JhbV09XCJwb2xpY3lGb3JtPy5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXNcIlxyXG4gICAgW21vZGVdPVwibW9kZVwiXHJcbiAgICBbc2VsZWN0ZWRMaW5rUHJvZ3JhbV09XCJzZWxlY3RlZExpbmtQcm9ncmFtXCJcclxuICAgIChjaGFuZ2VUYWIpPVwiY2hhbmdlVGFiKCdsaW5rZWRQcm9ncmFtcycpXCJcclxuICAgICh1cGRhdGVkUHJvZ3JhbURldGFpbHMpPVwidXBkYXRlZFByb2dyYW1EZXRhaWxzKCRldmVudClcIlxyXG4gID5cclxuICA8L3ZjLWxpbmstcHJvZ3JhbT5cclxuXHJcbiAgPGFwcC1jaGVja3BvaW50cy1wb2xpY3ktY29udGFpbmVyXHJcbiAgICAoY2xvc2VDaGVja1BvaW50KT1cImRpc2FibGVTZWxlY3RvcigpXCJcclxuICAgIFtjaGVja3BvaW50RGF0YV09XCJwb2xpY3lGb3JtPy5jaGVja3BvaW50RGV0YWlsc1wiXHJcbiAgICBbcmVxdWlyZWRQb2ludF09XCJwb2xpY3lGb3JtPy5wYXNzaW5nTWFya3NcIlxyXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzJ1wiXHJcbiAgICAoc2F2ZUNoZWNrUG9pbnQpPVwic2F2ZVNlbGVjdGVkTGlzdCgnY2hlY2twb2ludHMnLCAkZXZlbnQpXCJcclxuICA+PC9hcHAtY2hlY2twb2ludHMtcG9saWN5LWNvbnRhaW5lcj5cclxuICA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxyXG5cclxuICA8YXBwLWFwcHJvdmFsLXdvcmtmbG93XHJcbiAgICAqbmdJZj1cImVuYWJsZUFwcHJvdmFsV29ya2Zsb3dcIlxyXG4gICAgW3NlbGVjdGVkQ2F0ZWdvcnldPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzXCJcclxuICAgIFthcHByb3ZlcldvcmtGbG93TGlzdF09XCJhcHByb3ZlcldvcmtGbG93TGlzdFwiXHJcbiAgICBbYWxsQXBwcm92ZXJzXT1cImFsbEFwcHJvdmVyc1wiXHJcbiAgICAobGlzdENhbmNlbENsaWNrZWQpPVwibGlzdENhbmNlbENsaWNrZWQoJGV2ZW50KVwiXHJcbiAgICAoc2VsZWN0ZWRXb3JrZmxvd05leHQpPVwic2VsZWN0ZWRBcHByb3ZhbFdvcmtmbG93KCRldmVudClcIlxyXG4gICAgKHNhdmVBcHByb3ZhbFdvcmtmbG93KT1cImFwcHJvdmFsV29ya2Zsb3dBUElDYWxsKCRldmVudClcIlxyXG4gICAgW2VkaXRBcHByb3ZhbFdvcmtmbG93XT1cImVkaXRBcHByb3ZhbFdvcmtmbG93XCJcclxuICAgIFtjcmVhdGVBcHByb3ZhbENsaWNrXT1cImNyZWF0ZUFwcHJvdmFsQ2xpY2tcIlxyXG4gICAgKGNsb3NlQ3JlYXRlQ2xpY2tlZCk9XCJjbG9zZUNsaWNrZWRDcmVhdGVGb3JtKClcIlxyXG4gICAgW2VkaXRXb3JrZmxvd0xldmVsXT1cImVkaXRXb3JrZmxvd0xldmVsXCJcclxuICA+PC9hcHAtYXBwcm92YWwtd29ya2Zsb3c+XHJcbiAgPCEtLSA8YXBwLXNlbGVjdC1hcHByb3ZlcnM+PC9hcHAtc2VsZWN0LWFwcHJvdmVycz4gLS0+XHJcblxyXG4gIDxhcHAtcG9saWN5LWFjY2Vzc1xyXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3BvbGljeUFjY2VzcydcIlxyXG4gICAgW3BvbGljeUFjY2Vzc1R5cGVdPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc190eXBlXCJcclxuICAgIChjbG9zZSk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXHJcbiAgICBbb3JnVXNlcnNMaXN0XT1cInVzZXJzTGlzdFwiXHJcbiAgICBbdXNlcnNBY2Nlc3NMaXN0XT1cInVzZXJzQWNjZXNzTGlzdFwiXHJcbiAgICBbZ3JvdXBMaXN0XT1cIm92ZXJzZWVyR3JvdXBzTGlzdFwiXHJcbiAgICBbZ3JvdXBzQWNjZXNzTGlzdF09XCJncm91cHNBY2Nlc3NMaXN0XCJcclxuICAgIFtzZWxlY3RlZFVzZXJzXT1cInBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3Nfb3duZXJzXCJcclxuICAgIFtzZWxlY3RlZEdyb3Vwc109XCJwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwc1wiXHJcbiAgICBbZGlzYWJsZWRJZHNdPVwidXNlcnNBY2Nlc3NMaXN0SWRzXCJcclxuICAgIFtkaXNhYmxlZEdyb3VwSWRzXT1cImdyb3Vwc0FjY2Vzc0xpc3RJZHNcIlxyXG4gICAgW2Z1dHVyZVVzZXJzV2lsbFNlbGVjdF09XCJwb2xpY3lGb3JtPy5hdmFpbGFibGVPblBvcnRhbFwiXHJcbiAgICAoc2F2ZUNoZWNrUG9pbnQpPVwic2F2ZVNlbGVjdGVkTGlzdCgncG9saWN5QWNjZXNzJywgJGV2ZW50KVwiXHJcbiAgICAoc2V0UG9saWN5QWNjZXNzVHlwZSk9XCJwb2xpY3lGb3JtLnBvbGljeV9hY2Nlc3NfdHlwZSA9ICRldmVudFwiXHJcbiAgPlxyXG4gIDwvYXBwLXBvbGljeS1hY2Nlc3M+XHJcbjwvbmctY29udGFpbmVyPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0NyZWF0ZURvY3VtZW50c1wiPlxyXG4gIDwhLS0gPGFwcC1jcmVhdGUtZG9jdW1lbnRzICpuZ0lmPVwic2hvd0NyZWF0ZURvY3VtZW50c1wiXHJcbiAgIFtvcmdhbml6YXRpb25faWRdPVwib3JnYW5pemF0aW9uX2lkXCJcclxuICAgW21lbWJlcl9vYmpfaWRdPVwibWVtYmVyX29ial9pZFwiXHJcbiAgIFt1c2VySW5mb109XCJ1c2VySW5mb1wiXHJcbiAgIFtwb2xpY3lJZF09XCJwb2xpY3lJZFwiXHJcbiAgIFtwb2xpY3lOYW1lXT1cInBvbGljeUZvcm0ucG9saWN5TmFtZVwiXHJcbiAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJkaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKVwiXHJcbiAgIChlZGl0UG9saWN5KT1cImVkaXRQb2xpY3lGcm9tRG9jdW1lbnRzKClcIlxyXG4gICA+PC9hcHAtY3JlYXRlLWRvY3VtZW50cz4gLS0+XHJcbiAgPGxpYi1kb2N1bWVudC1zZWN0aW9uXHJcbiAgICAqbmdJZj1cInNob3dDcmVhdGVEb2N1bWVudHNcIlxyXG4gICAgW29yZ2FuaXphdGlvbl9pZF09XCJvcmdhbml6YXRpb25faWRcIlxyXG4gICAgW21lbWJlcl9vYmpfaWRdPVwibWVtYmVyX29ial9pZFwiXHJcbiAgICBbdXNlckluZm9dPVwidXNlckluZm9cIlxyXG4gICAgW3BvbGljeUlkXT1cInBvbGljeUlkXCJcclxuICAgIFtwb2xpY3lOYW1lXT1cInBvbGljeUZvcm0ucG9saWN5TmFtZVwiXHJcbiAgICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSlcIlxyXG4gICAgKGVkaXRQb2xpY3kpPVwiZWRpdFBvbGljeUZyb21Eb2N1bWVudHMoKVwiXHJcbiAgPjwvbGliLWRvY3VtZW50LXNlY3Rpb24+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPGFwcC1hc3Nlc3NtZW50LWxpc3RcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnaXNBc3Nlc3NtZW50J1wiXHJcbiAgW3Byb2dyYW1faWRzXT1cIicnXCJcclxuICBbaXNFZGl0XT1cInBvbGljeUZvcm0/LmFzc2Vzc21lbnQ/Lmxlbmd0aFwiXHJcbiAgKGNhbmNlbEFzc2Vzc21lbnQpPVwic2F2ZVNlbGVjdGVkTGlzdCgnaXNBc3Nlc3NtZW50JywgZmFsc2UpXCJcclxuICBbc2VsZWN0ZWRBc3Nlc3NtZW50XT1cInBvbGljeUZvcm0/LmFzc2Vzc21lbnRbMF1cIlxyXG4gIFttb2RlXT1cIidwb2xpY3knXCJcclxuICAob25Bc3Nlc3NtZW50U2VsZWN0KT1cIlxyXG4gICAgb25Bc3Nlc3NtZW50U2VsZWN0KCRldmVudCk7IHNhdmVTZWxlY3RlZExpc3QoJ2lzQXNzZXNzbWVudCcsIGZhbHNlKVxyXG4gIFwiXHJcbj48L2FwcC1hc3Nlc3NtZW50LWxpc3Q+XHJcblxyXG48YXBwLW93bmVyLWxpc3RcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXBwcm92ZXJzJyAmJiBmYWxzZVwiXHJcbiAgW2xpc3RIZWFkaW5nXT1cIidTZWxlY3QgQXBwcm92ZXJzJ1wiXHJcbiAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxyXG4gIFtwbHVyYWxUZXh0XT1cIidVc2VycyBzZWxlY3RlZCdcIlxyXG4gIFt1c2Vyc0xpc3RdPVwiYWxsQXBwcm92ZXJzXCJcclxuICBbc2hvd1dvcmtmbG93XT1cInRydWVcIlxyXG4gIFtzZWxlY3RlZFVzZXJzXT1cIlxyXG4gICAgYWRkTW9yZUxldmVsc1xyXG4gICAgICA/IFtdXHJcbiAgICAgIDogcG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1thcHByb3ZlcnNMaXN0SW5kZXhdLmFwcHJvdmVyc1xyXG4gIFwiXHJcbiAgW3VzZXJJZEtleV09XCInbWVtYmVyX2lkJ1wiXHJcbiAgW2l0ZW1FbWFpbEtleV09XCInbWVtYmVyX2VtYWlsJ1wiXHJcbiAgW2l0ZW1OYW1lS2V5XT1cIidtZW1iZXJfbmFtZSdcIlxyXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2FwcHJvdmVycycsICRldmVudClcIlxyXG4gIChjbG9zZVVzZXJzTGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXHJcbiAgW21vZGVdPVwibW9kZVwiXHJcbiAgW3Jldmlld2VyV29ya2Zsb3dUeXBlXT1cIndvcmtmbG93VHlwZVwiXHJcbiAgKHJldmlld2VyV29ya2Zsb3dUeXBlQ2hhbmdlKT1cInJldmlld2VyVHlwZUNoYW5nZSgkZXZlbnQpXCJcclxuICBbd29ya2Zsb3dMaXN0XT1cIndvcmtmbG93TGlzdFwiXHJcbiAgW3dvcmtmbG93VGV4dF09XCInQXBwcm92YWwgV29ya2Zsb3cnXCJcclxuPlxyXG48L2FwcC1vd25lci1saXN0PlxyXG5cclxuPGFwcC1vd25lci1saXN0XHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ293bmVycydcIlxyXG4gIFtsaXN0SGVhZGluZ109XCInU2VsZWN0IE93bmVyKHMpJ1wiXHJcbiAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxyXG4gIFtwbHVyYWxUZXh0XT1cIidVc2VycyBzZWxlY3RlZCdcIlxyXG4gIFt1c2Vyc0xpc3RdPVwiYWxsQXBwcm92ZXJzXCJcclxuICBbc2hvd1dvcmtmbG93XT1cImZhbHNlXCJcclxuICBbdXNlcklkS2V5XT1cIidtZW1iZXJfaWQnXCJcclxuICBbaXRlbUVtYWlsS2V5XT1cIidtZW1iZXJfZW1haWwnXCJcclxuICBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiXHJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnb3duZXJzJywgJGV2ZW50KVwiXHJcbiAgKGNsb3NlVXNlcnNMaXN0KT1cImRpc2FibGVTZWxlY3RvcigpXCJcclxuICBbbW9kZV09XCJtb2RlXCJcclxuICBbc2VsZWN0ZWRVc2Vyc109XCJwb2xpY3lGb3JtPy5wb2xpY3lfb3duZXJzID8/IFtdXCJcclxuPlxyXG48L2FwcC1vd25lci1saXN0PlxyXG4iXX0=
|