vcomply-workflow-engine 3.1.9 → 3.1.10
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/esm2020/lib/log-an-issue/log-an-issue.component.mjs +3 -3
- package/esm2020/lib/more-option/more-option.component.mjs +16 -16
- package/esm2020/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +3 -3
- package/esm2020/lib/sharedComponents/bulk-view/bulk-view.component.mjs +3 -3
- package/esm2020/lib/workflow-compliance/workflow-compliance.component.mjs +3 -3
- package/esm2020/lib/workflow-policy/workflow-policy.component.mjs +3 -3
- package/esm2020/lib/workflow-program/create-program-ui/define-framework-listing/pipes/tooltip-message.pipe.mjs +3 -3
- package/esm2020/lib/workflow-program/workflow-program.component.mjs +3 -3
- package/esm2020/lib/workflow-risk/workflow-risk.component.mjs +3 -3
- package/fesm2015/vcomply-workflow-engine.mjs +31 -31
- package/fesm2015/vcomply-workflow-engine.mjs.map +1 -1
- package/fesm2020/vcomply-workflow-engine.mjs +31 -31
- package/fesm2020/vcomply-workflow-engine.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1382,10 +1382,10 @@ export class WorkflowProgramComponent {
|
|
|
1382
1382
|
}
|
|
1383
1383
|
}
|
|
1384
1384
|
WorkflowProgramComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WorkflowProgramComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.ProgramsService }, { token: i3.AuthService }, { token: i4.UiKitService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1385
|
-
WorkflowProgramComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: WorkflowProgramComponent, selector: "app-workflow-program", inputs: { canFrameworkChange: "canFrameworkChange", mode: "mode", programId: "programId", programType: "programType", allowedFeature: "allowedFeature", addToProgramDetails: "addToProgramDetails", orgDetails: "orgDetails" }, outputs: { pickerChanged: "pickerChanged", populateOption: "populateOption", closeWorkflow: "closeWorkflow", showConfirmationAlert: "showConfirmationAlert", disconnectRefresh: "disconnectRefresh", refreshForm: "refreshForm", hideElementsFromMoreOptions: "hideElementsFromMoreOptions", onRemovingRole: "onRemovingRole", disableElementsFromMoreOptions: "disableElementsFromMoreOptions" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true, read: ElementRef }, { propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }], ngImport: i0, template: "<div class=\"workflow-program\" #form>\r\n <form novalidate [formGroup]=\"programForm\">\r\n <!-- Program Category Type -->\r\n <form-field [checked]=\"controls?.program_type?.value > -1\" [active]=\"false\" [disabled]=\"sideElements.includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/issue-type.svg'\">\r\n <label class=\"vx-control-panel\">PROGRAM TYPE <span class=\"required\">*</span></label>\r\n <tab-selector formControlName=\"program_type\" [displayArray]=\"constants?.categoryType\"></tab-selector>\r\n <!-- <p *ngIf=\"program_name?.invalid\" class=\"error-message\">Add a program type</p> -->\r\n </form-field>\r\n\r\n <!-- Framework -->\r\n <form-field *ngIf=\"isAscentAllowed\" [checked]=\"false\" [active]=\"false\" [disabled]=\"false\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg'\">\r\n <label class=\"vx-control-panel\">FRAMEWORK</label>\r\n <!-- [selectDiv]=\"true\" -->\r\n <input-with-pill [placeholder]=\"'Select a framework that this Program relates to'\" (select)=\"activateList('FRAMEWORK')\">\r\n <div class=\"selected\" *ngIf=\"controls?.framework.value?.name\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"canFrameworkChange\" (click)=\"remove('', 'FRAMEWORK')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.framework.value?.name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.framework.value?.name}}</span>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i (click)=\"remove('', 'FRAMEWORK')\" *ngIf=\"canFrameworkChange\" class=\"icons\" ></i> {{controls?.framework.value?.name}}</span>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"canFrameworkChange\" class=\"edit\" type=\"button\" (click)=\"activateList('FRAMEWORK')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n </form-field>\r\n\r\n <!-- Program Category Name -->\r\n <form-field [checked]=\"controls?.program_name?.value?.trim()?.length\" [active]=\"false\" [disabled]=\"sideElements.includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg'\">\r\n <label class=\"vx-control-panel\">PROGRAM NAME <span class=\"required\">*</span></label>\r\n <input InputTrim formControlName=\"program_name\" type=\"text\"\r\n placeholder=\"What is the Program name?\">\r\n\r\n <p *ngIf=\"controls?.program_name?.errors && controls?.program_name?.touched\" class=\"error-message\">Enter a\r\n name for this Program.</p>\r\n <p *ngIf=\"isNameExists\" class=\"error-message\">Program name already exists.</p>\r\n <div class=\"upload-files vx-d-flex vx-align-center vx-flex-wrap vx-mt-1\">\r\n <file-pill *ngFor=\"let attachment of controls?.description_attachment?.value |slice:0:2\"\r\n [extension]=\"attachment?.org_file?.split('.').pop()\" [name]=\"attachment?.org_file\"\r\n [disabled]=\"attachment?.uploading\" (delete)=\"deleteAttachment('DESCRIPTION',attachment)\">\r\n </file-pill>\r\n <button *ngIf=\"controls?.description_attachment?.value?.length > 2\" class=\"file-count\" appPopover (click)=\"uploadFile.popover()\" placement=\"right\">+{{controls?.description_attachment?.value?.length - 2}}</button>\r\n <app-popover #uploadFile [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li class=\"vx-p-2\" *ngFor=\"let attachment of controls?.description_attachment?.value|slice:2\">\r\n <file-pill [extension]=\"attachment?.org_file?.split('.').pop()\" [name]=\"attachment?.org_file\"\r\n [disabled]=\"attachment?.uploading\" (delete)=\"deleteAttachment('DESCRIPTION',attachment)\"></file-pill>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n <vcomply-editor [(ngModel)]=\"editorData.programDescription\" [ngModelOptions]=\"{standalone: true}\"\r\n (sendSavedFiles)=\"selectFile('DESCRIPTION',$event)\"\r\n (ngModelChange)=\"setFormField('program_description',$event)\" [editorConfig]=\"constants?.description\">\r\n </vcomply-editor>\r\n\r\n </form-field>\r\n\r\n <!-- Objective -->\r\n <form-field [checked]=\"controls?.program_objective?.value?.trim()?.length\" [active]=\"activeList === 'OBJECTIVE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'OBJECTIVE'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/objectives.svg'\">\r\n <label class=\"vx-control-panel\">OBJECTIVE\r\n <!-- <span class=\"required\">*</span> -->\r\n </label>\r\n <vcomply-editor [(ngModel)]=\"editorData.programObjective\" [ngModelOptions]=\"{standalone: true}\"\r\n (sendSavedFiles)=\"selectFile('OBJECTIVE',$event)\"\r\n (ngModelChange)=\"setFormField('program_objective',$event, true)\" [editorConfig]=\"constants?.objective\">\r\n </vcomply-editor>\r\n <!-- <p *ngIf=\"!isObjectiveValid\" class=\"error-message\">Specify the objective for this Program.</p> -->\r\n </form-field>\r\n\r\n <!-- Roles -->\r\n <form-field *ngIf=\"additionalOption?.ROLES\" [checked]=\"controls?.program_roles?.value?.length \" [active]=\"activeList === 'ROLE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'ROLE'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/roles.svg'\">\r\n <label class=\"vx-control-panel\" id =\"permissiongroup\">{{ff_rc_listing ?'PERMISSIONS':'PERMISSION GROUP(S)'}} <span class=\"required\">*</span><i class=\"icons\" [appTooltip]=\"ff_rc_listing ?'Permissions let you specify the users that can be \u201COwners\u201D' + (allowedFeature.isFeatureEnabled('ff_program_simplify') ? ' ' : ' and \u201CApprovers\u201D') + 'of a Program.':'Permission group(s) let you specify the users that can be \u201COwners\u201D' + (allowedFeature.isFeatureEnabled('ff_program_simplify') ? ' ' : ' and \u201CApprovers\u201D') + 'of a Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"RoleHelpText\"></i></label>\r\n <input-with-pill id=\"placeholdername\" [placeholder]=\"ff_rc_listing ?'Which user permissions have access to this program?':'Which user permission groups have access to this program?'\"\r\n (select)=\"activateList('ROLE')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_roles?.value?.length\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"!lists.SYSTEM_ROLE_IDS.includes(controls?.program_roles?.value[0]?._id)\" (click)=\"remove(controls?.program_roles?.value[0],'ROLE')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"featureflagrole && controls?.program_roles?.value[0]?.permissionGroupName ? controls?.program_roles?.value[0]?.permissionGroupName : controls?.program_roles?.value[0]?.roleName\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{featureflagrole && controls?.program_roles?.value[0]?.permissionGroupName ? controls?.program_roles?.value[0]?.permissionGroupName : controls?.program_roles?.value[0]?.roleName}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"role.popover()\" placement=\"right\" *ngIf=\"controls?.program_roles?.value?.length > 1\">+{{controls?.program_roles?.value?.length - 1}}</button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i *ngIf=\"!lists.SYSTEM_ROLE_IDS.includes(controls?.program_roles?.value[0]?._id)\" (click)=\"remove(controls?.program_roles?.value[0],'ROLE')\" class=\"icons\"></i>{{featureflagrole && controls?.program_roles?.value[0]?.permissionGroupName ? controls?.program_roles?.value[0]?.permissionGroupName : controls?.program_roles?.value[0]?.roleName}}</span>\r\n <button *ngIf=\"controls?.program_roles?.value?.length > 1\" class=\"count\" appPopover (click)=\"role.popover()\" placement=\"right\">+{{controls?.program_roles?.value?.length - 1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='ROLE'\" class=\"edit\" type=\"button\" (click)=\"activateList('ROLE')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <p *ngIf=\"false\" class=\"error-message\">{{featureflagrole ? 'Add a permission group(s)' :'Add a role(s)'}}</p>\r\n <app-popover #role [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of controls?.program_roles?.value | slice:1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i *ngIf=\"!lists.SYSTEM_ROLE_IDS.includes(data?._id)\" class=\"icons\"\r\n (click)=\"removeRole(data,'ROLE')\"></i>\r\n {{featureflagrole && data?.permissionGroupName ? data?.permissionGroupName : data?.roleName}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </form-field>\r\n\r\n <!-- Owners -->\r\n <form-field *ngIf=\"additionalOption?.OWNERS\" [checked]=\"controls?.program_owners.value?.length > 0 || controls?.program_owners_group.value?.length > 0\" [active]=\"activeList === 'OWNER'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'OWNER'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/owner.svg'\">\r\n <label class=\"vx-control-panel\">OWNER(S) <span class=\"required\">*</span>\r\n <span class=\"icon\" *ngIf=\"toolTipData.owner !== ''\" libPopoverHover (mouseover)=\"dataTooltip.popover()\" (mouseleave)=\"dataTooltip.closePopover()\"\r\n placement=\"right\" ><i class=\"icons\"></i></span>\r\n <popover-hover #dataTooltip>\r\n <div class=\"vx-info-card\">\r\n <div class=\"vx-info-card-body\" [innerHTML]=\"toolTipData.owner\" id=\"OwnerHelpText\"></div>\r\n </div>\r\n </popover-hover>\r\n </label>\r\n <input-with-pill [placeholder]=\"'Who is responsible for managing this program?'\"\r\n (select)=\"activateList('OWNER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_owners.value[0]\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_owners?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_owners?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\" appPopover (click)=\"owner.popover()\" placement=\"right\" *ngIf=\"controls?.program_owners?.value?.length > 1\">+{{controls?.program_owners?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_owners_group?.value?.length && controls?.program_owners?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_owners_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"!['ADMIN','KEY_ADMIN','LOGGED_IN'].includes(owner?.user_role)\" (click)=\"remove(owner,'OWNER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_owners_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_owners_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"group.popover()\" placement=\"right\" *ngIf=\"controls?.program_owners_group?.value?.length > 1\">+{{controls?.program_owners_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_owners?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\" >{{controls?.program_owners?.value[0]?.member_name}}</span></span>\r\n <button *ngIf=\"controls?.program_owners?.value?.length > 1\" class=\"count user\" appPopover (click)=\"owner.popover()\" placement=\"right\">+{{controls?.program_owners?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_owners_group?.value?.length && controls?.program_owners?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_owners_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" *ngIf=\"!['ADMIN','KEY_ADMIN','LOGGED_IN'].includes(owner?.user_role)\" (click)=\"remove(owner,'OWNER_GROUP')\"></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_owners_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_owners_group?.value[0]?.group_name}}</span></span>\r\n <button *ngIf=\"controls?.program_owners_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"group.popover()\" placement=\"right\">+{{controls?.program_owners_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='OWNER'\" [class.disabled]=\"controls?.all_user_in_role?.value\" (click)=\"activateList('OWNER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i>Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <p *ngIf=\"false\" class=\"error-message\">Add a owner(s)</p>\r\n <div class=\"vx-d-flex vx-align-center vx-justify-end vx-mt-2\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-mr-2\">{{featureflagrole ? \"ALL USERS ASSOCIATED WITH THE SELECTED PERMISSION GROUPS\":\"ALL USERS ASSOCIATED WITH THE SELECTED ROLES\"}}</div>\r\n <switch formControlName=\"all_user_in_role\" (change)=\"selectAllRoleOwner($event)\"></switch>\r\n </div>\r\n <app-popover #owner [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of controls?.program_owners?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i *ngIf=\"!(lists.NON_REMOVABLE_OWNERS | listToId : 'member_id').includes(owner?.member_id)\"\r\n class=\"icons\" (click)=\"remove(owner,'OWNER')\"></i>\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 #group [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of controls?.program_owners_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i *ngIf=\"!['ADMIN','KEY_ADMIN','LOGGED_IN'].includes(owner?.user_role)\"\r\n class=\"icons\" (click)=\"remove(owner,'OWNER_GROUP')\"></i>\r\n {{owner?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </form-field>\r\n\r\n <!-- Approvers -->\r\n <!-- Removing this option in Program simplification -->\r\n <form-field *ngIf=\"additionalOption?.APPROVER && !programSimplifyFlag\" [checked]=\"controls?.program_approver?.value?.length\" [active]=\"activeList === 'APPROVER'\" [disabled]=\"(sideElements.includes(activeList) && activeList !== 'APPROVER')\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg'\">\r\n <label class=\"vx-control-panel\">APPROVER <i class=\"icons\" [appTooltip]=\"'An Approver is responsible for approving a Program. Where an Approver is selected, the Program and all responsibilities linked with that Program will only commence once the Program has been approved.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"ApproverHelpText\"></i></label>\r\n <input-with-pill [placeholder]=\"'Who is responsible for approving this program?'\"\r\n [disabled]=\"isApproverDisabled\" (select)=\"activateList('APPROVER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_approver?.value[0]\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"isApproverDisabled === false\" (click)=\"remove(controls?.program_approver?.value[0],'APPROVER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_approver?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_approver?.value[0]?.member_name}}</span>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <i *ngIf=\"isApproverDisabled === false\" (click)=\"remove(controls?.program_approver?.value[0],'APPROVER')\"\r\n class=\"icons vx-fs-9 vx-mr-1 cross\"></i>{{controls?.program_approver?.value[0]?.member_name}}\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"(activeList!=='APPROVER') && isApproverDisabled === false\"(click)=\"activateList('APPROVER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i>Edit</button>\r\n </div>\r\n </input-with-pill>\r\n </form-field>\r\n\r\n <!-- Performance Calculated -->\r\n <!-- <form-field [checked]=\"controls?.performance_calculation?.value\" [active]=\"activeList === 'PERFORMANCE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'PERFORMANCE'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/performance-calc.svg'\">\r\n <label class=\"vx-control-panel\">HOW SHOULD THE PERFORMANCE OF THIS PROGRAM BE CALCULATED?</label>\r\n <tab-selector formControlName=\"performance_calculation\" [displayArray]=\"constants?.performanceCalculation\">\r\n </tab-selector>\r\n </form-field> -->\r\n <ng-container *ngIf=\"isProgramScope\" >\r\n <div class=\"scope-label vx-fs-10 vx-txt-white vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mb-5 vx-lh-4 vx-d-inline-block\">PROGRAM SCOPE</div>\r\n <!-- <i class=\"icons info-icon vx-fs-12 vx-txt-blue vx-ml-1\" [appTooltip]=\"tooltip.programScope\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\"></i> -->\r\n <span class=\"icon info-icon vx-fs-12 vx-txt-blue vx-ml-1\" *ngIf=\"toolTipData.programScop !== ''\" libPopoverHover (mouseover)=\"dataTooltip.popover()\" (mouseleave)=\"dataTooltip.closePopover()\" placement=\"right\"><i class=\"icons\"></i></span>\r\n <popover-hover #dataTooltip>\r\n <div class=\"vx-info-card\">\r\n <div class=\"vx-info-card-body\" [innerHTML]=\"toolTipData.programScope\" id=\"PSHelpText\"></div>\r\n </div>\r\n </popover-hover>\r\n </ng-container>\r\n\r\n <!-- Program Frequency -->\r\n <form-field *ngIf=\"additionalOption?.PROGRAM_FREQUENCY\" [checked]=\"[true,false].includes(controls?.recurring_frequency?.value)\" [active]=\"activeList === 'FREQUENCY'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'FREQUENCY'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/recurring.svg'\">\r\n <label class=\"vx-control-panel\" id=\"PDChange\">PROGRAM DURATION <i class=\"icons\" [appTooltip]=\"'Program Duration refers to the duration of the Program. A Program can occur in perpetuity, or it can occur until the end of the current business cycle that has been specified in '+ businessCycle.selectedCycle.business_cycle +'. All responsibilities linked with that Program will also have the same Program Duration.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"ProgramDurationHelpText\"></i></label>\r\n <div class=\"upload-format\">\r\n <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <span class=\"text vx-mb-0\">Is this program recurring?</span>\r\n <div class=\"radio-group program\">\r\n <app-cs-radio [name]=\"'recurring_frequency'\" [checked]=\"controls?.recurring_frequency?.value\" (checkedEvent)=\"setFormField('recurring_frequency',true)\">YES</app-cs-radio>\r\n <app-cs-radio [name]=\"'recurring_frequency'\" [checked]=\"!controls?.recurring_frequency?.value\" (checkedEvent)=\"setFormField('recurring_frequency',false)\">NO</app-cs-radio>\r\n </div>\r\n </div>\r\n </div>\r\n </form-field>\r\n\r\n <!-- Scope Changes -->\r\n <form-field *ngIf=\"additionalOption?.SCOPE_CHANGES\" [checked]=\"[true,false].includes(controls?.lock_scope_change?.value)\" [active]=\"activeList === 'SCOPE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'SCOPE'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/lock-scope.svg'\">\r\n <label class=\"vx-control-panel\">Lock the Program Scope <i class=\"icons\" [appTooltip]=\"'If the Program Scope is locked, neither the Program nor the responsibilities linked with the Program can be edited once the Program begins. In order to edit the Program or the linked responsibilities, the Program details will need to be edited.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"ScopeChangesHelpText\"></i></label>\r\n <div class=\"upload-format\">\r\n <span class=\"text\">Would you like to <span class=\"vx-label-txt vx-fw-500\">lock changes</span> to the program\r\n scope?</span>\r\n <div class=\"radio-group program\">\r\n <app-cs-radio [name]=\"'lock_scope_change'\" [checked]=\"controls?.lock_scope_change?.value\" (checkedEvent)=\"setFormField('lock_scope_change',true)\">YES</app-cs-radio>\r\n <app-cs-radio [name]=\"'lock_scope_change'\" [checked]=\"!controls?.lock_scope_change?.value\" (checkedEvent)=\"setFormField('lock_scope_change',false)\">NO</app-cs-radio>\r\n </div>\r\n </div>\r\n </form-field>\r\n\r\n <!-- Framework -->\r\n <!-- <form-field [checked]=\"false\" [active]=\"activeList === 'FRAMEWORK'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'FRAMEWORK'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg'\">\r\n <label class=\"vx-control-panel\">FRAMEWORK</label>\r\n <input-with-pill [placeholder]=\"'Select a framework that this Program relates to'\" (select)=\"activateList('FRAMEWORK')\">\r\n <div class=\"selected\" *ngIf=\"controls?.framework?.value?.framework_name\">\r\n <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i (click)=\"remove(controls?.framework.value,'FRAMEWORK')\" class=\"icons\"></i>{{controls?.framework?.value?.framework_name}}</span>\r\n <button class=\"count\" appPopover (click)=\"framework.popover()\" placement=\"right\">+5</button>\r\n </div>\r\n </div>\r\n <button *ngIf=\"activeList!=='FRAMEWORK'\" (click)=\"activateList('FRAMEWORK')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #framework [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 class=\"value\">\r\n <i class=\"icons\"></i>\r\n Manage framework name\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </form-field> -->\r\n\r\n <!-- Responsibility Center -->\r\n <form-field *ngIf=\"additionalOption?.RC\" [checked]=\"controls?.rc?.value?.length\" [active]=\"activeList === 'RC'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'RC'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg'\">\r\n <label class=\"vx-control-panel\">RESPONSIBILITY CENTER <i class=\"icons\" [appTooltip]=\"'Responsibility Centers represent your organizational and operational infrastructure. Where Responsibility Centers are selected when creating a Program, only those Responsibilities Centers will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"RCHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" (select)=\"activateList('RC')\"\r\n [placeholder]=\"'Which Responsibility Center(s) can be linked to the responsibilities associated with this Program?'\">\r\n <div class=\"selected\" *ngIf=\"controls?.rc?.value && controls?.rc?.value?.length\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.rc?.value[0],'RC')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.rc?.value[0]?.item_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.rc?.value[0]?.item_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"rc.popover()\" placement=\"right\" *ngIf=\"controls?.rc?.value?.length > 1\">+{{controls?.rc?.value?.length -1 }}</button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove(controls?.rc?.value[0],'RC')\"></i>{{controls?.rc?.value[0]?.item_name}}</span>\r\n <button *ngIf=\"controls?.rc?.value?.length > 1\" class=\"count\" appPopover (click)=\"rc.popover()\" placement=\"right\">+{{controls?.rc?.value?.length -1 }}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='RC'\" class=\"edit\" type=\"button\" (click)=\"activateList('RC')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #rc [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let rc of controls?.rc?.value |slice:1\">\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 </form-field>\r\n\r\n <!-- Assignee -->\r\n <form-field *ngIf=\"additionalOption?.ASSIGNEES\" [checked]=\"controls?.program_assignee?.value?.length || controls?.program_default_assignee?.value?.length ||controls?.program_default_assignee?.value?.length || controls?.program_default_assignee_group?.value?.length\"\r\n [active]=\"['ASSIGNEE','DEFAULT_ASSIGNEE']?.includes(activeList)\" [disabled]=\"sideElements?.includes(activeList) && !['ASSIGNEE','DEFAULT_ASSIGNEE'].includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg'\">\r\n <label class=\"vx-control-panel\" [class.disabled]=\"activeList === 'DEFAULT_ASSIGNEE'\">ASSIGNEES <i class=\"icons\" [appTooltip]=\"'Assignees are required to complete the responsibilities that have been assigned to them. Where Assignees are selected when creating a Program, only those Assignees will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"AssigneeHelpText\"></i> </label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"activeList === 'DEFAULT_ASSIGNEE'\" [placeholder]=\"'Who is responsible for completing the responsibilities within this Program?'\"\r\n (select)=\"activateList('ASSIGNEE')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_assignee?.value?.length || controls?.program_assignee_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_assignee?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_assignee?.value[0],'ASSIGNEE')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_assignee?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_assignee?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"assignee.popover()\" placement=\"right\" *ngIf=\"controls?.program_assignee?.value?.length > 1\">+{{controls?.program_assignee?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_assignee_group?.value?.length && controls?.program_assignee?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_assignee_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_assignee_group?.value[0],'ASSIGNEE_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_assignee_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_assignee_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"assignee_group.popover()\" placement=\"right\" *ngIf=\"controls?.program_assignee_group?.value?.length > 1\">+{{controls?.program_assignee_group?.value?.length -1 }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_assignee?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_assignee?.value[0],'ASSIGNEE')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_assignee?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_assignee?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_assignee?.value?.length > 1\" class=\"count user\" appPopover (click)=\"assignee.popover()\" placement=\"right\">+{{controls?.program_assignee?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_assignee_group?.value?.length && controls?.program_assignee?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_assignee_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_assignee_group?.value[0],'ASSIGNEE_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_assignee_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_assignee_group?.value[0]?.group_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_assignee_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"assignee_group.popover()\" placement=\"right\">+{{controls?.program_assignee_group?.value?.length -1 }}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='ASSIGNEE'\" class=\"edit\" type=\"button\" (click)=\"activateList('ASSIGNEE')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #assignee [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let assignee of controls?.program_assignee?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(assignee,'ASSIGNEE')\" class=\"icons\"></i>\r\n {{assignee?.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 #assignee_group [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_assignee_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'ASSIGNEE_GROUP')\" class=\"icons\"></i>\r\n {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <label class=\"vx-control-panel\" [class.disabled]=\"activeList === 'ASSIGNEE'\">DEFAULT ASSIGNEE <i class=\"icons\" [appTooltip]=\"'This option lets you specify the Default Assignees for all new responsibilities linked with a Program. If a Default Assignees is selected, the user will automatically be selected the Assignee when creating a responsibility linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility. '\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"DAHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"activeList === 'ASSIGNEE'\" [placeholder]=\"'Which persons will be selected as the default assignees for the responsibilities within this Program?'\" (select)=\"activateList('DEFAULT_ASSIGNEE')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_default_assignee?.value?.length || controls?.program_default_assignee_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_assignee?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_assignee?.value[0],'DEFAULT_ASSIGNEE')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_assignee?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_assignee?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"defaultAssignee.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_assignee?.value?.length > 1\">+{{controls?.program_default_assignee?.value?.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_assignee_group?.value?.length && controls?.program_default_assignee?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_assignee_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_assignee_group?.value[0],'DEFAULT_ASSIGNEE_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_assignee_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_assignee_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"defaultAssigneeGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_assignee_group?.value?.length > 1\">+{{controls?.program_default_assignee_group?.value?.length -1 }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_assignee?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_assignee?.value[0],'DEFAULT_ASSIGNEE')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_assignee?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{ controls?.program_default_assignee?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_assignee?.value?.length > 1\" class=\"count user\" appPopover (click)=\"defaultAssignee.popover()\" placement=\"right\">+{{controls?.program_default_assignee?.value?.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_assignee_group?.value?.length && controls?.program_default_assignee?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_assignee_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_assignee_group?.value[0],'DEFAULT_ASSIGNEE_GROUP')\" ></i>\r\n <span class=\"chip\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_assignee_group?.value[0]?.group_name }}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_assignee_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"defaultAssigneeGroup.popover()\" placement=\"right\">+{{controls?.program_default_assignee_group?.value?.length -1 }}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='DEFAULT_ASSIGNEE'\" (click)=\"activateList('DEFAULT_ASSIGNEE')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #defaultAssignee [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let assignee of controls?.program_default_assignee?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(assignee,'DEFAULT_ASSIGNEE')\" class=\"icons\"></i>\r\n {{assignee?.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 #defaultAssigneeGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_default_assignee_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(assignee,'DEFAULT_ASSIGNEE_GROUP')\" class=\"icons\"></i>\r\n {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <div class=\"radio-group-selector\" [class.disabled]=\"activeList === 'ASSIGNEE'\">\r\n <app-cs-radio [name]=\"'assignee'\" [checked]=\"controls?.assignee_completion_criteria?.value === 'ALL'\" (checkedEvent)=\"setFormField('assignee_completion_criteria', 'ALL')\">\r\n ALL SELECTED PERSONS NEED TO COMPLETE THIS <i class=\"icons\" [appTooltip]=\"'If selected, separate responsibilities will be created for each person.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" ></i>\r\n </app-cs-radio>\r\n <app-cs-radio [name]=\"'assignee'\" [checked]=\"controls?.assignee_completion_criteria?.value === 'ANYONE'\" (checkedEvent)=\"setFormField('assignee_completion_criteria', 'ANYONE')\">\r\n ANY SELECTED PERSON CAN COMPLETE THIS <i class=\"icons\" [appTooltip]=\"'If selected, only one responsibility will be created.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\"></i>\r\n </app-cs-radio>\r\n </div>\r\n </form-field>\r\n\r\n <!-- Reviewer -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.REVIEWER\"\r\n [checked]=\"controls?.program_reviewer?.value?.length || controls?.program_default_reviewer?.value?.length ||controls?.program_default_reviewer?.value?.length || controls?.program_default_reviewer_group?.value?.length\"\r\n [active]=\"['REVIEWER','DEFAULT_REVIEWER']?.includes(activeList)\" [disabled]=\"sideElements?.includes(activeList) && !['REVIEWER','DEFAULT_REVIEWER'].includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/reviewer.svg'\">\r\n <label [class.disabled]=\"activeList === 'DEFAULT_REVIEWER'\" class=\"vx-control-panel\">Reviewers <i class=\"icons\" [appTooltip]=\"'Reviewers are required to review responsibilities after they have been completed. Where Reviewers are selected when creating a Program, only those Reviewers will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"ReviewerHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"activeList === 'DEFAULT_REVIEWER'\" [placeholder]=\"'Who is responsible for reviewing the responsibilities within this Program?'\" (select)=\"activateList('REVIEWER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_reviewer?.value?.length || controls?.program_reviewer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_reviewer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_reviewer?.value[0],'REVIEWER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_reviewer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"reviewer.popover()\" placement=\"right\" *ngIf=\"controls?.program_reviewer?.value?.length > 1\">+{{controls?.program_reviewer?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_reviewer_group?.value?.length && controls?.program_reviewer?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_reviewer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_reviewer_group?.value[0],'REVIEWER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_reviewer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"reviewerGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_reviewer_group?.value?.length > 1\">+{{controls?.program_reviewer_group?.value?.length - 1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_reviewer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_reviewer?.value[0],'REVIEWER')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_reviewer?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_reviewer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"reviewer.popover()\" placement=\"right\">+{{controls?.program_reviewer?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_reviewer_group?.value?.length && controls?.program_reviewer?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_reviewer_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_reviewer_group?.value[0],'REVIEWER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_reviewer_group?.value[0]?.group_name}}\r\n </span>\r\n </span>\r\n <button *ngIf=\"controls?.program_reviewer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"reviewerGroup.popover()\" placement=\"right\">+{{controls?.program_reviewer_group?.value?.length - 1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='REVIEWER'\" (click)=\"activateList('REVIEWER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #reviewer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let reviewer of controls?.program_reviewer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(reviewer,'REVIEWER')\" class=\"icons\"></i>\r\n {{reviewer?.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 #reviewerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_reviewer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'REVIEWER_GROUP')\" class=\"icons\"></i>\r\n {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <label [class.disabled]=\"activeList === 'REVIEWER'\" class=\"vx-control-panel\">DEFAULT Reviewer <i class=\"icons\" [appTooltip]=\"'This option lets you specify the Default Reviewers for responsibilities linked with a Program. Where a user has been specified as a Default Reviewer, that user will automatically be selected as the Reviewer when creating a responsibility linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"DRHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"activeList === 'REVIEWER'\" [placeholder]=\"'Which persons will be selected as the default reviewers for the responsibilities within this Program?'\" (select)=\"activateList('DEFAULT_REVIEWER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_default_reviewer?.value?.length || controls?.program_default_reviewer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_reviewer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer?.value[0],'DEFAULT_REVIEWER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_reviewer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"defaultReviewer.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_reviewer?.value?.length > 1\">+{{controls?.program_default_reviewer?.value?.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length && controls?.program_default_reviewer?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer_group?.value[0],'DEFAULT_REVIEWER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_reviewer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"defaultReviewerGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length > 1\">+{{controls?.program_default_reviewer_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_reviewer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer?.value[0],'DEFAULT_REVIEWER')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_reviewer?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_reviewer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"defaultReviewer.popover()\" placement=\"right\">+{{controls?.program_default_reviewer?.value?.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length && controls?.program_default_reviewer?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer_group?.value[0],'DEFAULT_REVIEWER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_reviewer_group?.value[0]?.group_name}}\r\n </span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_reviewer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"defaultReviewerGroup.popover()\" placement=\"right\">+{{controls?.program_default_reviewer_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='DEFAULT_REVIEWER'\" (click)=\"activateList('DEFAULT_REVIEWER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #defaultReviewer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let reviewer of controls?.program_default_reviewer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(reviewer,'DEFAULT_REVIEWER')\" class=\"icons\"></i>\r\n {{reviewer?.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 #defaultReviewerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_default_reviewer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'DEFAULT_REVIEWER_GROUP')\" class=\"icons\"></i>\r\n {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <div class=\"radio-group-selector\" [class.disabled]=\"activeList === 'REVIEWER'\">\r\n <app-cs-radio [name]=\"'reviewer'\" [checked]=\"controls?.reviewer_completion_criteria?.value === 'SEQUENTIAL'\" (checkedEvent)=\"setFormField('reviewer_completion_criteria', 'SEQUENTIAL')\" [class.disabled]=\"controls?.program_default_reviewer_group?.value?.length > 0\">\r\n SEQUENTIAL <i class=\"icons\" [appTooltip]=\"'The responsibility will be sent for review one at a time in the sequence defined by you.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\"></i>\r\n </app-cs-radio>\r\n <app-cs-radio [name]=\"'reviewer'\" [checked]=\"controls?.reviewer_completion_criteria?.value === 'ANYONE'|| controls?.program_default_reviewer_group?.value?.length > 0\" (checkedEvent)=\"setFormField('reviewer_completion_criteria', 'ANYONE')\">\r\n ANY REVIEWER CAN MARK THIS AS REVIEWED <i class=\"icons\" [appTooltip]=\"'The responsibility will be sent for review to all reviewers at the same time. If anyone of the reviewer reviews the responsibility, it will be considered as reviewed.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\"></i>\r\n </app-cs-radio>\r\n </div>\r\n </form-field>\r\n\r\n <!-- Overseer -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.OVERSEER\"\r\n [checked]=\"controls?.program_overseer?.value?.length || controls?.program_default_overseer?.value?.length ||controls?.program_default_overseer?.value?.length || controls?.program_default_overseer_group?.value?.length\"\r\n [active]=\"activeList === 'OVERSEER'\" [disabled]=\"sideElements?.includes(activeList) && !['OVERSEER','DEFAULT_OVERSEER','DEFAULT_FAILED_OVERSEER'].includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg'\">\r\n <label class=\"vx-control-panel\" [class.disabled]=\"['DEFAULT_OVERSEER','DEFAULT_FAILED_OVERSEER'].includes(activeList)\">Oversights <i class=\"icons\" [appTooltip]=\"'Oversights receive updates when a responsibility is completed, completed with delay or not completed. Where Oversights are selected when creating a Program, only those Oversights will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"overseerHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"['DEFAULT_OVERSEER','DEFAULT_FAILED_OVERSEER'].includes(activeList)\" [placeholder]=\"'Who is responsible for overseeing the responsibilities within this Program?'\" (select)=\"activateList('OVERSEER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_overseer?.value?.length || controls?.program_overseer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_overseer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_overseer?.value[0],'OVERSEER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_overseer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_overseer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseers.popover()\" placement=\"right\" *ngIf=\"controls?.program_overseer?.value?.length > 1\">+{{controls?.program_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_overseer_group?.value?.length && controls?.program_overseer?.value?.length \" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_overseer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_overseer_group?.value[0],'OVERSEER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_overseer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseerGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_overseer_group?.value?.length> 1\">+{{controls?.program_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_overseer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_overseer?.value[0],'OVERSEER')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_overseer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">\r\n {{controls?.program_overseer?.value[0]?.member_name}}\r\n </span>\r\n </span>\r\n <button *ngIf=\"controls?.program_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseers.popover()\" placement=\"right\">+{{controls?.program_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_overseer_group?.value?.length && controls?.program_overseer?.value?.length \" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_overseer_group?.value?.length \">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_overseer_group?.value[0],'OVERSEER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_overseer_group?.value[0]?.group_name}}</span></span>\r\n <button *ngIf=\"controls?.program_overseer_group?.value?.length> 1\" class=\"count\" appPopover (click)=\"overseerGroup.popover()\" placement=\"right\">+{{controls?.program_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n\r\n <button *ngIf=\"activeList!=='OVERSEER'\" (click)=\"activateList('OVERSEER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #overseers [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let overseer of controls?.program_overseer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove(overseer,'OVERSEER')\"></i> {{overseer?.member_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_overseer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'OVERSEER_GROUP')\" class=\"icons\"></i> {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <ng-container [class.disabled]=\"activeList === 'OVERSEER'\">\r\n <label class=\"vx-control-panel\" [class.disabled]=\"['OVERSEER'].includes(activeList)\">DEFAULT Oversight <i class=\"icons\" [appTooltip]=\"'This option lets you specify the Default Oversight for responsibilities linked with a Program. Where a user has been specified as a Default Oversight, that user will automatically be selected as the Oversight when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"DOHelpText\"></i></label>\r\n <input-with-pill [disabled]=\"['OVERSEER','DEFAULT_FAILED_OVERSEER'].includes(activeList)\" [selectDiv]=\"true\" [placeholder]=\"'Which persons will be selected as the default overseers for the responsibilities within this Program?'\" (select)=\"activateList('DEFAULT_OVERSEER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_default_overseer?.value?.length || controls?.program_default_overseer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_overseer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_overseer?.value[0],'DEFAULT_OVERSEER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_overseer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_overseer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseersDefault.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_overseer?.value?.length > 1\">+{{controls?.program_default_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_default_overseer_group?.value?.length && controls?.program_default_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_overseer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_overseer_group?.value[0],'DEFAULT_OVERSEER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_overseer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseerDefaultGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_overseer_group?.value?.length >1\">+{{controls?.program_default_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_overseer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_overseer?.value[0],'DEFAULT_OVERSEER')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_overseer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_overseer?.value[0]?.member_name}}</span></span>\r\n <button *ngIf=\"controls?.program_default_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseersDefault.popover()\" placement=\"right\">+{{controls?.program_default_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_default_overseer_group?.value?.length && controls?.program_default_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_overseer_group?.value?.length \">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_overseer_group?.value[0],'DEFAULT_OVERSEER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_overseer_group?.value[0]?.group_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_overseer_group?.value?.length >1\" class=\"count\" appPopover (click)=\"overseerDefaultGroup.popover()\" placement=\"right\">+{{controls?.program_default_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='DEFAULT_OVERSEER'\" (click)=\"activateList('DEFAULT_OVERSEER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #overseersDefault [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let overseer of controls?.program_default_overseer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove(overseer,'DEFAULT_OVERSEER')\"></i> {{overseer?.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 #overseerDefaultGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_default_overseer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'DEFAULT_OVERSEER_GROUP')\" class=\"icons\"></i> {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <label class=\"vx-control-panel\" > </label>\r\n <input-with-pill class=\"vx-mt-2\" [selectDiv]=\"true\" [line]=\"3\" [disabled]=\"['OVERSEER','DEFAULT_OVERSEER'].includes(activeList)\" [placeholder]=\"'Which persons will be selected as the default overseers for responsibilities that are not completed within this Program?'\" (select)=\"activateList('DEFAULT_FAILED_OVERSEER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length || controls?.program_default_failed_overseer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer?.value[0],'DEFAULT_FAILED_OVERSEER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_failed_overseer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_failed_overseer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseersDefaultFail.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length > 1\">+{{controls?.program_default_failed_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length && controls?.program_default_failed_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer_group?.value[0],'DEFAULT_FAILED_OVERSEER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_failed_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_failed_overseer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseerDefaultFailGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length > 1\">+{{controls?.program_default_failed_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer?.value[0],'DEFAULT_FAILED_OVERSEER')\" ></i>\r\n <span class=\"chip\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_failed_overseer?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_failed_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseersDefaultFail.popover()\" placement=\"right\">+{{controls?.program_default_failed_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length && controls?.program_default_failed_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length \">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer_group?.value[0],'DEFAULT_FAILED_OVERSEER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_failed_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_failed_overseer_group?.value[0]?.group_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"overseerDefaultFailGroup.popover()\" placement=\"right\">+{{controls?.program_default_failed_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='DEFAULT_FAILED_OVERSEER'\" (click)=\"activateList('DEFAULT_FAILED_OVERSEER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #overseersDefaultFail [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let overseer of controls?.program_default_failed_overseer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove(overseer,'DEFAULT_FAILED_OVERSEER')\"></i> {{overseer?.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 #overseerDefaultFailGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_default_failed_overseer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'DEFAULT_FAILED_OVERSEER_GROUP')\" class=\"icons\"></i> {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n</ng-container>\r\n </form-field>\r\n\r\n <!-- Assessment -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.ASSESSMENT\"\r\n [checked]=\"controls?.program_assessments?.value?.length\"\r\n [active]=\"activeList === 'ASSESSMENT'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'ASSESSMENT'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/assessments.svg'\">\r\n <label class=\"vx-control-panel\">ASSESSMENTS <i class=\"icons\" [appTooltip]=\"'Assessments are a digital form that are created in \u201CAssessment\u201D within the Compliance Module. Where Assessments are selected when creating a Program, only those Assessments will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"AssessmentHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [placeholder]=\"'Which assessments can be linked to the responsibilities within this Program?'\" (select)=\"activateList('ASSESSMENT')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_assessments?.value?.length\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"(controls?.program_assessments?.value | assessmentResolver) as assessments\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(assessments[0],'ASSESSMENT')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"assessments[0]?.assessment_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{assessments[0]?.assessment_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"program_assessments.popover()\" placement=\"right\" *ngIf=\"assessments?.length > 1\">+{{assessments?.length -1 }}</button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <ng-container *ngIf=\"(controls?.program_assessments?.value | assessmentResolver) as assessments\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove(assessments[0],'ASSESSMENT')\"></i>{{assessments[0]?.assessment_name}} </span>\r\n <button *ngIf=\"assessments?.length > 1\" class=\"count\" appPopover (click)=\"program_assessments.popover()\" placement=\"right\">+{{assessments?.length -1 }}</button>\r\n </div>\r\n </ng-container>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='ASSESSMENT'\" class=\"edit\" type=\"button\" (click)=\"activateList('ASSESSMENT')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #program_assessments [dontCloseonClick]=\"true\">\r\n <ng-container >\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n\r\n <li *ngFor=\"let assessment of (controls?.program_assessments?.value | assessmentResolver) | slice:1\">\r\n <div class=\"avatar-card\" >\r\n <span class=\"value\">\r\n <i (click)=\"remove(assessment,'ASSESSMENT')\" class=\"icons\" ></i> {{assessment?.assessment_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n </app-popover>\r\n </form-field>\r\n\r\n <!-- Format & Evidence -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.FORMATE_EVIDENCE\" [checked]=\"[true,false].includes(controls?.evidence_required?.value)\"\r\n [active]=\"false\" [disabled]=\"sideElements.includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/format-evidence.svg'\">\r\n <label class=\"vx-control-panel\">Evidence <i class=\"icons\" [appTooltip]=\"'If selected, evidence of completion of a responsibility will be required for all responsibilities that are linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"EvidenceHelpText\"></i></label>\r\n <div class=\"upload-format\">\r\n\r\n <span class=\"text\">Do all responsibilities within this program require evidence?</span>\r\n <div class=\"radio-group program\">\r\n <app-cs-radio [name]=\"'evidence_required'\" [checked]=\"controls?.evidence_required?.value\" (checkedEvent)=\"setFormField('evidence_required',true)\">YES</app-cs-radio>\r\n <app-cs-radio [name]=\"'evidence_required'\" [checked]=\"!controls?.evidence_required?.value\" (checkedEvent)=\"setFormField('evidence_required',false)\">NO</app-cs-radio>\r\n </div>\r\n </div>\r\n <!-- <div class=\"vx-d-flex vx-align-center vx-justify-end vx-mt-2\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-mr-2\">Allow any file to be marked as\r\n key\r\n evidence</div>\r\n <switch formControlName=\"allow_any_file_key_evidence\"\r\n (change)=\"setFormField('allow_any_file_key_evidence',$event?.target?.checked)\"></switch>\r\n </div> -->\r\n </form-field>\r\n\r\n <!-- Custom Field -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.CUSTOM_FIELDS\" [checked]=\"controls?.custom_fields?.value?.length\"\r\n [active]=\"false\" [disabled]=\"sideElements.includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/custom-fields.svg'\">\r\n <label class=\"vx-control-panel\">CUSTOM FIELD <i class=\"icons\" [appTooltip]=\"'Where a custom field is specified, all responsibilities linked with a Program will contain that custom field. Custom fields enable the collection of additional meta data.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"CFHelpText\"></i></label>\r\n <custom-field formControlName=\"custom_fields\"></custom-field>\r\n </form-field>\r\n </form>\r\n</div>\r\n\r\n\r\n<!-- list of roles -->\r\n<role-list *ngIf=\"activeList === 'ROLE'\" [selected]=\"controls?.program_roles?.value | refDisconnect\" [loading]=\"listLoadingState.ROLES\"\r\n [list]=\"lists?.ROLES?.data ?? []\" (save)=\"listAction($event,'ROLE')\" (cancel)=\"fieldDeselector('ROLE')\" [featureflagrole]=\"featureflagrole\" [featureflagGroup]=\"featureflagGroups\" [ff_rc_listing]=\"ff_rc_listing\"></role-list>\r\n\r\n<!-- list of frameworks -->\r\n<!-- <app-define-framework-listing *ngIf=\"activeList === 'FRAMEWORK'\" (cancel)=\"fieldDeselector('FRAMEWORK')\" (next)=\"listAction($event,'FRAMEWORK')\" [mode]=\"mode\" [selectedFramework]=\"controls?.framework?.value\"></app-define-framework-listing> -->\r\n<!-- list of responsibility center -->\r\n<app-responsibility-centers-list *ngIf=\"activeList === 'RC'\" [responsibilityCentersList]=\"lists?.RC ?? []\"\r\n [radioSelection]=\"false\" [rcIdKey]=\"'rc_id'\" (closeRcList)=\"fieldDeselector('RC')\"\r\n (saveSelectedList)=\"listAction($event,'RC')\" [selectedResponsibilityCenters]=\"controls?.rc?.value | refDisconnect\">\r\n</app-responsibility-centers-list>\r\n<!-- render userlist with group -->\r\n\r\n<user-group-list *ngIf=\"activeList === 'OWNER'\" [groupEnabled]=\"true\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\"\r\n [nonRemovableUserIds]=\"lists.NON_REMOVABLE_OWNERS | listToId : 'member_id'\" [userlist]=\"lists?.OWNERS?.data ?? []\"\r\n [selectedUsers]=\"controls?.program_owners?.value | refDisconnect\"\r\n (fetchUserData)=\"fetchUsersAssociatedWithRoles(false,$event)\" [userListInfo]=\"lists?.OWNERS\"\r\n [groupListInfo]=\"lists?.OWNERS_GROUPS\" [groupList]=\"lists?.OWNERS_GROUPS?.data ?? []\"\r\n [selectedGroups]=\"controls?.program_owners_group?.value | refDisconnect\" (save)=\"listAction($event,'OWNER')\"\r\n (cancel)=\"fieldDeselector('OWNER')\" [panelTitle]=\"panelTitleOwner\" [featureflag]=\"featureflagGroups\"></user-group-list>\r\n<user-group-list *ngIf=\"activeList === 'APPROVER'\" [groupEnabled]=\"false\" [singleSelect]=\"true\"\r\n [userlist]=\"lists?.APPROVERS?.data ?? []\" [selectedUsers]=\"controls?.program_approver?.value | refDisconnect\"\r\n [userListInfo]=\"lists?.APPROVERS\" (save)=\"listAction($event,'APPROVER')\" (cancel)=\"fieldDeselector('APPROVER')\" [panelTitle]=\"panelTitleApprover\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"activeList === 'ASSIGNEE'\" [groupEnabled]=\"true\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\"\r\n [userlist]=\"lists?.ASSIGNEES ?? []\" [selectedUsers]=\"controls?.program_assignee?.value | refDisconnect\" [groupList]=\"lists?.ASSIGNEES_GROUP ?? []\" [FromProgram]=\"true\"\r\n [selectedGroups]=\"controls?.program_assignee_group?.value | refDisconnect\" [disabledIds]=\"disabledAssigneeIds\" [fromResponsibility] = \"'Assignee'\" [reviewerIds]=\"selectedReviewerIds\" [overseerIds]=\"selectedOverseerIds\" [assignorId]=\"assignorId\"\r\n [userListInfo]=\"lists?.ASSIGNEES\" (save)=\"listAction($event,'ASSIGNEE')\" (cancel)=\"fieldDeselector('ASSIGNEE')\" [panelTitle]=\"panelTitleAssignee\"\r\n [defaultSelectedUsers]=\"controls?.program_default_assignee?.value | refDisconnect\" [userType]=\"'assignees'\" [featureflag]=\"featureflagGroups\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"activeList === 'DEFAULT_ASSIGNEE'\" [groupEnabled]=\"true\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\"\r\n [userlist]=\"lists?.DEFAULT_ASSIGNEES ?? []\" [selectedUsers]=\"controls?.program_default_assignee?.value | refDisconnect\" [groupList]=\"lists?.DEFAULT_ASSIGNEES_GROUP ?? []\" [FromProgram]=\"true\"\r\n [selectedGroups]=\"controls?.program_default_assignee_group?.value | refDisconnect\" [disabledIds]=\"disabledAssigneeIds\" [fromResponsibility] = \"'Assignee'\" [reviewerIds]=\"selectedReviewerIds\" [overseerIds]=\"selectedOverseerIds\" [assignorId]=\"assignorId\"\r\n [userListInfo]=\"lists?.DEFAULT_ASSIGNEE\" (save)=\"listAction($event,'DEFAULT_ASSIGNEE')\" (cancel)=\"fieldDeselector('DEFAULT_ASSIGNEE')\" [featureflag]=\"featureflagGroups\">\r\n</user-group-list>\r\n\r\n<user-group-list *ngIf=\"(activeList === 'REVIEWER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.REVIEWERS ?? []\" [selectedUsers]=\"controls?.program_reviewer?.value | refDisconnect\" [groupList]=\"lists?.REVIEWERS_GROUP ?? []\" [featureflag]=\"featureflagGroups\"\r\n [selectedGroups]=\"controls?.program_reviewer_group?.value | refDisconnect\" [disabledIds]=\"disableReviewerIds\" [fromResponsibility] = \"'Reviewer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [overseerIds]=\"selectedOverseerIds\"\r\n [userListInfo]=\"lists?.REVIEWERS\" (save)=\"listAction($event,'REVIEWER')\" (cancel)=\"fieldDeselector('REVIEWER')\" [panelTitle]=\"panelTitleReviewer\"\r\n [defaultSelectedUsers]=\"controls?.program_default_reviewer?.value | refDisconnect\" [userType]=\"'reviewers'\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"(activeList === 'DEFAULT_REVIEWER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.DEFAULT_REVIEWERS ?? []\" [selectedUsers]=\"controls?.program_default_reviewer?.value | refDisconnect\" [groupList]=\"lists?.DEFAULT_REVIEWERS_GROUP ?? []\" [featureflag]=\"featureflagGroups\"\r\n [selectedGroups]=\"controls?.program_default_reviewer_group?.value | refDisconnect\" [disabledIds]=\"disableReviewerIds\" [fromResponsibility] = \"'Reviewer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [overseerIds]=\"selectedOverseerIds\"\r\n [userListInfo]=\"lists?.DEFAULT_REVIEWERS\" (save)=\"listAction($event,'DEFAULT_REVIEWER')\" (cancel)=\"fieldDeselector('DEFAULT_REVIEWER')\" [panelTitle]=\"panelTitleDefaultReviewer\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"(activeList === 'OVERSEER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.OVERSEERS ?? []\" [selectedUsers]=\"controls?.program_overseer?.value | refDisconnect\" [groupList]=\"lists?.OVERSEERS_GROUP ?? []\"\r\n [selectedGroups]=\"controls?.program_overseer_group?.value | refDisconnect\" [featureflag]=\"featureflagGroups\" [disabledIds]=\"disableOverseerIds\" [fromResponsibility] = \"'Overseer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [reviewerIds]=\"selectedReviewerIds\"\r\n [userListInfo]=\"lists?.OVERSEES\" (save)=\"listAction($event,'OVERSEER')\" (cancel)=\"fieldDeselector('OVERSEER')\"\r\n [defaultSelectedUsers]=\"controls?.program_default_overseer?.value | refDisconnect | arrayConcat: controls?.program_default_failed_overseer?.value\" [userType]=\"'overseers'\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"(activeList === 'DEFAULT_OVERSEER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.DEFAULT_OVERSEERS ?? []\" [selectedUsers]=\"controls?.program_default_overseer?.value | refDisconnect\" [groupList]=\"lists?.DEFAULT_OVERSEERS_GROUP ?? []\"\r\n [selectedGroups]=\"controls?.program_default_overseer_group?.value | refDisconnect\" [featureflag]=\"featureflagGroups\" [disabledIds]=\"disableOverseerIds\" [fromResponsibility] = \"'Overseer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [reviewerIds]=\"selectedReviewerIds\"\r\n [userListInfo]=\"lists?.DEFAULT_OVERSEERS\" (save)=\"listAction($event,'DEFAULT_OVERSEER')\" (cancel)=\"fieldDeselector('DEFAULT_OVERSEER')\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"(activeList === 'DEFAULT_FAILED_OVERSEER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.DEFAULT_OVERSEERS ?? []\" [selectedUsers]=\"controls?.program_default_failed_overseer?.value | refDisconnect\" [groupList]=\"lists?.DEFAULT_OVERSEERS_GROUP ?? []\"\r\n [selectedGroups]=\"controls?.program_default_failed_overseer_group?.value | refDisconnect\" [featureflag]=\"featureflagGroups\" [disabledIds]=\"disableOverseerIds\" [fromResponsibility] = \"'Overseer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [reviewerIds]=\"selectedReviewerIds\"\r\n [userListInfo]=\"lists?.DEFAULT_OVERSEERS\" (save)=\"listAction($event,'DEFAULT_FAILED_OVERSEER')\" (cancel)=\"fieldDeselector('DEFAULT_FAILED_OVERSEER')\">\r\n</user-group-list>\r\n<assessment-picker *ngIf=\"activeList === 'ASSESSMENT'\" [selectedAssessment]=\"controls?.program_assessments?.value\" (cancelAssessment)=\"fieldDeselector('ASSESSMENT')\" (onAssessmentSelect)=\"listAction($event,'ASSESSMENT')\"></assessment-picker>\r\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n <app-smiley-dialog-inline\r\n *ngIf=\"showSmiley\"\r\n [message]=\"smileyMessage\"\r\n [actionButtons]=\"actionButtons\"\r\n (action)=\"action($event)\"\r\n (closeSmiley)=\"closeSmiley($event)\">\r\n </app-smiley-dialog-inline>\r\n\r\n <!-- Framework selector -->\r\n <app-framework-list *ngIf=\"activeList === 'FRAMEWORK'\" [workflowPage]=\"['FRAMEWORK']\" (assignControl)=\"listAction($event, 'FRAMEWORK')\"\r\n (closeFramework)=\"fieldDeselector('FRAMEWORK')\" [previousSelectedValues]=\"{framework: controls?.framework.value}\"(entrustFramework)=\"entrustFramework($event)\" [headerText]=\"'Select a framework'\"></app-framework-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\";@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/padding/padding.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\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.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-top.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\";::ng-deep .workflow-program{display:block;position:relative}::ng-deep .workflow-program .scope-label{background:#747576;border-radius:.125rem;position:relative;z-index:1}::ng-deep .workflow-program .scope-label:before{background:#f1f1f1;content:\"\";position:absolute;top:.5rem;left:7rem;width:20rem;height:1px;z-index:-1}::ng-deep .workflow-program .scope-label:after{background:#f1f1f1;content:\"\";position:absolute;top:.5rem;left:-2.5rem;width:2.5rem;height:1px;z-index:-1}::ng-deep .workflow-program .scope-label .required{position:absolute;top:0;right:-.625rem}::ng-deep .workflow-program .info-icon{position:relative;top:.125rem;cursor:pointer}::ng-deep .workflow-program .date-picker .picker-group{width:calc(50% - .125rem);position:relative}::ng-deep .workflow-program .date-picker .picker-group:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .workflow-program .date-picker .picker-group input{height:2.5rem;border-radius:.25rem;border:1px solid #DBDBDB;background:#FFFFFF;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;padding:0 2rem 0 .75rem;outline:none}::ng-deep .workflow-program .date-picker .picker-group input:focus,::ng-deep .workflow-program .date-picker .picker-group input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .workflow-program .date-picker .picker-group input::placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group input:-ms-input-placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group input::-ms-input-placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group i{height:1rem;width:1rem;position:absolute;right:.75rem;top:.625rem;pointer-events:none}::ng-deep .workflow-program .program-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;justify-content:space-between;padding:4px;position:relative;z-index:1}::ng-deep .workflow-program .program-type-field .type-item{position:relative}::ng-deep .workflow-program .program-type-field .type-item:first-of-type{width:6.25rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(2){width:5.75rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(6.4375rem);width:5.75rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(3){width:8.625rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(3).active~.background-glider{transform:translate(12.375rem);width:8.625rem}::ng-deep .workflow-program .program-type-field .type-item:last-of-type{width:5.25rem}::ng-deep .workflow-program .program-type-field .type-item:last-of-type.active~.background-glider{transform:translate(21.1875rem);width:5.25rem}::ng-deep .workflow-program .program-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:center}::ng-deep .workflow-program .program-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none}::ng-deep .workflow-program .program-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .workflow-program .program-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .workflow-program .program-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:6.25rem;height:32px;z-index:-1;transition:.25s ease-out}::ng-deep .workflow-program .vx-form-group .upload-files .file-item{background:#f1f1f1;border:1px solid #dbdbdb;border-radius:.25rem;padding-left:.125rem}::ng-deep .workflow-program .vx-form-group .upload-files .file-item .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:8.5rem}::ng-deep .workflow-program .vx-form-group .upload-files .file-item button.delete-btn{background:transparent;border-radius:0;border:none;border-left:1px solid #dbdbdb;height:1.625rem}::ng-deep .workflow-program .vx-form-group .upload-files button.file-count{background:#1E5DD3;border-radius:.125rem;border:none;color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0;margin:4px 0 0 4px}::ng-deep .workflow-program .vx-form-group .upload-format .radio-group app-cs-radio{height:1.375rem}::ng-deep .workflow-program .vx-form-group .default-selected{background:#FBFBFB;border:1px solid #F1F1F1;border-radius:.25rem;margin-top:.5rem}::ng-deep .workflow-program .vx-form-group .default-selected .selected{border-radius:0;border:none;background:none}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio{border-top:1px solid #F1F1F1}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio{margin-top:0!important}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.radio{position:absolute;top:.5rem;left:.75rem}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;padding:.5rem .5rem .5rem 2.25rem;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item svg{position:absolute;top:.5rem;left:.75rem}::ng-deep .workflow-program .vx-form-group .selected .custom-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:2.4rem}::ng-deep .workflow-program .vx-form-group .selected button.cross-btn{background:transparent;border-radius:0;border:0;padding:0}::ng-deep .workflow-program .vx-form-group .custom-input{position:relative}::ng-deep .workflow-program .vx-form-group .custom-input input{padding-right:2rem}::ng-deep .workflow-program .vx-form-group .custom-input button.cross-btn{background:transparent;border-radius:0;border:0;position:absolute;top:.875rem;right:.625rem}::ng-deep .workflow-program .vx-form-group button.add-more-btn{background:transparent;border-radius:0;border:none;padding:0}::ng-deep app-popover .wf-action-list ul.action-item .avatar-card .value{text-transform:none!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill .file-item{background:transparent!important;border:none!important;border-radius:0!important;padding:0!important;margin:0!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill .file-name{width:100%!important;max-width:100%!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill button.delete-btn{border:none!important;padding-right:0!important}.disabled{opacity:.4;pointer-events:none;filter:grayscale(1)}.vx-info-card{width:280px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;position:static;display:block;left:780}.vx-info-card-body{font-size:12px;padding:8px 12px;margin:0;font-weight:400;text-transform:none;color:#747576}\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 .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#ffffff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#ffffff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#ffffff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group vcomply-editor{margin-top:8px;display:block}::ng-deep .vx-form-group vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#ffffff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:208px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#ffffff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#ffffff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#ffffff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}dp-date-picker input:focus{outline:none}dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}dp-date-picker .dp-popup dp-day-calendar,dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}dp-date-picker .dp-popup dp-day-calendar button,dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000000;display:inline-flex}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:rgba(0,0,0,.3)}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#ffffff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0%,#747576 1%,#747576 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#ffffff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0%,#f31c39 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0%,#34aa44 1%,#34aa44 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0%,#1e5dd3 1%,#1e5dd3 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0%,#f6882f 1%,#f6882f 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0%,#7aa6f7 1%,#7aa6f7 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.MarxEditorComponent, selector: "vcomply-editor", inputs: ["editorConfig"], outputs: ["comment", "sendSavedFiles", "popup"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.CsRadioComponent, selector: "app-cs-radio", inputs: ["disabled", "readonly", "name", "checked", "value", "oneLine"], outputs: ["checkedEvent"] }, { kind: "directive", type: i8.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i9.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i10.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i12.SmileyDialogInlineComponent, selector: "app-smiley-dialog-inline", inputs: ["message", "actionButtons"], outputs: ["action", "closeSmiley"] }, { kind: "component", type: i13.PopoverHoverComponent, selector: "popover-hover" }, { kind: "directive", type: i14.PopoverHoverDirective, selector: "[libPopoverHover]", inputs: ["placement"] }, { kind: "component", type: i15.TabSelector, selector: "tab-selector", inputs: ["disabled", "selectedItem", "displayArray"] }, { kind: "component", type: i16.FormFieldComponent, selector: "form-field", inputs: ["active", "disabled", "checked", "img"] }, { kind: "component", type: i17.FilePillComponent, selector: "file-pill", inputs: ["name", "extension", "disabled"], outputs: ["delete"] }, { kind: "component", type: i18.InputWithPillComponent, selector: "input-with-pill", inputs: ["placeholder", "disabled", "selectDiv", "line"], outputs: ["select"] }, { kind: "component", type: i19.SwitchComponent, selector: "switch", inputs: ["disabled", "checked", "tooltipMessage", "value", "position"], outputs: ["change"] }, { kind: "directive", type: i20.InputTrimDirective, selector: "[InputTrim]" }, { kind: "component", type: i21.RoleListComponent, selector: "role-list", inputs: ["featureflagrole", "featureflagGroup", "ff_rc_listing", "list", "loading", "selected"], outputs: ["save", "cancel"] }, { kind: "component", type: i22.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: i23.AssessmentPickerComponent, selector: "assessment-picker", inputs: ["isEdit", "selectedAssessment", "selectedAssessmentData"], outputs: ["onAssessmentSelect", "cancelAssessment"] }, { kind: "component", type: i24.CustomFieldComponent, selector: "custom-field", inputs: ["disabled"] }, { kind: "component", type: i25.ResponsibilityCentersListComponent, selector: "app-responsibility-centers-list", inputs: ["responsibilityCentersList", "selectedResponsibilityCenters", "rcIdKey", "radioSelection", "pluralText", "singularText"], outputs: ["saveSelectedList", "closeRcList"] }, { kind: "component", type: i26.FrameworkListComponent, selector: "app-framework-list", inputs: ["previousSelectedValues", "headerText", "workflowPage", "policy", "frameWorkList", "selectedFrameWork", "selectedCategories"], outputs: ["entrustFramework", "closeFramework", "assignControl"] }, { kind: "directive", type: i27.ScrollInViewDirective, selector: "[appScrollInView]", inputs: ["appScrollInView"] }, { kind: "pipe", type: i6.SlicePipe, name: "slice" }, { kind: "pipe", type: i28.ListToIdPipe, name: "listToId" }, { kind: "pipe", type: i29.RefDisconnectPipe, name: "refDisconnect" }, { kind: "pipe", type: i30.AssessmentResolverPipe, name: "assessmentResolver" }, { kind: "pipe", type: i31.ArrayConcatPipe, name: "arrayConcat" }] });
|
|
1385
|
+
WorkflowProgramComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: WorkflowProgramComponent, selector: "app-workflow-program", inputs: { canFrameworkChange: "canFrameworkChange", mode: "mode", programId: "programId", programType: "programType", allowedFeature: "allowedFeature", addToProgramDetails: "addToProgramDetails", orgDetails: "orgDetails" }, outputs: { pickerChanged: "pickerChanged", populateOption: "populateOption", closeWorkflow: "closeWorkflow", showConfirmationAlert: "showConfirmationAlert", disconnectRefresh: "disconnectRefresh", refreshForm: "refreshForm", hideElementsFromMoreOptions: "hideElementsFromMoreOptions", onRemovingRole: "onRemovingRole", disableElementsFromMoreOptions: "disableElementsFromMoreOptions" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true, read: ElementRef }, { propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }], ngImport: i0, template: "<div class=\"workflow-program\" #form>\r\n <form novalidate [formGroup]=\"programForm\">\r\n <!-- Program Category Type -->\r\n <form-field [checked]=\"controls?.program_type?.value > -1\" [active]=\"false\" [disabled]=\"sideElements.includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/issue-type.svg'\">\r\n <label class=\"vx-control-panel\">PROGRAM TYPE <span class=\"required\">*</span></label>\r\n <tab-selector formControlName=\"program_type\" [displayArray]=\"constants?.categoryType\"></tab-selector>\r\n <!-- <p *ngIf=\"program_name?.invalid\" class=\"error-message\">Add a program type</p> -->\r\n </form-field>\r\n\r\n <!-- Framework -->\r\n <form-field *ngIf=\"isAscentAllowed\" [checked]=\"false\" [active]=\"false\" [disabled]=\"false\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg'\">\r\n <label class=\"vx-control-panel\">FRAMEWORK</label>\r\n <!-- [selectDiv]=\"true\" -->\r\n <input-with-pill [placeholder]=\"'Select a framework that this Program relates to'\" (select)=\"activateList('FRAMEWORK')\">\r\n <div class=\"selected\" *ngIf=\"controls?.framework.value?.name\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"canFrameworkChange\" (click)=\"remove('', 'FRAMEWORK')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.framework.value?.name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.framework.value?.name}}</span>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i (click)=\"remove('', 'FRAMEWORK')\" *ngIf=\"canFrameworkChange\" class=\"icons\" ></i> {{controls?.framework.value?.name}}</span>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"canFrameworkChange\" class=\"edit\" type=\"button\" (click)=\"activateList('FRAMEWORK')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n </form-field>\r\n\r\n <!-- Program Category Name -->\r\n <form-field [checked]=\"controls?.program_name?.value?.trim()?.length\" [active]=\"false\" [disabled]=\"sideElements.includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg'\">\r\n <label class=\"vx-control-panel\">PROGRAM NAME <span class=\"required\">*</span></label>\r\n <input InputTrim formControlName=\"program_name\" type=\"text\"\r\n placeholder=\"What is the Program name?\">\r\n\r\n <p *ngIf=\"controls?.program_name?.errors && controls?.program_name?.touched\" class=\"error-message\">Enter a\r\n name for this Program.</p>\r\n <p *ngIf=\"isNameExists\" class=\"error-message\">Program name already exists.</p>\r\n <div class=\"upload-files vx-d-flex vx-align-center vx-flex-wrap vx-mt-1\">\r\n <file-pill *ngFor=\"let attachment of controls?.description_attachment?.value |slice:0:2\"\r\n [extension]=\"attachment?.org_file?.split('.').pop()\" [name]=\"attachment?.org_file\"\r\n [disabled]=\"attachment?.uploading\" (delete)=\"deleteAttachment('DESCRIPTION',attachment)\">\r\n </file-pill>\r\n <button *ngIf=\"controls?.description_attachment?.value?.length > 2\" class=\"file-count\" appPopover (click)=\"uploadFile.popover()\" placement=\"right\">+{{controls?.description_attachment?.value?.length - 2}}</button>\r\n <app-popover #uploadFile [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li class=\"vx-p-2\" *ngFor=\"let attachment of controls?.description_attachment?.value|slice:2\">\r\n <file-pill [extension]=\"attachment?.org_file?.split('.').pop()\" [name]=\"attachment?.org_file\"\r\n [disabled]=\"attachment?.uploading\" (delete)=\"deleteAttachment('DESCRIPTION',attachment)\"></file-pill>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n <vcomply-editor [(ngModel)]=\"editorData.programDescription\" [ngModelOptions]=\"{standalone: true}\"\r\n (sendSavedFiles)=\"selectFile('DESCRIPTION',$event)\"\r\n (ngModelChange)=\"setFormField('program_description',$event)\" [editorConfig]=\"constants?.description\">\r\n </vcomply-editor>\r\n\r\n </form-field>\r\n\r\n <!-- Objective -->\r\n <form-field [checked]=\"controls?.program_objective?.value?.trim()?.length\" [active]=\"activeList === 'OBJECTIVE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'OBJECTIVE'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/objectives.svg'\">\r\n <label class=\"vx-control-panel\">OBJECTIVE\r\n <!-- <span class=\"required\">*</span> -->\r\n </label>\r\n <vcomply-editor [(ngModel)]=\"editorData.programObjective\" [ngModelOptions]=\"{standalone: true}\"\r\n (sendSavedFiles)=\"selectFile('OBJECTIVE',$event)\"\r\n (ngModelChange)=\"setFormField('program_objective',$event, true)\" [editorConfig]=\"constants?.objective\">\r\n </vcomply-editor>\r\n <!-- <p *ngIf=\"!isObjectiveValid\" class=\"error-message\">Specify the objective for this Program.</p> -->\r\n </form-field>\r\n\r\n <!-- Roles -->\r\n <form-field *ngIf=\"additionalOption?.ROLES\" [checked]=\"controls?.program_roles?.value?.length \" [active]=\"activeList === 'ROLE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'ROLE'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/roles.svg'\">\r\n <label class=\"vx-control-panel\" id =\"permissiongroup\">{{ff_rc_listing ?'PERMISSIONS':'PERMISSION GROUP(S)'}} <span class=\"required\">*</span><i class=\"icons\" [appTooltip]=\"ff_rc_listing ?'Permissions let you specify the users that can be \u201COwners\u201D' + (allowedFeature.isFeatureEnabled('ff_program_simplify') ? ' ' : ' and \u201CApprovers\u201D') + 'of a Program.':'Permission group(s) let you specify the users that can be \u201COwners\u201D' + (allowedFeature.isFeatureEnabled('ff_program_simplify') ? ' ' : ' and \u201CApprovers\u201D') + 'of a Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"RoleHelpText\"></i></label>\r\n <input-with-pill id=\"placeholdername\" [placeholder]=\"ff_rc_listing ?'Which user permissions have access to this program?':'Which user permission groups have access to this program?'\"\r\n (select)=\"activateList('ROLE')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_roles?.value?.length\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"!lists.SYSTEM_ROLE_IDS.includes(controls?.program_roles?.value[0]?._id)\" (click)=\"remove(controls?.program_roles?.value[0],'ROLE')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"featureflagrole && controls?.program_roles?.value[0]?.permissionGroupName ? controls?.program_roles?.value[0]?.permissionGroupName : controls?.program_roles?.value[0]?.roleName\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{featureflagrole && controls?.program_roles?.value[0]?.permissionGroupName ? controls?.program_roles?.value[0]?.permissionGroupName : controls?.program_roles?.value[0]?.roleName}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"role.popover()\" placement=\"right\" *ngIf=\"controls?.program_roles?.value?.length > 1\">+{{controls?.program_roles?.value?.length - 1}}</button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i *ngIf=\"!lists.SYSTEM_ROLE_IDS.includes(controls?.program_roles?.value[0]?._id)\" (click)=\"remove(controls?.program_roles?.value[0],'ROLE')\" class=\"icons\"></i>{{featureflagrole && controls?.program_roles?.value[0]?.permissionGroupName ? controls?.program_roles?.value[0]?.permissionGroupName : controls?.program_roles?.value[0]?.roleName}}</span>\r\n <button *ngIf=\"controls?.program_roles?.value?.length > 1\" class=\"count\" appPopover (click)=\"role.popover()\" placement=\"right\">+{{controls?.program_roles?.value?.length - 1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='ROLE'\" class=\"edit\" type=\"button\" (click)=\"activateList('ROLE')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <p *ngIf=\"false\" class=\"error-message\">{{featureflagrole ? 'Add a permission group(s)' :'Add a role(s)'}}</p>\r\n <app-popover #role [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of controls?.program_roles?.value | slice:1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i *ngIf=\"!lists.SYSTEM_ROLE_IDS.includes(data?._id)\" class=\"icons\"\r\n (click)=\"removeRole(data,'ROLE')\"></i>\r\n {{featureflagrole && data?.permissionGroupName ? data?.permissionGroupName : data?.roleName}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </form-field>\r\n\r\n <!-- Owners -->\r\n <form-field *ngIf=\"additionalOption?.OWNERS\" [checked]=\"controls?.program_owners.value?.length > 0 || controls?.program_owners_group.value?.length > 0\" [active]=\"activeList === 'OWNER'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'OWNER'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/owner.svg'\">\r\n <label class=\"vx-control-panel\">OWNER(S) <span class=\"required\">*</span>\r\n <span class=\"icon\" *ngIf=\"toolTipData.owner !== ''\" libPopoverHover (mouseover)=\"dataTooltip.popover()\" (mouseleave)=\"dataTooltip.closePopover()\"\r\n placement=\"right\" ><i class=\"icons\"></i></span>\r\n <popover-hover #dataTooltip>\r\n <div class=\"vx-info-card\">\r\n <div class=\"vx-info-card-body\" [innerHTML]=\"toolTipData.owner\" id=\"OwnerHelpText\"></div>\r\n </div>\r\n </popover-hover>\r\n </label>\r\n <input-with-pill [placeholder]=\"'Who is responsible for managing this program?'\"\r\n (select)=\"activateList('OWNER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_owners.value[0]\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_owners?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_owners?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\" appPopover (click)=\"owner.popover()\" placement=\"right\" *ngIf=\"controls?.program_owners?.value?.length > 1\">+{{controls?.program_owners?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_owners_group?.value?.length && controls?.program_owners?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_owners_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"!['ADMIN','KEY_ADMIN','LOGGED_IN'].includes(owner?.user_role)\" (click)=\"remove(owner,'OWNER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_owners_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_owners_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"group.popover()\" placement=\"right\" *ngIf=\"controls?.program_owners_group?.value?.length > 1\">+{{controls?.program_owners_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_owners?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\" >{{controls?.program_owners?.value[0]?.member_name}}</span></span>\r\n <button *ngIf=\"controls?.program_owners?.value?.length > 1\" class=\"count user\" appPopover (click)=\"owner.popover()\" placement=\"right\">+{{controls?.program_owners?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_owners_group?.value?.length && controls?.program_owners?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_owners_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" *ngIf=\"!['ADMIN','KEY_ADMIN','LOGGED_IN'].includes(owner?.user_role)\" (click)=\"remove(owner,'OWNER_GROUP')\"></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_owners_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_owners_group?.value[0]?.group_name}}</span></span>\r\n <button *ngIf=\"controls?.program_owners_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"group.popover()\" placement=\"right\">+{{controls?.program_owners_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='OWNER'\" [class.disabled]=\"controls?.all_user_in_role?.value\" (click)=\"activateList('OWNER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i>Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <p *ngIf=\"false\" class=\"error-message\">Add a owner(s)</p>\r\n <div class=\"vx-d-flex vx-align-center vx-justify-end vx-mt-2\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-mr-2\">{{featureflagrole ? \"ALL USERS ASSOCIATED WITH THE SELECTED PERMISSION GROUPS\":\"ALL USERS ASSOCIATED WITH THE SELECTED ROLES\"}}</div>\r\n <switch formControlName=\"all_user_in_role\" (change)=\"selectAllRoleOwner($event)\"></switch>\r\n </div>\r\n <app-popover #owner [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of controls?.program_owners?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i *ngIf=\"!(lists.NON_REMOVABLE_OWNERS | listToId : 'member_id').includes(owner?.member_id)\"\r\n class=\"icons\" (click)=\"remove(owner,'OWNER')\"></i>\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 #group [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of controls?.program_owners_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i *ngIf=\"!['ADMIN','KEY_ADMIN','LOGGED_IN'].includes(owner?.user_role)\"\r\n class=\"icons\" (click)=\"remove(owner,'OWNER_GROUP')\"></i>\r\n {{owner?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </form-field>\r\n\r\n <!-- Approvers -->\r\n <!-- Removing this option in Program simplification -->\r\n <form-field *ngIf=\"additionalOption?.APPROVER && !programSimplifyFlag\" [checked]=\"controls?.program_approver?.value?.length\" [active]=\"activeList === 'APPROVER'\" [disabled]=\"(sideElements.includes(activeList) && activeList !== 'APPROVER')\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg'\">\r\n <label class=\"vx-control-panel\">APPROVER <i class=\"icons\" [appTooltip]=\"'An Approver is responsible for approving a Program. Where an Approver is selected, the Program and all responsibilities linked with that Program will only commence once the Program has been approved.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"ApproverHelpText\"></i></label>\r\n <input-with-pill [placeholder]=\"'Who is responsible for approving this program?'\"\r\n [disabled]=\"isApproverDisabled\" (select)=\"activateList('APPROVER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_approver?.value[0]\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"isApproverDisabled === false\" (click)=\"remove(controls?.program_approver?.value[0],'APPROVER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_approver?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_approver?.value[0]?.member_name}}</span>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <i *ngIf=\"isApproverDisabled === false\" (click)=\"remove(controls?.program_approver?.value[0],'APPROVER')\"\r\n class=\"icons vx-fs-9 vx-mr-1 cross\"></i>{{controls?.program_approver?.value[0]?.member_name}}\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"(activeList!=='APPROVER') && isApproverDisabled === false\"(click)=\"activateList('APPROVER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i>Edit</button>\r\n </div>\r\n </input-with-pill>\r\n </form-field>\r\n\r\n <!-- Performance Calculated -->\r\n <!-- <form-field [checked]=\"controls?.performance_calculation?.value\" [active]=\"activeList === 'PERFORMANCE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'PERFORMANCE'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/performance-calc.svg'\">\r\n <label class=\"vx-control-panel\">HOW SHOULD THE PERFORMANCE OF THIS PROGRAM BE CALCULATED?</label>\r\n <tab-selector formControlName=\"performance_calculation\" [displayArray]=\"constants?.performanceCalculation\">\r\n </tab-selector>\r\n </form-field> -->\r\n <ng-container *ngIf=\"isProgramScope\" >\r\n <div class=\"scope-label vx-fs-10 vx-txt-white vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mb-5 vx-lh-4 vx-d-inline-block\">PROGRAM SCOPE</div>\r\n <!-- <i class=\"icons info-icon vx-fs-12 vx-txt-blue vx-ml-1\" [appTooltip]=\"tooltip.programScope\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\"></i> -->\r\n <span class=\"icon info-icon vx-fs-12 vx-txt-blue vx-ml-1\" *ngIf=\"toolTipData.programScop !== ''\" libPopoverHover (mouseover)=\"dataTooltip.popover()\" (mouseleave)=\"dataTooltip.closePopover()\" placement=\"right\"><i class=\"icons\"></i></span>\r\n <popover-hover #dataTooltip>\r\n <div class=\"vx-info-card\">\r\n <div class=\"vx-info-card-body\" [innerHTML]=\"toolTipData.programScope\" id=\"PSHelpText\"></div>\r\n </div>\r\n </popover-hover>\r\n </ng-container>\r\n\r\n <!-- Program Frequency -->\r\n <form-field *ngIf=\"additionalOption?.PROGRAM_FREQUENCY\" [checked]=\"[true,false].includes(controls?.recurring_frequency?.value)\" [active]=\"activeList === 'FREQUENCY'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'FREQUENCY'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/recurring.svg'\">\r\n <label class=\"vx-control-panel\" id=\"PDChange\">PROGRAM DURATION <i class=\"icons\" [appTooltip]=\"'Program Duration refers to the duration of the Program. A Program can occur in perpetuity, or it can occur until the end of the current business cycle that has been specified in '+ businessCycle.selectedCycle.business_cycle +'. All responsibilities linked with that Program will also have the same Program Duration.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"ProgramDurationHelpText\"></i></label>\r\n <div class=\"upload-format\">\r\n <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <span class=\"text vx-mb-0\">Is this program recurring?</span>\r\n <div class=\"radio-group program\">\r\n <app-cs-radio [name]=\"'recurring_frequency'\" [checked]=\"controls?.recurring_frequency?.value\" (checkedEvent)=\"setFormField('recurring_frequency',true)\">YES</app-cs-radio>\r\n <app-cs-radio [name]=\"'recurring_frequency'\" [checked]=\"!controls?.recurring_frequency?.value\" (checkedEvent)=\"setFormField('recurring_frequency',false)\">NO</app-cs-radio>\r\n </div>\r\n </div>\r\n </div>\r\n </form-field>\r\n\r\n <!-- Scope Changes -->\r\n <form-field *ngIf=\"additionalOption?.SCOPE_CHANGES\" [checked]=\"[true,false].includes(controls?.lock_scope_change?.value)\" [active]=\"activeList === 'SCOPE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'SCOPE'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/lock-scope.svg'\">\r\n <label class=\"vx-control-panel\">Lock the Program Scope <i class=\"icons\" [appTooltip]=\"'If the Program Scope is locked, neither the Program nor the responsibilities linked with the Program can be edited once the Program begins. In order to edit the Program or the linked responsibilities, the Program details will need to be edited.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"ScopeChangesHelpText\"></i></label>\r\n <div class=\"upload-format\">\r\n <span class=\"text\">Would you like to <span class=\"vx-label-txt vx-fw-500\">lock changes</span> to the program\r\n scope?</span>\r\n <div class=\"radio-group program\">\r\n <app-cs-radio [name]=\"'lock_scope_change'\" [checked]=\"controls?.lock_scope_change?.value\" (checkedEvent)=\"setFormField('lock_scope_change',true)\">YES</app-cs-radio>\r\n <app-cs-radio [name]=\"'lock_scope_change'\" [checked]=\"!controls?.lock_scope_change?.value\" (checkedEvent)=\"setFormField('lock_scope_change',false)\">NO</app-cs-radio>\r\n </div>\r\n </div>\r\n </form-field>\r\n\r\n <!-- Framework -->\r\n <!-- <form-field [checked]=\"false\" [active]=\"activeList === 'FRAMEWORK'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'FRAMEWORK'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg'\">\r\n <label class=\"vx-control-panel\">FRAMEWORK</label>\r\n <input-with-pill [placeholder]=\"'Select a framework that this Program relates to'\" (select)=\"activateList('FRAMEWORK')\">\r\n <div class=\"selected\" *ngIf=\"controls?.framework?.value?.framework_name\">\r\n <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i (click)=\"remove(controls?.framework.value,'FRAMEWORK')\" class=\"icons\"></i>{{controls?.framework?.value?.framework_name}}</span>\r\n <button class=\"count\" appPopover (click)=\"framework.popover()\" placement=\"right\">+5</button>\r\n </div>\r\n </div>\r\n <button *ngIf=\"activeList!=='FRAMEWORK'\" (click)=\"activateList('FRAMEWORK')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #framework [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 class=\"value\">\r\n <i class=\"icons\"></i>\r\n Manage framework name\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </form-field> -->\r\n\r\n <!-- Responsibility Center -->\r\n <form-field *ngIf=\"additionalOption?.RC\" [checked]=\"controls?.rc?.value?.length\" [active]=\"activeList === 'RC'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'RC'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg'\">\r\n <label class=\"vx-control-panel\">RESPONSIBILITY CENTER <i class=\"icons\" [appTooltip]=\"'Responsibility Centers represent your organizational and operational infrastructure. Where Responsibility Centers are selected when creating a Program, only those Responsibilities Centers will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"RCHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" (select)=\"activateList('RC')\"\r\n [placeholder]=\"'Which Responsibility Center(s) can be linked to the responsibilities associated with this Program?'\">\r\n <div class=\"selected\" *ngIf=\"controls?.rc?.value && controls?.rc?.value?.length\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.rc?.value[0],'RC')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.rc?.value[0]?.item_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.rc?.value[0]?.item_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"rc.popover()\" placement=\"right\" *ngIf=\"controls?.rc?.value?.length > 1\">+{{controls?.rc?.value?.length -1 }}</button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove(controls?.rc?.value[0],'RC')\"></i>{{controls?.rc?.value[0]?.item_name}}</span>\r\n <button *ngIf=\"controls?.rc?.value?.length > 1\" class=\"count\" appPopover (click)=\"rc.popover()\" placement=\"right\">+{{controls?.rc?.value?.length -1 }}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='RC'\" class=\"edit\" type=\"button\" (click)=\"activateList('RC')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #rc [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let rc of controls?.rc?.value |slice:1\">\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 </form-field>\r\n\r\n <!-- Assignee -->\r\n <form-field *ngIf=\"additionalOption?.ASSIGNEES\" [checked]=\"controls?.program_assignee?.value?.length || controls?.program_default_assignee?.value?.length ||controls?.program_default_assignee?.value?.length || controls?.program_default_assignee_group?.value?.length\"\r\n [active]=\"['ASSIGNEE','DEFAULT_ASSIGNEE']?.includes(activeList)\" [disabled]=\"sideElements?.includes(activeList) && !['ASSIGNEE','DEFAULT_ASSIGNEE'].includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg'\">\r\n <label class=\"vx-control-panel\" [class.disabled]=\"activeList === 'DEFAULT_ASSIGNEE'\">ASSIGNEES <i class=\"icons\" [appTooltip]=\"'Assignees are required to complete the responsibilities that have been assigned to them. Where Assignees are selected when creating a Program, only those Assignees will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"AssigneeHelpText\"></i> </label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"activeList === 'DEFAULT_ASSIGNEE'\" [placeholder]=\"'Who is responsible for completing the responsibilities within this Program?'\"\r\n (select)=\"activateList('ASSIGNEE')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_assignee?.value?.length || controls?.program_assignee_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_assignee?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_assignee?.value[0],'ASSIGNEE')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_assignee?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_assignee?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"assignee.popover()\" placement=\"right\" *ngIf=\"controls?.program_assignee?.value?.length > 1\">+{{controls?.program_assignee?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_assignee_group?.value?.length && controls?.program_assignee?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_assignee_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_assignee_group?.value[0],'ASSIGNEE_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_assignee_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_assignee_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"assignee_group.popover()\" placement=\"right\" *ngIf=\"controls?.program_assignee_group?.value?.length > 1\">+{{controls?.program_assignee_group?.value?.length -1 }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_assignee?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_assignee?.value[0],'ASSIGNEE')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_assignee?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_assignee?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_assignee?.value?.length > 1\" class=\"count user\" appPopover (click)=\"assignee.popover()\" placement=\"right\">+{{controls?.program_assignee?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_assignee_group?.value?.length && controls?.program_assignee?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_assignee_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_assignee_group?.value[0],'ASSIGNEE_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_assignee_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_assignee_group?.value[0]?.group_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_assignee_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"assignee_group.popover()\" placement=\"right\">+{{controls?.program_assignee_group?.value?.length -1 }}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='ASSIGNEE'\" class=\"edit\" type=\"button\" (click)=\"activateList('ASSIGNEE')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #assignee [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let assignee of controls?.program_assignee?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(assignee,'ASSIGNEE')\" class=\"icons\"></i>\r\n {{assignee?.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 #assignee_group [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_assignee_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'ASSIGNEE_GROUP')\" class=\"icons\"></i>\r\n {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <label class=\"vx-control-panel\" [class.disabled]=\"activeList === 'ASSIGNEE'\">DEFAULT ASSIGNEE <i class=\"icons\" [appTooltip]=\"'This option lets you specify the Default Assignees for all new responsibilities linked with a Program. If a Default Assignees is selected, the user will automatically be selected the Assignee when creating a responsibility linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility. '\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"DAHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"activeList === 'ASSIGNEE'\" [placeholder]=\"'Which persons will be selected as the default assignees for the responsibilities within this Program?'\" (select)=\"activateList('DEFAULT_ASSIGNEE')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_default_assignee?.value?.length || controls?.program_default_assignee_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_assignee?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_assignee?.value[0],'DEFAULT_ASSIGNEE')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_assignee?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_assignee?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"defaultAssignee.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_assignee?.value?.length > 1\">+{{controls?.program_default_assignee?.value?.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_assignee_group?.value?.length && controls?.program_default_assignee?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_assignee_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_assignee_group?.value[0],'DEFAULT_ASSIGNEE_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_assignee_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_assignee_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"defaultAssigneeGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_assignee_group?.value?.length > 1\">+{{controls?.program_default_assignee_group?.value?.length -1 }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_assignee?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_assignee?.value[0],'DEFAULT_ASSIGNEE')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_assignee?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{ controls?.program_default_assignee?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_assignee?.value?.length > 1\" class=\"count user\" appPopover (click)=\"defaultAssignee.popover()\" placement=\"right\">+{{controls?.program_default_assignee?.value?.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_assignee_group?.value?.length && controls?.program_default_assignee?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_assignee_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_assignee_group?.value[0],'DEFAULT_ASSIGNEE_GROUP')\" ></i>\r\n <span class=\"chip\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_assignee_group?.value[0]?.group_name }}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_assignee_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"defaultAssigneeGroup.popover()\" placement=\"right\">+{{controls?.program_default_assignee_group?.value?.length -1 }}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='DEFAULT_ASSIGNEE'\" (click)=\"activateList('DEFAULT_ASSIGNEE')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #defaultAssignee [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let assignee of controls?.program_default_assignee?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(assignee,'DEFAULT_ASSIGNEE')\" class=\"icons\"></i>\r\n {{assignee?.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 #defaultAssigneeGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_default_assignee_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(assignee,'DEFAULT_ASSIGNEE_GROUP')\" class=\"icons\"></i>\r\n {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <div class=\"radio-group-selector\" [class.disabled]=\"activeList === 'ASSIGNEE'\">\r\n <app-cs-radio [name]=\"'assignee'\" [checked]=\"controls?.assignee_completion_criteria?.value === 'ALL'\" (checkedEvent)=\"setFormField('assignee_completion_criteria', 'ALL')\">\r\n ALL SELECTED PERSONS NEED TO COMPLETE THIS <i class=\"icons\" [appTooltip]=\"'If selected, separate responsibilities will be created for each person.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" ></i>\r\n </app-cs-radio>\r\n <app-cs-radio [name]=\"'assignee'\" [checked]=\"controls?.assignee_completion_criteria?.value === 'ANYONE'\" (checkedEvent)=\"setFormField('assignee_completion_criteria', 'ANYONE')\">\r\n ANY SELECTED PERSON CAN COMPLETE THIS <i class=\"icons\" [appTooltip]=\"'If selected, only one responsibility will be created.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\"></i>\r\n </app-cs-radio>\r\n </div>\r\n </form-field>\r\n\r\n <!-- Reviewer -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.REVIEWER\"\r\n [checked]=\"controls?.program_reviewer?.value?.length || controls?.program_default_reviewer?.value?.length ||controls?.program_default_reviewer?.value?.length || controls?.program_default_reviewer_group?.value?.length\"\r\n [active]=\"['REVIEWER','DEFAULT_REVIEWER']?.includes(activeList)\" [disabled]=\"sideElements?.includes(activeList) && !['REVIEWER','DEFAULT_REVIEWER'].includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/reviewer.svg'\">\r\n <label [class.disabled]=\"activeList === 'DEFAULT_REVIEWER'\" class=\"vx-control-panel\">Reviewers <i class=\"icons\" [appTooltip]=\"'Reviewers are required to review responsibilities after they have been completed. Where Reviewers are selected when creating a Program, only those Reviewers will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"ReviewerHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"activeList === 'DEFAULT_REVIEWER'\" [placeholder]=\"'Who is responsible for reviewing the responsibilities within this Program?'\" (select)=\"activateList('REVIEWER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_reviewer?.value?.length || controls?.program_reviewer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_reviewer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_reviewer?.value[0],'REVIEWER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_reviewer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"reviewer.popover()\" placement=\"right\" *ngIf=\"controls?.program_reviewer?.value?.length > 1\">+{{controls?.program_reviewer?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_reviewer_group?.value?.length && controls?.program_reviewer?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_reviewer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_reviewer_group?.value[0],'REVIEWER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_reviewer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"reviewerGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_reviewer_group?.value?.length > 1\">+{{controls?.program_reviewer_group?.value?.length - 1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_reviewer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_reviewer?.value[0],'REVIEWER')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_reviewer?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_reviewer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"reviewer.popover()\" placement=\"right\">+{{controls?.program_reviewer?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_reviewer_group?.value?.length && controls?.program_reviewer?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_reviewer_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_reviewer_group?.value[0],'REVIEWER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_reviewer_group?.value[0]?.group_name}}\r\n </span>\r\n </span>\r\n <button *ngIf=\"controls?.program_reviewer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"reviewerGroup.popover()\" placement=\"right\">+{{controls?.program_reviewer_group?.value?.length - 1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='REVIEWER'\" (click)=\"activateList('REVIEWER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #reviewer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let reviewer of controls?.program_reviewer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(reviewer,'REVIEWER')\" class=\"icons\"></i>\r\n {{reviewer?.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 #reviewerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_reviewer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'REVIEWER_GROUP')\" class=\"icons\"></i>\r\n {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <label [class.disabled]=\"activeList === 'REVIEWER'\" class=\"vx-control-panel\">DEFAULT Reviewer <i class=\"icons\" [appTooltip]=\"'This option lets you specify the Default Reviewers for responsibilities linked with a Program. Where a user has been specified as a Default Reviewer, that user will automatically be selected as the Reviewer when creating a responsibility linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"DRHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"activeList === 'REVIEWER'\" [placeholder]=\"'Which persons will be selected as the default reviewers for the responsibilities within this Program?'\" (select)=\"activateList('DEFAULT_REVIEWER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_default_reviewer?.value?.length || controls?.program_default_reviewer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_reviewer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer?.value[0],'DEFAULT_REVIEWER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_reviewer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"defaultReviewer.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_reviewer?.value?.length > 1\">+{{controls?.program_default_reviewer?.value?.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length && controls?.program_default_reviewer?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer_group?.value[0],'DEFAULT_REVIEWER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_reviewer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"defaultReviewerGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length > 1\">+{{controls?.program_default_reviewer_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_reviewer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer?.value[0],'DEFAULT_REVIEWER')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_reviewer?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_reviewer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"defaultReviewer.popover()\" placement=\"right\">+{{controls?.program_default_reviewer?.value?.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length && controls?.program_default_reviewer?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer_group?.value[0],'DEFAULT_REVIEWER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_reviewer_group?.value[0]?.group_name}}\r\n </span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_reviewer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"defaultReviewerGroup.popover()\" placement=\"right\">+{{controls?.program_default_reviewer_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='DEFAULT_REVIEWER'\" (click)=\"activateList('DEFAULT_REVIEWER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #defaultReviewer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let reviewer of controls?.program_default_reviewer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(reviewer,'DEFAULT_REVIEWER')\" class=\"icons\"></i>\r\n {{reviewer?.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 #defaultReviewerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_default_reviewer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'DEFAULT_REVIEWER_GROUP')\" class=\"icons\"></i>\r\n {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <div class=\"radio-group-selector\" [class.disabled]=\"activeList === 'REVIEWER'\">\r\n <app-cs-radio [name]=\"'reviewer'\" [checked]=\"controls?.reviewer_completion_criteria?.value === 'SEQUENTIAL'\" (checkedEvent)=\"setFormField('reviewer_completion_criteria', 'SEQUENTIAL')\" [class.disabled]=\"controls?.program_default_reviewer_group?.value?.length > 0\">\r\n SEQUENTIAL <i class=\"icons\" [appTooltip]=\"'The responsibility will be sent for review one at a time in the sequence defined by you.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\"></i>\r\n </app-cs-radio>\r\n <app-cs-radio [name]=\"'reviewer'\" [checked]=\"controls?.reviewer_completion_criteria?.value === 'ANYONE'|| controls?.program_default_reviewer_group?.value?.length > 0\" (checkedEvent)=\"setFormField('reviewer_completion_criteria', 'ANYONE')\">\r\n ANY REVIEWER CAN MARK THIS AS REVIEWED <i class=\"icons\" [appTooltip]=\"'The responsibility will be sent for review to all reviewers at the same time. If anyone of the reviewer reviews the responsibility, it will be considered as reviewed.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\"></i>\r\n </app-cs-radio>\r\n </div>\r\n </form-field>\r\n\r\n <!-- Overseer -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.OVERSEER\"\r\n [checked]=\"controls?.program_overseer?.value?.length || controls?.program_default_overseer?.value?.length ||controls?.program_default_overseer?.value?.length || controls?.program_default_overseer_group?.value?.length\"\r\n [active]=\"activeList === 'OVERSEER'\" [disabled]=\"sideElements?.includes(activeList) && !['OVERSEER','DEFAULT_OVERSEER','DEFAULT_FAILED_OVERSEER'].includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg'\">\r\n <label class=\"vx-control-panel\" [class.disabled]=\"['DEFAULT_OVERSEER','DEFAULT_FAILED_OVERSEER'].includes(activeList)\">Overseers <i class=\"icons\" [appTooltip]=\"'Overseers receive updates when a responsibility is completed, completed with delay or not completed. Where Overseers are selected when creating a Program, only those Overseers will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"overseerHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"['DEFAULT_OVERSEER','DEFAULT_FAILED_OVERSEER'].includes(activeList)\" [placeholder]=\"'Who is responsible for overseeing the responsibilities within this Program?'\" (select)=\"activateList('OVERSEER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_overseer?.value?.length || controls?.program_overseer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_overseer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_overseer?.value[0],'OVERSEER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_overseer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_overseer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseers.popover()\" placement=\"right\" *ngIf=\"controls?.program_overseer?.value?.length > 1\">+{{controls?.program_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_overseer_group?.value?.length && controls?.program_overseer?.value?.length \" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_overseer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_overseer_group?.value[0],'OVERSEER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_overseer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseerGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_overseer_group?.value?.length> 1\">+{{controls?.program_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_overseer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_overseer?.value[0],'OVERSEER')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_overseer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">\r\n {{controls?.program_overseer?.value[0]?.member_name}}\r\n </span>\r\n </span>\r\n <button *ngIf=\"controls?.program_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseers.popover()\" placement=\"right\">+{{controls?.program_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_overseer_group?.value?.length && controls?.program_overseer?.value?.length \" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_overseer_group?.value?.length \">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_overseer_group?.value[0],'OVERSEER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_overseer_group?.value[0]?.group_name}}</span></span>\r\n <button *ngIf=\"controls?.program_overseer_group?.value?.length> 1\" class=\"count\" appPopover (click)=\"overseerGroup.popover()\" placement=\"right\">+{{controls?.program_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n\r\n <button *ngIf=\"activeList!=='OVERSEER'\" (click)=\"activateList('OVERSEER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #overseers [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let overseer of controls?.program_overseer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove(overseer,'OVERSEER')\"></i> {{overseer?.member_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_overseer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'OVERSEER_GROUP')\" class=\"icons\"></i> {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <ng-container [class.disabled]=\"activeList === 'OVERSEER'\">\r\n <label class=\"vx-control-panel\" [class.disabled]=\"['OVERSEER'].includes(activeList)\">DEFAULT Overseer <i class=\"icons\" [appTooltip]=\"'This option lets you specify the Default Overseer for responsibilities linked with a Program. Where a user has been specified as a Default Overseer, that user will automatically be selected as the Overseer when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"DOHelpText\"></i></label>\r\n <input-with-pill [disabled]=\"['OVERSEER','DEFAULT_FAILED_OVERSEER'].includes(activeList)\" [selectDiv]=\"true\" [placeholder]=\"'Which persons will be selected as the default overseers for the responsibilities within this Program?'\" (select)=\"activateList('DEFAULT_OVERSEER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_default_overseer?.value?.length || controls?.program_default_overseer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_overseer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_overseer?.value[0],'DEFAULT_OVERSEER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_overseer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_overseer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseersDefault.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_overseer?.value?.length > 1\">+{{controls?.program_default_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_default_overseer_group?.value?.length && controls?.program_default_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_overseer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_overseer_group?.value[0],'DEFAULT_OVERSEER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_overseer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseerDefaultGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_overseer_group?.value?.length >1\">+{{controls?.program_default_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_overseer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_overseer?.value[0],'DEFAULT_OVERSEER')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_overseer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_overseer?.value[0]?.member_name}}</span></span>\r\n <button *ngIf=\"controls?.program_default_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseersDefault.popover()\" placement=\"right\">+{{controls?.program_default_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_default_overseer_group?.value?.length && controls?.program_default_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_overseer_group?.value?.length \">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_overseer_group?.value[0],'DEFAULT_OVERSEER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_overseer_group?.value[0]?.group_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_overseer_group?.value?.length >1\" class=\"count\" appPopover (click)=\"overseerDefaultGroup.popover()\" placement=\"right\">+{{controls?.program_default_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='DEFAULT_OVERSEER'\" (click)=\"activateList('DEFAULT_OVERSEER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #overseersDefault [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let overseer of controls?.program_default_overseer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove(overseer,'DEFAULT_OVERSEER')\"></i> {{overseer?.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 #overseerDefaultGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_default_overseer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'DEFAULT_OVERSEER_GROUP')\" class=\"icons\"></i> {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <label class=\"vx-control-panel\" > </label>\r\n <input-with-pill class=\"vx-mt-2\" [selectDiv]=\"true\" [line]=\"3\" [disabled]=\"['OVERSEER','DEFAULT_OVERSEER'].includes(activeList)\" [placeholder]=\"'Which persons will be selected as the default overseers for responsibilities that are not completed within this Program?'\" (select)=\"activateList('DEFAULT_FAILED_OVERSEER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length || controls?.program_default_failed_overseer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer?.value[0],'DEFAULT_FAILED_OVERSEER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_failed_overseer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_failed_overseer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseersDefaultFail.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length > 1\">+{{controls?.program_default_failed_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length && controls?.program_default_failed_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer_group?.value[0],'DEFAULT_FAILED_OVERSEER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_failed_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_failed_overseer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseerDefaultFailGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length > 1\">+{{controls?.program_default_failed_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer?.value[0],'DEFAULT_FAILED_OVERSEER')\" ></i>\r\n <span class=\"chip\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_failed_overseer?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_failed_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseersDefaultFail.popover()\" placement=\"right\">+{{controls?.program_default_failed_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length && controls?.program_default_failed_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length \">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer_group?.value[0],'DEFAULT_FAILED_OVERSEER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_failed_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_failed_overseer_group?.value[0]?.group_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"overseerDefaultFailGroup.popover()\" placement=\"right\">+{{controls?.program_default_failed_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='DEFAULT_FAILED_OVERSEER'\" (click)=\"activateList('DEFAULT_FAILED_OVERSEER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #overseersDefaultFail [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let overseer of controls?.program_default_failed_overseer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove(overseer,'DEFAULT_FAILED_OVERSEER')\"></i> {{overseer?.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 #overseerDefaultFailGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_default_failed_overseer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'DEFAULT_FAILED_OVERSEER_GROUP')\" class=\"icons\"></i> {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n</ng-container>\r\n </form-field>\r\n\r\n <!-- Assessment -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.ASSESSMENT\"\r\n [checked]=\"controls?.program_assessments?.value?.length\"\r\n [active]=\"activeList === 'ASSESSMENT'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'ASSESSMENT'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/assessments.svg'\">\r\n <label class=\"vx-control-panel\">ASSESSMENTS <i class=\"icons\" [appTooltip]=\"'Assessments are a digital form that are created in \u201CAssessment\u201D within the Compliance Module. Where Assessments are selected when creating a Program, only those Assessments will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"AssessmentHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [placeholder]=\"'Which assessments can be linked to the responsibilities within this Program?'\" (select)=\"activateList('ASSESSMENT')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_assessments?.value?.length\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"(controls?.program_assessments?.value | assessmentResolver) as assessments\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(assessments[0],'ASSESSMENT')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"assessments[0]?.assessment_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{assessments[0]?.assessment_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"program_assessments.popover()\" placement=\"right\" *ngIf=\"assessments?.length > 1\">+{{assessments?.length -1 }}</button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <ng-container *ngIf=\"(controls?.program_assessments?.value | assessmentResolver) as assessments\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove(assessments[0],'ASSESSMENT')\"></i>{{assessments[0]?.assessment_name}} </span>\r\n <button *ngIf=\"assessments?.length > 1\" class=\"count\" appPopover (click)=\"program_assessments.popover()\" placement=\"right\">+{{assessments?.length -1 }}</button>\r\n </div>\r\n </ng-container>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='ASSESSMENT'\" class=\"edit\" type=\"button\" (click)=\"activateList('ASSESSMENT')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #program_assessments [dontCloseonClick]=\"true\">\r\n <ng-container >\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n\r\n <li *ngFor=\"let assessment of (controls?.program_assessments?.value | assessmentResolver) | slice:1\">\r\n <div class=\"avatar-card\" >\r\n <span class=\"value\">\r\n <i (click)=\"remove(assessment,'ASSESSMENT')\" class=\"icons\" ></i> {{assessment?.assessment_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n </app-popover>\r\n </form-field>\r\n\r\n <!-- Format & Evidence -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.FORMATE_EVIDENCE\" [checked]=\"[true,false].includes(controls?.evidence_required?.value)\"\r\n [active]=\"false\" [disabled]=\"sideElements.includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/format-evidence.svg'\">\r\n <label class=\"vx-control-panel\">Evidence <i class=\"icons\" [appTooltip]=\"'If selected, evidence of completion of a responsibility will be required for all responsibilities that are linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"EvidenceHelpText\"></i></label>\r\n <div class=\"upload-format\">\r\n\r\n <span class=\"text\">Do all responsibilities within this program require evidence?</span>\r\n <div class=\"radio-group program\">\r\n <app-cs-radio [name]=\"'evidence_required'\" [checked]=\"controls?.evidence_required?.value\" (checkedEvent)=\"setFormField('evidence_required',true)\">YES</app-cs-radio>\r\n <app-cs-radio [name]=\"'evidence_required'\" [checked]=\"!controls?.evidence_required?.value\" (checkedEvent)=\"setFormField('evidence_required',false)\">NO</app-cs-radio>\r\n </div>\r\n </div>\r\n <!-- <div class=\"vx-d-flex vx-align-center vx-justify-end vx-mt-2\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-mr-2\">Allow any file to be marked as\r\n key\r\n evidence</div>\r\n <switch formControlName=\"allow_any_file_key_evidence\"\r\n (change)=\"setFormField('allow_any_file_key_evidence',$event?.target?.checked)\"></switch>\r\n </div> -->\r\n </form-field>\r\n\r\n <!-- Custom Field -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.CUSTOM_FIELDS\" [checked]=\"controls?.custom_fields?.value?.length\"\r\n [active]=\"false\" [disabled]=\"sideElements.includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/custom-fields.svg'\">\r\n <label class=\"vx-control-panel\">CUSTOM FIELD <i class=\"icons\" [appTooltip]=\"'Where a custom field is specified, all responsibilities linked with a Program will contain that custom field. Custom fields enable the collection of additional meta data.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"CFHelpText\"></i></label>\r\n <custom-field formControlName=\"custom_fields\"></custom-field>\r\n </form-field>\r\n </form>\r\n</div>\r\n\r\n\r\n<!-- list of roles -->\r\n<role-list *ngIf=\"activeList === 'ROLE'\" [selected]=\"controls?.program_roles?.value | refDisconnect\" [loading]=\"listLoadingState.ROLES\"\r\n [list]=\"lists?.ROLES?.data ?? []\" (save)=\"listAction($event,'ROLE')\" (cancel)=\"fieldDeselector('ROLE')\" [featureflagrole]=\"featureflagrole\" [featureflagGroup]=\"featureflagGroups\" [ff_rc_listing]=\"ff_rc_listing\"></role-list>\r\n\r\n<!-- list of frameworks -->\r\n<!-- <app-define-framework-listing *ngIf=\"activeList === 'FRAMEWORK'\" (cancel)=\"fieldDeselector('FRAMEWORK')\" (next)=\"listAction($event,'FRAMEWORK')\" [mode]=\"mode\" [selectedFramework]=\"controls?.framework?.value\"></app-define-framework-listing> -->\r\n<!-- list of responsibility center -->\r\n<app-responsibility-centers-list *ngIf=\"activeList === 'RC'\" [responsibilityCentersList]=\"lists?.RC ?? []\"\r\n [radioSelection]=\"false\" [rcIdKey]=\"'rc_id'\" (closeRcList)=\"fieldDeselector('RC')\"\r\n (saveSelectedList)=\"listAction($event,'RC')\" [selectedResponsibilityCenters]=\"controls?.rc?.value | refDisconnect\">\r\n</app-responsibility-centers-list>\r\n<!-- render userlist with group -->\r\n\r\n<user-group-list *ngIf=\"activeList === 'OWNER'\" [groupEnabled]=\"true\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\"\r\n [nonRemovableUserIds]=\"lists.NON_REMOVABLE_OWNERS | listToId : 'member_id'\" [userlist]=\"lists?.OWNERS?.data ?? []\"\r\n [selectedUsers]=\"controls?.program_owners?.value | refDisconnect\"\r\n (fetchUserData)=\"fetchUsersAssociatedWithRoles(false,$event)\" [userListInfo]=\"lists?.OWNERS\"\r\n [groupListInfo]=\"lists?.OWNERS_GROUPS\" [groupList]=\"lists?.OWNERS_GROUPS?.data ?? []\"\r\n [selectedGroups]=\"controls?.program_owners_group?.value | refDisconnect\" (save)=\"listAction($event,'OWNER')\"\r\n (cancel)=\"fieldDeselector('OWNER')\" [panelTitle]=\"panelTitleOwner\" [featureflag]=\"featureflagGroups\"></user-group-list>\r\n<user-group-list *ngIf=\"activeList === 'APPROVER'\" [groupEnabled]=\"false\" [singleSelect]=\"true\"\r\n [userlist]=\"lists?.APPROVERS?.data ?? []\" [selectedUsers]=\"controls?.program_approver?.value | refDisconnect\"\r\n [userListInfo]=\"lists?.APPROVERS\" (save)=\"listAction($event,'APPROVER')\" (cancel)=\"fieldDeselector('APPROVER')\" [panelTitle]=\"panelTitleApprover\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"activeList === 'ASSIGNEE'\" [groupEnabled]=\"true\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\"\r\n [userlist]=\"lists?.ASSIGNEES ?? []\" [selectedUsers]=\"controls?.program_assignee?.value | refDisconnect\" [groupList]=\"lists?.ASSIGNEES_GROUP ?? []\" [FromProgram]=\"true\"\r\n [selectedGroups]=\"controls?.program_assignee_group?.value | refDisconnect\" [disabledIds]=\"disabledAssigneeIds\" [fromResponsibility] = \"'Assignee'\" [reviewerIds]=\"selectedReviewerIds\" [overseerIds]=\"selectedOverseerIds\" [assignorId]=\"assignorId\"\r\n [userListInfo]=\"lists?.ASSIGNEES\" (save)=\"listAction($event,'ASSIGNEE')\" (cancel)=\"fieldDeselector('ASSIGNEE')\" [panelTitle]=\"panelTitleAssignee\"\r\n [defaultSelectedUsers]=\"controls?.program_default_assignee?.value | refDisconnect\" [userType]=\"'assignees'\" [featureflag]=\"featureflagGroups\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"activeList === 'DEFAULT_ASSIGNEE'\" [groupEnabled]=\"true\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\"\r\n [userlist]=\"lists?.DEFAULT_ASSIGNEES ?? []\" [selectedUsers]=\"controls?.program_default_assignee?.value | refDisconnect\" [groupList]=\"lists?.DEFAULT_ASSIGNEES_GROUP ?? []\" [FromProgram]=\"true\"\r\n [selectedGroups]=\"controls?.program_default_assignee_group?.value | refDisconnect\" [disabledIds]=\"disabledAssigneeIds\" [fromResponsibility] = \"'Assignee'\" [reviewerIds]=\"selectedReviewerIds\" [overseerIds]=\"selectedOverseerIds\" [assignorId]=\"assignorId\"\r\n [userListInfo]=\"lists?.DEFAULT_ASSIGNEE\" (save)=\"listAction($event,'DEFAULT_ASSIGNEE')\" (cancel)=\"fieldDeselector('DEFAULT_ASSIGNEE')\" [featureflag]=\"featureflagGroups\">\r\n</user-group-list>\r\n\r\n<user-group-list *ngIf=\"(activeList === 'REVIEWER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.REVIEWERS ?? []\" [selectedUsers]=\"controls?.program_reviewer?.value | refDisconnect\" [groupList]=\"lists?.REVIEWERS_GROUP ?? []\" [featureflag]=\"featureflagGroups\"\r\n [selectedGroups]=\"controls?.program_reviewer_group?.value | refDisconnect\" [disabledIds]=\"disableReviewerIds\" [fromResponsibility] = \"'Reviewer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [overseerIds]=\"selectedOverseerIds\"\r\n [userListInfo]=\"lists?.REVIEWERS\" (save)=\"listAction($event,'REVIEWER')\" (cancel)=\"fieldDeselector('REVIEWER')\" [panelTitle]=\"panelTitleReviewer\"\r\n [defaultSelectedUsers]=\"controls?.program_default_reviewer?.value | refDisconnect\" [userType]=\"'reviewers'\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"(activeList === 'DEFAULT_REVIEWER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.DEFAULT_REVIEWERS ?? []\" [selectedUsers]=\"controls?.program_default_reviewer?.value | refDisconnect\" [groupList]=\"lists?.DEFAULT_REVIEWERS_GROUP ?? []\" [featureflag]=\"featureflagGroups\"\r\n [selectedGroups]=\"controls?.program_default_reviewer_group?.value | refDisconnect\" [disabledIds]=\"disableReviewerIds\" [fromResponsibility] = \"'Reviewer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [overseerIds]=\"selectedOverseerIds\"\r\n [userListInfo]=\"lists?.DEFAULT_REVIEWERS\" (save)=\"listAction($event,'DEFAULT_REVIEWER')\" (cancel)=\"fieldDeselector('DEFAULT_REVIEWER')\" [panelTitle]=\"panelTitleDefaultReviewer\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"(activeList === 'OVERSEER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.OVERSEERS ?? []\" [selectedUsers]=\"controls?.program_overseer?.value | refDisconnect\" [groupList]=\"lists?.OVERSEERS_GROUP ?? []\"\r\n [selectedGroups]=\"controls?.program_overseer_group?.value | refDisconnect\" [featureflag]=\"featureflagGroups\" [disabledIds]=\"disableOverseerIds\" [fromResponsibility] = \"'Overseer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [reviewerIds]=\"selectedReviewerIds\"\r\n [userListInfo]=\"lists?.OVERSEES\" (save)=\"listAction($event,'OVERSEER')\" (cancel)=\"fieldDeselector('OVERSEER')\"\r\n [defaultSelectedUsers]=\"controls?.program_default_overseer?.value | refDisconnect | arrayConcat: controls?.program_default_failed_overseer?.value\" [userType]=\"'overseers'\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"(activeList === 'DEFAULT_OVERSEER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.DEFAULT_OVERSEERS ?? []\" [selectedUsers]=\"controls?.program_default_overseer?.value | refDisconnect\" [groupList]=\"lists?.DEFAULT_OVERSEERS_GROUP ?? []\"\r\n [selectedGroups]=\"controls?.program_default_overseer_group?.value | refDisconnect\" [featureflag]=\"featureflagGroups\" [disabledIds]=\"disableOverseerIds\" [fromResponsibility] = \"'Overseer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [reviewerIds]=\"selectedReviewerIds\"\r\n [userListInfo]=\"lists?.DEFAULT_OVERSEERS\" (save)=\"listAction($event,'DEFAULT_OVERSEER')\" (cancel)=\"fieldDeselector('DEFAULT_OVERSEER')\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"(activeList === 'DEFAULT_FAILED_OVERSEER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.DEFAULT_OVERSEERS ?? []\" [selectedUsers]=\"controls?.program_default_failed_overseer?.value | refDisconnect\" [groupList]=\"lists?.DEFAULT_OVERSEERS_GROUP ?? []\"\r\n [selectedGroups]=\"controls?.program_default_failed_overseer_group?.value | refDisconnect\" [featureflag]=\"featureflagGroups\" [disabledIds]=\"disableOverseerIds\" [fromResponsibility] = \"'Overseer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [reviewerIds]=\"selectedReviewerIds\"\r\n [userListInfo]=\"lists?.DEFAULT_OVERSEERS\" (save)=\"listAction($event,'DEFAULT_FAILED_OVERSEER')\" (cancel)=\"fieldDeselector('DEFAULT_FAILED_OVERSEER')\">\r\n</user-group-list>\r\n<assessment-picker *ngIf=\"activeList === 'ASSESSMENT'\" [selectedAssessment]=\"controls?.program_assessments?.value\" (cancelAssessment)=\"fieldDeselector('ASSESSMENT')\" (onAssessmentSelect)=\"listAction($event,'ASSESSMENT')\"></assessment-picker>\r\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n <app-smiley-dialog-inline\r\n *ngIf=\"showSmiley\"\r\n [message]=\"smileyMessage\"\r\n [actionButtons]=\"actionButtons\"\r\n (action)=\"action($event)\"\r\n (closeSmiley)=\"closeSmiley($event)\">\r\n </app-smiley-dialog-inline>\r\n\r\n <!-- Framework selector -->\r\n <app-framework-list *ngIf=\"activeList === 'FRAMEWORK'\" [workflowPage]=\"['FRAMEWORK']\" (assignControl)=\"listAction($event, 'FRAMEWORK')\"\r\n (closeFramework)=\"fieldDeselector('FRAMEWORK')\" [previousSelectedValues]=\"{framework: controls?.framework.value}\"(entrustFramework)=\"entrustFramework($event)\" [headerText]=\"'Select a framework'\"></app-framework-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\";@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/padding/padding.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\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.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-top.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\";::ng-deep .workflow-program{display:block;position:relative}::ng-deep .workflow-program .scope-label{background:#747576;border-radius:.125rem;position:relative;z-index:1}::ng-deep .workflow-program .scope-label:before{background:#f1f1f1;content:\"\";position:absolute;top:.5rem;left:7rem;width:20rem;height:1px;z-index:-1}::ng-deep .workflow-program .scope-label:after{background:#f1f1f1;content:\"\";position:absolute;top:.5rem;left:-2.5rem;width:2.5rem;height:1px;z-index:-1}::ng-deep .workflow-program .scope-label .required{position:absolute;top:0;right:-.625rem}::ng-deep .workflow-program .info-icon{position:relative;top:.125rem;cursor:pointer}::ng-deep .workflow-program .date-picker .picker-group{width:calc(50% - .125rem);position:relative}::ng-deep .workflow-program .date-picker .picker-group:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .workflow-program .date-picker .picker-group input{height:2.5rem;border-radius:.25rem;border:1px solid #DBDBDB;background:#FFFFFF;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;padding:0 2rem 0 .75rem;outline:none}::ng-deep .workflow-program .date-picker .picker-group input:focus,::ng-deep .workflow-program .date-picker .picker-group input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .workflow-program .date-picker .picker-group input::placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group input:-ms-input-placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group input::-ms-input-placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group i{height:1rem;width:1rem;position:absolute;right:.75rem;top:.625rem;pointer-events:none}::ng-deep .workflow-program .program-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;justify-content:space-between;padding:4px;position:relative;z-index:1}::ng-deep .workflow-program .program-type-field .type-item{position:relative}::ng-deep .workflow-program .program-type-field .type-item:first-of-type{width:6.25rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(2){width:5.75rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(6.4375rem);width:5.75rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(3){width:8.625rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(3).active~.background-glider{transform:translate(12.375rem);width:8.625rem}::ng-deep .workflow-program .program-type-field .type-item:last-of-type{width:5.25rem}::ng-deep .workflow-program .program-type-field .type-item:last-of-type.active~.background-glider{transform:translate(21.1875rem);width:5.25rem}::ng-deep .workflow-program .program-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:center}::ng-deep .workflow-program .program-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none}::ng-deep .workflow-program .program-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .workflow-program .program-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .workflow-program .program-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:6.25rem;height:32px;z-index:-1;transition:.25s ease-out}::ng-deep .workflow-program .vx-form-group .upload-files .file-item{background:#f1f1f1;border:1px solid #dbdbdb;border-radius:.25rem;padding-left:.125rem}::ng-deep .workflow-program .vx-form-group .upload-files .file-item .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:8.5rem}::ng-deep .workflow-program .vx-form-group .upload-files .file-item button.delete-btn{background:transparent;border-radius:0;border:none;border-left:1px solid #dbdbdb;height:1.625rem}::ng-deep .workflow-program .vx-form-group .upload-files button.file-count{background:#1E5DD3;border-radius:.125rem;border:none;color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0;margin:4px 0 0 4px}::ng-deep .workflow-program .vx-form-group .upload-format .radio-group app-cs-radio{height:1.375rem}::ng-deep .workflow-program .vx-form-group .default-selected{background:#FBFBFB;border:1px solid #F1F1F1;border-radius:.25rem;margin-top:.5rem}::ng-deep .workflow-program .vx-form-group .default-selected .selected{border-radius:0;border:none;background:none}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio{border-top:1px solid #F1F1F1}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio{margin-top:0!important}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.radio{position:absolute;top:.5rem;left:.75rem}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;padding:.5rem .5rem .5rem 2.25rem;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item svg{position:absolute;top:.5rem;left:.75rem}::ng-deep .workflow-program .vx-form-group .selected .custom-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:2.4rem}::ng-deep .workflow-program .vx-form-group .selected button.cross-btn{background:transparent;border-radius:0;border:0;padding:0}::ng-deep .workflow-program .vx-form-group .custom-input{position:relative}::ng-deep .workflow-program .vx-form-group .custom-input input{padding-right:2rem}::ng-deep .workflow-program .vx-form-group .custom-input button.cross-btn{background:transparent;border-radius:0;border:0;position:absolute;top:.875rem;right:.625rem}::ng-deep .workflow-program .vx-form-group button.add-more-btn{background:transparent;border-radius:0;border:none;padding:0}::ng-deep app-popover .wf-action-list ul.action-item .avatar-card .value{text-transform:none!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill .file-item{background:transparent!important;border:none!important;border-radius:0!important;padding:0!important;margin:0!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill .file-name{width:100%!important;max-width:100%!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill button.delete-btn{border:none!important;padding-right:0!important}.disabled{opacity:.4;pointer-events:none;filter:grayscale(1)}.vx-info-card{width:280px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;position:static;display:block;left:780}.vx-info-card-body{font-size:12px;padding:8px 12px;margin:0;font-weight:400;text-transform:none;color:#747576}\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 .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#ffffff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#ffffff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#ffffff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group vcomply-editor{margin-top:8px;display:block}::ng-deep .vx-form-group vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#ffffff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:208px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#ffffff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#ffffff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#ffffff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}dp-date-picker input:focus{outline:none}dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}dp-date-picker .dp-popup dp-day-calendar,dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}dp-date-picker .dp-popup dp-day-calendar button,dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000000;display:inline-flex}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:rgba(0,0,0,.3)}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#ffffff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0%,#747576 1%,#747576 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#ffffff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0%,#f31c39 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0%,#34aa44 1%,#34aa44 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0%,#1e5dd3 1%,#1e5dd3 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0%,#f6882f 1%,#f6882f 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0%,#7aa6f7 1%,#7aa6f7 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.MarxEditorComponent, selector: "vcomply-editor", inputs: ["editorConfig"], outputs: ["comment", "sendSavedFiles", "popup"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.CsRadioComponent, selector: "app-cs-radio", inputs: ["disabled", "readonly", "name", "checked", "value", "oneLine"], outputs: ["checkedEvent"] }, { kind: "directive", type: i8.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i9.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i10.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i12.SmileyDialogInlineComponent, selector: "app-smiley-dialog-inline", inputs: ["message", "actionButtons"], outputs: ["action", "closeSmiley"] }, { kind: "component", type: i13.PopoverHoverComponent, selector: "popover-hover" }, { kind: "directive", type: i14.PopoverHoverDirective, selector: "[libPopoverHover]", inputs: ["placement"] }, { kind: "component", type: i15.TabSelector, selector: "tab-selector", inputs: ["disabled", "selectedItem", "displayArray"] }, { kind: "component", type: i16.FormFieldComponent, selector: "form-field", inputs: ["active", "disabled", "checked", "img"] }, { kind: "component", type: i17.FilePillComponent, selector: "file-pill", inputs: ["name", "extension", "disabled"], outputs: ["delete"] }, { kind: "component", type: i18.InputWithPillComponent, selector: "input-with-pill", inputs: ["placeholder", "disabled", "selectDiv", "line"], outputs: ["select"] }, { kind: "component", type: i19.SwitchComponent, selector: "switch", inputs: ["disabled", "checked", "tooltipMessage", "value", "position"], outputs: ["change"] }, { kind: "directive", type: i20.InputTrimDirective, selector: "[InputTrim]" }, { kind: "component", type: i21.RoleListComponent, selector: "role-list", inputs: ["featureflagrole", "featureflagGroup", "ff_rc_listing", "list", "loading", "selected"], outputs: ["save", "cancel"] }, { kind: "component", type: i22.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: i23.AssessmentPickerComponent, selector: "assessment-picker", inputs: ["isEdit", "selectedAssessment", "selectedAssessmentData"], outputs: ["onAssessmentSelect", "cancelAssessment"] }, { kind: "component", type: i24.CustomFieldComponent, selector: "custom-field", inputs: ["disabled"] }, { kind: "component", type: i25.ResponsibilityCentersListComponent, selector: "app-responsibility-centers-list", inputs: ["responsibilityCentersList", "selectedResponsibilityCenters", "rcIdKey", "radioSelection", "pluralText", "singularText"], outputs: ["saveSelectedList", "closeRcList"] }, { kind: "component", type: i26.FrameworkListComponent, selector: "app-framework-list", inputs: ["previousSelectedValues", "headerText", "workflowPage", "policy", "frameWorkList", "selectedFrameWork", "selectedCategories"], outputs: ["entrustFramework", "closeFramework", "assignControl"] }, { kind: "directive", type: i27.ScrollInViewDirective, selector: "[appScrollInView]", inputs: ["appScrollInView"] }, { kind: "pipe", type: i6.SlicePipe, name: "slice" }, { kind: "pipe", type: i28.ListToIdPipe, name: "listToId" }, { kind: "pipe", type: i29.RefDisconnectPipe, name: "refDisconnect" }, { kind: "pipe", type: i30.AssessmentResolverPipe, name: "assessmentResolver" }, { kind: "pipe", type: i31.ArrayConcatPipe, name: "arrayConcat" }] });
|
|
1386
1386
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WorkflowProgramComponent, decorators: [{
|
|
1387
1387
|
type: Component,
|
|
1388
|
-
args: [{ selector: 'app-workflow-program', template: "<div class=\"workflow-program\" #form>\r\n <form novalidate [formGroup]=\"programForm\">\r\n <!-- Program Category Type -->\r\n <form-field [checked]=\"controls?.program_type?.value > -1\" [active]=\"false\" [disabled]=\"sideElements.includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/issue-type.svg'\">\r\n <label class=\"vx-control-panel\">PROGRAM TYPE <span class=\"required\">*</span></label>\r\n <tab-selector formControlName=\"program_type\" [displayArray]=\"constants?.categoryType\"></tab-selector>\r\n <!-- <p *ngIf=\"program_name?.invalid\" class=\"error-message\">Add a program type</p> -->\r\n </form-field>\r\n\r\n <!-- Framework -->\r\n <form-field *ngIf=\"isAscentAllowed\" [checked]=\"false\" [active]=\"false\" [disabled]=\"false\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg'\">\r\n <label class=\"vx-control-panel\">FRAMEWORK</label>\r\n <!-- [selectDiv]=\"true\" -->\r\n <input-with-pill [placeholder]=\"'Select a framework that this Program relates to'\" (select)=\"activateList('FRAMEWORK')\">\r\n <div class=\"selected\" *ngIf=\"controls?.framework.value?.name\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"canFrameworkChange\" (click)=\"remove('', 'FRAMEWORK')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.framework.value?.name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.framework.value?.name}}</span>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i (click)=\"remove('', 'FRAMEWORK')\" *ngIf=\"canFrameworkChange\" class=\"icons\" ></i> {{controls?.framework.value?.name}}</span>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"canFrameworkChange\" class=\"edit\" type=\"button\" (click)=\"activateList('FRAMEWORK')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n </form-field>\r\n\r\n <!-- Program Category Name -->\r\n <form-field [checked]=\"controls?.program_name?.value?.trim()?.length\" [active]=\"false\" [disabled]=\"sideElements.includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg'\">\r\n <label class=\"vx-control-panel\">PROGRAM NAME <span class=\"required\">*</span></label>\r\n <input InputTrim formControlName=\"program_name\" type=\"text\"\r\n placeholder=\"What is the Program name?\">\r\n\r\n <p *ngIf=\"controls?.program_name?.errors && controls?.program_name?.touched\" class=\"error-message\">Enter a\r\n name for this Program.</p>\r\n <p *ngIf=\"isNameExists\" class=\"error-message\">Program name already exists.</p>\r\n <div class=\"upload-files vx-d-flex vx-align-center vx-flex-wrap vx-mt-1\">\r\n <file-pill *ngFor=\"let attachment of controls?.description_attachment?.value |slice:0:2\"\r\n [extension]=\"attachment?.org_file?.split('.').pop()\" [name]=\"attachment?.org_file\"\r\n [disabled]=\"attachment?.uploading\" (delete)=\"deleteAttachment('DESCRIPTION',attachment)\">\r\n </file-pill>\r\n <button *ngIf=\"controls?.description_attachment?.value?.length > 2\" class=\"file-count\" appPopover (click)=\"uploadFile.popover()\" placement=\"right\">+{{controls?.description_attachment?.value?.length - 2}}</button>\r\n <app-popover #uploadFile [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li class=\"vx-p-2\" *ngFor=\"let attachment of controls?.description_attachment?.value|slice:2\">\r\n <file-pill [extension]=\"attachment?.org_file?.split('.').pop()\" [name]=\"attachment?.org_file\"\r\n [disabled]=\"attachment?.uploading\" (delete)=\"deleteAttachment('DESCRIPTION',attachment)\"></file-pill>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n <vcomply-editor [(ngModel)]=\"editorData.programDescription\" [ngModelOptions]=\"{standalone: true}\"\r\n (sendSavedFiles)=\"selectFile('DESCRIPTION',$event)\"\r\n (ngModelChange)=\"setFormField('program_description',$event)\" [editorConfig]=\"constants?.description\">\r\n </vcomply-editor>\r\n\r\n </form-field>\r\n\r\n <!-- Objective -->\r\n <form-field [checked]=\"controls?.program_objective?.value?.trim()?.length\" [active]=\"activeList === 'OBJECTIVE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'OBJECTIVE'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/objectives.svg'\">\r\n <label class=\"vx-control-panel\">OBJECTIVE\r\n <!-- <span class=\"required\">*</span> -->\r\n </label>\r\n <vcomply-editor [(ngModel)]=\"editorData.programObjective\" [ngModelOptions]=\"{standalone: true}\"\r\n (sendSavedFiles)=\"selectFile('OBJECTIVE',$event)\"\r\n (ngModelChange)=\"setFormField('program_objective',$event, true)\" [editorConfig]=\"constants?.objective\">\r\n </vcomply-editor>\r\n <!-- <p *ngIf=\"!isObjectiveValid\" class=\"error-message\">Specify the objective for this Program.</p> -->\r\n </form-field>\r\n\r\n <!-- Roles -->\r\n <form-field *ngIf=\"additionalOption?.ROLES\" [checked]=\"controls?.program_roles?.value?.length \" [active]=\"activeList === 'ROLE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'ROLE'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/roles.svg'\">\r\n <label class=\"vx-control-panel\" id =\"permissiongroup\">{{ff_rc_listing ?'PERMISSIONS':'PERMISSION GROUP(S)'}} <span class=\"required\">*</span><i class=\"icons\" [appTooltip]=\"ff_rc_listing ?'Permissions let you specify the users that can be \u201COwners\u201D' + (allowedFeature.isFeatureEnabled('ff_program_simplify') ? ' ' : ' and \u201CApprovers\u201D') + 'of a Program.':'Permission group(s) let you specify the users that can be \u201COwners\u201D' + (allowedFeature.isFeatureEnabled('ff_program_simplify') ? ' ' : ' and \u201CApprovers\u201D') + 'of a Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"RoleHelpText\"></i></label>\r\n <input-with-pill id=\"placeholdername\" [placeholder]=\"ff_rc_listing ?'Which user permissions have access to this program?':'Which user permission groups have access to this program?'\"\r\n (select)=\"activateList('ROLE')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_roles?.value?.length\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"!lists.SYSTEM_ROLE_IDS.includes(controls?.program_roles?.value[0]?._id)\" (click)=\"remove(controls?.program_roles?.value[0],'ROLE')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"featureflagrole && controls?.program_roles?.value[0]?.permissionGroupName ? controls?.program_roles?.value[0]?.permissionGroupName : controls?.program_roles?.value[0]?.roleName\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{featureflagrole && controls?.program_roles?.value[0]?.permissionGroupName ? controls?.program_roles?.value[0]?.permissionGroupName : controls?.program_roles?.value[0]?.roleName}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"role.popover()\" placement=\"right\" *ngIf=\"controls?.program_roles?.value?.length > 1\">+{{controls?.program_roles?.value?.length - 1}}</button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i *ngIf=\"!lists.SYSTEM_ROLE_IDS.includes(controls?.program_roles?.value[0]?._id)\" (click)=\"remove(controls?.program_roles?.value[0],'ROLE')\" class=\"icons\"></i>{{featureflagrole && controls?.program_roles?.value[0]?.permissionGroupName ? controls?.program_roles?.value[0]?.permissionGroupName : controls?.program_roles?.value[0]?.roleName}}</span>\r\n <button *ngIf=\"controls?.program_roles?.value?.length > 1\" class=\"count\" appPopover (click)=\"role.popover()\" placement=\"right\">+{{controls?.program_roles?.value?.length - 1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='ROLE'\" class=\"edit\" type=\"button\" (click)=\"activateList('ROLE')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <p *ngIf=\"false\" class=\"error-message\">{{featureflagrole ? 'Add a permission group(s)' :'Add a role(s)'}}</p>\r\n <app-popover #role [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of controls?.program_roles?.value | slice:1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i *ngIf=\"!lists.SYSTEM_ROLE_IDS.includes(data?._id)\" class=\"icons\"\r\n (click)=\"removeRole(data,'ROLE')\"></i>\r\n {{featureflagrole && data?.permissionGroupName ? data?.permissionGroupName : data?.roleName}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </form-field>\r\n\r\n <!-- Owners -->\r\n <form-field *ngIf=\"additionalOption?.OWNERS\" [checked]=\"controls?.program_owners.value?.length > 0 || controls?.program_owners_group.value?.length > 0\" [active]=\"activeList === 'OWNER'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'OWNER'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/owner.svg'\">\r\n <label class=\"vx-control-panel\">OWNER(S) <span class=\"required\">*</span>\r\n <span class=\"icon\" *ngIf=\"toolTipData.owner !== ''\" libPopoverHover (mouseover)=\"dataTooltip.popover()\" (mouseleave)=\"dataTooltip.closePopover()\"\r\n placement=\"right\" ><i class=\"icons\"></i></span>\r\n <popover-hover #dataTooltip>\r\n <div class=\"vx-info-card\">\r\n <div class=\"vx-info-card-body\" [innerHTML]=\"toolTipData.owner\" id=\"OwnerHelpText\"></div>\r\n </div>\r\n </popover-hover>\r\n </label>\r\n <input-with-pill [placeholder]=\"'Who is responsible for managing this program?'\"\r\n (select)=\"activateList('OWNER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_owners.value[0]\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_owners?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_owners?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\" appPopover (click)=\"owner.popover()\" placement=\"right\" *ngIf=\"controls?.program_owners?.value?.length > 1\">+{{controls?.program_owners?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_owners_group?.value?.length && controls?.program_owners?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_owners_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"!['ADMIN','KEY_ADMIN','LOGGED_IN'].includes(owner?.user_role)\" (click)=\"remove(owner,'OWNER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_owners_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_owners_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"group.popover()\" placement=\"right\" *ngIf=\"controls?.program_owners_group?.value?.length > 1\">+{{controls?.program_owners_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_owners?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\" >{{controls?.program_owners?.value[0]?.member_name}}</span></span>\r\n <button *ngIf=\"controls?.program_owners?.value?.length > 1\" class=\"count user\" appPopover (click)=\"owner.popover()\" placement=\"right\">+{{controls?.program_owners?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_owners_group?.value?.length && controls?.program_owners?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_owners_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" *ngIf=\"!['ADMIN','KEY_ADMIN','LOGGED_IN'].includes(owner?.user_role)\" (click)=\"remove(owner,'OWNER_GROUP')\"></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_owners_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_owners_group?.value[0]?.group_name}}</span></span>\r\n <button *ngIf=\"controls?.program_owners_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"group.popover()\" placement=\"right\">+{{controls?.program_owners_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='OWNER'\" [class.disabled]=\"controls?.all_user_in_role?.value\" (click)=\"activateList('OWNER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i>Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <p *ngIf=\"false\" class=\"error-message\">Add a owner(s)</p>\r\n <div class=\"vx-d-flex vx-align-center vx-justify-end vx-mt-2\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-mr-2\">{{featureflagrole ? \"ALL USERS ASSOCIATED WITH THE SELECTED PERMISSION GROUPS\":\"ALL USERS ASSOCIATED WITH THE SELECTED ROLES\"}}</div>\r\n <switch formControlName=\"all_user_in_role\" (change)=\"selectAllRoleOwner($event)\"></switch>\r\n </div>\r\n <app-popover #owner [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of controls?.program_owners?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i *ngIf=\"!(lists.NON_REMOVABLE_OWNERS | listToId : 'member_id').includes(owner?.member_id)\"\r\n class=\"icons\" (click)=\"remove(owner,'OWNER')\"></i>\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 #group [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of controls?.program_owners_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i *ngIf=\"!['ADMIN','KEY_ADMIN','LOGGED_IN'].includes(owner?.user_role)\"\r\n class=\"icons\" (click)=\"remove(owner,'OWNER_GROUP')\"></i>\r\n {{owner?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </form-field>\r\n\r\n <!-- Approvers -->\r\n <!-- Removing this option in Program simplification -->\r\n <form-field *ngIf=\"additionalOption?.APPROVER && !programSimplifyFlag\" [checked]=\"controls?.program_approver?.value?.length\" [active]=\"activeList === 'APPROVER'\" [disabled]=\"(sideElements.includes(activeList) && activeList !== 'APPROVER')\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg'\">\r\n <label class=\"vx-control-panel\">APPROVER <i class=\"icons\" [appTooltip]=\"'An Approver is responsible for approving a Program. Where an Approver is selected, the Program and all responsibilities linked with that Program will only commence once the Program has been approved.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"ApproverHelpText\"></i></label>\r\n <input-with-pill [placeholder]=\"'Who is responsible for approving this program?'\"\r\n [disabled]=\"isApproverDisabled\" (select)=\"activateList('APPROVER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_approver?.value[0]\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"isApproverDisabled === false\" (click)=\"remove(controls?.program_approver?.value[0],'APPROVER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_approver?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_approver?.value[0]?.member_name}}</span>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <i *ngIf=\"isApproverDisabled === false\" (click)=\"remove(controls?.program_approver?.value[0],'APPROVER')\"\r\n class=\"icons vx-fs-9 vx-mr-1 cross\"></i>{{controls?.program_approver?.value[0]?.member_name}}\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"(activeList!=='APPROVER') && isApproverDisabled === false\"(click)=\"activateList('APPROVER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i>Edit</button>\r\n </div>\r\n </input-with-pill>\r\n </form-field>\r\n\r\n <!-- Performance Calculated -->\r\n <!-- <form-field [checked]=\"controls?.performance_calculation?.value\" [active]=\"activeList === 'PERFORMANCE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'PERFORMANCE'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/performance-calc.svg'\">\r\n <label class=\"vx-control-panel\">HOW SHOULD THE PERFORMANCE OF THIS PROGRAM BE CALCULATED?</label>\r\n <tab-selector formControlName=\"performance_calculation\" [displayArray]=\"constants?.performanceCalculation\">\r\n </tab-selector>\r\n </form-field> -->\r\n <ng-container *ngIf=\"isProgramScope\" >\r\n <div class=\"scope-label vx-fs-10 vx-txt-white vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mb-5 vx-lh-4 vx-d-inline-block\">PROGRAM SCOPE</div>\r\n <!-- <i class=\"icons info-icon vx-fs-12 vx-txt-blue vx-ml-1\" [appTooltip]=\"tooltip.programScope\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\"></i> -->\r\n <span class=\"icon info-icon vx-fs-12 vx-txt-blue vx-ml-1\" *ngIf=\"toolTipData.programScop !== ''\" libPopoverHover (mouseover)=\"dataTooltip.popover()\" (mouseleave)=\"dataTooltip.closePopover()\" placement=\"right\"><i class=\"icons\"></i></span>\r\n <popover-hover #dataTooltip>\r\n <div class=\"vx-info-card\">\r\n <div class=\"vx-info-card-body\" [innerHTML]=\"toolTipData.programScope\" id=\"PSHelpText\"></div>\r\n </div>\r\n </popover-hover>\r\n </ng-container>\r\n\r\n <!-- Program Frequency -->\r\n <form-field *ngIf=\"additionalOption?.PROGRAM_FREQUENCY\" [checked]=\"[true,false].includes(controls?.recurring_frequency?.value)\" [active]=\"activeList === 'FREQUENCY'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'FREQUENCY'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/recurring.svg'\">\r\n <label class=\"vx-control-panel\" id=\"PDChange\">PROGRAM DURATION <i class=\"icons\" [appTooltip]=\"'Program Duration refers to the duration of the Program. A Program can occur in perpetuity, or it can occur until the end of the current business cycle that has been specified in '+ businessCycle.selectedCycle.business_cycle +'. All responsibilities linked with that Program will also have the same Program Duration.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"ProgramDurationHelpText\"></i></label>\r\n <div class=\"upload-format\">\r\n <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <span class=\"text vx-mb-0\">Is this program recurring?</span>\r\n <div class=\"radio-group program\">\r\n <app-cs-radio [name]=\"'recurring_frequency'\" [checked]=\"controls?.recurring_frequency?.value\" (checkedEvent)=\"setFormField('recurring_frequency',true)\">YES</app-cs-radio>\r\n <app-cs-radio [name]=\"'recurring_frequency'\" [checked]=\"!controls?.recurring_frequency?.value\" (checkedEvent)=\"setFormField('recurring_frequency',false)\">NO</app-cs-radio>\r\n </div>\r\n </div>\r\n </div>\r\n </form-field>\r\n\r\n <!-- Scope Changes -->\r\n <form-field *ngIf=\"additionalOption?.SCOPE_CHANGES\" [checked]=\"[true,false].includes(controls?.lock_scope_change?.value)\" [active]=\"activeList === 'SCOPE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'SCOPE'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/lock-scope.svg'\">\r\n <label class=\"vx-control-panel\">Lock the Program Scope <i class=\"icons\" [appTooltip]=\"'If the Program Scope is locked, neither the Program nor the responsibilities linked with the Program can be edited once the Program begins. In order to edit the Program or the linked responsibilities, the Program details will need to be edited.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"ScopeChangesHelpText\"></i></label>\r\n <div class=\"upload-format\">\r\n <span class=\"text\">Would you like to <span class=\"vx-label-txt vx-fw-500\">lock changes</span> to the program\r\n scope?</span>\r\n <div class=\"radio-group program\">\r\n <app-cs-radio [name]=\"'lock_scope_change'\" [checked]=\"controls?.lock_scope_change?.value\" (checkedEvent)=\"setFormField('lock_scope_change',true)\">YES</app-cs-radio>\r\n <app-cs-radio [name]=\"'lock_scope_change'\" [checked]=\"!controls?.lock_scope_change?.value\" (checkedEvent)=\"setFormField('lock_scope_change',false)\">NO</app-cs-radio>\r\n </div>\r\n </div>\r\n </form-field>\r\n\r\n <!-- Framework -->\r\n <!-- <form-field [checked]=\"false\" [active]=\"activeList === 'FRAMEWORK'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'FRAMEWORK'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg'\">\r\n <label class=\"vx-control-panel\">FRAMEWORK</label>\r\n <input-with-pill [placeholder]=\"'Select a framework that this Program relates to'\" (select)=\"activateList('FRAMEWORK')\">\r\n <div class=\"selected\" *ngIf=\"controls?.framework?.value?.framework_name\">\r\n <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i (click)=\"remove(controls?.framework.value,'FRAMEWORK')\" class=\"icons\"></i>{{controls?.framework?.value?.framework_name}}</span>\r\n <button class=\"count\" appPopover (click)=\"framework.popover()\" placement=\"right\">+5</button>\r\n </div>\r\n </div>\r\n <button *ngIf=\"activeList!=='FRAMEWORK'\" (click)=\"activateList('FRAMEWORK')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #framework [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 class=\"value\">\r\n <i class=\"icons\"></i>\r\n Manage framework name\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </form-field> -->\r\n\r\n <!-- Responsibility Center -->\r\n <form-field *ngIf=\"additionalOption?.RC\" [checked]=\"controls?.rc?.value?.length\" [active]=\"activeList === 'RC'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'RC'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg'\">\r\n <label class=\"vx-control-panel\">RESPONSIBILITY CENTER <i class=\"icons\" [appTooltip]=\"'Responsibility Centers represent your organizational and operational infrastructure. Where Responsibility Centers are selected when creating a Program, only those Responsibilities Centers will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"RCHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" (select)=\"activateList('RC')\"\r\n [placeholder]=\"'Which Responsibility Center(s) can be linked to the responsibilities associated with this Program?'\">\r\n <div class=\"selected\" *ngIf=\"controls?.rc?.value && controls?.rc?.value?.length\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.rc?.value[0],'RC')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.rc?.value[0]?.item_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.rc?.value[0]?.item_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"rc.popover()\" placement=\"right\" *ngIf=\"controls?.rc?.value?.length > 1\">+{{controls?.rc?.value?.length -1 }}</button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove(controls?.rc?.value[0],'RC')\"></i>{{controls?.rc?.value[0]?.item_name}}</span>\r\n <button *ngIf=\"controls?.rc?.value?.length > 1\" class=\"count\" appPopover (click)=\"rc.popover()\" placement=\"right\">+{{controls?.rc?.value?.length -1 }}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='RC'\" class=\"edit\" type=\"button\" (click)=\"activateList('RC')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #rc [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let rc of controls?.rc?.value |slice:1\">\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 </form-field>\r\n\r\n <!-- Assignee -->\r\n <form-field *ngIf=\"additionalOption?.ASSIGNEES\" [checked]=\"controls?.program_assignee?.value?.length || controls?.program_default_assignee?.value?.length ||controls?.program_default_assignee?.value?.length || controls?.program_default_assignee_group?.value?.length\"\r\n [active]=\"['ASSIGNEE','DEFAULT_ASSIGNEE']?.includes(activeList)\" [disabled]=\"sideElements?.includes(activeList) && !['ASSIGNEE','DEFAULT_ASSIGNEE'].includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg'\">\r\n <label class=\"vx-control-panel\" [class.disabled]=\"activeList === 'DEFAULT_ASSIGNEE'\">ASSIGNEES <i class=\"icons\" [appTooltip]=\"'Assignees are required to complete the responsibilities that have been assigned to them. Where Assignees are selected when creating a Program, only those Assignees will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"AssigneeHelpText\"></i> </label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"activeList === 'DEFAULT_ASSIGNEE'\" [placeholder]=\"'Who is responsible for completing the responsibilities within this Program?'\"\r\n (select)=\"activateList('ASSIGNEE')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_assignee?.value?.length || controls?.program_assignee_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_assignee?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_assignee?.value[0],'ASSIGNEE')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_assignee?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_assignee?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"assignee.popover()\" placement=\"right\" *ngIf=\"controls?.program_assignee?.value?.length > 1\">+{{controls?.program_assignee?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_assignee_group?.value?.length && controls?.program_assignee?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_assignee_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_assignee_group?.value[0],'ASSIGNEE_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_assignee_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_assignee_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"assignee_group.popover()\" placement=\"right\" *ngIf=\"controls?.program_assignee_group?.value?.length > 1\">+{{controls?.program_assignee_group?.value?.length -1 }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_assignee?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_assignee?.value[0],'ASSIGNEE')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_assignee?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_assignee?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_assignee?.value?.length > 1\" class=\"count user\" appPopover (click)=\"assignee.popover()\" placement=\"right\">+{{controls?.program_assignee?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_assignee_group?.value?.length && controls?.program_assignee?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_assignee_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_assignee_group?.value[0],'ASSIGNEE_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_assignee_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_assignee_group?.value[0]?.group_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_assignee_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"assignee_group.popover()\" placement=\"right\">+{{controls?.program_assignee_group?.value?.length -1 }}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='ASSIGNEE'\" class=\"edit\" type=\"button\" (click)=\"activateList('ASSIGNEE')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #assignee [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let assignee of controls?.program_assignee?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(assignee,'ASSIGNEE')\" class=\"icons\"></i>\r\n {{assignee?.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 #assignee_group [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_assignee_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'ASSIGNEE_GROUP')\" class=\"icons\"></i>\r\n {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <label class=\"vx-control-panel\" [class.disabled]=\"activeList === 'ASSIGNEE'\">DEFAULT ASSIGNEE <i class=\"icons\" [appTooltip]=\"'This option lets you specify the Default Assignees for all new responsibilities linked with a Program. If a Default Assignees is selected, the user will automatically be selected the Assignee when creating a responsibility linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility. '\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"DAHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"activeList === 'ASSIGNEE'\" [placeholder]=\"'Which persons will be selected as the default assignees for the responsibilities within this Program?'\" (select)=\"activateList('DEFAULT_ASSIGNEE')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_default_assignee?.value?.length || controls?.program_default_assignee_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_assignee?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_assignee?.value[0],'DEFAULT_ASSIGNEE')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_assignee?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_assignee?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"defaultAssignee.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_assignee?.value?.length > 1\">+{{controls?.program_default_assignee?.value?.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_assignee_group?.value?.length && controls?.program_default_assignee?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_assignee_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_assignee_group?.value[0],'DEFAULT_ASSIGNEE_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_assignee_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_assignee_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"defaultAssigneeGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_assignee_group?.value?.length > 1\">+{{controls?.program_default_assignee_group?.value?.length -1 }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_assignee?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_assignee?.value[0],'DEFAULT_ASSIGNEE')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_assignee?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{ controls?.program_default_assignee?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_assignee?.value?.length > 1\" class=\"count user\" appPopover (click)=\"defaultAssignee.popover()\" placement=\"right\">+{{controls?.program_default_assignee?.value?.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_assignee_group?.value?.length && controls?.program_default_assignee?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_assignee_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_assignee_group?.value[0],'DEFAULT_ASSIGNEE_GROUP')\" ></i>\r\n <span class=\"chip\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_assignee_group?.value[0]?.group_name }}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_assignee_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"defaultAssigneeGroup.popover()\" placement=\"right\">+{{controls?.program_default_assignee_group?.value?.length -1 }}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='DEFAULT_ASSIGNEE'\" (click)=\"activateList('DEFAULT_ASSIGNEE')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #defaultAssignee [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let assignee of controls?.program_default_assignee?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(assignee,'DEFAULT_ASSIGNEE')\" class=\"icons\"></i>\r\n {{assignee?.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 #defaultAssigneeGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_default_assignee_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(assignee,'DEFAULT_ASSIGNEE_GROUP')\" class=\"icons\"></i>\r\n {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <div class=\"radio-group-selector\" [class.disabled]=\"activeList === 'ASSIGNEE'\">\r\n <app-cs-radio [name]=\"'assignee'\" [checked]=\"controls?.assignee_completion_criteria?.value === 'ALL'\" (checkedEvent)=\"setFormField('assignee_completion_criteria', 'ALL')\">\r\n ALL SELECTED PERSONS NEED TO COMPLETE THIS <i class=\"icons\" [appTooltip]=\"'If selected, separate responsibilities will be created for each person.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" ></i>\r\n </app-cs-radio>\r\n <app-cs-radio [name]=\"'assignee'\" [checked]=\"controls?.assignee_completion_criteria?.value === 'ANYONE'\" (checkedEvent)=\"setFormField('assignee_completion_criteria', 'ANYONE')\">\r\n ANY SELECTED PERSON CAN COMPLETE THIS <i class=\"icons\" [appTooltip]=\"'If selected, only one responsibility will be created.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\"></i>\r\n </app-cs-radio>\r\n </div>\r\n </form-field>\r\n\r\n <!-- Reviewer -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.REVIEWER\"\r\n [checked]=\"controls?.program_reviewer?.value?.length || controls?.program_default_reviewer?.value?.length ||controls?.program_default_reviewer?.value?.length || controls?.program_default_reviewer_group?.value?.length\"\r\n [active]=\"['REVIEWER','DEFAULT_REVIEWER']?.includes(activeList)\" [disabled]=\"sideElements?.includes(activeList) && !['REVIEWER','DEFAULT_REVIEWER'].includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/reviewer.svg'\">\r\n <label [class.disabled]=\"activeList === 'DEFAULT_REVIEWER'\" class=\"vx-control-panel\">Reviewers <i class=\"icons\" [appTooltip]=\"'Reviewers are required to review responsibilities after they have been completed. Where Reviewers are selected when creating a Program, only those Reviewers will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"ReviewerHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"activeList === 'DEFAULT_REVIEWER'\" [placeholder]=\"'Who is responsible for reviewing the responsibilities within this Program?'\" (select)=\"activateList('REVIEWER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_reviewer?.value?.length || controls?.program_reviewer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_reviewer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_reviewer?.value[0],'REVIEWER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_reviewer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"reviewer.popover()\" placement=\"right\" *ngIf=\"controls?.program_reviewer?.value?.length > 1\">+{{controls?.program_reviewer?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_reviewer_group?.value?.length && controls?.program_reviewer?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_reviewer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_reviewer_group?.value[0],'REVIEWER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_reviewer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"reviewerGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_reviewer_group?.value?.length > 1\">+{{controls?.program_reviewer_group?.value?.length - 1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_reviewer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_reviewer?.value[0],'REVIEWER')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_reviewer?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_reviewer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"reviewer.popover()\" placement=\"right\">+{{controls?.program_reviewer?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_reviewer_group?.value?.length && controls?.program_reviewer?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_reviewer_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_reviewer_group?.value[0],'REVIEWER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_reviewer_group?.value[0]?.group_name}}\r\n </span>\r\n </span>\r\n <button *ngIf=\"controls?.program_reviewer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"reviewerGroup.popover()\" placement=\"right\">+{{controls?.program_reviewer_group?.value?.length - 1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='REVIEWER'\" (click)=\"activateList('REVIEWER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #reviewer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let reviewer of controls?.program_reviewer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(reviewer,'REVIEWER')\" class=\"icons\"></i>\r\n {{reviewer?.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 #reviewerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_reviewer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'REVIEWER_GROUP')\" class=\"icons\"></i>\r\n {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <label [class.disabled]=\"activeList === 'REVIEWER'\" class=\"vx-control-panel\">DEFAULT Reviewer <i class=\"icons\" [appTooltip]=\"'This option lets you specify the Default Reviewers for responsibilities linked with a Program. Where a user has been specified as a Default Reviewer, that user will automatically be selected as the Reviewer when creating a responsibility linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"DRHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"activeList === 'REVIEWER'\" [placeholder]=\"'Which persons will be selected as the default reviewers for the responsibilities within this Program?'\" (select)=\"activateList('DEFAULT_REVIEWER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_default_reviewer?.value?.length || controls?.program_default_reviewer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_reviewer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer?.value[0],'DEFAULT_REVIEWER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_reviewer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"defaultReviewer.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_reviewer?.value?.length > 1\">+{{controls?.program_default_reviewer?.value?.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length && controls?.program_default_reviewer?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer_group?.value[0],'DEFAULT_REVIEWER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_reviewer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"defaultReviewerGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length > 1\">+{{controls?.program_default_reviewer_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_reviewer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer?.value[0],'DEFAULT_REVIEWER')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_reviewer?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_reviewer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"defaultReviewer.popover()\" placement=\"right\">+{{controls?.program_default_reviewer?.value?.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length && controls?.program_default_reviewer?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer_group?.value[0],'DEFAULT_REVIEWER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_reviewer_group?.value[0]?.group_name}}\r\n </span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_reviewer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"defaultReviewerGroup.popover()\" placement=\"right\">+{{controls?.program_default_reviewer_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='DEFAULT_REVIEWER'\" (click)=\"activateList('DEFAULT_REVIEWER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #defaultReviewer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let reviewer of controls?.program_default_reviewer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(reviewer,'DEFAULT_REVIEWER')\" class=\"icons\"></i>\r\n {{reviewer?.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 #defaultReviewerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_default_reviewer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'DEFAULT_REVIEWER_GROUP')\" class=\"icons\"></i>\r\n {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <div class=\"radio-group-selector\" [class.disabled]=\"activeList === 'REVIEWER'\">\r\n <app-cs-radio [name]=\"'reviewer'\" [checked]=\"controls?.reviewer_completion_criteria?.value === 'SEQUENTIAL'\" (checkedEvent)=\"setFormField('reviewer_completion_criteria', 'SEQUENTIAL')\" [class.disabled]=\"controls?.program_default_reviewer_group?.value?.length > 0\">\r\n SEQUENTIAL <i class=\"icons\" [appTooltip]=\"'The responsibility will be sent for review one at a time in the sequence defined by you.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\"></i>\r\n </app-cs-radio>\r\n <app-cs-radio [name]=\"'reviewer'\" [checked]=\"controls?.reviewer_completion_criteria?.value === 'ANYONE'|| controls?.program_default_reviewer_group?.value?.length > 0\" (checkedEvent)=\"setFormField('reviewer_completion_criteria', 'ANYONE')\">\r\n ANY REVIEWER CAN MARK THIS AS REVIEWED <i class=\"icons\" [appTooltip]=\"'The responsibility will be sent for review to all reviewers at the same time. If anyone of the reviewer reviews the responsibility, it will be considered as reviewed.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\"></i>\r\n </app-cs-radio>\r\n </div>\r\n </form-field>\r\n\r\n <!-- Overseer -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.OVERSEER\"\r\n [checked]=\"controls?.program_overseer?.value?.length || controls?.program_default_overseer?.value?.length ||controls?.program_default_overseer?.value?.length || controls?.program_default_overseer_group?.value?.length\"\r\n [active]=\"activeList === 'OVERSEER'\" [disabled]=\"sideElements?.includes(activeList) && !['OVERSEER','DEFAULT_OVERSEER','DEFAULT_FAILED_OVERSEER'].includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg'\">\r\n <label class=\"vx-control-panel\" [class.disabled]=\"['DEFAULT_OVERSEER','DEFAULT_FAILED_OVERSEER'].includes(activeList)\">Oversights <i class=\"icons\" [appTooltip]=\"'Oversights receive updates when a responsibility is completed, completed with delay or not completed. Where Oversights are selected when creating a Program, only those Oversights will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"overseerHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"['DEFAULT_OVERSEER','DEFAULT_FAILED_OVERSEER'].includes(activeList)\" [placeholder]=\"'Who is responsible for overseeing the responsibilities within this Program?'\" (select)=\"activateList('OVERSEER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_overseer?.value?.length || controls?.program_overseer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_overseer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_overseer?.value[0],'OVERSEER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_overseer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_overseer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseers.popover()\" placement=\"right\" *ngIf=\"controls?.program_overseer?.value?.length > 1\">+{{controls?.program_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_overseer_group?.value?.length && controls?.program_overseer?.value?.length \" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_overseer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_overseer_group?.value[0],'OVERSEER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_overseer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseerGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_overseer_group?.value?.length> 1\">+{{controls?.program_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_overseer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_overseer?.value[0],'OVERSEER')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_overseer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">\r\n {{controls?.program_overseer?.value[0]?.member_name}}\r\n </span>\r\n </span>\r\n <button *ngIf=\"controls?.program_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseers.popover()\" placement=\"right\">+{{controls?.program_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_overseer_group?.value?.length && controls?.program_overseer?.value?.length \" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_overseer_group?.value?.length \">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_overseer_group?.value[0],'OVERSEER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_overseer_group?.value[0]?.group_name}}</span></span>\r\n <button *ngIf=\"controls?.program_overseer_group?.value?.length> 1\" class=\"count\" appPopover (click)=\"overseerGroup.popover()\" placement=\"right\">+{{controls?.program_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n\r\n <button *ngIf=\"activeList!=='OVERSEER'\" (click)=\"activateList('OVERSEER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #overseers [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let overseer of controls?.program_overseer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove(overseer,'OVERSEER')\"></i> {{overseer?.member_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_overseer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'OVERSEER_GROUP')\" class=\"icons\"></i> {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <ng-container [class.disabled]=\"activeList === 'OVERSEER'\">\r\n <label class=\"vx-control-panel\" [class.disabled]=\"['OVERSEER'].includes(activeList)\">DEFAULT Oversight <i class=\"icons\" [appTooltip]=\"'This option lets you specify the Default Oversight for responsibilities linked with a Program. Where a user has been specified as a Default Oversight, that user will automatically be selected as the Oversight when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"DOHelpText\"></i></label>\r\n <input-with-pill [disabled]=\"['OVERSEER','DEFAULT_FAILED_OVERSEER'].includes(activeList)\" [selectDiv]=\"true\" [placeholder]=\"'Which persons will be selected as the default overseers for the responsibilities within this Program?'\" (select)=\"activateList('DEFAULT_OVERSEER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_default_overseer?.value?.length || controls?.program_default_overseer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_overseer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_overseer?.value[0],'DEFAULT_OVERSEER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_overseer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_overseer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseersDefault.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_overseer?.value?.length > 1\">+{{controls?.program_default_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_default_overseer_group?.value?.length && controls?.program_default_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_overseer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_overseer_group?.value[0],'DEFAULT_OVERSEER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_overseer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseerDefaultGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_overseer_group?.value?.length >1\">+{{controls?.program_default_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_overseer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_overseer?.value[0],'DEFAULT_OVERSEER')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_overseer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_overseer?.value[0]?.member_name}}</span></span>\r\n <button *ngIf=\"controls?.program_default_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseersDefault.popover()\" placement=\"right\">+{{controls?.program_default_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_default_overseer_group?.value?.length && controls?.program_default_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_overseer_group?.value?.length \">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_overseer_group?.value[0],'DEFAULT_OVERSEER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_overseer_group?.value[0]?.group_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_overseer_group?.value?.length >1\" class=\"count\" appPopover (click)=\"overseerDefaultGroup.popover()\" placement=\"right\">+{{controls?.program_default_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='DEFAULT_OVERSEER'\" (click)=\"activateList('DEFAULT_OVERSEER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #overseersDefault [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let overseer of controls?.program_default_overseer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove(overseer,'DEFAULT_OVERSEER')\"></i> {{overseer?.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 #overseerDefaultGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_default_overseer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'DEFAULT_OVERSEER_GROUP')\" class=\"icons\"></i> {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <label class=\"vx-control-panel\" > </label>\r\n <input-with-pill class=\"vx-mt-2\" [selectDiv]=\"true\" [line]=\"3\" [disabled]=\"['OVERSEER','DEFAULT_OVERSEER'].includes(activeList)\" [placeholder]=\"'Which persons will be selected as the default overseers for responsibilities that are not completed within this Program?'\" (select)=\"activateList('DEFAULT_FAILED_OVERSEER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length || controls?.program_default_failed_overseer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer?.value[0],'DEFAULT_FAILED_OVERSEER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_failed_overseer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_failed_overseer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseersDefaultFail.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length > 1\">+{{controls?.program_default_failed_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length && controls?.program_default_failed_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer_group?.value[0],'DEFAULT_FAILED_OVERSEER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_failed_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_failed_overseer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseerDefaultFailGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length > 1\">+{{controls?.program_default_failed_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer?.value[0],'DEFAULT_FAILED_OVERSEER')\" ></i>\r\n <span class=\"chip\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_failed_overseer?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_failed_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseersDefaultFail.popover()\" placement=\"right\">+{{controls?.program_default_failed_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length && controls?.program_default_failed_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length \">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer_group?.value[0],'DEFAULT_FAILED_OVERSEER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_failed_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_failed_overseer_group?.value[0]?.group_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"overseerDefaultFailGroup.popover()\" placement=\"right\">+{{controls?.program_default_failed_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='DEFAULT_FAILED_OVERSEER'\" (click)=\"activateList('DEFAULT_FAILED_OVERSEER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #overseersDefaultFail [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let overseer of controls?.program_default_failed_overseer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove(overseer,'DEFAULT_FAILED_OVERSEER')\"></i> {{overseer?.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 #overseerDefaultFailGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_default_failed_overseer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'DEFAULT_FAILED_OVERSEER_GROUP')\" class=\"icons\"></i> {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n</ng-container>\r\n </form-field>\r\n\r\n <!-- Assessment -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.ASSESSMENT\"\r\n [checked]=\"controls?.program_assessments?.value?.length\"\r\n [active]=\"activeList === 'ASSESSMENT'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'ASSESSMENT'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/assessments.svg'\">\r\n <label class=\"vx-control-panel\">ASSESSMENTS <i class=\"icons\" [appTooltip]=\"'Assessments are a digital form that are created in \u201CAssessment\u201D within the Compliance Module. Where Assessments are selected when creating a Program, only those Assessments will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"AssessmentHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [placeholder]=\"'Which assessments can be linked to the responsibilities within this Program?'\" (select)=\"activateList('ASSESSMENT')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_assessments?.value?.length\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"(controls?.program_assessments?.value | assessmentResolver) as assessments\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(assessments[0],'ASSESSMENT')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"assessments[0]?.assessment_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{assessments[0]?.assessment_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"program_assessments.popover()\" placement=\"right\" *ngIf=\"assessments?.length > 1\">+{{assessments?.length -1 }}</button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <ng-container *ngIf=\"(controls?.program_assessments?.value | assessmentResolver) as assessments\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove(assessments[0],'ASSESSMENT')\"></i>{{assessments[0]?.assessment_name}} </span>\r\n <button *ngIf=\"assessments?.length > 1\" class=\"count\" appPopover (click)=\"program_assessments.popover()\" placement=\"right\">+{{assessments?.length -1 }}</button>\r\n </div>\r\n </ng-container>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='ASSESSMENT'\" class=\"edit\" type=\"button\" (click)=\"activateList('ASSESSMENT')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #program_assessments [dontCloseonClick]=\"true\">\r\n <ng-container >\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n\r\n <li *ngFor=\"let assessment of (controls?.program_assessments?.value | assessmentResolver) | slice:1\">\r\n <div class=\"avatar-card\" >\r\n <span class=\"value\">\r\n <i (click)=\"remove(assessment,'ASSESSMENT')\" class=\"icons\" ></i> {{assessment?.assessment_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n </app-popover>\r\n </form-field>\r\n\r\n <!-- Format & Evidence -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.FORMATE_EVIDENCE\" [checked]=\"[true,false].includes(controls?.evidence_required?.value)\"\r\n [active]=\"false\" [disabled]=\"sideElements.includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/format-evidence.svg'\">\r\n <label class=\"vx-control-panel\">Evidence <i class=\"icons\" [appTooltip]=\"'If selected, evidence of completion of a responsibility will be required for all responsibilities that are linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"EvidenceHelpText\"></i></label>\r\n <div class=\"upload-format\">\r\n\r\n <span class=\"text\">Do all responsibilities within this program require evidence?</span>\r\n <div class=\"radio-group program\">\r\n <app-cs-radio [name]=\"'evidence_required'\" [checked]=\"controls?.evidence_required?.value\" (checkedEvent)=\"setFormField('evidence_required',true)\">YES</app-cs-radio>\r\n <app-cs-radio [name]=\"'evidence_required'\" [checked]=\"!controls?.evidence_required?.value\" (checkedEvent)=\"setFormField('evidence_required',false)\">NO</app-cs-radio>\r\n </div>\r\n </div>\r\n <!-- <div class=\"vx-d-flex vx-align-center vx-justify-end vx-mt-2\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-mr-2\">Allow any file to be marked as\r\n key\r\n evidence</div>\r\n <switch formControlName=\"allow_any_file_key_evidence\"\r\n (change)=\"setFormField('allow_any_file_key_evidence',$event?.target?.checked)\"></switch>\r\n </div> -->\r\n </form-field>\r\n\r\n <!-- Custom Field -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.CUSTOM_FIELDS\" [checked]=\"controls?.custom_fields?.value?.length\"\r\n [active]=\"false\" [disabled]=\"sideElements.includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/custom-fields.svg'\">\r\n <label class=\"vx-control-panel\">CUSTOM FIELD <i class=\"icons\" [appTooltip]=\"'Where a custom field is specified, all responsibilities linked with a Program will contain that custom field. Custom fields enable the collection of additional meta data.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"CFHelpText\"></i></label>\r\n <custom-field formControlName=\"custom_fields\"></custom-field>\r\n </form-field>\r\n </form>\r\n</div>\r\n\r\n\r\n<!-- list of roles -->\r\n<role-list *ngIf=\"activeList === 'ROLE'\" [selected]=\"controls?.program_roles?.value | refDisconnect\" [loading]=\"listLoadingState.ROLES\"\r\n [list]=\"lists?.ROLES?.data ?? []\" (save)=\"listAction($event,'ROLE')\" (cancel)=\"fieldDeselector('ROLE')\" [featureflagrole]=\"featureflagrole\" [featureflagGroup]=\"featureflagGroups\" [ff_rc_listing]=\"ff_rc_listing\"></role-list>\r\n\r\n<!-- list of frameworks -->\r\n<!-- <app-define-framework-listing *ngIf=\"activeList === 'FRAMEWORK'\" (cancel)=\"fieldDeselector('FRAMEWORK')\" (next)=\"listAction($event,'FRAMEWORK')\" [mode]=\"mode\" [selectedFramework]=\"controls?.framework?.value\"></app-define-framework-listing> -->\r\n<!-- list of responsibility center -->\r\n<app-responsibility-centers-list *ngIf=\"activeList === 'RC'\" [responsibilityCentersList]=\"lists?.RC ?? []\"\r\n [radioSelection]=\"false\" [rcIdKey]=\"'rc_id'\" (closeRcList)=\"fieldDeselector('RC')\"\r\n (saveSelectedList)=\"listAction($event,'RC')\" [selectedResponsibilityCenters]=\"controls?.rc?.value | refDisconnect\">\r\n</app-responsibility-centers-list>\r\n<!-- render userlist with group -->\r\n\r\n<user-group-list *ngIf=\"activeList === 'OWNER'\" [groupEnabled]=\"true\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\"\r\n [nonRemovableUserIds]=\"lists.NON_REMOVABLE_OWNERS | listToId : 'member_id'\" [userlist]=\"lists?.OWNERS?.data ?? []\"\r\n [selectedUsers]=\"controls?.program_owners?.value | refDisconnect\"\r\n (fetchUserData)=\"fetchUsersAssociatedWithRoles(false,$event)\" [userListInfo]=\"lists?.OWNERS\"\r\n [groupListInfo]=\"lists?.OWNERS_GROUPS\" [groupList]=\"lists?.OWNERS_GROUPS?.data ?? []\"\r\n [selectedGroups]=\"controls?.program_owners_group?.value | refDisconnect\" (save)=\"listAction($event,'OWNER')\"\r\n (cancel)=\"fieldDeselector('OWNER')\" [panelTitle]=\"panelTitleOwner\" [featureflag]=\"featureflagGroups\"></user-group-list>\r\n<user-group-list *ngIf=\"activeList === 'APPROVER'\" [groupEnabled]=\"false\" [singleSelect]=\"true\"\r\n [userlist]=\"lists?.APPROVERS?.data ?? []\" [selectedUsers]=\"controls?.program_approver?.value | refDisconnect\"\r\n [userListInfo]=\"lists?.APPROVERS\" (save)=\"listAction($event,'APPROVER')\" (cancel)=\"fieldDeselector('APPROVER')\" [panelTitle]=\"panelTitleApprover\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"activeList === 'ASSIGNEE'\" [groupEnabled]=\"true\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\"\r\n [userlist]=\"lists?.ASSIGNEES ?? []\" [selectedUsers]=\"controls?.program_assignee?.value | refDisconnect\" [groupList]=\"lists?.ASSIGNEES_GROUP ?? []\" [FromProgram]=\"true\"\r\n [selectedGroups]=\"controls?.program_assignee_group?.value | refDisconnect\" [disabledIds]=\"disabledAssigneeIds\" [fromResponsibility] = \"'Assignee'\" [reviewerIds]=\"selectedReviewerIds\" [overseerIds]=\"selectedOverseerIds\" [assignorId]=\"assignorId\"\r\n [userListInfo]=\"lists?.ASSIGNEES\" (save)=\"listAction($event,'ASSIGNEE')\" (cancel)=\"fieldDeselector('ASSIGNEE')\" [panelTitle]=\"panelTitleAssignee\"\r\n [defaultSelectedUsers]=\"controls?.program_default_assignee?.value | refDisconnect\" [userType]=\"'assignees'\" [featureflag]=\"featureflagGroups\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"activeList === 'DEFAULT_ASSIGNEE'\" [groupEnabled]=\"true\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\"\r\n [userlist]=\"lists?.DEFAULT_ASSIGNEES ?? []\" [selectedUsers]=\"controls?.program_default_assignee?.value | refDisconnect\" [groupList]=\"lists?.DEFAULT_ASSIGNEES_GROUP ?? []\" [FromProgram]=\"true\"\r\n [selectedGroups]=\"controls?.program_default_assignee_group?.value | refDisconnect\" [disabledIds]=\"disabledAssigneeIds\" [fromResponsibility] = \"'Assignee'\" [reviewerIds]=\"selectedReviewerIds\" [overseerIds]=\"selectedOverseerIds\" [assignorId]=\"assignorId\"\r\n [userListInfo]=\"lists?.DEFAULT_ASSIGNEE\" (save)=\"listAction($event,'DEFAULT_ASSIGNEE')\" (cancel)=\"fieldDeselector('DEFAULT_ASSIGNEE')\" [featureflag]=\"featureflagGroups\">\r\n</user-group-list>\r\n\r\n<user-group-list *ngIf=\"(activeList === 'REVIEWER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.REVIEWERS ?? []\" [selectedUsers]=\"controls?.program_reviewer?.value | refDisconnect\" [groupList]=\"lists?.REVIEWERS_GROUP ?? []\" [featureflag]=\"featureflagGroups\"\r\n [selectedGroups]=\"controls?.program_reviewer_group?.value | refDisconnect\" [disabledIds]=\"disableReviewerIds\" [fromResponsibility] = \"'Reviewer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [overseerIds]=\"selectedOverseerIds\"\r\n [userListInfo]=\"lists?.REVIEWERS\" (save)=\"listAction($event,'REVIEWER')\" (cancel)=\"fieldDeselector('REVIEWER')\" [panelTitle]=\"panelTitleReviewer\"\r\n [defaultSelectedUsers]=\"controls?.program_default_reviewer?.value | refDisconnect\" [userType]=\"'reviewers'\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"(activeList === 'DEFAULT_REVIEWER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.DEFAULT_REVIEWERS ?? []\" [selectedUsers]=\"controls?.program_default_reviewer?.value | refDisconnect\" [groupList]=\"lists?.DEFAULT_REVIEWERS_GROUP ?? []\" [featureflag]=\"featureflagGroups\"\r\n [selectedGroups]=\"controls?.program_default_reviewer_group?.value | refDisconnect\" [disabledIds]=\"disableReviewerIds\" [fromResponsibility] = \"'Reviewer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [overseerIds]=\"selectedOverseerIds\"\r\n [userListInfo]=\"lists?.DEFAULT_REVIEWERS\" (save)=\"listAction($event,'DEFAULT_REVIEWER')\" (cancel)=\"fieldDeselector('DEFAULT_REVIEWER')\" [panelTitle]=\"panelTitleDefaultReviewer\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"(activeList === 'OVERSEER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.OVERSEERS ?? []\" [selectedUsers]=\"controls?.program_overseer?.value | refDisconnect\" [groupList]=\"lists?.OVERSEERS_GROUP ?? []\"\r\n [selectedGroups]=\"controls?.program_overseer_group?.value | refDisconnect\" [featureflag]=\"featureflagGroups\" [disabledIds]=\"disableOverseerIds\" [fromResponsibility] = \"'Overseer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [reviewerIds]=\"selectedReviewerIds\"\r\n [userListInfo]=\"lists?.OVERSEES\" (save)=\"listAction($event,'OVERSEER')\" (cancel)=\"fieldDeselector('OVERSEER')\"\r\n [defaultSelectedUsers]=\"controls?.program_default_overseer?.value | refDisconnect | arrayConcat: controls?.program_default_failed_overseer?.value\" [userType]=\"'overseers'\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"(activeList === 'DEFAULT_OVERSEER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.DEFAULT_OVERSEERS ?? []\" [selectedUsers]=\"controls?.program_default_overseer?.value | refDisconnect\" [groupList]=\"lists?.DEFAULT_OVERSEERS_GROUP ?? []\"\r\n [selectedGroups]=\"controls?.program_default_overseer_group?.value | refDisconnect\" [featureflag]=\"featureflagGroups\" [disabledIds]=\"disableOverseerIds\" [fromResponsibility] = \"'Overseer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [reviewerIds]=\"selectedReviewerIds\"\r\n [userListInfo]=\"lists?.DEFAULT_OVERSEERS\" (save)=\"listAction($event,'DEFAULT_OVERSEER')\" (cancel)=\"fieldDeselector('DEFAULT_OVERSEER')\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"(activeList === 'DEFAULT_FAILED_OVERSEER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.DEFAULT_OVERSEERS ?? []\" [selectedUsers]=\"controls?.program_default_failed_overseer?.value | refDisconnect\" [groupList]=\"lists?.DEFAULT_OVERSEERS_GROUP ?? []\"\r\n [selectedGroups]=\"controls?.program_default_failed_overseer_group?.value | refDisconnect\" [featureflag]=\"featureflagGroups\" [disabledIds]=\"disableOverseerIds\" [fromResponsibility] = \"'Overseer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [reviewerIds]=\"selectedReviewerIds\"\r\n [userListInfo]=\"lists?.DEFAULT_OVERSEERS\" (save)=\"listAction($event,'DEFAULT_FAILED_OVERSEER')\" (cancel)=\"fieldDeselector('DEFAULT_FAILED_OVERSEER')\">\r\n</user-group-list>\r\n<assessment-picker *ngIf=\"activeList === 'ASSESSMENT'\" [selectedAssessment]=\"controls?.program_assessments?.value\" (cancelAssessment)=\"fieldDeselector('ASSESSMENT')\" (onAssessmentSelect)=\"listAction($event,'ASSESSMENT')\"></assessment-picker>\r\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n <app-smiley-dialog-inline\r\n *ngIf=\"showSmiley\"\r\n [message]=\"smileyMessage\"\r\n [actionButtons]=\"actionButtons\"\r\n (action)=\"action($event)\"\r\n (closeSmiley)=\"closeSmiley($event)\">\r\n </app-smiley-dialog-inline>\r\n\r\n <!-- Framework selector -->\r\n <app-framework-list *ngIf=\"activeList === 'FRAMEWORK'\" [workflowPage]=\"['FRAMEWORK']\" (assignControl)=\"listAction($event, 'FRAMEWORK')\"\r\n (closeFramework)=\"fieldDeselector('FRAMEWORK')\" [previousSelectedValues]=\"{framework: controls?.framework.value}\"(entrustFramework)=\"entrustFramework($event)\" [headerText]=\"'Select a framework'\"></app-framework-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\";@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/padding/padding.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\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.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-top.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\";::ng-deep .workflow-program{display:block;position:relative}::ng-deep .workflow-program .scope-label{background:#747576;border-radius:.125rem;position:relative;z-index:1}::ng-deep .workflow-program .scope-label:before{background:#f1f1f1;content:\"\";position:absolute;top:.5rem;left:7rem;width:20rem;height:1px;z-index:-1}::ng-deep .workflow-program .scope-label:after{background:#f1f1f1;content:\"\";position:absolute;top:.5rem;left:-2.5rem;width:2.5rem;height:1px;z-index:-1}::ng-deep .workflow-program .scope-label .required{position:absolute;top:0;right:-.625rem}::ng-deep .workflow-program .info-icon{position:relative;top:.125rem;cursor:pointer}::ng-deep .workflow-program .date-picker .picker-group{width:calc(50% - .125rem);position:relative}::ng-deep .workflow-program .date-picker .picker-group:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .workflow-program .date-picker .picker-group input{height:2.5rem;border-radius:.25rem;border:1px solid #DBDBDB;background:#FFFFFF;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;padding:0 2rem 0 .75rem;outline:none}::ng-deep .workflow-program .date-picker .picker-group input:focus,::ng-deep .workflow-program .date-picker .picker-group input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .workflow-program .date-picker .picker-group input::placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group input:-ms-input-placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group input::-ms-input-placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group i{height:1rem;width:1rem;position:absolute;right:.75rem;top:.625rem;pointer-events:none}::ng-deep .workflow-program .program-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;justify-content:space-between;padding:4px;position:relative;z-index:1}::ng-deep .workflow-program .program-type-field .type-item{position:relative}::ng-deep .workflow-program .program-type-field .type-item:first-of-type{width:6.25rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(2){width:5.75rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(6.4375rem);width:5.75rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(3){width:8.625rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(3).active~.background-glider{transform:translate(12.375rem);width:8.625rem}::ng-deep .workflow-program .program-type-field .type-item:last-of-type{width:5.25rem}::ng-deep .workflow-program .program-type-field .type-item:last-of-type.active~.background-glider{transform:translate(21.1875rem);width:5.25rem}::ng-deep .workflow-program .program-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:center}::ng-deep .workflow-program .program-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none}::ng-deep .workflow-program .program-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .workflow-program .program-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .workflow-program .program-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:6.25rem;height:32px;z-index:-1;transition:.25s ease-out}::ng-deep .workflow-program .vx-form-group .upload-files .file-item{background:#f1f1f1;border:1px solid #dbdbdb;border-radius:.25rem;padding-left:.125rem}::ng-deep .workflow-program .vx-form-group .upload-files .file-item .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:8.5rem}::ng-deep .workflow-program .vx-form-group .upload-files .file-item button.delete-btn{background:transparent;border-radius:0;border:none;border-left:1px solid #dbdbdb;height:1.625rem}::ng-deep .workflow-program .vx-form-group .upload-files button.file-count{background:#1E5DD3;border-radius:.125rem;border:none;color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0;margin:4px 0 0 4px}::ng-deep .workflow-program .vx-form-group .upload-format .radio-group app-cs-radio{height:1.375rem}::ng-deep .workflow-program .vx-form-group .default-selected{background:#FBFBFB;border:1px solid #F1F1F1;border-radius:.25rem;margin-top:.5rem}::ng-deep .workflow-program .vx-form-group .default-selected .selected{border-radius:0;border:none;background:none}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio{border-top:1px solid #F1F1F1}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio{margin-top:0!important}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.radio{position:absolute;top:.5rem;left:.75rem}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;padding:.5rem .5rem .5rem 2.25rem;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item svg{position:absolute;top:.5rem;left:.75rem}::ng-deep .workflow-program .vx-form-group .selected .custom-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:2.4rem}::ng-deep .workflow-program .vx-form-group .selected button.cross-btn{background:transparent;border-radius:0;border:0;padding:0}::ng-deep .workflow-program .vx-form-group .custom-input{position:relative}::ng-deep .workflow-program .vx-form-group .custom-input input{padding-right:2rem}::ng-deep .workflow-program .vx-form-group .custom-input button.cross-btn{background:transparent;border-radius:0;border:0;position:absolute;top:.875rem;right:.625rem}::ng-deep .workflow-program .vx-form-group button.add-more-btn{background:transparent;border-radius:0;border:none;padding:0}::ng-deep app-popover .wf-action-list ul.action-item .avatar-card .value{text-transform:none!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill .file-item{background:transparent!important;border:none!important;border-radius:0!important;padding:0!important;margin:0!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill .file-name{width:100%!important;max-width:100%!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill button.delete-btn{border:none!important;padding-right:0!important}.disabled{opacity:.4;pointer-events:none;filter:grayscale(1)}.vx-info-card{width:280px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;position:static;display:block;left:780}.vx-info-card-body{font-size:12px;padding:8px 12px;margin:0;font-weight:400;text-transform:none;color:#747576}\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 .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#ffffff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#ffffff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#ffffff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group vcomply-editor{margin-top:8px;display:block}::ng-deep .vx-form-group vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#ffffff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:208px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#ffffff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#ffffff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#ffffff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}dp-date-picker input:focus{outline:none}dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}dp-date-picker .dp-popup dp-day-calendar,dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}dp-date-picker .dp-popup dp-day-calendar button,dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000000;display:inline-flex}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:rgba(0,0,0,.3)}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#ffffff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0%,#747576 1%,#747576 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#ffffff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0%,#f31c39 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0%,#34aa44 1%,#34aa44 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0%,#1e5dd3 1%,#1e5dd3 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0%,#f6882f 1%,#f6882f 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0%,#7aa6f7 1%,#7aa6f7 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}\n"] }]
|
|
1388
|
+
args: [{ selector: 'app-workflow-program', template: "<div class=\"workflow-program\" #form>\r\n <form novalidate [formGroup]=\"programForm\">\r\n <!-- Program Category Type -->\r\n <form-field [checked]=\"controls?.program_type?.value > -1\" [active]=\"false\" [disabled]=\"sideElements.includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/issue-type.svg'\">\r\n <label class=\"vx-control-panel\">PROGRAM TYPE <span class=\"required\">*</span></label>\r\n <tab-selector formControlName=\"program_type\" [displayArray]=\"constants?.categoryType\"></tab-selector>\r\n <!-- <p *ngIf=\"program_name?.invalid\" class=\"error-message\">Add a program type</p> -->\r\n </form-field>\r\n\r\n <!-- Framework -->\r\n <form-field *ngIf=\"isAscentAllowed\" [checked]=\"false\" [active]=\"false\" [disabled]=\"false\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg'\">\r\n <label class=\"vx-control-panel\">FRAMEWORK</label>\r\n <!-- [selectDiv]=\"true\" -->\r\n <input-with-pill [placeholder]=\"'Select a framework that this Program relates to'\" (select)=\"activateList('FRAMEWORK')\">\r\n <div class=\"selected\" *ngIf=\"controls?.framework.value?.name\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"canFrameworkChange\" (click)=\"remove('', 'FRAMEWORK')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.framework.value?.name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.framework.value?.name}}</span>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i (click)=\"remove('', 'FRAMEWORK')\" *ngIf=\"canFrameworkChange\" class=\"icons\" ></i> {{controls?.framework.value?.name}}</span>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"canFrameworkChange\" class=\"edit\" type=\"button\" (click)=\"activateList('FRAMEWORK')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n </form-field>\r\n\r\n <!-- Program Category Name -->\r\n <form-field [checked]=\"controls?.program_name?.value?.trim()?.length\" [active]=\"false\" [disabled]=\"sideElements.includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg'\">\r\n <label class=\"vx-control-panel\">PROGRAM NAME <span class=\"required\">*</span></label>\r\n <input InputTrim formControlName=\"program_name\" type=\"text\"\r\n placeholder=\"What is the Program name?\">\r\n\r\n <p *ngIf=\"controls?.program_name?.errors && controls?.program_name?.touched\" class=\"error-message\">Enter a\r\n name for this Program.</p>\r\n <p *ngIf=\"isNameExists\" class=\"error-message\">Program name already exists.</p>\r\n <div class=\"upload-files vx-d-flex vx-align-center vx-flex-wrap vx-mt-1\">\r\n <file-pill *ngFor=\"let attachment of controls?.description_attachment?.value |slice:0:2\"\r\n [extension]=\"attachment?.org_file?.split('.').pop()\" [name]=\"attachment?.org_file\"\r\n [disabled]=\"attachment?.uploading\" (delete)=\"deleteAttachment('DESCRIPTION',attachment)\">\r\n </file-pill>\r\n <button *ngIf=\"controls?.description_attachment?.value?.length > 2\" class=\"file-count\" appPopover (click)=\"uploadFile.popover()\" placement=\"right\">+{{controls?.description_attachment?.value?.length - 2}}</button>\r\n <app-popover #uploadFile [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li class=\"vx-p-2\" *ngFor=\"let attachment of controls?.description_attachment?.value|slice:2\">\r\n <file-pill [extension]=\"attachment?.org_file?.split('.').pop()\" [name]=\"attachment?.org_file\"\r\n [disabled]=\"attachment?.uploading\" (delete)=\"deleteAttachment('DESCRIPTION',attachment)\"></file-pill>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n <vcomply-editor [(ngModel)]=\"editorData.programDescription\" [ngModelOptions]=\"{standalone: true}\"\r\n (sendSavedFiles)=\"selectFile('DESCRIPTION',$event)\"\r\n (ngModelChange)=\"setFormField('program_description',$event)\" [editorConfig]=\"constants?.description\">\r\n </vcomply-editor>\r\n\r\n </form-field>\r\n\r\n <!-- Objective -->\r\n <form-field [checked]=\"controls?.program_objective?.value?.trim()?.length\" [active]=\"activeList === 'OBJECTIVE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'OBJECTIVE'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/objectives.svg'\">\r\n <label class=\"vx-control-panel\">OBJECTIVE\r\n <!-- <span class=\"required\">*</span> -->\r\n </label>\r\n <vcomply-editor [(ngModel)]=\"editorData.programObjective\" [ngModelOptions]=\"{standalone: true}\"\r\n (sendSavedFiles)=\"selectFile('OBJECTIVE',$event)\"\r\n (ngModelChange)=\"setFormField('program_objective',$event, true)\" [editorConfig]=\"constants?.objective\">\r\n </vcomply-editor>\r\n <!-- <p *ngIf=\"!isObjectiveValid\" class=\"error-message\">Specify the objective for this Program.</p> -->\r\n </form-field>\r\n\r\n <!-- Roles -->\r\n <form-field *ngIf=\"additionalOption?.ROLES\" [checked]=\"controls?.program_roles?.value?.length \" [active]=\"activeList === 'ROLE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'ROLE'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/roles.svg'\">\r\n <label class=\"vx-control-panel\" id =\"permissiongroup\">{{ff_rc_listing ?'PERMISSIONS':'PERMISSION GROUP(S)'}} <span class=\"required\">*</span><i class=\"icons\" [appTooltip]=\"ff_rc_listing ?'Permissions let you specify the users that can be \u201COwners\u201D' + (allowedFeature.isFeatureEnabled('ff_program_simplify') ? ' ' : ' and \u201CApprovers\u201D') + 'of a Program.':'Permission group(s) let you specify the users that can be \u201COwners\u201D' + (allowedFeature.isFeatureEnabled('ff_program_simplify') ? ' ' : ' and \u201CApprovers\u201D') + 'of a Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"RoleHelpText\"></i></label>\r\n <input-with-pill id=\"placeholdername\" [placeholder]=\"ff_rc_listing ?'Which user permissions have access to this program?':'Which user permission groups have access to this program?'\"\r\n (select)=\"activateList('ROLE')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_roles?.value?.length\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"!lists.SYSTEM_ROLE_IDS.includes(controls?.program_roles?.value[0]?._id)\" (click)=\"remove(controls?.program_roles?.value[0],'ROLE')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"featureflagrole && controls?.program_roles?.value[0]?.permissionGroupName ? controls?.program_roles?.value[0]?.permissionGroupName : controls?.program_roles?.value[0]?.roleName\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{featureflagrole && controls?.program_roles?.value[0]?.permissionGroupName ? controls?.program_roles?.value[0]?.permissionGroupName : controls?.program_roles?.value[0]?.roleName}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"role.popover()\" placement=\"right\" *ngIf=\"controls?.program_roles?.value?.length > 1\">+{{controls?.program_roles?.value?.length - 1}}</button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i *ngIf=\"!lists.SYSTEM_ROLE_IDS.includes(controls?.program_roles?.value[0]?._id)\" (click)=\"remove(controls?.program_roles?.value[0],'ROLE')\" class=\"icons\"></i>{{featureflagrole && controls?.program_roles?.value[0]?.permissionGroupName ? controls?.program_roles?.value[0]?.permissionGroupName : controls?.program_roles?.value[0]?.roleName}}</span>\r\n <button *ngIf=\"controls?.program_roles?.value?.length > 1\" class=\"count\" appPopover (click)=\"role.popover()\" placement=\"right\">+{{controls?.program_roles?.value?.length - 1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='ROLE'\" class=\"edit\" type=\"button\" (click)=\"activateList('ROLE')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <p *ngIf=\"false\" class=\"error-message\">{{featureflagrole ? 'Add a permission group(s)' :'Add a role(s)'}}</p>\r\n <app-popover #role [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of controls?.program_roles?.value | slice:1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i *ngIf=\"!lists.SYSTEM_ROLE_IDS.includes(data?._id)\" class=\"icons\"\r\n (click)=\"removeRole(data,'ROLE')\"></i>\r\n {{featureflagrole && data?.permissionGroupName ? data?.permissionGroupName : data?.roleName}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </form-field>\r\n\r\n <!-- Owners -->\r\n <form-field *ngIf=\"additionalOption?.OWNERS\" [checked]=\"controls?.program_owners.value?.length > 0 || controls?.program_owners_group.value?.length > 0\" [active]=\"activeList === 'OWNER'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'OWNER'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/owner.svg'\">\r\n <label class=\"vx-control-panel\">OWNER(S) <span class=\"required\">*</span>\r\n <span class=\"icon\" *ngIf=\"toolTipData.owner !== ''\" libPopoverHover (mouseover)=\"dataTooltip.popover()\" (mouseleave)=\"dataTooltip.closePopover()\"\r\n placement=\"right\" ><i class=\"icons\"></i></span>\r\n <popover-hover #dataTooltip>\r\n <div class=\"vx-info-card\">\r\n <div class=\"vx-info-card-body\" [innerHTML]=\"toolTipData.owner\" id=\"OwnerHelpText\"></div>\r\n </div>\r\n </popover-hover>\r\n </label>\r\n <input-with-pill [placeholder]=\"'Who is responsible for managing this program?'\"\r\n (select)=\"activateList('OWNER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_owners.value[0]\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_owners?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_owners?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\" appPopover (click)=\"owner.popover()\" placement=\"right\" *ngIf=\"controls?.program_owners?.value?.length > 1\">+{{controls?.program_owners?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_owners_group?.value?.length && controls?.program_owners?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_owners_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"!['ADMIN','KEY_ADMIN','LOGGED_IN'].includes(owner?.user_role)\" (click)=\"remove(owner,'OWNER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_owners_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_owners_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"group.popover()\" placement=\"right\" *ngIf=\"controls?.program_owners_group?.value?.length > 1\">+{{controls?.program_owners_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_owners?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\" >{{controls?.program_owners?.value[0]?.member_name}}</span></span>\r\n <button *ngIf=\"controls?.program_owners?.value?.length > 1\" class=\"count user\" appPopover (click)=\"owner.popover()\" placement=\"right\">+{{controls?.program_owners?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_owners_group?.value?.length && controls?.program_owners?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_owners_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" *ngIf=\"!['ADMIN','KEY_ADMIN','LOGGED_IN'].includes(owner?.user_role)\" (click)=\"remove(owner,'OWNER_GROUP')\"></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_owners_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_owners_group?.value[0]?.group_name}}</span></span>\r\n <button *ngIf=\"controls?.program_owners_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"group.popover()\" placement=\"right\">+{{controls?.program_owners_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='OWNER'\" [class.disabled]=\"controls?.all_user_in_role?.value\" (click)=\"activateList('OWNER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i>Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <p *ngIf=\"false\" class=\"error-message\">Add a owner(s)</p>\r\n <div class=\"vx-d-flex vx-align-center vx-justify-end vx-mt-2\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-mr-2\">{{featureflagrole ? \"ALL USERS ASSOCIATED WITH THE SELECTED PERMISSION GROUPS\":\"ALL USERS ASSOCIATED WITH THE SELECTED ROLES\"}}</div>\r\n <switch formControlName=\"all_user_in_role\" (change)=\"selectAllRoleOwner($event)\"></switch>\r\n </div>\r\n <app-popover #owner [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of controls?.program_owners?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i *ngIf=\"!(lists.NON_REMOVABLE_OWNERS | listToId : 'member_id').includes(owner?.member_id)\"\r\n class=\"icons\" (click)=\"remove(owner,'OWNER')\"></i>\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 #group [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let owner of controls?.program_owners_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i *ngIf=\"!['ADMIN','KEY_ADMIN','LOGGED_IN'].includes(owner?.user_role)\"\r\n class=\"icons\" (click)=\"remove(owner,'OWNER_GROUP')\"></i>\r\n {{owner?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </form-field>\r\n\r\n <!-- Approvers -->\r\n <!-- Removing this option in Program simplification -->\r\n <form-field *ngIf=\"additionalOption?.APPROVER && !programSimplifyFlag\" [checked]=\"controls?.program_approver?.value?.length\" [active]=\"activeList === 'APPROVER'\" [disabled]=\"(sideElements.includes(activeList) && activeList !== 'APPROVER')\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg'\">\r\n <label class=\"vx-control-panel\">APPROVER <i class=\"icons\" [appTooltip]=\"'An Approver is responsible for approving a Program. Where an Approver is selected, the Program and all responsibilities linked with that Program will only commence once the Program has been approved.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"ApproverHelpText\"></i></label>\r\n <input-with-pill [placeholder]=\"'Who is responsible for approving this program?'\"\r\n [disabled]=\"isApproverDisabled\" (select)=\"activateList('APPROVER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_approver?.value[0]\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" *ngIf=\"isApproverDisabled === false\" (click)=\"remove(controls?.program_approver?.value[0],'APPROVER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_approver?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_approver?.value[0]?.member_name}}</span>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <i *ngIf=\"isApproverDisabled === false\" (click)=\"remove(controls?.program_approver?.value[0],'APPROVER')\"\r\n class=\"icons vx-fs-9 vx-mr-1 cross\"></i>{{controls?.program_approver?.value[0]?.member_name}}\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"(activeList!=='APPROVER') && isApproverDisabled === false\"(click)=\"activateList('APPROVER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i>Edit</button>\r\n </div>\r\n </input-with-pill>\r\n </form-field>\r\n\r\n <!-- Performance Calculated -->\r\n <!-- <form-field [checked]=\"controls?.performance_calculation?.value\" [active]=\"activeList === 'PERFORMANCE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'PERFORMANCE'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/performance-calc.svg'\">\r\n <label class=\"vx-control-panel\">HOW SHOULD THE PERFORMANCE OF THIS PROGRAM BE CALCULATED?</label>\r\n <tab-selector formControlName=\"performance_calculation\" [displayArray]=\"constants?.performanceCalculation\">\r\n </tab-selector>\r\n </form-field> -->\r\n <ng-container *ngIf=\"isProgramScope\" >\r\n <div class=\"scope-label vx-fs-10 vx-txt-white vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mb-5 vx-lh-4 vx-d-inline-block\">PROGRAM SCOPE</div>\r\n <!-- <i class=\"icons info-icon vx-fs-12 vx-txt-blue vx-ml-1\" [appTooltip]=\"tooltip.programScope\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\"></i> -->\r\n <span class=\"icon info-icon vx-fs-12 vx-txt-blue vx-ml-1\" *ngIf=\"toolTipData.programScop !== ''\" libPopoverHover (mouseover)=\"dataTooltip.popover()\" (mouseleave)=\"dataTooltip.closePopover()\" placement=\"right\"><i class=\"icons\"></i></span>\r\n <popover-hover #dataTooltip>\r\n <div class=\"vx-info-card\">\r\n <div class=\"vx-info-card-body\" [innerHTML]=\"toolTipData.programScope\" id=\"PSHelpText\"></div>\r\n </div>\r\n </popover-hover>\r\n </ng-container>\r\n\r\n <!-- Program Frequency -->\r\n <form-field *ngIf=\"additionalOption?.PROGRAM_FREQUENCY\" [checked]=\"[true,false].includes(controls?.recurring_frequency?.value)\" [active]=\"activeList === 'FREQUENCY'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'FREQUENCY'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/recurring.svg'\">\r\n <label class=\"vx-control-panel\" id=\"PDChange\">PROGRAM DURATION <i class=\"icons\" [appTooltip]=\"'Program Duration refers to the duration of the Program. A Program can occur in perpetuity, or it can occur until the end of the current business cycle that has been specified in '+ businessCycle.selectedCycle.business_cycle +'. All responsibilities linked with that Program will also have the same Program Duration.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"ProgramDurationHelpText\"></i></label>\r\n <div class=\"upload-format\">\r\n <div class=\"vx-d-flex vx-align-center vx-justify-between\">\r\n <span class=\"text vx-mb-0\">Is this program recurring?</span>\r\n <div class=\"radio-group program\">\r\n <app-cs-radio [name]=\"'recurring_frequency'\" [checked]=\"controls?.recurring_frequency?.value\" (checkedEvent)=\"setFormField('recurring_frequency',true)\">YES</app-cs-radio>\r\n <app-cs-radio [name]=\"'recurring_frequency'\" [checked]=\"!controls?.recurring_frequency?.value\" (checkedEvent)=\"setFormField('recurring_frequency',false)\">NO</app-cs-radio>\r\n </div>\r\n </div>\r\n </div>\r\n </form-field>\r\n\r\n <!-- Scope Changes -->\r\n <form-field *ngIf=\"additionalOption?.SCOPE_CHANGES\" [checked]=\"[true,false].includes(controls?.lock_scope_change?.value)\" [active]=\"activeList === 'SCOPE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'SCOPE'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/lock-scope.svg'\">\r\n <label class=\"vx-control-panel\">Lock the Program Scope <i class=\"icons\" [appTooltip]=\"'If the Program Scope is locked, neither the Program nor the responsibilities linked with the Program can be edited once the Program begins. In order to edit the Program or the linked responsibilities, the Program details will need to be edited.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"ScopeChangesHelpText\"></i></label>\r\n <div class=\"upload-format\">\r\n <span class=\"text\">Would you like to <span class=\"vx-label-txt vx-fw-500\">lock changes</span> to the program\r\n scope?</span>\r\n <div class=\"radio-group program\">\r\n <app-cs-radio [name]=\"'lock_scope_change'\" [checked]=\"controls?.lock_scope_change?.value\" (checkedEvent)=\"setFormField('lock_scope_change',true)\">YES</app-cs-radio>\r\n <app-cs-radio [name]=\"'lock_scope_change'\" [checked]=\"!controls?.lock_scope_change?.value\" (checkedEvent)=\"setFormField('lock_scope_change',false)\">NO</app-cs-radio>\r\n </div>\r\n </div>\r\n </form-field>\r\n\r\n <!-- Framework -->\r\n <!-- <form-field [checked]=\"false\" [active]=\"activeList === 'FRAMEWORK'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'FRAMEWORK'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg'\">\r\n <label class=\"vx-control-panel\">FRAMEWORK</label>\r\n <input-with-pill [placeholder]=\"'Select a framework that this Program relates to'\" (select)=\"activateList('FRAMEWORK')\">\r\n <div class=\"selected\" *ngIf=\"controls?.framework?.value?.framework_name\">\r\n <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i (click)=\"remove(controls?.framework.value,'FRAMEWORK')\" class=\"icons\"></i>{{controls?.framework?.value?.framework_name}}</span>\r\n <button class=\"count\" appPopover (click)=\"framework.popover()\" placement=\"right\">+5</button>\r\n </div>\r\n </div>\r\n <button *ngIf=\"activeList!=='FRAMEWORK'\" (click)=\"activateList('FRAMEWORK')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #framework [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 class=\"value\">\r\n <i class=\"icons\"></i>\r\n Manage framework name\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </form-field> -->\r\n\r\n <!-- Responsibility Center -->\r\n <form-field *ngIf=\"additionalOption?.RC\" [checked]=\"controls?.rc?.value?.length\" [active]=\"activeList === 'RC'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'RC'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg'\">\r\n <label class=\"vx-control-panel\">RESPONSIBILITY CENTER <i class=\"icons\" [appTooltip]=\"'Responsibility Centers represent your organizational and operational infrastructure. Where Responsibility Centers are selected when creating a Program, only those Responsibilities Centers will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"RCHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" (select)=\"activateList('RC')\"\r\n [placeholder]=\"'Which Responsibility Center(s) can be linked to the responsibilities associated with this Program?'\">\r\n <div class=\"selected\" *ngIf=\"controls?.rc?.value && controls?.rc?.value?.length\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.rc?.value[0],'RC')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.rc?.value[0]?.item_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.rc?.value[0]?.item_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"rc.popover()\" placement=\"right\" *ngIf=\"controls?.rc?.value?.length > 1\">+{{controls?.rc?.value?.length -1 }}</button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove(controls?.rc?.value[0],'RC')\"></i>{{controls?.rc?.value[0]?.item_name}}</span>\r\n <button *ngIf=\"controls?.rc?.value?.length > 1\" class=\"count\" appPopover (click)=\"rc.popover()\" placement=\"right\">+{{controls?.rc?.value?.length -1 }}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='RC'\" class=\"edit\" type=\"button\" (click)=\"activateList('RC')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #rc [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let rc of controls?.rc?.value |slice:1\">\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 </form-field>\r\n\r\n <!-- Assignee -->\r\n <form-field *ngIf=\"additionalOption?.ASSIGNEES\" [checked]=\"controls?.program_assignee?.value?.length || controls?.program_default_assignee?.value?.length ||controls?.program_default_assignee?.value?.length || controls?.program_default_assignee_group?.value?.length\"\r\n [active]=\"['ASSIGNEE','DEFAULT_ASSIGNEE']?.includes(activeList)\" [disabled]=\"sideElements?.includes(activeList) && !['ASSIGNEE','DEFAULT_ASSIGNEE'].includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg'\">\r\n <label class=\"vx-control-panel\" [class.disabled]=\"activeList === 'DEFAULT_ASSIGNEE'\">ASSIGNEES <i class=\"icons\" [appTooltip]=\"'Assignees are required to complete the responsibilities that have been assigned to them. Where Assignees are selected when creating a Program, only those Assignees will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"AssigneeHelpText\"></i> </label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"activeList === 'DEFAULT_ASSIGNEE'\" [placeholder]=\"'Who is responsible for completing the responsibilities within this Program?'\"\r\n (select)=\"activateList('ASSIGNEE')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_assignee?.value?.length || controls?.program_assignee_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_assignee?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_assignee?.value[0],'ASSIGNEE')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_assignee?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_assignee?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"assignee.popover()\" placement=\"right\" *ngIf=\"controls?.program_assignee?.value?.length > 1\">+{{controls?.program_assignee?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_assignee_group?.value?.length && controls?.program_assignee?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_assignee_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_assignee_group?.value[0],'ASSIGNEE_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_assignee_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_assignee_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"assignee_group.popover()\" placement=\"right\" *ngIf=\"controls?.program_assignee_group?.value?.length > 1\">+{{controls?.program_assignee_group?.value?.length -1 }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_assignee?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_assignee?.value[0],'ASSIGNEE')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_assignee?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_assignee?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_assignee?.value?.length > 1\" class=\"count user\" appPopover (click)=\"assignee.popover()\" placement=\"right\">+{{controls?.program_assignee?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_assignee_group?.value?.length && controls?.program_assignee?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_assignee_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_assignee_group?.value[0],'ASSIGNEE_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_assignee_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_assignee_group?.value[0]?.group_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_assignee_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"assignee_group.popover()\" placement=\"right\">+{{controls?.program_assignee_group?.value?.length -1 }}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='ASSIGNEE'\" class=\"edit\" type=\"button\" (click)=\"activateList('ASSIGNEE')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #assignee [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let assignee of controls?.program_assignee?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(assignee,'ASSIGNEE')\" class=\"icons\"></i>\r\n {{assignee?.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 #assignee_group [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_assignee_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'ASSIGNEE_GROUP')\" class=\"icons\"></i>\r\n {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <label class=\"vx-control-panel\" [class.disabled]=\"activeList === 'ASSIGNEE'\">DEFAULT ASSIGNEE <i class=\"icons\" [appTooltip]=\"'This option lets you specify the Default Assignees for all new responsibilities linked with a Program. If a Default Assignees is selected, the user will automatically be selected the Assignee when creating a responsibility linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility. '\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"DAHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"activeList === 'ASSIGNEE'\" [placeholder]=\"'Which persons will be selected as the default assignees for the responsibilities within this Program?'\" (select)=\"activateList('DEFAULT_ASSIGNEE')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_default_assignee?.value?.length || controls?.program_default_assignee_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_assignee?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_assignee?.value[0],'DEFAULT_ASSIGNEE')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_assignee?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_assignee?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"defaultAssignee.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_assignee?.value?.length > 1\">+{{controls?.program_default_assignee?.value?.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_assignee_group?.value?.length && controls?.program_default_assignee?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_assignee_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_assignee_group?.value[0],'DEFAULT_ASSIGNEE_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_assignee_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_assignee_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"defaultAssigneeGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_assignee_group?.value?.length > 1\">+{{controls?.program_default_assignee_group?.value?.length -1 }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_assignee?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_assignee?.value[0],'DEFAULT_ASSIGNEE')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_assignee?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{ controls?.program_default_assignee?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_assignee?.value?.length > 1\" class=\"count user\" appPopover (click)=\"defaultAssignee.popover()\" placement=\"right\">+{{controls?.program_default_assignee?.value?.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_assignee_group?.value?.length && controls?.program_default_assignee?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_assignee_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_assignee_group?.value[0],'DEFAULT_ASSIGNEE_GROUP')\" ></i>\r\n <span class=\"chip\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_assignee_group?.value[0]?.group_name }}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_assignee_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"defaultAssigneeGroup.popover()\" placement=\"right\">+{{controls?.program_default_assignee_group?.value?.length -1 }}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='DEFAULT_ASSIGNEE'\" (click)=\"activateList('DEFAULT_ASSIGNEE')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #defaultAssignee [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let assignee of controls?.program_default_assignee?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(assignee,'DEFAULT_ASSIGNEE')\" class=\"icons\"></i>\r\n {{assignee?.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 #defaultAssigneeGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_default_assignee_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(assignee,'DEFAULT_ASSIGNEE_GROUP')\" class=\"icons\"></i>\r\n {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <div class=\"radio-group-selector\" [class.disabled]=\"activeList === 'ASSIGNEE'\">\r\n <app-cs-radio [name]=\"'assignee'\" [checked]=\"controls?.assignee_completion_criteria?.value === 'ALL'\" (checkedEvent)=\"setFormField('assignee_completion_criteria', 'ALL')\">\r\n ALL SELECTED PERSONS NEED TO COMPLETE THIS <i class=\"icons\" [appTooltip]=\"'If selected, separate responsibilities will be created for each person.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" ></i>\r\n </app-cs-radio>\r\n <app-cs-radio [name]=\"'assignee'\" [checked]=\"controls?.assignee_completion_criteria?.value === 'ANYONE'\" (checkedEvent)=\"setFormField('assignee_completion_criteria', 'ANYONE')\">\r\n ANY SELECTED PERSON CAN COMPLETE THIS <i class=\"icons\" [appTooltip]=\"'If selected, only one responsibility will be created.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\"></i>\r\n </app-cs-radio>\r\n </div>\r\n </form-field>\r\n\r\n <!-- Reviewer -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.REVIEWER\"\r\n [checked]=\"controls?.program_reviewer?.value?.length || controls?.program_default_reviewer?.value?.length ||controls?.program_default_reviewer?.value?.length || controls?.program_default_reviewer_group?.value?.length\"\r\n [active]=\"['REVIEWER','DEFAULT_REVIEWER']?.includes(activeList)\" [disabled]=\"sideElements?.includes(activeList) && !['REVIEWER','DEFAULT_REVIEWER'].includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/reviewer.svg'\">\r\n <label [class.disabled]=\"activeList === 'DEFAULT_REVIEWER'\" class=\"vx-control-panel\">Reviewers <i class=\"icons\" [appTooltip]=\"'Reviewers are required to review responsibilities after they have been completed. Where Reviewers are selected when creating a Program, only those Reviewers will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"ReviewerHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"activeList === 'DEFAULT_REVIEWER'\" [placeholder]=\"'Who is responsible for reviewing the responsibilities within this Program?'\" (select)=\"activateList('REVIEWER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_reviewer?.value?.length || controls?.program_reviewer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_reviewer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_reviewer?.value[0],'REVIEWER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_reviewer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"reviewer.popover()\" placement=\"right\" *ngIf=\"controls?.program_reviewer?.value?.length > 1\">+{{controls?.program_reviewer?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_reviewer_group?.value?.length && controls?.program_reviewer?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_reviewer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_reviewer_group?.value[0],'REVIEWER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_reviewer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"reviewerGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_reviewer_group?.value?.length > 1\">+{{controls?.program_reviewer_group?.value?.length - 1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_reviewer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_reviewer?.value[0],'REVIEWER')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_reviewer?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_reviewer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"reviewer.popover()\" placement=\"right\">+{{controls?.program_reviewer?.value?.length -1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_reviewer_group?.value?.length && controls?.program_reviewer?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_reviewer_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_reviewer_group?.value[0],'REVIEWER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_reviewer_group?.value[0]?.group_name}}\r\n </span>\r\n </span>\r\n <button *ngIf=\"controls?.program_reviewer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"reviewerGroup.popover()\" placement=\"right\">+{{controls?.program_reviewer_group?.value?.length - 1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='REVIEWER'\" (click)=\"activateList('REVIEWER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #reviewer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let reviewer of controls?.program_reviewer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(reviewer,'REVIEWER')\" class=\"icons\"></i>\r\n {{reviewer?.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 #reviewerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_reviewer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'REVIEWER_GROUP')\" class=\"icons\"></i>\r\n {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <label [class.disabled]=\"activeList === 'REVIEWER'\" class=\"vx-control-panel\">DEFAULT Reviewer <i class=\"icons\" [appTooltip]=\"'This option lets you specify the Default Reviewers for responsibilities linked with a Program. Where a user has been specified as a Default Reviewer, that user will automatically be selected as the Reviewer when creating a responsibility linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"DRHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"activeList === 'REVIEWER'\" [placeholder]=\"'Which persons will be selected as the default reviewers for the responsibilities within this Program?'\" (select)=\"activateList('DEFAULT_REVIEWER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_default_reviewer?.value?.length || controls?.program_default_reviewer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_reviewer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer?.value[0],'DEFAULT_REVIEWER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_reviewer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"defaultReviewer.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_reviewer?.value?.length > 1\">+{{controls?.program_default_reviewer?.value?.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length && controls?.program_default_reviewer?.value?.length\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer_group?.value[0],'DEFAULT_REVIEWER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_reviewer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"defaultReviewerGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length > 1\">+{{controls?.program_default_reviewer_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_reviewer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer?.value[0],'DEFAULT_REVIEWER')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_reviewer?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_reviewer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"defaultReviewer.popover()\" placement=\"right\">+{{controls?.program_default_reviewer?.value?.length - 1}}</button>\r\n </div>\r\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length && controls?.program_default_reviewer?.value?.length\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer_group?.value[0],'DEFAULT_REVIEWER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_reviewer_group?.value[0]?.group_name}}\r\n </span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_reviewer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"defaultReviewerGroup.popover()\" placement=\"right\">+{{controls?.program_default_reviewer_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='DEFAULT_REVIEWER'\" (click)=\"activateList('DEFAULT_REVIEWER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #defaultReviewer [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let reviewer of controls?.program_default_reviewer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(reviewer,'DEFAULT_REVIEWER')\" class=\"icons\"></i>\r\n {{reviewer?.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 #defaultReviewerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_default_reviewer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'DEFAULT_REVIEWER_GROUP')\" class=\"icons\"></i>\r\n {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <div class=\"radio-group-selector\" [class.disabled]=\"activeList === 'REVIEWER'\">\r\n <app-cs-radio [name]=\"'reviewer'\" [checked]=\"controls?.reviewer_completion_criteria?.value === 'SEQUENTIAL'\" (checkedEvent)=\"setFormField('reviewer_completion_criteria', 'SEQUENTIAL')\" [class.disabled]=\"controls?.program_default_reviewer_group?.value?.length > 0\">\r\n SEQUENTIAL <i class=\"icons\" [appTooltip]=\"'The responsibility will be sent for review one at a time in the sequence defined by you.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\"></i>\r\n </app-cs-radio>\r\n <app-cs-radio [name]=\"'reviewer'\" [checked]=\"controls?.reviewer_completion_criteria?.value === 'ANYONE'|| controls?.program_default_reviewer_group?.value?.length > 0\" (checkedEvent)=\"setFormField('reviewer_completion_criteria', 'ANYONE')\">\r\n ANY REVIEWER CAN MARK THIS AS REVIEWED <i class=\"icons\" [appTooltip]=\"'The responsibility will be sent for review to all reviewers at the same time. If anyone of the reviewer reviews the responsibility, it will be considered as reviewed.'\" placement=\"bottom-right\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\"></i>\r\n </app-cs-radio>\r\n </div>\r\n </form-field>\r\n\r\n <!-- Overseer -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.OVERSEER\"\r\n [checked]=\"controls?.program_overseer?.value?.length || controls?.program_default_overseer?.value?.length ||controls?.program_default_overseer?.value?.length || controls?.program_default_overseer_group?.value?.length\"\r\n [active]=\"activeList === 'OVERSEER'\" [disabled]=\"sideElements?.includes(activeList) && !['OVERSEER','DEFAULT_OVERSEER','DEFAULT_FAILED_OVERSEER'].includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg'\">\r\n <label class=\"vx-control-panel\" [class.disabled]=\"['DEFAULT_OVERSEER','DEFAULT_FAILED_OVERSEER'].includes(activeList)\">Overseers <i class=\"icons\" [appTooltip]=\"'Overseers receive updates when a responsibility is completed, completed with delay or not completed. Where Overseers are selected when creating a Program, only those Overseers will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"overseerHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [disabled]=\"['DEFAULT_OVERSEER','DEFAULT_FAILED_OVERSEER'].includes(activeList)\" [placeholder]=\"'Who is responsible for overseeing the responsibilities within this Program?'\" (select)=\"activateList('OVERSEER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_overseer?.value?.length || controls?.program_overseer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_overseer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_overseer?.value[0],'OVERSEER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_overseer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_overseer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseers.popover()\" placement=\"right\" *ngIf=\"controls?.program_overseer?.value?.length > 1\">+{{controls?.program_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_overseer_group?.value?.length && controls?.program_overseer?.value?.length \" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_overseer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_overseer_group?.value[0],'OVERSEER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_overseer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseerGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_overseer_group?.value?.length> 1\">+{{controls?.program_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_overseer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_overseer?.value[0],'OVERSEER')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_overseer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">\r\n {{controls?.program_overseer?.value[0]?.member_name}}\r\n </span>\r\n </span>\r\n <button *ngIf=\"controls?.program_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseers.popover()\" placement=\"right\">+{{controls?.program_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_overseer_group?.value?.length && controls?.program_overseer?.value?.length \" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_overseer_group?.value?.length \">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_overseer_group?.value[0],'OVERSEER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_overseer_group?.value[0]?.group_name}}</span></span>\r\n <button *ngIf=\"controls?.program_overseer_group?.value?.length> 1\" class=\"count\" appPopover (click)=\"overseerGroup.popover()\" placement=\"right\">+{{controls?.program_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n\r\n <button *ngIf=\"activeList!=='OVERSEER'\" (click)=\"activateList('OVERSEER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #overseers [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let overseer of controls?.program_overseer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove(overseer,'OVERSEER')\"></i> {{overseer?.member_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_overseer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'OVERSEER_GROUP')\" class=\"icons\"></i> {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <ng-container [class.disabled]=\"activeList === 'OVERSEER'\">\r\n <label class=\"vx-control-panel\" [class.disabled]=\"['OVERSEER'].includes(activeList)\">DEFAULT Overseer <i class=\"icons\" [appTooltip]=\"'This option lets you specify the Default Overseer for responsibilities linked with a Program. Where a user has been specified as a Default Overseer, that user will automatically be selected as the Overseer when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"DOHelpText\"></i></label>\r\n <input-with-pill [disabled]=\"['OVERSEER','DEFAULT_FAILED_OVERSEER'].includes(activeList)\" [selectDiv]=\"true\" [placeholder]=\"'Which persons will be selected as the default overseers for the responsibilities within this Program?'\" (select)=\"activateList('DEFAULT_OVERSEER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_default_overseer?.value?.length || controls?.program_default_overseer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_overseer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_overseer?.value[0],'DEFAULT_OVERSEER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_overseer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_overseer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseersDefault.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_overseer?.value?.length > 1\">+{{controls?.program_default_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_default_overseer_group?.value?.length && controls?.program_default_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_overseer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_overseer_group?.value[0],'DEFAULT_OVERSEER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_overseer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseerDefaultGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_overseer_group?.value?.length >1\">+{{controls?.program_default_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_overseer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_overseer?.value[0],'DEFAULT_OVERSEER')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_overseer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_overseer?.value[0]?.member_name}}</span></span>\r\n <button *ngIf=\"controls?.program_default_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseersDefault.popover()\" placement=\"right\">+{{controls?.program_default_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_default_overseer_group?.value?.length && controls?.program_default_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_overseer_group?.value?.length \">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_overseer_group?.value[0],'DEFAULT_OVERSEER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_overseer_group?.value[0]?.group_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_overseer_group?.value?.length >1\" class=\"count\" appPopover (click)=\"overseerDefaultGroup.popover()\" placement=\"right\">+{{controls?.program_default_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='DEFAULT_OVERSEER'\" (click)=\"activateList('DEFAULT_OVERSEER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #overseersDefault [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let overseer of controls?.program_default_overseer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove(overseer,'DEFAULT_OVERSEER')\"></i> {{overseer?.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 #overseerDefaultGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_default_overseer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'DEFAULT_OVERSEER_GROUP')\" class=\"icons\"></i> {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <label class=\"vx-control-panel\" > </label>\r\n <input-with-pill class=\"vx-mt-2\" [selectDiv]=\"true\" [line]=\"3\" [disabled]=\"['OVERSEER','DEFAULT_OVERSEER'].includes(activeList)\" [placeholder]=\"'Which persons will be selected as the default overseers for responsibilities that are not completed within this Program?'\" (select)=\"activateList('DEFAULT_FAILED_OVERSEER')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length || controls?.program_default_failed_overseer_group?.value?.length\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer?.value[0],'DEFAULT_FAILED_OVERSEER')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_failed_overseer?.value[0]?.member_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_failed_overseer?.value[0]?.member_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseersDefaultFail.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length > 1\">+{{controls?.program_default_failed_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length && controls?.program_default_failed_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer_group?.value[0],'DEFAULT_FAILED_OVERSEER_GROUP')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"controls?.program_default_failed_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{controls?.program_default_failed_overseer_group?.value[0]?.group_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"overseerDefaultFailGroup.popover()\" placement=\"right\" *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length > 1\">+{{controls?.program_default_failed_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length\">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer?.value[0],'DEFAULT_FAILED_OVERSEER')\" ></i>\r\n <span class=\"chip\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_failed_overseer?.value[0]?.member_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_failed_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseersDefaultFail.popover()\" placement=\"right\">+{{controls?.program_default_failed_overseer?.value?.length -1}}</button>\r\n </div>\r\n <span *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length && controls?.program_default_failed_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\r\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length \">\r\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer_group?.value[0],'DEFAULT_FAILED_OVERSEER_GROUP')\" ></i>\r\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_failed_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\r\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_failed_overseer_group?.value[0]?.group_name}}</span>\r\n </span>\r\n <button *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"overseerDefaultFailGroup.popover()\" placement=\"right\">+{{controls?.program_default_failed_overseer_group?.value?.length -1}}</button>\r\n </div>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='DEFAULT_FAILED_OVERSEER'\" (click)=\"activateList('DEFAULT_FAILED_OVERSEER')\" class=\"edit\" type=\"button\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #overseersDefaultFail [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let overseer of controls?.program_default_failed_overseer?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"remove(overseer,'DEFAULT_FAILED_OVERSEER')\"></i> {{overseer?.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 #overseerDefaultFailGroup [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let group of controls?.program_default_failed_overseer_group?.value | slice: 1\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i (click)=\"remove(group,'DEFAULT_FAILED_OVERSEER_GROUP')\" class=\"icons\"></i> {{group?.group_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n</ng-container>\r\n </form-field>\r\n\r\n <!-- Assessment -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.ASSESSMENT\"\r\n [checked]=\"controls?.program_assessments?.value?.length\"\r\n [active]=\"activeList === 'ASSESSMENT'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'ASSESSMENT'\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/assessments.svg'\">\r\n <label class=\"vx-control-panel\">ASSESSMENTS <i class=\"icons\" [appTooltip]=\"'Assessments are a digital form that are created in \u201CAssessment\u201D within the Compliance Module. Where Assessments are selected when creating a Program, only those Assessments will be available for selection when creating a responsibility linked with the Program.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"AssessmentHelpText\"></i></label>\r\n <input-with-pill [selectDiv]=\"true\" [placeholder]=\"'Which assessments can be linked to the responsibilities within this Program?'\" (select)=\"activateList('ASSESSMENT')\">\r\n <div class=\"selected\" *ngIf=\"controls?.program_assessments?.value?.length\">\r\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\" *ngIf=\"(controls?.program_assessments?.value | assessmentResolver) as assessments\">\r\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"remove(assessments[0],'ASSESSMENT')\"></i>\r\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"assessments[0]?.assessment_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{assessments[0]?.assessment_name}}</span>\r\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"program_assessments.popover()\" placement=\"right\" *ngIf=\"assessments?.length > 1\">+{{assessments?.length -1 }}</button>\r\n </div>\r\n\r\n <!-- <div class=\"chip-container\">\r\n <ng-container *ngIf=\"(controls?.program_assessments?.value | assessmentResolver) as assessments\">\r\n <div class=\"chip-inner\">\r\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove(assessments[0],'ASSESSMENT')\"></i>{{assessments[0]?.assessment_name}} </span>\r\n <button *ngIf=\"assessments?.length > 1\" class=\"count\" appPopover (click)=\"program_assessments.popover()\" placement=\"right\">+{{assessments?.length -1 }}</button>\r\n </div>\r\n </ng-container>\r\n </div> -->\r\n <button *ngIf=\"activeList!=='ASSESSMENT'\" class=\"edit\" type=\"button\" (click)=\"activateList('ASSESSMENT')\"><i class=\"icons\"></i> Edit</button>\r\n </div>\r\n </input-with-pill>\r\n <app-popover #program_assessments [dontCloseonClick]=\"true\">\r\n <ng-container >\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n\r\n <li *ngFor=\"let assessment of (controls?.program_assessments?.value | assessmentResolver) | slice:1\">\r\n <div class=\"avatar-card\" >\r\n <span class=\"value\">\r\n <i (click)=\"remove(assessment,'ASSESSMENT')\" class=\"icons\" ></i> {{assessment?.assessment_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n </app-popover>\r\n </form-field>\r\n\r\n <!-- Format & Evidence -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.FORMATE_EVIDENCE\" [checked]=\"[true,false].includes(controls?.evidence_required?.value)\"\r\n [active]=\"false\" [disabled]=\"sideElements.includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/format-evidence.svg'\">\r\n <label class=\"vx-control-panel\">Evidence <i class=\"icons\" [appTooltip]=\"'If selected, evidence of completion of a responsibility will be required for all responsibilities that are linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"EvidenceHelpText\"></i></label>\r\n <div class=\"upload-format\">\r\n\r\n <span class=\"text\">Do all responsibilities within this program require evidence?</span>\r\n <div class=\"radio-group program\">\r\n <app-cs-radio [name]=\"'evidence_required'\" [checked]=\"controls?.evidence_required?.value\" (checkedEvent)=\"setFormField('evidence_required',true)\">YES</app-cs-radio>\r\n <app-cs-radio [name]=\"'evidence_required'\" [checked]=\"!controls?.evidence_required?.value\" (checkedEvent)=\"setFormField('evidence_required',false)\">NO</app-cs-radio>\r\n </div>\r\n </div>\r\n <!-- <div class=\"vx-d-flex vx-align-center vx-justify-end vx-mt-2\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-mr-2\">Allow any file to be marked as\r\n key\r\n evidence</div>\r\n <switch formControlName=\"allow_any_file_key_evidence\"\r\n (change)=\"setFormField('allow_any_file_key_evidence',$event?.target?.checked)\"></switch>\r\n </div> -->\r\n </form-field>\r\n\r\n <!-- Custom Field -->\r\n <form-field [appScrollInView]=\"scrollToBottom\" *ngIf=\"additionalOption?.CUSTOM_FIELDS\" [checked]=\"controls?.custom_fields?.value?.length\"\r\n [active]=\"false\" [disabled]=\"sideElements.includes(activeList)\"\r\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/custom-fields.svg'\">\r\n <label class=\"vx-control-panel\">CUSTOM FIELD <i class=\"icons\" [appTooltip]=\"'Where a custom field is specified, all responsibilities linked with a Program will contain that custom field. Custom fields enable the collection of additional meta data.'\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\" id=\"CFHelpText\"></i></label>\r\n <custom-field formControlName=\"custom_fields\"></custom-field>\r\n </form-field>\r\n </form>\r\n</div>\r\n\r\n\r\n<!-- list of roles -->\r\n<role-list *ngIf=\"activeList === 'ROLE'\" [selected]=\"controls?.program_roles?.value | refDisconnect\" [loading]=\"listLoadingState.ROLES\"\r\n [list]=\"lists?.ROLES?.data ?? []\" (save)=\"listAction($event,'ROLE')\" (cancel)=\"fieldDeselector('ROLE')\" [featureflagrole]=\"featureflagrole\" [featureflagGroup]=\"featureflagGroups\" [ff_rc_listing]=\"ff_rc_listing\"></role-list>\r\n\r\n<!-- list of frameworks -->\r\n<!-- <app-define-framework-listing *ngIf=\"activeList === 'FRAMEWORK'\" (cancel)=\"fieldDeselector('FRAMEWORK')\" (next)=\"listAction($event,'FRAMEWORK')\" [mode]=\"mode\" [selectedFramework]=\"controls?.framework?.value\"></app-define-framework-listing> -->\r\n<!-- list of responsibility center -->\r\n<app-responsibility-centers-list *ngIf=\"activeList === 'RC'\" [responsibilityCentersList]=\"lists?.RC ?? []\"\r\n [radioSelection]=\"false\" [rcIdKey]=\"'rc_id'\" (closeRcList)=\"fieldDeselector('RC')\"\r\n (saveSelectedList)=\"listAction($event,'RC')\" [selectedResponsibilityCenters]=\"controls?.rc?.value | refDisconnect\">\r\n</app-responsibility-centers-list>\r\n<!-- render userlist with group -->\r\n\r\n<user-group-list *ngIf=\"activeList === 'OWNER'\" [groupEnabled]=\"true\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\"\r\n [nonRemovableUserIds]=\"lists.NON_REMOVABLE_OWNERS | listToId : 'member_id'\" [userlist]=\"lists?.OWNERS?.data ?? []\"\r\n [selectedUsers]=\"controls?.program_owners?.value | refDisconnect\"\r\n (fetchUserData)=\"fetchUsersAssociatedWithRoles(false,$event)\" [userListInfo]=\"lists?.OWNERS\"\r\n [groupListInfo]=\"lists?.OWNERS_GROUPS\" [groupList]=\"lists?.OWNERS_GROUPS?.data ?? []\"\r\n [selectedGroups]=\"controls?.program_owners_group?.value | refDisconnect\" (save)=\"listAction($event,'OWNER')\"\r\n (cancel)=\"fieldDeselector('OWNER')\" [panelTitle]=\"panelTitleOwner\" [featureflag]=\"featureflagGroups\"></user-group-list>\r\n<user-group-list *ngIf=\"activeList === 'APPROVER'\" [groupEnabled]=\"false\" [singleSelect]=\"true\"\r\n [userlist]=\"lists?.APPROVERS?.data ?? []\" [selectedUsers]=\"controls?.program_approver?.value | refDisconnect\"\r\n [userListInfo]=\"lists?.APPROVERS\" (save)=\"listAction($event,'APPROVER')\" (cancel)=\"fieldDeselector('APPROVER')\" [panelTitle]=\"panelTitleApprover\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"activeList === 'ASSIGNEE'\" [groupEnabled]=\"true\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\"\r\n [userlist]=\"lists?.ASSIGNEES ?? []\" [selectedUsers]=\"controls?.program_assignee?.value | refDisconnect\" [groupList]=\"lists?.ASSIGNEES_GROUP ?? []\" [FromProgram]=\"true\"\r\n [selectedGroups]=\"controls?.program_assignee_group?.value | refDisconnect\" [disabledIds]=\"disabledAssigneeIds\" [fromResponsibility] = \"'Assignee'\" [reviewerIds]=\"selectedReviewerIds\" [overseerIds]=\"selectedOverseerIds\" [assignorId]=\"assignorId\"\r\n [userListInfo]=\"lists?.ASSIGNEES\" (save)=\"listAction($event,'ASSIGNEE')\" (cancel)=\"fieldDeselector('ASSIGNEE')\" [panelTitle]=\"panelTitleAssignee\"\r\n [defaultSelectedUsers]=\"controls?.program_default_assignee?.value | refDisconnect\" [userType]=\"'assignees'\" [featureflag]=\"featureflagGroups\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"activeList === 'DEFAULT_ASSIGNEE'\" [groupEnabled]=\"true\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\"\r\n [userlist]=\"lists?.DEFAULT_ASSIGNEES ?? []\" [selectedUsers]=\"controls?.program_default_assignee?.value | refDisconnect\" [groupList]=\"lists?.DEFAULT_ASSIGNEES_GROUP ?? []\" [FromProgram]=\"true\"\r\n [selectedGroups]=\"controls?.program_default_assignee_group?.value | refDisconnect\" [disabledIds]=\"disabledAssigneeIds\" [fromResponsibility] = \"'Assignee'\" [reviewerIds]=\"selectedReviewerIds\" [overseerIds]=\"selectedOverseerIds\" [assignorId]=\"assignorId\"\r\n [userListInfo]=\"lists?.DEFAULT_ASSIGNEE\" (save)=\"listAction($event,'DEFAULT_ASSIGNEE')\" (cancel)=\"fieldDeselector('DEFAULT_ASSIGNEE')\" [featureflag]=\"featureflagGroups\">\r\n</user-group-list>\r\n\r\n<user-group-list *ngIf=\"(activeList === 'REVIEWER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.REVIEWERS ?? []\" [selectedUsers]=\"controls?.program_reviewer?.value | refDisconnect\" [groupList]=\"lists?.REVIEWERS_GROUP ?? []\" [featureflag]=\"featureflagGroups\"\r\n [selectedGroups]=\"controls?.program_reviewer_group?.value | refDisconnect\" [disabledIds]=\"disableReviewerIds\" [fromResponsibility] = \"'Reviewer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [overseerIds]=\"selectedOverseerIds\"\r\n [userListInfo]=\"lists?.REVIEWERS\" (save)=\"listAction($event,'REVIEWER')\" (cancel)=\"fieldDeselector('REVIEWER')\" [panelTitle]=\"panelTitleReviewer\"\r\n [defaultSelectedUsers]=\"controls?.program_default_reviewer?.value | refDisconnect\" [userType]=\"'reviewers'\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"(activeList === 'DEFAULT_REVIEWER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.DEFAULT_REVIEWERS ?? []\" [selectedUsers]=\"controls?.program_default_reviewer?.value | refDisconnect\" [groupList]=\"lists?.DEFAULT_REVIEWERS_GROUP ?? []\" [featureflag]=\"featureflagGroups\"\r\n [selectedGroups]=\"controls?.program_default_reviewer_group?.value | refDisconnect\" [disabledIds]=\"disableReviewerIds\" [fromResponsibility] = \"'Reviewer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [overseerIds]=\"selectedOverseerIds\"\r\n [userListInfo]=\"lists?.DEFAULT_REVIEWERS\" (save)=\"listAction($event,'DEFAULT_REVIEWER')\" (cancel)=\"fieldDeselector('DEFAULT_REVIEWER')\" [panelTitle]=\"panelTitleDefaultReviewer\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"(activeList === 'OVERSEER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.OVERSEERS ?? []\" [selectedUsers]=\"controls?.program_overseer?.value | refDisconnect\" [groupList]=\"lists?.OVERSEERS_GROUP ?? []\"\r\n [selectedGroups]=\"controls?.program_overseer_group?.value | refDisconnect\" [featureflag]=\"featureflagGroups\" [disabledIds]=\"disableOverseerIds\" [fromResponsibility] = \"'Overseer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [reviewerIds]=\"selectedReviewerIds\"\r\n [userListInfo]=\"lists?.OVERSEES\" (save)=\"listAction($event,'OVERSEER')\" (cancel)=\"fieldDeselector('OVERSEER')\"\r\n [defaultSelectedUsers]=\"controls?.program_default_overseer?.value | refDisconnect | arrayConcat: controls?.program_default_failed_overseer?.value\" [userType]=\"'overseers'\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"(activeList === 'DEFAULT_OVERSEER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.DEFAULT_OVERSEERS ?? []\" [selectedUsers]=\"controls?.program_default_overseer?.value | refDisconnect\" [groupList]=\"lists?.DEFAULT_OVERSEERS_GROUP ?? []\"\r\n [selectedGroups]=\"controls?.program_default_overseer_group?.value | refDisconnect\" [featureflag]=\"featureflagGroups\" [disabledIds]=\"disableOverseerIds\" [fromResponsibility] = \"'Overseer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [reviewerIds]=\"selectedReviewerIds\"\r\n [userListInfo]=\"lists?.DEFAULT_OVERSEERS\" (save)=\"listAction($event,'DEFAULT_OVERSEER')\" (cancel)=\"fieldDeselector('DEFAULT_OVERSEER')\">\r\n</user-group-list>\r\n<user-group-list *ngIf=\"(activeList === 'DEFAULT_FAILED_OVERSEER' && (!featureflagGroups || featureflagGroups))\" [groupEnabled]=\"featureflagGroups\" [singleSelect]=\"false\" [loading]=\"listLoadingState.USERS\" [FromProgram]=\"true\"\r\n [userlist]=\"lists?.DEFAULT_OVERSEERS ?? []\" [selectedUsers]=\"controls?.program_default_failed_overseer?.value | refDisconnect\" [groupList]=\"lists?.DEFAULT_OVERSEERS_GROUP ?? []\"\r\n [selectedGroups]=\"controls?.program_default_failed_overseer_group?.value | refDisconnect\" [featureflag]=\"featureflagGroups\" [disabledIds]=\"disableOverseerIds\" [fromResponsibility] = \"'Overseer'\" [assignorId]=\"assignorId\" [assigneeIds]=\"selectedAssigneeIds\" [reviewerIds]=\"selectedReviewerIds\"\r\n [userListInfo]=\"lists?.DEFAULT_OVERSEERS\" (save)=\"listAction($event,'DEFAULT_FAILED_OVERSEER')\" (cancel)=\"fieldDeselector('DEFAULT_FAILED_OVERSEER')\">\r\n</user-group-list>\r\n<assessment-picker *ngIf=\"activeList === 'ASSESSMENT'\" [selectedAssessment]=\"controls?.program_assessments?.value\" (cancelAssessment)=\"fieldDeselector('ASSESSMENT')\" (onAssessmentSelect)=\"listAction($event,'ASSESSMENT')\"></assessment-picker>\r\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n <app-smiley-dialog-inline\r\n *ngIf=\"showSmiley\"\r\n [message]=\"smileyMessage\"\r\n [actionButtons]=\"actionButtons\"\r\n (action)=\"action($event)\"\r\n (closeSmiley)=\"closeSmiley($event)\">\r\n </app-smiley-dialog-inline>\r\n\r\n <!-- Framework selector -->\r\n <app-framework-list *ngIf=\"activeList === 'FRAMEWORK'\" [workflowPage]=\"['FRAMEWORK']\" (assignControl)=\"listAction($event, 'FRAMEWORK')\"\r\n (closeFramework)=\"fieldDeselector('FRAMEWORK')\" [previousSelectedValues]=\"{framework: controls?.framework.value}\"(entrustFramework)=\"entrustFramework($event)\" [headerText]=\"'Select a framework'\"></app-framework-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\";@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/padding/padding.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\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.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-top.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\";::ng-deep .workflow-program{display:block;position:relative}::ng-deep .workflow-program .scope-label{background:#747576;border-radius:.125rem;position:relative;z-index:1}::ng-deep .workflow-program .scope-label:before{background:#f1f1f1;content:\"\";position:absolute;top:.5rem;left:7rem;width:20rem;height:1px;z-index:-1}::ng-deep .workflow-program .scope-label:after{background:#f1f1f1;content:\"\";position:absolute;top:.5rem;left:-2.5rem;width:2.5rem;height:1px;z-index:-1}::ng-deep .workflow-program .scope-label .required{position:absolute;top:0;right:-.625rem}::ng-deep .workflow-program .info-icon{position:relative;top:.125rem;cursor:pointer}::ng-deep .workflow-program .date-picker .picker-group{width:calc(50% - .125rem);position:relative}::ng-deep .workflow-program .date-picker .picker-group:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .workflow-program .date-picker .picker-group input{height:2.5rem;border-radius:.25rem;border:1px solid #DBDBDB;background:#FFFFFF;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;padding:0 2rem 0 .75rem;outline:none}::ng-deep .workflow-program .date-picker .picker-group input:focus,::ng-deep .workflow-program .date-picker .picker-group input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .workflow-program .date-picker .picker-group input::placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group input:-ms-input-placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group input::-ms-input-placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group i{height:1rem;width:1rem;position:absolute;right:.75rem;top:.625rem;pointer-events:none}::ng-deep .workflow-program .program-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;justify-content:space-between;padding:4px;position:relative;z-index:1}::ng-deep .workflow-program .program-type-field .type-item{position:relative}::ng-deep .workflow-program .program-type-field .type-item:first-of-type{width:6.25rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(2){width:5.75rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(6.4375rem);width:5.75rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(3){width:8.625rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(3).active~.background-glider{transform:translate(12.375rem);width:8.625rem}::ng-deep .workflow-program .program-type-field .type-item:last-of-type{width:5.25rem}::ng-deep .workflow-program .program-type-field .type-item:last-of-type.active~.background-glider{transform:translate(21.1875rem);width:5.25rem}::ng-deep .workflow-program .program-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:center}::ng-deep .workflow-program .program-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none}::ng-deep .workflow-program .program-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .workflow-program .program-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .workflow-program .program-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:6.25rem;height:32px;z-index:-1;transition:.25s ease-out}::ng-deep .workflow-program .vx-form-group .upload-files .file-item{background:#f1f1f1;border:1px solid #dbdbdb;border-radius:.25rem;padding-left:.125rem}::ng-deep .workflow-program .vx-form-group .upload-files .file-item .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:8.5rem}::ng-deep .workflow-program .vx-form-group .upload-files .file-item button.delete-btn{background:transparent;border-radius:0;border:none;border-left:1px solid #dbdbdb;height:1.625rem}::ng-deep .workflow-program .vx-form-group .upload-files button.file-count{background:#1E5DD3;border-radius:.125rem;border:none;color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0;margin:4px 0 0 4px}::ng-deep .workflow-program .vx-form-group .upload-format .radio-group app-cs-radio{height:1.375rem}::ng-deep .workflow-program .vx-form-group .default-selected{background:#FBFBFB;border:1px solid #F1F1F1;border-radius:.25rem;margin-top:.5rem}::ng-deep .workflow-program .vx-form-group .default-selected .selected{border-radius:0;border:none;background:none}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio{border-top:1px solid #F1F1F1}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio{margin-top:0!important}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.radio{position:absolute;top:.5rem;left:.75rem}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;padding:.5rem .5rem .5rem 2.25rem;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item svg{position:absolute;top:.5rem;left:.75rem}::ng-deep .workflow-program .vx-form-group .selected .custom-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:2.4rem}::ng-deep .workflow-program .vx-form-group .selected button.cross-btn{background:transparent;border-radius:0;border:0;padding:0}::ng-deep .workflow-program .vx-form-group .custom-input{position:relative}::ng-deep .workflow-program .vx-form-group .custom-input input{padding-right:2rem}::ng-deep .workflow-program .vx-form-group .custom-input button.cross-btn{background:transparent;border-radius:0;border:0;position:absolute;top:.875rem;right:.625rem}::ng-deep .workflow-program .vx-form-group button.add-more-btn{background:transparent;border-radius:0;border:none;padding:0}::ng-deep app-popover .wf-action-list ul.action-item .avatar-card .value{text-transform:none!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill .file-item{background:transparent!important;border:none!important;border-radius:0!important;padding:0!important;margin:0!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill .file-name{width:100%!important;max-width:100%!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill button.delete-btn{border:none!important;padding-right:0!important}.disabled{opacity:.4;pointer-events:none;filter:grayscale(1)}.vx-info-card{width:280px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;position:static;display:block;left:780}.vx-info-card-body{font-size:12px;padding:8px 12px;margin:0;font-weight:400;text-transform:none;color:#747576}\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 .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#ffffff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#ffffff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#ffffff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#ffffff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group vcomply-editor{margin-top:8px;display:block}::ng-deep .vx-form-group vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#ffffff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:208px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#ffffff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#ffffff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#ffffff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}dp-date-picker input:focus{outline:none}dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}dp-date-picker .dp-popup dp-day-calendar,dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}dp-date-picker .dp-popup dp-day-calendar button,dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000000;display:inline-flex}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:rgba(0,0,0,.3)}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#ffffff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0%,#747576 1%,#747576 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#ffffff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0%,#f31c39 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0%,#34aa44 1%,#34aa44 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0%,#1e5dd3 1%,#1e5dd3 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0%,#f6882f 1%,#f6882f 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0%,#7aa6f7 1%,#7aa6f7 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}\n"] }]
|
|
1389
1389
|
}], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.ProgramsService }, { type: i3.AuthService }, { type: i4.UiKitService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { form: [{
|
|
1390
1390
|
type: ViewChild,
|
|
1391
1391
|
args: ['form', { read: ElementRef }]
|
|
@@ -1425,4 +1425,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
1425
1425
|
}], orgDetails: [{
|
|
1426
1426
|
type: Input
|
|
1427
1427
|
}] } });
|
|
1428
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcHJvZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcHJvZ3JhbS93b3JrZmxvdy1wcm9ncmFtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0MsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUEwQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSWxELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU94QyxNQUFNLE9BQU8sd0JBQXdCO0lBc0RuQyxZQUFvQixFQUFzQixFQUFVLGNBQStCLEVBQVUsV0FBd0IsRUFBUyxZQUF5QixFQUFVLFNBQTRCO1FBQXpLLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBckQ3TCxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBRXRCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGtCQUFh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QUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNsRSxJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEwsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0UsSUFBSSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BMLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ3pFLElBQUksbUJBQW1CLEdBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BMLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFD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QUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3RSxDQUFDOztxSEFwNUNVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLHd1QkFLUixVQUFVLHdIQ3BCdkMsdWdyR0F3OUJBOzJGRHo4QmEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHNCQUFzQjs0TkFTUyxJQUFJO3NCQUE1QyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBRWQsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNiLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRywyQkFBMkI7c0JBQXBDLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyw4QkFBOEI7c0JBQXZDLE1BQU07Z0JBRUUsa0JBQWtCO3NCQUExQixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICduZzItZGF0ZS1waWNrZXInO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFByb2dyYW1zU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3Byb2dyYW1zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XHJcbmltcG9ydCB7IENPTlNUQU5UUyB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXdvcmtmbG93LXByb2dyYW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1wcm9ncmFtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1wcm9ncmFtLmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dQcm9ncmFtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBjb25zdGFudHMgPSBDT05TVEFOVFM7XHJcbiAgc2hvd0NvbmZpcm1hdGlvbjogYW55O1xyXG4gIGlzQXNjZW50QWxsb3dlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZmX3JjX2xpc3Rpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdmb3JtJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGZvcm0gITogRWxlbWVudFJlZjtcclxuICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXInKSBkYXRlUGlja2VyITogRGF0ZVBpY2tlckNvbXBvbmVudDtcclxuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcG9wdWxhdGVPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNob3dDb25maXJtYXRpb25BbGVydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlZnJlc2hGb3JtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUmVtb3ZpbmdSb2xlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGlzYWJsZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIHNjcm9sbFRvQm90dG9tITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjYW5GcmFtZXdvcmtDaGFuZ2U6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByb2dyYW1TaW1wbGlmeUZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gQWxsIElucHV0IGZpZWxkc1xyXG4gIEBJbnB1dCgpIG1vZGU6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHByb2dyYW1JZDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgcHJvZ3JhbVR5cGU6IG51bWJlciA9IDE7XHJcbiAgQElucHV0KCkgYWxsb3dlZEZlYXR1cmUhOiBhbnk7XHJcbiAgQElucHV0KCkgYWRkVG9Qcm9ncmFtRGV0YWlsczogYW55O1xyXG4gIEBJbnB1dCgpIG9yZ0RldGFpbHM6IGFueTtcclxuICBwYW5lbFRpdGxlRGVmYXVsdFJldmlld2VyID0gXCJTZWxlY3QgRGVmYXVsdCBSZXZpZXdlcihzKVwiO1xyXG4gIHBhbmVsVGl0bGVPd25lciA9IFwiU2VsZWN0IE93bmVyKHMpXCI7XHJcbiAgcGFuZWxUaXRsZVJldmlld2VyID0gXCJTZWxlY3QgUmV2aWV3ZXIocylcIjtcclxuICBwYW5lbFRpdGxlQXNzaWduZWUgPSBcIlNlbGVjdCBBc3NpZ25lZShzKVwiO1xyXG4gIHBhbmVsVGl0bGVBcHByb3ZlciA9IFwiU2VsZWN0ICBBcHByb3ZlclwiXHJcbiAgaXNBcHByb3ZlckRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNQcm9ncmFtU2NvcGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0b29sVGlwRGF0YTogYW55ID17XHJcbiAgICBvd25lciA6XCJPd25lcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhIFByb2dyYW0uIE9ubHkgT3duZXJzIGNhbiBtYWtlIGNoYW5nZXMgdG8gYSBQcm9ncmFtIGFuZCB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS48YnI+VGhlIDxzdHJvbmc+S2V5IEFkbWluPC9zdHJvbmc+IGFuZCBhbGwgPGI+QWRtaW48L2I+IHVzZXJzIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIE93bmVycyBvZiBhIFByb2dyYW0gYnkgZGVmYXVsdC5cIixcclxuICAgIHByb2dyYW1TY29wZTogYEEgUHJvZ3JhbSBTY29wZSBjYW4gYmUgdXNlZCBhcyBmb2xsb3dzOlxyXG4gIDxsaT5UbyBzcGVjaWZ5IHRoZSBkdXJhdGlvbiBvZiB0aGUgUHJvZ3JhbS48L2xpPlxyXG4gIDxsaT5UbyBwcmUtc2VsZWN0IGNlcnRhaW4gb3B0aW9ucyB0aGF0IGFyZSBhdmFpbGFibGUgd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5LCB0aGVyZWJ5IGRlY3JlYXNpbmcgdGhlIHRpbWUgcmVxdWlyZWQgdG8gY3JlYXRlIGEgcmVzcG9uc2liaWxpdHkuPC9saT5cclxuICA8bGk+VG8gbGltaXQgdGhlIG9wdGlvbnMgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5LCB0aGVyZWJ5IG1ha2luZyBpdCBlYXNpZXIgdG8gY3JlYXRlIGEgcmVzcG9uc2liaWxpdHkgYW5kIHJlZHVjaW5nIHRoZSBsaWtlbGlob29kIG9mIGFuIGluY29ycmVjdCBvcHRpb24gYmVpbmcgc2VsZWN0ZWQuPC9saT5cclxuICAgIGBcclxuICB9XHJcbiAgYnVzaW5lc3NDeWNsZTogYW55O1xyXG4gIGZlYXR1cmVmbGFncm9sZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZlYXR1cmVmbGFnR3JvdXBzOiBib29sZWFuID1mYWxzZTtcclxuICBkaXNhYmxlZEFzc2lnbmVlSWRzOiBhbnlbXSA9IFtdO1xyXG4gIHNlbGVjdGVkUmV2aWV3ZXJJZHM6IGFueVtdID0gW107XHJcbiAgc2VsZWN0ZWRBc3NpZ25lZUlkczogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZE92ZXJzZWVySWRzOiBhbnlbXSA9IFtdO1xyXG4gIGFzc2lnbm9ySWQ6IG51bWJlcltdID0gW107XHJcbiAgZGlzYWJsZVJldmlld2VySWRzOiBhbnlbXSA9IFtdO1xyXG4gIGRpc2FibGVPdmVyc2VlcklkczogYW55W10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogVW50eXBlZEZvcm1CdWlsZGVyLCBwcml2YXRlIHByb2dyYW1TZXJ2aWNlOiBQcm9ncmFtc1NlcnZpY2UsIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLHByaXZhdGUgdWlLaXRTZXJ2aWNlOlVpS2l0U2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB0aGlzLmJ1c2luZXNzQ3ljbGUgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NDeWNsZVwiKSA/PyAne30nKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuYnVzaW5lc3NDeWNsZSwgJ2JjJyk7XHJcbiAgIH1cclxuICBwdWJsaWMgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCkge1xyXG4gICAgY29uc3QgaXNXaGl0ZXNwYWNlID0gKGNvbnRyb2wudmFsdWUgfHwgJycpLnRyaW0oKS5sZW5ndGggPT09IDA7XHJcbiAgICBjb25zdCBpc1ZhbGlkID0gIWlzV2hpdGVzcGFjZTtcclxuICAgIHJldHVybiBpc1ZhbGlkID8gbnVsbCA6IHsgJ3doaXRlc3BhY2UnOiB0cnVlIH07XHJcbiAgfVxyXG4gIHB1YmxpYyBibGFua0FycmF5VmFsaWRhdG9yKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCkge1xyXG4gICAgY29uc3QgaXNCbGFuayA9IGNvbnRyb2wudmFsdWU/LmZpbHRlcigoZWxlOmFueSk9PiBlbGUpPy5sZW5ndGggPT09IDA7XHJcbiAgICBjb25zdCBpc1ZhbGlkID0gIWlzQmxhbms7XHJcbiAgICByZXR1cm4gaXNWYWxpZCA/IG51bGwgOiB7ICdibGFuayc6IHRydWUgfTtcclxuICB9XHJcbiBsb2FkZXIgPSBmYWxzZTtcclxuIHNob3dTbWlsZXkgPSBmYWxzZTtcclxuIGFjdGlvbkJ1dHRvbnMgPSBbXHJcbiAgeyBidXR0b25UZXh0OiAnQWRkIE1vcmUgUHJvZ3JhbXMnLCBjbGFzczogJ3doaXRlLWJ0bicsIGlkOiAnYWRkTW9yZScgfSxcclxuICB7IGJ1dHRvblRleHQ6ICdWaWV3IFByb2dyYW0nLCBjbGFzczogJ2JsdWUtYnRuJywgaWQ6ICd2aWV3UHJvZ3JhbScgfSxcclxuXTtcclxuc21pbGV5TWVzc2FnZSA9IGBZb3UncmUgQWxsIFNldCFgO1xyXG5jcmVhdGVkUHJvZ3JhbUlkID0gJyc7XHJcbiAgaXNPYmplY3RpdmVWYWxpZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNOYW1lRXhpc3RzOiBib29sZWFuID1mYWxzZTtcclxuICAvL2Zvcm0gYm9keSBmb3IgcHJvZ3JhbSBtZXRhIGRhdGFcclxuICBwcm9ncmFtRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgcHJvZ3JhbV90eXBlOiBbdGhpcy5wcm9ncmFtVHlwZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDApLCBWYWxpZGF0b3JzLm1heCgzKV1dLFxyXG4gICAgcHJvZ3JhbV9uYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLm5vV2hpdGVzcGFjZVZhbGlkYXRvcl1dLFxyXG4gICAgcHJvZ3JhbV9kZXNjcmlwdGlvbjogWycnXSxcclxuICAgIHByb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHM6IFtbXV0sXHJcbiAgICBwcm9ncmFtX29iamVjdGl2ZTogWycnXSxcclxuICAgLy8gcHJvZ3JhbV9vYmplY3RpdmU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMubm9XaGl0ZXNwYWNlVmFsaWRhdG9yXV0sXHJcbiAgICBwcm9ncmFtX29iamVjdGl2ZV9hdHRhY2htZW50czogW1tdXSxcclxuICAgIHByb2dyYW1fcm9sZXM6IFtbXSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsdGhpcy5ibGFua0FycmF5VmFsaWRhdG9yXV0sXHJcbiAgICBhbGxfdXNlcl9pbl9yb2xlOiBbZmFsc2VdLFxyXG4gICAgcHJvZ3JhbV9vd25lcnM6IFtbXSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsdGhpcy5ibGFua0FycmF5VmFsaWRhdG9yXV0sXHJcbiAgICBwcm9ncmFtX293bmVyc19ncm91cCA6W1tdXSxcclxuICAgIHByb2dyYW1fYXBwcm92ZXI6IFtbXV0sXHJcbiAgICBwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbjogWydQQVNUX0VWRU5UJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgIHJlY3VycmluZ19mcmVxdWVuY3k6IFt0cnVlLFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICBsb2NrX3Njb3BlX2NoYW5nZTogW2ZhbHNlLFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICBmcmFtZXdvcms6IFtdLFxyXG4gICAgcmM6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2Fzc2lnbmVlOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9hc3NpZ25lZV9ncm91cDogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZTogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cDogW1tdXSxcclxuICAgIGFzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWE6IFsnQUxMJ10sXHJcbiAgICBwcm9ncmFtX3Jldmlld2VyOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9yZXZpZXdlcl9ncm91cDogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcjogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cDogW1tdXSxcclxuICAgIHJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE6IFsnU0VRVUVOVElBTCddLFxyXG4gICAgcHJvZ3JhbV9vdmVyc2VlcjogW1tdXSxcclxuICAgIHByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cDogW1tdXSxcclxuICAgIHByb2dyYW1fYXNzZXNzbWVudHM6IFtbXV0sXHJcbiAgICBldmlkZW5jZV9yZXF1aXJlZDogW2ZhbHNlXSxcclxuICAgIGFsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZTogW2ZhbHNlXSxcclxuICAgIGN1c3RvbV9maWVsZHM6IFtbXV0sXHJcbiAgICBwcm9ncmFtX3N0YXRlOiAwLFxyXG4gIH0pO1xyXG5cclxuICAvL2V4Y2VwdGlvbmFsIGhhbmRsaW5nIG9mIGN1c3RvbSBmaWVsZHNcclxuXHJcbiAgIHNob3dBZGRDdXN0b21GaWVsZCA9IHRydWU7XHJcbiAgLy9Qcm9ncmFtIG9iamVjdGl2ZSBhbmQgZGVzY3JpcGlvbiBhcmUgZXhwbGVjdGx5IGRlY2xhcmVkIGFzIHRoZXkgYXJlIHVzaW5nIG1hcnggZWRpdG9yIHdoaWNoIGRvZXMgbm90IHN1cHBvcnRzIFJlYWN0aXZlIGZvcm1zIGJpbmRpbmdcclxuICBlZGl0b3JEYXRhID0ge1xyXG4gICAgcHJvZ3JhbU9iamVjdGl2ZTogJycsXHJcbiAgICBwcm9ncmFtRGVzY3JpcHRpb246ICcnXHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZEFzc2Vzc21lbnQhOiBhbnk7XHJcblxyXG5cclxuXHJcbiAgY3VycmVudFVzZXIoKSB7XHJcbiAgICBjb25zdCB1c2VyID0gdGhpcy5hdXRoU2VydmljZS50b2tlbkluZm8oKVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbWVtYmVyX2VtYWlsOiB1c2VyPy5lbWFpbCxcclxuICAgICAgbWVtYmVyX2lkOiB1c2VyPy5pZCxcclxuICAgICAgbWVtYmVyX25hbWU6IHVzZXI/Lm5hbWUsXHJcbiAgICAgIHVzZXJfcm9sZTogXCJMT0dHRURfSU5cIixcclxuICAgICAgX2lkOiBcIlwiXHJcbiAgICB9XHJcblxyXG4gIH1cclxuICAvL1NldHMgdGhlIHZhbHVlIG9mIGEgZm9ybSBjb250cm9sXHJcbiAgc2V0Rm9ybUZpZWxkKGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIGlzRnJvbUZvcm0/OiBib29sZWFuKSB7XHJcbiAgICBsZXQgcGF0Y2g6IGFueSA9IHt9O1xyXG4gICAgcGF0Y2hbY29udHJvbE5hbWVdID0gdmFsdWU7XHJcbiAgICB0aGlzLnByb2dyYW1Gb3JtLnBhdGNoVmFsdWUocGF0Y2gpO1xyXG4gICAgdGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0/Lm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIGlmKGlzRnJvbUZvcm0gJiYgY29udHJvbE5hbWUgPT09ICdwcm9ncmFtX29iamVjdGl2ZScgJiYgIXZhbHVlLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpLnRyaW0oKSkgdGhpcy5pc09iamVjdGl2ZVZhbGlkID0gZmFsc2U7XHJcbiAgICBlbHNlIHRoaXMuaXNPYmplY3RpdmVWYWxpZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvL1JldHVybnMgd2VhdGhlciB0aGUgZm9ybSBpcyB2YWxpZCBvciBub3RcclxuICBnZXQgZm9ybVZhbGlkKCkge1xyXG4gICAgaWYgKHRoaXMucHJvZ3JhbUZvcm0udmFsaWQgJiYgdGhpcy5lZGl0b3JEYXRhPy5wcm9ncmFtT2JqZWN0aXZlPy5yZXBsYWNlKC8mbmJzcDsvZywgJyAnKT8udHJpbSgpPy5sZW5ndGggKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29udHJvbHM6IGFueSA9IHtcclxuICAgIHByb2dyYW1fbmFtZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fbmFtZScpLFxyXG4gICAgcHJvZ3JhbV90eXBlOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3R5cGUnKSxcclxuICAgIHByb2dyYW1fb2JqZWN0aXZlOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9vYmplY3RpdmUnKSxcclxuICAgIHByb2dyYW1fcm9sZXM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3JvbGVzJyksXHJcbiAgICBwcm9ncmFtX293bmVyczogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb3duZXJzJyksXHJcbiAgICBwcm9ncmFtX293bmVyc19ncm91cDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb3duZXJzX2dyb3VwJyksXHJcbiAgICBhbGxfdXNlcl9pbl9yb2xlOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnYWxsX3VzZXJfaW5fcm9sZScpLFxyXG4gICAgcHJvZ3JhbV9hcHByb3ZlcjogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXBwcm92ZXInKSxcclxuICAgIGRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyksXHJcbiAgICBvYmplY3RpdmVfYXR0YWNobWVudHM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX29iamVjdGl2ZV9hdHRhY2htZW50cycpLFxyXG4gICAgcGVyZm9ybWFuY2VfY2FsY3VsYXRpb246dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3BlcmZvcm1hbmNlX2NhbGN1bGF0aW9uJyksXHJcbiAgICByZWN1cnJpbmdfZnJlcXVlbmN5OiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncmVjdXJyaW5nX2ZyZXF1ZW5jeScpLFxyXG4gICAgbG9ja19zY29wZV9jaGFuZ2U6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdsb2NrX3Njb3BlX2NoYW5nZScpLFxyXG4gICAgcmM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdyYycpLFxyXG4gICAgZXZpZGVuY2VfcmVxdWlyZWQ6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdldmlkZW5jZV9yZXF1aXJlZCcpLFxyXG4gICAgZnJhbWV3b3JrOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnZnJhbWV3b3JrJyksXHJcbiAgICBhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2U6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2UnKSxcclxuICAgIHByb2dyYW1fYXNzaWduZWU6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXNzaWduZWUnKSxcclxuICAgIHByb2dyYW1fYXNzaWduZWVfZ3JvdXA6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXNzaWduZWVfZ3JvdXAnKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZTp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJyksXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcpLFxyXG4gICAgYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYTp0aGlzLnByb2dyYW1Gb3JtLmdldCgnYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYScpLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cDp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwJyksXHJcbiAgICBwcm9ncmFtX3Jldmlld2VyOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3Jldmlld2VyJyksXHJcbiAgICBwcm9ncmFtX3Jldmlld2VyX2dyb3VwOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3Jldmlld2VyX2dyb3VwJyksXHJcbiAgICBwcm9ncmFtX292ZXJzZWVyOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX292ZXJzZWVyJyksXHJcbiAgICBwcm9ncmFtX292ZXJzZWVyX2dyb3VwOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX292ZXJzZWVyX2dyb3VwJyksXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicpLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXAnKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXAnKSxcclxuICAgIHJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEgOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYScpLFxyXG4gICAgcHJvZ3JhbV9hc3Nlc3NtZW50czogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXNzZXNzbWVudHMnKSxcclxuICAgIGN1c3RvbV9maWVsZHM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdjdXN0b21fZmllbGRzJyksXHJcbiAgICBpc0FwcHJvdmVyRGlzYWJsZWQ6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdpc0FwcHJvdmVyRGlzYWJsZWQnKSxcclxuICB9XHJcblxyXG4gIGxpc3RzOiBhbnkgPSB7XHJcbiAgICBST0xFUzogW10sXHJcbiAgICBPV05FUlM6IFtdLFxyXG4gICAgT1dORVJTX0dST1VQUzpbXSxcclxuICAgIEFQUFJPVkVSUzpbXSxcclxuICAgIFJFVklFV0VSUzogW10sXHJcbiAgICBSRVZJRVdFUlNfR1JPVVA6W10sXHJcbiAgICBBU1NJR05FRVM6IFtdLFxyXG4gICAgQVNTSUdORUVTX0dST1VQIDpbXSxcclxuICAgIERFRkFVTFRfQVNTSUdORUVTOltdLFxyXG4gICAgREVGQVVMVF9BU1NJR05FRVNfR1JPVVA6W10sXHJcbiAgICBERUZBVUxUX1JFVklFV0VSUzpbXSxcclxuICAgIERFRkFVTFRfUkVWSUVXRVJTX0dST1VQOltdLFxyXG4gICAgT1ZFUlNFRVJTOiBbXSxcclxuICAgIE9WRVJTRUVSU19HUk9VUDpbXSxcclxuICAgIERFRkFVTFRfT1ZFUlNFRVJTOiBbXSxcclxuICAgIERFRkFVTFRfT1ZFUlNFRVJTX0dST1VQOltdLFxyXG4gICAgUkM6IFtdLFxyXG4gICAgTk9OX1JFTU9WQUJMRV9PV05FUlM6IFtdLFxyXG4gICAgQUxMX1VTRVI6W10sXHJcbiAgICBBTExfR1JPVVA6W10sXHJcbiAgICBTWVNURU1fUk9MRV9JRFM6W11cclxuICB9XHJcblxyXG5cclxuXHJcbiAgbGlzdExvYWRpbmdTdGF0ZSA9IHtcclxuICAgIFJPTEVTOmZhbHNlLFxyXG4gICAgVVNFUlM6ZmFsc2UsXHJcbiAgICBHUk9VUDpmYWxzZSxcclxuICAgIFJDOmZhbHNlLFxyXG4gIH1cclxuICBzaWRlRWxlbWVudHMgPSBbJ1JPTEUnLCdSQycsJ09XTkVSJywnQVNTSUdORUUnLCdBUFBST1ZFUicsJ0RFRkFVTFRfQVNTSUdORUUnLCdSRVZJRVdFUicsJ0RFRkFVTFRfUkVWSUVXRVInLCdBU1NFU1NNRU5UJywnRlJBTUVXT1JLJywnT1ZFUlNFRVInLCdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicsJ0RFRkFVTFRfT1ZFUlNFRVInLCdPVkVSU0VFUiddO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3R5cGUnLCB0aGlzLnByb2dyYW1UeXBlKTtcclxuICAgIGlmKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgIHRoaXMuZ2V0UHJvZ3JhbURldGFpbHMoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uVXNlcnMoKTtcclxuICAgICAgdGhpcy5mZXRjaE9yZ2FuaXphdGlvbkdyb3VwKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZldGNoUm9sZXMoKTtcclxuICAgIHRoaXMuZmV0Y2hSQygpO1xyXG4gICAgaWYodGhpcy5hZGRUb1Byb2dyYW1EZXRhaWxzPy5faWQpIHtcclxuICAgICAgdGhpcy5saXN0QWN0aW9uKHRoaXMuYWRkVG9Qcm9ncmFtRGV0YWlscywgJ0ZSQU1FV09SSycpXHJcbiAgICB9XHJcbiAgICB0aGlzLmVuYWJsZWZlYXR1cmUoKTtcclxuICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgZ2V0IHZhbGlkKCkge1xyXG4gICByZXR1cm4gdGhpcy5wcm9ncmFtRm9ybS52YWxpZFxyXG4gIH1cclxuXHJcbiAgYWRkaXRpb25hbE9wdGlvbjogYW55ID0gey4uLkNPTlNUQU5UUy5hZGRpdGlvbmFsT3B0aW9ufTtcclxuICBhY3RpdmVMaXN0ID0gJydcclxuICAvKipcclxuICAgKiAjIyMjIERlc2NyaXB0aW9uXHJcbiAgICogUG9wdWxhdGVzIG9wdGlvbmFsIGZpZWxkcyBzdGF0dXMgZm9yIHRoZSBvcHRpb25hbCBmaWVsZHNcclxuICAgKi9cclxuICBwb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCkge1xyXG4gICAgY29uc3QgYWN0aXZhdGVkT3B0aW9ucyA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5hZGRpdGlvbmFsT3B0aW9uKSkge1xyXG4gICAgICBpZiAodGhpcy5hZGRpdGlvbmFsT3B0aW9uW2tleV0gPT09IHRydWUpIHtcclxuICAgICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goa2V5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGFjdGl2YXRlZE9wdGlvbnMpO1xyXG4gIH1cclxuICBhZGRNb3JlSW5mbyhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb25bZXZlbnQuY29kZV0gPSBldmVudC5jaGVja2VkO1xyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IHRydWU7XHJcbiAgICB0aGlzLmNoZWNrUHJvZ3JhbU9wdGlvbkZpZWxkKCk7XHJcbiAgfVxyXG5cclxuICAvLyBmdW5jdGlvbiB0byBhdXRvbWF0ZSBmb3JtIHZhbHVlIGNoYW5nZSBoYW5kbmdcclxuICBmb3JtQ2hhbmdlTGlzdG5lcigpIHtcclxuICAgIGNvbnN0IGZpZWxkcyA9IE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpO1xyXG4gICAgZmllbGRzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuY29udHJvbHNbZWxlXT8udmFsdWVDaGFuZ2VzLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHsgdGhpcy5oYW5kbGVGb3JtRmllbGRDaGFuZ2UoZWxlLCByZXMpIH1cclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBoYW5kbGVGb3JtRmllbGRDaGFuZ2UoY29udHJvbDogc3RyaW5nLCBwYXlsb2FkPzogYW55KSB7XHJcbiAgICBzd2l0Y2ggKGNvbnRyb2wpIHtcclxuICAgICAgY2FzZSAncHJvZ3JhbV9yb2xlcyc6IHtcclxuICAgICAgICB0aGlzLmZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGVMaXN0KGV2dDogc3RyaW5nKSB7XHJcbiAgICBpZihldnQgPT09ICdGUkFNRVdPUksnICYmICF0aGlzLmNhbkZyYW1ld29ya0NoYW5nZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5hY3RpdmVMaXN0ID0gZXZ0O1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBsaXN0QWN0aW9uKGV2dDogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdST0xFJzoge1xyXG4gICAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbiA9IHRydWU7XHJcbiAgICAgICAgY29uc3Qgc3lzdGVtUm9sZXMgPSBldnQ/LmZpbHRlcigoZWxlOiBhbnkpID0+IChlbGU/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAna2V5IGFkbWluJyB8fCBlbGU/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAnYWRtaW4nKSk7XHJcbiAgICAgICAgY29uc3QgcGF0Y2hWYWwgPSB0aGlzLnVuaXF1ZUJ5UHJvcChbLi4uc3lzdGVtUm9sZXMsIC4uLmV2dF0sICdfaWQnKTtcclxuICAgICAgICBpZiAoIWlzRXF1YWwodGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzLnZhbHVlLnNvcnQoKSwgcGF0Y2hWYWwuc29ydCgpKSkge1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCBwYXRjaFZhbCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5mZXRjaEdyb3Vwc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnUkMnOiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJyb2xlXCIsZXZ0KVxyXG4gICAgICAgIGNvbnN0IHJjID0gdGhpcy5zZXRMaXN0KHRoaXMubGlzdHMuUkMsIGV2dCwgJ2l0ZW1faWQnKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwic2V0cmNcIixyYylcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmMnLCB0aGlzLnVuaXF1ZUJ5UHJvcChyYywgJ2l0ZW1faWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnT1dORVInIDp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FQUFJPVkVSJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXBwcm92ZXInLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FTU0lHTkVFJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWUnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJykpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRBc3NpZ25lZShldnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfQVNTSUdORUUnOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KClcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdSRVZJRVdFUic6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3Jldmlld2VyJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yZXZpZXdlcl9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0UmV2aWV3ZXIoZXZ0KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX1JFVklFV0VSJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgdGhpcy5jb250cm9scy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhLnZhbHVlID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4wID8gJ0FOWU9ORSc6dGhpcy5jb250cm9scz8ucmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYT8udmFsdWVcclxuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KClcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdPVkVSU0VFUic6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vdmVyc2Vlcl9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0T3ZlcnNlZXIoZXZ0KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX09WRVJTRUVSJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcicsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXAnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaExpc3QoKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FTU0VTU01FTlQnOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3Nlc3NtZW50cycsIGV2dCk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnRlJBTUVXT1JLJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2ZyYW1ld29yaycsIGV2dCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fbmFtZScsIGV2dD8ubmFtZSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb24nLCBldnQ/LmRlc2NyaXB0aW9uKTtcclxuICAgICAgICB0aGlzLmVkaXRvckRhdGEucHJvZ3JhbURlc2NyaXB0aW9uID0gZXZ0Py5kZXNjcmlwdGlvbjtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coXCJzZWxlY3RlZCBmb3JtID09PT5cIiwgdGhpcy5jb250cm9scylcclxuICB9XHJcblxyXG4gIHJlbW92ZShldnQ6IGFueSwgdHlwZTogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnUk9MRSc6IHtcclxuICAgICAgICBsZXQgbXNnID0gJyc7XHJcbiAgICAgICAgbXNnID0gJ0lmIHlvdSBjaGFuZ2UgdGhlIHJvbGVzLCBhbnkgdW5zYXZlZCBjaGFuZ2VzIHdvdWxkIGJlIGxvc3QuJ1xyXG4gICAgICAgIGNvbnN0IHJvbGVzID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uX2lkICE9PSBldnQ/Ll9pZCk7XHJcbiAgICAgICAgdGhpcy5saXN0QWN0aW9uKHJvbGVzLCdST0xFJyk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCByb2xlcyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnUkMnOiB7XHJcbiAgICAgICAgY29uc3QgcmNzID0gdGhpcy5jb250cm9scz8ucmM/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lml0ZW1faWQgIT09IGV2dD8uaXRlbV9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3JjJywgcmNzKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdPV05FUic6e1xyXG4gICAgICAgIGNvbnN0IG93bmVycyA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCBvd25lcnMpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ09XTkVSX0dST1VQJzp7XHJcbiAgICAgICAgY29uc3Qgb3duZXJzX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCBvd25lcnNfZ3JvdXApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FQUFJPVkVSJzp7XHJcbiAgICAgICAgY29uc3QgYXBwcm92ZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIGFwcHJvdmVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBU1NJR05FRSc6e1xyXG4gICAgICAgIGNvbnN0IGFzc2lnbmVlID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWUnLCBhc3NpZ25lZSk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0QXNzaWduZWVPblJlbW92ZShldnQsdHlwZSlcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBU1NJR05FRV9HUk9VUCc6e1xyXG4gICAgICAgIGNvbnN0IGFzc2lnbmVlX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwJywgYXNzaWduZWVfZ3JvdXApO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEFzc2lnbmVlT25SZW1vdmUoZXZ0LHR5cGUpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9BU1NJR05FRSc6e1xyXG4gICAgICAgIGNvbnN0IGFzc2lnbmVlID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgYXNzaWduZWUpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaExpc3QoKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfQVNTSUdORUVfR1JPVVAnOntcclxuICAgICAgICBjb25zdCBhc3NpZ25lZV9ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXAnLCBhc3NpZ25lZV9ncm91cCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnUkVWSUVXRVInOntcclxuICAgICAgICBjb25zdCByZXZpZXdlciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3Jldmlld2VyJywgcmV2aWV3ZXIpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFJldmlld2VyT25SZW1vdmUoZXZ0LHR5cGUpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnUkVWSUVXRVJfR1JPVVAnOntcclxuICAgICAgICBjb25zdCByZXZpZXdlcl9ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yZXZpZXdlcl9ncm91cCcsIHJldmlld2VyX2dyb3VwKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRSZXZpZXdlck9uUmVtb3ZlKGV2dCx0eXBlKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfUkVWSUVXRVInOntcclxuICAgICAgICBjb25zdCByZXZpZXdlciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIHJldmlld2VyKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KClcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX1JFVklFV0VSX0dST1VQJzp7XHJcbiAgICAgICAgY29uc3QgcmV2aWV3ZXJfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwJywgcmV2aWV3ZXJfZ3JvdXApO1xyXG4gICAgICAgIHRoaXMuY29udHJvbHMucmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYS52YWx1ZSA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+MCA/ICdBTllPTkUnOnRoaXMuY29udHJvbHM/LnJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE/LnZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ09WRVJTRUVSJzp7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vdmVyc2VlcicsIG92ZXJzZWVyKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRPdmVyc2Vlck9uUmVtb3ZlKGV2dCx0eXBlKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ09WRVJTRUVSX0dST1VQJzp7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3ZlcnNlZXJfZ3JvdXAnLCBvdmVyc2Vlcl9ncm91cCk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0T3ZlcnNlZXJPblJlbW92ZShldnQsdHlwZSlcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX09WRVJTRUVSJzp7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInLCBvdmVyc2Vlcik7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9PVkVSU0VFUl9HUk9VUCc6e1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cCcsIG92ZXJzZWVyX2dyb3VwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUic6e1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInLCBvdmVyc2Vlcik7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVJfR1JPVVAnOntcclxuICAgICAgICBjb25zdCBvdmVyc2Vlcl9ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cCcsIG92ZXJzZWVyX2dyb3VwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBU1NFU1NNRU5UJyA6e1xyXG5cclxuICAgICAgICBsZXQgY3VycmVudCA9IGNsb25lRGVlcCh0aGlzLmNvbnRyb2xzLnByb2dyYW1fYXNzZXNzbWVudHM/LnZhbHVlKTtcclxuICAgICAgICBjb25zdCBpbmRleCA9IGN1cnJlbnQuZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlLmNhdGVnb3J5X2lkID09IGV2dC5jYXRlZ29yeV9pZCk7XHJcbiAgICAgICAgY3VycmVudFtpbmRleF0uYXNzZXNzbWVudElkcyA9IGN1cnJlbnRbaW5kZXhdLmFzc2Vzc21lbnRJZHMuZmlsdGVyKChhc3Nlc3NtZW50OiBhbnkpID0+IGFzc2Vzc21lbnQuaWQgIT09IGV2dC5pZCk7XHJcbiAgICAgICAgaWYoY3VycmVudFtpbmRleF0uYXNzZXNzbWVudElkcy5sZW5ndGggID09PSAwKSAgY3VycmVudC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMubGlzdEFjdGlvbihjdXJyZW50LCAnQVNTRVNTTUVOVCcpO1xyXG4gICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnRlJBTUVXT1JLJyA6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdmcmFtZXdvcmsnLCBudWxsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybklkcyhsaXN0OiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBsaXN0Py5tYXAoZWxlID0+IHsgaWYgKGVsZVtrZXldKSB7IHJldHVybiBlbGVba2V5XTsgfSB9KS5maWx0ZXIoZWxlID0+IGVsZSk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoTGlzdCgpe1xyXG4gICAgdGhpcy5zZWxlY3RlZEFzc2lnbmVlSWRzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHMgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRPdmVyc2VlcklkcyA9IFtdO1xyXG4gICAgbGV0IGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzIDphbnkgPSBbXTtcclxuICAgIHRoaXMuYXNzaWdub3JJZCA9IFtdO1xyXG4gICAgbGV0IHNlbGVjdGVkQXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlO1xyXG4gICAgbGV0IHNlbGVjdGVkUmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlO1xyXG4gICAgbGV0IHNlbGVjdGVkT3ZlcnNlZXJMaXN0ID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZTtcclxuICAgIGxldCBzZWxlY3RlZE92ZXJzZWVyRmFpbHVyZUxpc3QgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZTtcclxuICAgIGxldCBhc3NpZ25vciA9IHRoaXMuY3VycmVudFVzZXIoKVxyXG4gICAgdGhpcy5hc3NpZ25vcklkLnB1c2goYXNzaWdub3I/Lm1lbWJlcl9pZCk7XHJcbiAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKGFzc2lnbm9yPy5tZW1iZXJfaWQpXHJcbiAgICBzZWxlY3RlZEFzc2lnbmVlPy5mb3JFYWNoKCh1c2VyOmFueSk9PntcclxuICAgICAgdGhpcy5zZWxlY3RlZEFzc2lnbmVlSWRzLnB1c2godXNlcj8ubWVtYmVyX2lkKVxyXG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKHVzZXI/Lm1lbWJlcl9pZClcclxuICAgIH0pXHJcbiAgICBzZWxlY3RlZFJldmlld2VyPy5mb3JFYWNoKCh1c2VyOmFueSk9PntcclxuICAgICAgdGhpcy5zZWxlY3RlZFJldmlld2VySWRzLnB1c2godXNlcj8ubWVtYmVyX2lkKVxyXG4gICAgfSlcclxuICAgIHNlbGVjdGVkT3ZlcnNlZXJMaXN0Py5mb3JFYWNoKCh1c2VyOmFueSk9PntcclxuICAgICAgdGhpcy5zZWxlY3RlZE92ZXJzZWVySWRzLnB1c2godXNlcj8ubWVtYmVyX2lkKVxyXG4gICAgfSlcclxuICAgIHNlbGVjdGVkT3ZlcnNlZXJGYWlsdXJlTGlzdD8uZm9yRWFjaCgodXNlcjphbnkpPT57XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm1lbWJlcl9pZClcclxuICAgIH0pXHJcbiAgICB0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHMgPSBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHMpXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRBc3NpZ25lZUlkcyA9IFsuLi5uZXcgU2V0KHRoaXMuc2VsZWN0ZWRBc3NpZ25lZUlkcyldO1xyXG4gICAgdGhpcy5zZWxlY3RlZE92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQodGhpcy5zZWxlY3RlZE92ZXJzZWVySWRzKV07XHJcbiAgICBsZXQgZGlzYWJsZUFzc2lnbmVlTGlzdCA9IHRoaXMubGlzdHM/LkFMTF9VU0VSPy5maWx0ZXIoKHVzZXI6IGFueSkgPT4gKHRoaXMuc2VsZWN0ZWRSZXZpZXdlcklkcz8uaW5jbHVkZXModXNlcj8ubWVtYmVyX2lkKSB8fCB0aGlzLnNlbGVjdGVkT3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZCkpKTtcclxuICAgIHRoaXMuZGlzYWJsZWRBc3NpZ25lZUlkcyA9IHRoaXMucmV0dXJuSWRzKGRpc2FibGVBc3NpZ25lZUxpc3QsJ21lbWJlcl9pZCcpO1xyXG4gICAgbGV0IGRpc2FibGVSZXZpZXdlckxpc3QgPSB0aGlzLmxpc3RzPy5BTExfVVNFUj8uZmlsdGVyKCh1c2VyOiBhbnkpID0+ICh0aGlzLnNlbGVjdGVkT3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZCkgfHwgdGhpcy5zZWxlY3RlZEFzc2lnbmVlSWRzPy5pbmNsdWRlcyh1c2VyPy5tZW1iZXJfaWQpKSk7XHJcbiAgICB0aGlzLmRpc2FibGVSZXZpZXdlcklkcyA9IHRoaXMucmV0dXJuSWRzKGRpc2FibGVSZXZpZXdlckxpc3QsJ21lbWJlcl9pZCcpXHJcbiAgICBsZXQgZGlzYWJsZU92ZXJzZWVyTGlzdCA9ICB0aGlzLmxpc3RzPy5BTExfVVNFUj8uZmlsdGVyKCh1c2VyOiBhbnkpID0+IChhc3NpZ25vckFuZEFzc2lnbmVlc0lkcz8uaW5jbHVkZXModXNlcj8ubWVtYmVyX2lkKSB8fCB0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZCkpKTtcclxuICAgIHRoaXMuZGlzYWJsZU92ZXJzZWVySWRzID0gdGhpcy5yZXR1cm5JZHMoZGlzYWJsZU92ZXJzZWVyTGlzdCwnbWVtYmVyX2lkJylcclxuICB9XHJcblxyXG4gIHJlbW92ZVJvbGUoZXZ0OiBhbnkpe1xyXG4gICAgdGhpcy5vblJlbW92aW5nUm9sZS5lbWl0KGV2dCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy9iZWxvdyA0IGZ1bmN0aW9ucyBjYW4gYmUgZWFzaWx0eSBjb21iaW5lZCBpbnRvIG9uZSBhcyB0aGV5IGZvbGxvdyBzYW1lIGtpbmQgb2YgcGF0dGVybiBvciBjYW4gYmUgb2ZmbG9hZGVkIHRvIGEgZXh0ZXJuYWwgc2VydmljZVxyXG4gIHNldERlZmF1bHRBc3NpZ25lZShldnQ6YW55KXtcclxuICAgIGlmKGV2dD8udXNlcnM/Lmxlbmd0aCB8fCBldnQ/Lmdyb3Vwcz8ubGVuZ3RoKXtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUyA9IHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKTtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKTtcclxuXHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUyA9IHRoaXMubGlzdHMuQUxMX1VTRVI7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPSB0aGlzLmxpc3RzLkFMTF9HUk9VUDtcclxuICAgIH1cclxuICAgIGNvbnN0IGFzc2lnbmVlTWFwID0gIGV2dD8udXNlcnM/Lm1hcCgoZWxlOmFueSkgPT4gZWxlPy5tZW1iZXJfaWQpO1xyXG4gICAgbGV0IGN1cnJlbnREZWZhdWx0QXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU7XHJcbiAgICBjdXJyZW50RGVmYXVsdEFzc2lnbmVlID0gY3VycmVudERlZmF1bHRBc3NpZ25lZS5maWx0ZXIoKGVsZTphbnkpPT4gYXNzaWduZWVNYXAuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWUnLCBjdXJyZW50RGVmYXVsdEFzc2lnbmVlKTtcclxuICB9XHJcblxyXG4gIHNldERlZmF1bHRBc3NpZ25lZU9uUmVtb3ZlKGV2dDphbnksdHlwZTphbnkpe1xyXG4gICBzd2l0Y2godHlwZSl7XHJcbiAgICAgY2FzZSAnQVNTSUdORUUnIDp7XHJcbiAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUy5maWx0ZXIoKGVsZTphbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICBjb25zdCBkZWZhdWx0QXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU7XHJcbiAgICAgICBjb25zdCBhc3NpZ25lZSA9IGRlZmF1bHRBc3NpZ25lZS5maWx0ZXIoKGVsZTphbnkpID0+ICBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpXHJcbiAgICAgICBpZighYXNzaWduZWU/Lmxlbmd0aCl7XHJcbiAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSB0aGlzLmxpc3RzLkFMTF9VU0VSO1xyXG4gICAgICAgfVxyXG4gICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIGFzc2lnbmVlKTtcclxuXHJcblxyXG4gICAgICBicmVhaztcclxuICAgICB9XHJcbiAgICAgY2FzZSAnQVNTSUdORUVfR1JPVVAnOntcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAuZmlsdGVyKChlbGU6YW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgY29uc3QgZGVmYXVsdEFzc2lnbmVlR3JvdXAgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU7XHJcbiAgICAgIGNvbnN0IGFzc2lnbmVlR3JvdXAgPSBkZWZhdWx0QXNzaWduZWVHcm91cC5maWx0ZXIoKGVsZTphbnkpID0+ICBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKVxyXG4gICAgICBpZighYXNzaWduZWVHcm91cD8ubGVuZ3RoKXtcclxuICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gdGhpcy5saXN0cy5BTExfR1JPVVA7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlR3JvdXApO1xyXG4gICAgIH1cclxuICAgfVxyXG4gIH1cclxuICBzZXREZWZhdWx0UmV2aWV3ZXIoZXZ0OmFueSl7XHJcbiAgICBpZihldnQ/LnVzZXJzPy5sZW5ndGggfHwgZXZ0Py5ncm91cHM/Lmxlbmd0aCl7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJyk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA9IHRoaXMubGlzdHMuQUxMX0dST1VQO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmV2aWV3ZXJNYXAgPSAgZXZ0Py51c2Vycz8ubWFwKChlbGU6YW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk7XHJcbiAgICBsZXQgY3VycmVudERlZmF1bHRSZXZpZXdlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZTtcclxuICAgIGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIgPSBjdXJyZW50RGVmYXVsdFJldmlld2VyLmZpbHRlcigoZWxlOmFueSk9PiByZXZpZXdlck1hcC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIpO1xyXG4gIH1cclxuICBzZXREZWZhdWx0T3ZlcnNlZXIoZXZ0OmFueSl7XHJcbiAgICBpZihldnQ/LnVzZXJzPy5sZW5ndGggfHwgZXZ0Py5ncm91cHM/Lmxlbmd0aCl7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJyk7XHJcblxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSB0aGlzLmxpc3RzLkFMTF9VU0VSO1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID0gdGhpcy5saXN0cy5BTExfR1JPVVA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvdmVyc2Vlck1hcCA9ICBldnQ/LnVzZXJzPy5tYXAoKGVsZTphbnkpID0+IGVsZT8ubWVtYmVyX2lkKTtcclxuICAgIGxldCBjdXJyZW50RGVmYXVsdFJldmlld2VyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlO1xyXG4gICAgbGV0IGN1cnJlbnREZWZhdWx0RmFpbFJldmlld2VyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZTtcclxuICAgIGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIgPSBjdXJyZW50RGVmYXVsdFJldmlld2VyLmZpbHRlcigoZWxlOmFueSk9PiBvdmVyc2Vlck1hcC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgY3VycmVudERlZmF1bHRGYWlsUmV2aWV3ZXIgPSBjdXJyZW50RGVmYXVsdFJldmlld2VyLmZpbHRlcigoZWxlOmFueSk9PiBvdmVyc2Vlck1hcC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIpO1xyXG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInLCBjdXJyZW50RGVmYXVsdEZhaWxSZXZpZXdlcik7XHJcbiAgfVxyXG4gIHNldERlZmF1bHRSZXZpZXdlck9uUmVtb3ZlKGV2dDphbnksdHlwZTphbnkpe1xyXG4gICBzd2l0Y2godHlwZSl7XHJcbiAgICAgY2FzZSAnUkVWSUVXRVInIDp7XHJcbiAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUy5maWx0ZXIoKGVsZTphbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICBjb25zdCBkZWZhdWx0UmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU7XHJcbiAgICAgICBjb25zdCByZXZpZXdlciA9IGRlZmF1bHRSZXZpZXdlci5maWx0ZXIoKGVsZTphbnkpID0+ICBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpXHJcbiAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyJywgcmV2aWV3ZXIpO1xyXG5cclxuICAgICAgYnJlYWs7XHJcbiAgICAgfVxyXG4gICAgIGNhc2UgJ1JFVklFV0VSX0dST1VQJzp7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAgPSB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgIGNvbnN0IGRlZmF1bHRSZXZpZXdlckdyb3VwID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlO1xyXG4gICAgICBjb25zdCByZXZpZXdlckdyb3VwID0gZGVmYXVsdFJldmlld2VyR3JvdXAuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZClcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cCcsIHJldmlld2VyR3JvdXApO1xyXG4gICAgIH1cclxuICAgfVxyXG4gIH1cclxuICBzZXREZWZhdWx0T3ZlcnNlZXJPblJlbW92ZShldnQ6YW55LHR5cGU6YW55KXtcclxuICAgIHN3aXRjaCh0eXBlKXtcclxuICAgICAgY2FzZSAnT1ZFUlNFRVInIDp7XHJcbiAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMuZmlsdGVyKChlbGU6YW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRPdmVyc2VlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZTtcclxuICAgICAgICBjb25zdCBvdmVyc2VlciA9IGRlZmF1bHRPdmVyc2Vlci5maWx0ZXIoKGVsZTphbnkpID0+ICBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpXHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIG92ZXJzZWVyKTtcclxuXHJcbiAgICAgICAgY29uc3QgZGVmYXVsdEZhaWxPdmVyc2VlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJGYWlsID0gZGVmYXVsdEZhaWxPdmVyc2Vlci5maWx0ZXIoKGVsZTphbnkpID0+ICBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpXHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInLCBvdmVyc2VlckZhaWwpO1xyXG5cclxuICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ09WRVJTRUVSX0dST1VQJzp7XHJcbiAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID0gdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUC5maWx0ZXIoKGVsZTphbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgY29uc3QgZGVmYXVsdE92ZXJzZWVyR3JvdXAgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU7XHJcbiAgICAgICBjb25zdCBvdmVyc2Vlckdyb3VwID0gZGVmYXVsdE92ZXJzZWVyR3JvdXAuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZClcclxuICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXAnLCBvdmVyc2Vlckdyb3VwKTtcclxuXHJcbiAgICAgICBjb25zdCBkZWZhdWx0T3ZlcnNlZXJGYWlsZWRHcm91cCA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU7XHJcbiAgICAgICBjb25zdCBvdmVyc2VlckZhaWxlZEdyb3VwID0gZGVmYXVsdE92ZXJzZWVyRmFpbGVkR3JvdXAuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZClcclxuICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJGYWlsZWRHcm91cCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgfVxyXG5cclxuXHJcblxyXG4gIGZpZWxkRGVzZWxlY3Rvcih0eXBlOiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aXZlTGlzdCA9ICcnO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gICAgdGhpcy5tYXJrYXNUb3VjaGVkU2VsZWN0b3IodHlwZSlcclxuICB9XHJcbiAgbWFya2FzVG91Y2hlZFNlbGVjdG9yKGZpZWxkTmFtZTphbnkpe1xyXG4gICAgY29uc3QgdHlwZUZpZWxkOmFueSA9IHtcclxuICAgICAgUk9MRToncHJvZ3JhbV9yb2xlcycsXHJcbiAgICAgIEFQUFJPVkVSOidwcm9ncmFtX2FwcHJvdmVyJyxcclxuICAgICAgT1dORVI6J3Byb2dyYW1fb3duZXJzJyxcclxuICAgICAgT1dORVJfR1JPVVA6J3Byb2dyYW1fb3duZXJzX2dyb3VwJ1xyXG4gICAgIH1cclxuICAgICB0aGlzLmNvbnRyb2xzW3R5cGVGaWVsZFtmaWVsZE5hbWVdXT8ubWFya0FzVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hSb2xlcygpIHtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0Um9sZXMoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmxpc3RzLlJPTEVTID0gcmVzO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRTeXN0ZW1WYWwgPSB0aGlzLmxpc3RzPy5ST0xFUz8uZGF0YT8uZmlsdGVyKChlbGU6IGFueSkgPT4gKGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdrZXkgYWRtaW4nIHx8IGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdhZG1pbicpKT8ubWFwKChlbGU6YW55KSA9PiBlbGU/Ll9pZCk7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbCA9IHRoaXMubGlzdHM/LlJPTEVTPy5kYXRhPy5maWx0ZXIoKGVsZTogYW55KSA9PiAoZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2tleSBhZG1pbicgfHwgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2FkbWluJykpO1xyXG4gICAgICB0aGlzLmxpc3RzLlNZU1RFTV9ST0xFX0lEUyA9IGRlZmF1bHRTeXN0ZW1WYWw7XHJcbiAgICAgICAgaWYodGhpcy5tb2RlICE9PSAnRURJVCcpe1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCBkZWZhdWx0VmFsKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hHcm91cHNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9XHJcbiAgICB9KVxyXG4gIH1cclxuICAvL2ZldGNoIHRoZSBsaXN0IG9mIHJlc3BvbnNpYmlsaXRpZXMgY2VudGVyXHJcbiAgZmV0Y2hSQygpIHtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5saXN0cy5SQyA9IHJlcztcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIGZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKGNhbGxlZEZyb20/OiBhbnkpIHtcclxuICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IHRoaXMuY3VycmVudFVzZXIoKTtcclxuICAgIGNvbnN0IHJvbGVJZHMgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCk7XHJcbiAgIC8vIGlmIChmZXRjaEFsbCkge1xyXG4gICAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZVVzZXJzKHJvbGVJZHMpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpc1VzZXJGaW5kID0gcmVzPy5kYXRhPy5zb21lKCAocmVzOiBhbnkpID0+IHJlcz8ubWVtYmVyX2lkID09PSBsb2dnZWRJblVzZXI/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgICBpZighaXNVc2VyRmluZCkge1xyXG4gICAgICAgICAgICByZXM/LmRhdGE/LnB1c2gobG9nZ2VkSW5Vc2VyKTtcclxuICAgICAgICAgICAgcmVzLnRvdGFsX2l0ZW1zID0gcmVzPy50b3RhbF9pdGVtcyArIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLk9XTkVSUyA9IHJlcztcclxuICAgICAgICAgIHRoaXMubGlzdHMuQVBQUk9WRVJTID0gcmVzO1xyXG4gICAgICAgICAgaWYoIXJlcz8uZGF0YT8ubWFwKChlbGU6YW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk/LmluY2x1ZGVzKHRoaXMuY29udHJvbHMucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWVbMF0/Lm1lbWJlcl9pZCkpe1xyXG4gICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIFtdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzPy5hbGxfdXNlcl9pbl9yb2xlPy52YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCByZXM/LmRhdGEpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0T3duZXJzKHJlcz8uZGF0YSwgY2FsbGVkRnJvbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7IH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGZldGNoR3JvdXBzQXNzb2NpYXRlZFdpdGhSb2xlcygpe1xyXG4gICAgY29uc3Qgcm9sZUlkcyA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcclxuICAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZUdyb3Vwcyhyb2xlSWRzKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6KHJlczphbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMubGlzdHMuT1dORVJTX0dST1VQUyA9IHJlcztcclxuICAgICAgICAgIGNvbnN0IHJvbGVJZHM6IEFycmF5PHN0cmluZz4gID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZS5tYXAoKGVsZTogYW55KSA9PiBlbGUuX2lkKVxyXG4gICAgICAgICBjb25zdCBncm91cERldGFpbHMgPSAgdGhpcy5jb250cm9scy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWUuZmlsdGVyKChyb2xlSWQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZihyb2xlSWQucm9sZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGlzU2FtZVJvbGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICByb2xlSWQucm9sZXMuZm9yRWFjaCgocm9sZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZihyb2xlSWRzLmluY2x1ZGVzKHJvbGUucm9sZUlkKSkge1xyXG4gICAgICAgICAgICAgICAgICBpc1NhbWVSb2xlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgIGlmKGlzU2FtZVJvbGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByb2xlSWQ7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCBncm91cERldGFpbHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgIH0pXHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0T3duZXJzKHVzZXJMaXN0OiBhbnksIGNhbGxlZEZyb20/OiBhbnkpIHtcclxuICAgIGNvbnN0IGxvZ2dlZEludXNlciA9IHRoaXMuY3VycmVudFVzZXIoKTtcclxuICAgIGNvbnN0IGRlZmF1bHRPd25lciA9IHVzZXJMaXN0LmZpbHRlcigoZWxlOiBhbnkpID0+IFsnQURNSU4nLCAnS0VZX0FETUlOJ10uaW5jbHVkZXMoZWxlPy51c2VyX3JvbGUpICYmIGVsZT8ubWVtYmVyX2lkICE9IGxvZ2dlZEludXNlcj8ubWVtYmVyX2lkKTtcclxuICAgIHRoaXMubGlzdHMuTk9OX1JFTU9WQUJMRV9PV05FUlMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChbLi4uW2xvZ2dlZEludXNlcl0sIC4uLmRlZmF1bHRPd25lcl0sICdtZW1iZXJfaWQnKTtcclxuICAgIC8vIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIHRoaXMubGlzdHMuTk9OX1JFTU9WQUJMRV9PV05FUlMpO1xyXG4gICAgY29uc3QgcHJlU2VsZWN0ZWRVc2VycyA9IHRoaXMuZ2V0UHJlU2VsZWN0ZWRPd25lcnModGhpcy5jb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlLCB1c2VyTGlzdCk7XHJcbiAgICBpZihjYWxsZWRGcm9tICE9PSAnZ2V0UHJvZ3JhbURldGFpbHMnKSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIHByZVNlbGVjdGVkVXNlcnM/Lmxlbmd0aCA/IHByZVNlbGVjdGVkVXNlcnMgOiB0aGlzLmxpc3RzLk5PTl9SRU1PVkFCTEVfT1dORVJTKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFByZVNlbGVjdGVkT3duZXJzKHByZXZpb3VzU2VsZWN0ZWRVc2VyczogYW55LCBjdXJyZW50VXNlcnM6IGFueSkge1xyXG4gICAgbGV0IGZpbmFsVXNlcnMgPSBbXTtcclxuICAgIGZpbmFsVXNlcnMgPSBwcmV2aW91c1NlbGVjdGVkVXNlcnM/LmZpbHRlcigocHJldmlvdXM6IGFueSkgPT4gY3VycmVudFVzZXJzPy5zb21lKChjdXJyZW50IDogYW55KSA9PiBwcmV2aW91cz8ubWVtYmVyX2lkID09PSBjdXJyZW50Py5tZW1iZXJfaWQpKTtcclxuICAgIHJldHVybiBmaW5hbFVzZXJzO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hPcmdhbml6YXRpb25Vc2VycyhkYXRhPzogYW55KXtcclxuICAgIHRoaXMubGlzdExvYWRpbmdTdGF0ZS5VU0VSUyA9IHRydWU7XHJcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsT3JnVXNlcigpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6KHJlczphbnkpPT57XHJcbiAgICAgICAgdGhpcy5saXN0cy5BTExfVVNFUiA9IHJlcztcclxuICAgICAgICB0aGlzLmxpc3RzLkFTU0lHTkVFUyA9IHJlcztcclxuICAgICAgICB0aGlzLmxpc3RzLlJFVklFV0VSUyA9IHJlcztcclxuICAgICAgICB0aGlzLmxpc3RzLk9WRVJTRUVSUyA9IHJlcztcclxuICAgICAgICBpZih0aGlzLm1vZGUgIT09J0VESVQnKXtcclxuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHJlcztcclxuICAgICAgICB9ZWxzZSBpZih0aGlzLm1vZGUgPT09ICdFRElUJyl7XHJcbiAgICAgICAgICAgaWYoIXRoaXMuY29udHJvbHMucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSByZXM7XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICAgIGlmKCF0aGlzLmNvbnRyb2xzLnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gcmVzO1xyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgICBpZighdGhpcy5jb250cm9scy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHJlcztcclxuICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdGUuVVNFUlMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOigpPT57dGhpcy5saXN0TG9hZGluZ1N0YXRlLlVTRVJTID0gZmFsc2U7fVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICBmZXRjaE9yZ2FuaXphdGlvbkdyb3VwKGRhdGE/OiBhbnkpe1xyXG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaENvbXBsaWFuY2VHcm91cHMoKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICAgdGhpcy5saXN0cy5BTExfR1JPVVAgPSByZXM7XHJcblxyXG4gICAgICAgICB0aGlzLmxpc3RzLkFTU0lHTkVFU19HUk9VUCA9IHJlcztcclxuICAgICAgICAgdGhpcy5saXN0cy5SRVZJRVdFUlNfR1JPVVAgPSByZXM7XHJcblxyXG4gICAgICAgICB0aGlzLmxpc3RzLk9WRVJTRUVSU19HUk9VUCA9IHJlcztcclxuXHJcbiAgICAgICAgIGlmKHRoaXMubW9kZSAhPT0nRURJVCcpe1xyXG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IHJlcztcclxuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID0gcmVzO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgIGVycm9yOihlcnI6YW55KT0+e31cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBmaWxlVXBsb2FkVHJhY2tlciA9IHtcclxuICAgIGRlc2NyaXB0aW9uOiBbXSxcclxuICAgIG9iamVjdGl2ZTogW11cclxuICB9XHJcblxyXG4gIHNlbGVjdEZpbGUodHlwZTogYW55LCBmaWxlczogYW55KSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBmaWxlcy5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgY29uc3QgbmFtZSA9IGZpbGVzW2ldLmZpbGUubmFtZSA/PyAnJztcclxuICAgICAgdGhpcy51cGxvYWRGaWxlcyh0eXBlLCBmaWxlc1tpXS5maWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwbG9hZEZpbGVzKHR5cGU6ICdERVNDUklQVElPTicgfCAnT0JKRUNUSVZFJywgZmlsZTogYW55KSB7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XHJcbiAgICBjb25zdCBkZXN0aW5hdGlvblN0cmluZyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKS50b1N0cmluZygpO1xyXG4gICAgY29uc3QgZHVtbXlGaWxlID0ge1xyXG4gICAgICBmaWxlX3VybF9wYXRoOiBgJHtmaWxlPy5uYW1lfWAsXHJcbiAgICAgIG5hbWU6IGAke2ZpbGU/Lm5hbWV9YCxcclxuICAgICAgdXBsb2FkaW5nOiB0cnVlLFxyXG4gICAgICBvcmdfZmlsZTogYCR7ZmlsZT8ubmFtZX1gXHJcbiAgICB9XHJcbiAgICBpZiAodHlwZSA9PT0gJ0RFU0NSSVBUSU9OJykge1xyXG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCBbLi4uZGVzY3JpcHRpb24sIC4uLltkdW1teUZpbGVdXSlcclxuICAgICAgdGhpcy5wcm9ncmFtU2VydmljZS51cGxvYWRGaWxlcyhmb3JtRGF0YSwgZGVzdGluYXRpb25TdHJpbmcpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xyXG4gICAgICAgICAgbGV0IGRlc2NyaXB0aW9uSW5kZXggPSBkZXNjcmlwdGlvbi5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlID09PSByZXM/Lm9yZ19maWxlKTtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uW2Rlc2NyaXB0aW9uSW5kZXhdID0gcmVzXHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKSlcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgIT09IGZpbGU/Lm5hbWUpO1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCB0aGlzLnVuaXF1ZUJ5UHJvcChkZXNjcmlwdGlvbiwgJ29yZ19maWxlJykpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnT0JKRUNUSVZFJykge1xyXG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCBbLi4uZGVzY3JpcHRpb24sIC4uLltkdW1teUZpbGVdXSlcclxuICAgICAgdGhpcy5wcm9ncmFtU2VydmljZS51cGxvYWRGaWxlcyhmb3JtRGF0YSwgZGVzdGluYXRpb25TdHJpbmcpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xyXG4gICAgICAgICAgbGV0IGRlc2NyaXB0aW9uSW5kZXggPSBkZXNjcmlwdGlvbi5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlID09PSByZXM/Lm9yZ19maWxlKTtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uW2Rlc2NyaXB0aW9uSW5kZXhdID0gcmVzXHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKSlcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgIT09IGZpbGU/Lm5hbWUpO1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCB0aGlzLnVuaXF1ZUJ5UHJvcChkZXNjcmlwdGlvbiwgJ29yZ19maWxlJykpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGRlbGV0ZUF0dGFjaG1lbnQodHlwZTogJ0RFU0NSSVBUSU9OJyB8ICdPQkpFQ1RJVkUnLCBmaWxlOiBhbnkpIHtcclxuICAgIGlmICh0eXBlID09PSAnREVTQ1JJUFRJT04nKSB7XHJcbiAgICAgIGxldCBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xyXG4gICAgICBpZiAoZGVzY3JpcHRpb24pIHtcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgIT09IGZpbGU/Lm9yZ19maWxlKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIGRlc2NyaXB0aW9uKVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdPQkpFQ1RJVkUnKSB7XHJcbiAgICAgIGxldCBvYmplY3RpdmUgPSB0aGlzLmNvbnRyb2xzPy5vYmplY3RpdmVfYXR0YWNobWVudHM/LnZhbHVlID8/IFtdO1xyXG4gICAgICBpZiAob2JqZWN0aXZlKSB7XHJcbiAgICAgICAgb2JqZWN0aXZlID0gb2JqZWN0aXZlLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgIT09IGZpbGU/Lm9yZ19maWxlKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIG9iamVjdGl2ZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdEFsbFJvbGVPd25lcihldnQ6IGFueSkge1xyXG4gICAgLy9uZWVkIHRvIGZldGNoIGFsbCB0aGUgdXNlcnMgZm9yIGFsbCB0aGUgc2VsZWN0ZWQgcm9sZXNcclxuICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IHRoaXMuY3VycmVudFVzZXIoKTtcclxuICAgIGxldCByb2xlSWQgPSBbXTtcclxuICAgIGxldCB1c2VyOmFueTtcclxuICAgIGlmKGV2dD8udGFyZ2V0Py5jaGVja2VkKXtcclxuICAgICAgIHJvbGVJZCA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcclxuICAgICAgIGlmKHRoaXMuZmVhdHVyZWZsYWdHcm91cHMpe1xyXG4gICAgICAgICB1c2VyPXRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcCgoZWxlOmFueSk9PmVsZT8uX2lkKTtcclxuICAgICAgICAgdGhpcy5jb250cm9scy5wcm9ncmFtX293bmVyc19ncm91cC52YWx1ZT0gdXNlcjtcclxuXHJcbiAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWUgPT0+XCIsIHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWUpO1xyXG4gICAgICByb2xlSWQgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlPy5tYXAoKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYoWydrZXkgYWRtaW4nLCAnYWRtaW4nXS5pbmNsdWRlcyhlbGUucm9sZU5hbWUudG9Mb3dlckNhc2UoKSkgKSB7XHJcbiAgICAgICAgICByZXR1cm4gZWxlPy5faWRcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coXCJ0aGlzLmNvbnRyb2xzLnByb2dyYW1fb3duZXJzPy52YWx1ZSA9PT5cIixyb2xlSWQsICB0aGlzLmNvbnRyb2xzLnByb2dyYW1fb3duZXJzPy52YWx1ZSlcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZmV0Y2hBbGxSb2xlVXNlcnMocm9sZUlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy51bmlxdWVCeVByb3AoWy4uLltsb2dnZWRJblVzZXJdLCAuLi5yZXM/LmRhdGFdLCAnbWVtYmVyX2lkJylcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCB1c2VyKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaEFsbFJvbGVHcm91cHModXNlcikuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVuaXF1ZUJ5UHJvcChbLi4ucmVzPy5kYXRhXSwgJ2dyb3VwX2lkJylcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCB1c2VyKTtcclxuICAgICAgICB9XHJcbiAgIH0pXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIFJldHVybnMgdGhlIHVuaXF1ZSBhcnJheSBvZiBvYmplY3QgYmFzZWQgb24gdW5pcXVlIGtleVxyXG4gICAqIEBwYXJhbSBhcnJheVxyXG4gICAqIEBwYXJhbSBrZXlcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHVuaXF1ZUJ5UHJvcChhcnJheTogYW55LCBrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oXHJcbiAgICAgIGFycmF5XHJcbiAgICAgICAgLnJlZHVjZShcclxuICAgICAgICAgIChhY2M6IGFueSwgaXRlbTogYW55KSA9PiAoXHJcbiAgICAgICAgICAgIGl0ZW0gJiYgaXRlbVtrZXldICYmIGFjYy5zZXQoaXRlbVtrZXldLCBpdGVtKSxcclxuICAgICAgICAgICAgYWNjXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgbmV3IE1hcCgpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC52YWx1ZXMoKVxyXG4gICAgKTtcclxuICB9XHJcbiAgc2V0TGlzdChsaXN0OiBhbnlbXSwgaWRzOiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xyXG4gICAgaWRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGxpc3QuZmluZEluZGV4KChsaXN0RWxlbWVudDogYW55KSA9PiBsaXN0RWxlbWVudFtrZXldID09IGVsZW1lbnQpO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgIHNhdmVQcm9ncmFtKCl7XHJcbiAgICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgIGxldCBwYXlsb2FkID0gIHRoaXMucHJvZ3JhbVNlcnZpY2UuYnVpbGRQYXlsb2FkKHRoaXMucHJvZ3JhbUZvcm0sdGhpcyk7XHJcbiAgICAgIGlmKHBheWxvYWQgJiYgdGhpcy5tb2RlID09PSAnQ1JFQVRFJyl7XHJcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2Uuc2F2ZVByb2dyYW0ocGF5bG9hZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkID0gcmVzLl9pZFxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjooZXJyOmFueSk9PntcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgICAgICBpZihlcnI/LmVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnQ2F0ZWdvcnkgYWxyZWFkeSBleGlzdCcpKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRoaXMuaXNOYW1lRXhpc3RzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgIH1cclxuICAgICAgfSlcclxuICAgfVxyXG4gICBpZihwYXlsb2FkICYmIHRoaXMubW9kZSA9PT0gJ0VESVQnKXtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UudXBkYXRlUHJvZ3JhbShwYXlsb2FkLCB0aGlzLnByb2dyYW1JZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkID0gcmVzLl9pZDtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6KGVycjphbnkpPT57XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgICAgICAgaWYoZXJyPy5lcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoJ0NhdGVnb3J5IGFscmVhZHkgZXhpc3QnKSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aGlzLmlzTmFtZUV4aXN0cyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gfVxyXG4gIH1cclxuXHJcbiAgYWN0aW9uKGV2ZW50OiBzdHJpbmcpIHtcclxuICAgIGNvbnNvbGUubG9nKGV2ZW50KVxyXG4gICAgc3dpdGNoIChldmVudCkge1xyXG4gICAgICBjYXNlICdhZGRNb3JlJzpcclxuICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd2aWV3UHJvZ3JhbSc6XHJcbiAgICAgICB0aGlzLnZpZXdQcm9ncmFtcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmlld1Byb2dyYW1zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcclxuICAgIGxldCB1cmw6IHN0cmluZztcclxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICB1cmwgPSAnaHR0cDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVybCA9ICdodHRwczovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgdXJsICs9ICcvcHJvZ3JhbS13b3Jrcm9vbT9pZD0nICsgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdXJsICs9ICcvcHJvZ3JhbS9wcm9ncmFtLXdvcmtyb29tP2lkPScgKyB0aGlzLmNyZWF0ZWRQcm9ncmFtSWQ7XHJcbiAgICB9XHJcblxyXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICBjb25zb2xlLmxvZyhcInRoaXMuY3JlYXRlZFByb2dyYW1JZCA9PT5cIiwgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkKVxyXG5cclxuICB9XHJcbiAgcmVzZXRGb3JtKCl7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgY29uc3QgIERFRkFVTFRfVkFMVUVTID0ge1xyXG4gICAgcHJvZ3JhbV90eXBlOjEsXHJcbiAgICBwcm9ncmFtX25hbWU6JycsXHJcbiAgICBwcm9ncmFtX2Rlc2NyaXB0aW9uOicnLFxyXG4gICAgcHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50czpbXSxcclxuICAgIHByb2dyYW1fb2JqZWN0aXZlOicnLFxyXG4gICAgcHJvZ3JhbV9vYmplY3RpdmVfYXR0YWNobWVudHM6W10sXHJcbiAgICBwcm9ncmFtX3JvbGVzOltdLFxyXG4gICAgYWxsX3VzZXJfaW5fcm9sZTpmYWxzZSxcclxuICAgIHByb2dyYW1fb3duZXJzOltdLFxyXG4gICAgcHJvZ3JhbV9vd25lcnNfZ3JvdXA6W10sXHJcbiAgICBwcm9ncmFtX2FwcHJvdmVyOltdLFxyXG4gICAgcGVyZm9ybWFuY2VfY2FsY3VsYXRpb246IFwiUEFTVF9FVkVOVFwiLFxyXG4gICAgcmVjdXJyaW5nX2ZyZXF1ZW5jeTpmYWxzZSxcclxuICAgIGxvY2tfc2NvcGVfY2hhbmdlOmZhbHNlLFxyXG4gICAgZnJhbWV3b3JrOltdLFxyXG4gICAgcmM6W10sXHJcbiAgICBwcm9ncmFtX2Fzc2lnbmVlOiBbXSxcclxuICAgIHByb2dyYW1fYXNzaWduZWVfZ3JvdXA6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlOiBbXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cDogW10sXHJcbiAgICBhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhOiAnQUxMJyxcclxuICAgIHByb2dyYW1fcmV2aWV3ZXI6IFtdLFxyXG4gICAgcHJvZ3JhbV9yZXZpZXdlcl9ncm91cDogW10sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwOiBbXSxcclxuICAgIHJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE6ICdTRVFVRU5USUFMJyxcclxuICAgIHByb2dyYW1fb3ZlcnNlZXI6IFtdLFxyXG4gICAgcHJvZ3JhbV9vdmVyc2Vlcl9ncm91cDogW10sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwOiBbXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cDogW10sXHJcbiAgICBwcm9ncmFtX2Fzc2Vzc21lbnRzOiBbXSxcclxuICAgIGV2aWRlbmNlX3JlcXVpcmVkOiBmYWxzZSxcclxuICAgIGFsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZTogZmFsc2UsXHJcbiAgICBjdXN0b21fZmllbGRzOiBbXSxcclxuICAgIHByb2dyYW1fc3RhdGU6IDAsXHJcbiAgIH1cclxuICAgdGhpcy5yZXNldEFkZGl0aW9uYWxPcHRpb24oKTtcclxuICAgdGhpcy5wcm9ncmFtRm9ybS5yZXNldCgpO1xyXG4gICB0aGlzLnByb2dyYW1Gb3JtLnBhdGNoVmFsdWUoREVGQVVMVF9WQUxVRVMpO1xyXG4gICB0aGlzLmVkaXRvckRhdGEgID0ge1xyXG4gICAgcHJvZ3JhbU9iamVjdGl2ZTogJycsXHJcbiAgICBwcm9ncmFtRGVzY3JpcHRpb246ICcnXHJcbiAgfVxyXG4gIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgdGhpcy5pc05hbWVFeGlzdHMgPSBmYWxzZTtcclxuICAgdGhpcy5mZXRjaFJvbGVzKCk7XHJcbiAgIHRoaXMucmVmcmVzaEZvcm0uZW1pdCh0cnVlKTtcclxuICAgdGhpcy5mb3JtLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGNsb3NlU21pbGV5KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6ICcnLCBjb25maXJtOiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBwcm9ncmFtIGRldGFpbHMgd2hlbiB1c2VyIGlzIHRyeWluZyB0byBlZGl0IHByb2dyYW1cclxuICAgKi9cclxuICBnZXRQcm9ncmFtRGV0YWlscygpIHtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0UHJvZ3JhbSh0aGlzLnByb2dyYW1JZCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX25hbWUnLCByZXM/Lm5hbWUpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV90eXBlJywgcmVzPy5wcm9ncmFtVHlwZSk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX29iamVjdGl2ZScsIHJlcz8ucHJvZ3JhbV9vYmplY3RpdmU/LnRleHQpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgnYWxsX3VzZXJfaW5fcm9sZScsIHJlcz8uYWxsX3VzZXJfaW5fcm9sZSk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgcmVzPy5kZXNjcmlwdGlvbj8uYXR0YWNobWVudHMpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vYmplY3RpdmVfYXR0YWNobWVudHMnLCByZXM/LnByb2dyYW1fb2JqZWN0aXZlPy5hdHRhY2htZW50cyk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbicsIHJlcz8uY2FsY3VsYXRlX3Bhc3RfdXBjb21pbmdfZXZlbnQpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmVjdXJyaW5nX2ZyZXF1ZW5jeScsIHJlcz8ucHJvZ3JhbV9mcmVxdWVuY3kpO1xyXG4gICAgICBpZihyZXM/LnByb2dyYW1fZnJlcXVlbmN5ICYmIHRoaXMubW9kZSA9PT0gJ0VESVQnICYmICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSkge1xyXG4gICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5QUk9HUkFNX0ZSRVFVRU5DWSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgnbG9ja19zY29wZV9jaGFuZ2UnLCByZXM/LmxvY2tfc2NvcGUpO1xyXG4gICAgICBpZihyZXM/LmxvY2tfc2NvcGUgJiYgKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpKSB7XHJcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlNDT1BFX0NIQU5HRVMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fc3RhdGUnLCByZXM/LnN0YXRlKTtcclxuICAgICAgY29uc3QgcmMgPSByZXMucmNfZGV0YWlscy5tYXAoKGVsZTphbnkpID0+IHtyZXR1cm4gey4uLmVsZSxpdGVtX25hbWUgOiBlbGU/LnJjX25hbWUsaXRlbV9pZDogZWxlPy5yY19pZH19KVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmMnLHJjKTtcclxuICAgICAgaWYocmVzPy5yY19kZXRhaWxzICYmIHJlcz8ucmNfZGV0YWlscz8ubGVuZ3RoICYmICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSkge1xyXG4gICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5SQyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZXZpZGVuY2VfcmVxdWlyZWQnLCByZXM/LmV2aWRlbmNlX3VwbG9hZF9mbGFnKTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2FsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZScsIHJlcz8uaXNfa2V5X2V2aWRlbmNlKTtcclxuICAgICAgaWYoKHJlcz8uZXZpZGVuY2VfdXBsb2FkX2ZsYWcgfHwgcmVzPy5pc19rZXlfZXZpZGVuY2UpICYmICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSl7XHJcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkZPUk1BVEVfRVZJREVOQ0UgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhJywgcmVzLmRlZmF1bHRfYXNzaWduZWVfdHlwZSk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdyZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhJywgcmVzLmRlZmF1bHRfcmV2aWV3ZXJzX3R5cGUpO1xyXG5cclxuICAgICAgdGhpcy5lZGl0b3JEYXRhLnByb2dyYW1EZXNjcmlwdGlvbiA9IHJlcy5kZXNjcmlwdGlvbj8udGV4dDtcclxuICAgICAgdGhpcy5lZGl0b3JEYXRhLnByb2dyYW1PYmplY3RpdmUgPSByZXMucHJvZ3JhbV9vYmplY3RpdmU/LnRleHQ7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdmcmFtZXdvcmsnLHsuLi5yZXMuZnJhbWV3b3JrX2RldGFpbHMsLi4ue19pZDpyZXM/LmZyYW1ld29ya19kZXRhaWxzPy5mcmFtZXdvcmtfaWR9fSlcclxuICAgICAgY29uc3Qgcm9sZSA9IHJlcz8ucm9sZXM/Lm1hcCgoZWxlOmFueSkgPT4gIHtyZXR1cm4ge19pZDplbGU/LnJvbGVJZCxyb2xlTmFtZTplbGU/LnJvbGVOYW1lLCBsaWNlbnNlVHlwZTplbGU/LmxpY2Vuc2VUeXBlICxwZXJtaXNzaW9uR3JvdXBOYW1lIDplbGU/LnBlcm1pc3Npb25Hcm91cE5hbWV9fSlcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCByb2xlKTtcclxuICAgICAgaWYocmVzPy5yb2xlcyAmJiByZXM/LnJvbGVzPy5sZW5ndGggICYmIHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJPTEVTID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZihyZXMuYXNzZXNzbWVudERhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgcmVzLmFzc2Vzc21lbnREYXRhID0gcmVzLmFzc2Vzc21lbnREYXRhLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7Li4uZWxlLCBhc3Nlc3NtZW50SWRzOiBlbGU/LmFzc2Vzc21lbnRzLm1hcCgoYXNzZXNzOmFueSkgPT4geyByZXR1cm4gey4uLmFzc2VzcyxpZDphc3Nlc3M/Ll9pZH19KX19XHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3Nlc3NtZW50cycsIHJlcy5hc3Nlc3NtZW50RGF0YSk7XHJcbiAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0VTU01FTlQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihyZXMuY3VzdG9tX2ZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnY3VzdG9tX2ZpZWxkcycsIHJlcy5jdXN0b21fZmllbGRzKTtcclxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQ1VTVE9NX0ZJRUxEUyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXNBcHByb3ZlckRpc2FibGVkID0gcmVzPy5pc0FwcHJvdmVyRGlzYWJsZWQgPz8gZmFsc2U7XHJcbiAgICAgIGlmKHRoaXMuaXNBcHByb3ZlckRpc2FibGVkKXtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpPT57dGhpcy5kaXNhYmxlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMuZW1pdChbJ0FQUFJPVkVSJ10pfSw1MDApXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnBvcHVsYXRlTWVtYmVycyhyZXMpO1xyXG4gICAgICB0aGlzLnBvcHVsYXRlR3JvdXBzKHJlcyk7XHJcbiAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoJ2dldFByb2dyYW1EZXRhaWxzJyk7XHJcbiAgICAgIHRoaXMuZmV0Y2hHcm91cHNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XHJcbiAgICAgIHRoaXMuZmV0Y2hPcmdhbml6YXRpb25Hcm91cCgpO1xyXG4gICAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uVXNlcnMoKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbnBvcHVsYXRlTWVtYmVycyhyZXM6YW55KXtcclxuICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgY29uc3QgaWRzPSBbXHJcbiAgICAuLi5uZXcgU2V0KFtcclxuICAgICAgLi4uKHJlcz8ub3duZXJzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uYXBwcm92ZXJzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uYXNzaWduZWVfaWRzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9pZHMgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5yZXZpZXdlcnMgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5kZWZhdWx0X3Jldmlld2VycyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/Lm92ZXJzZWVycz8uY2NfZW1haWwgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWwgPz8gW10pLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWwgPz8gW10pLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlKVxyXG4gICAgIF0pXVxyXG4gICAgICAgdGhpcy5wcm9ncmFtU2VydmljZS5nZXRNZW1lYmVyQnlJZHMoaWRzKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDoocmVzcG9uc2U6YW55KT0+e1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZihyZXMub3duZXJzICYmIHJlcz8ub3duZXJzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IG93bmVycyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5vd25lcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCBvd25lcnMpO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1dORVJTID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzLmFwcHJvdmVycyAmJiByZXM/LmFwcHJvdmVycz8ubGVuZ3RoICYmICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFwcHJvdmVycyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5hcHByb3ZlcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIGFwcHJvdmVycyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFQUFJPVkVSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LmFzc2lnbmVlX2lkcyAmJiByZXM/LmFzc2lnbmVlX2lkcz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5hc3NpZ25lZV9pZHMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3NpZ25lZScsIGFzc2lnbmVlKTtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gYXNzaWduZWU7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0lHTkVFUyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2lkcyAmJiByZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIGFzc2lnbmVlKTtcclxuICAgICAgICAgICAgICBpZih0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LnJldmlld2VycyAmJiByZXM/LnJldmlld2Vycz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCByZXZpZXdlcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8ucmV2aWV3ZXJzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcmV2aWV3ZXInLCByZXZpZXdlcnMpO1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSByZXZpZXdlcnM7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LmRlZmF1bHRfcmV2aWV3ZXJzICYmIHJlcz8uZGVmYXVsdF9yZXZpZXdlcnM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmV2aWV3ZXJzID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfcmV2aWV3ZXJzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIHJldmlld2Vycyk7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHJlcz8ub3ZlcnNlZXJzICYmIHJlcz8ub3ZlcnNlZXJzPy5jY19lbWFpbD8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNjID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/Lm92ZXJzZWVycz8uY2NfZW1haWwuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyJywgY2MpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IGNjO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzICYmIChyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbD8ubGVuZ3RoIHx8IHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWw/Lmxlbmd0aCkpe1xyXG4gICAgICAgICAgICAgIGlmKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdENDID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIGRlZmF1bHRDQyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWw/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmYWlsQ0MgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWwuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJywgZmFpbENDKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9WRVJTRUVSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICB9KVxyXG4gICAgICAgdGhpcy5jaGVja1Byb2dyYW1PcHRpb25GaWVsZCgpO1xyXG59XHJcblxyXG5cclxucG9wdWxhdGVHcm91cHMocmVzOmFueSl7XHJcbiAgY29uc3QgaWRzPSBbXHJcbiAgICAuLi5uZXcgU2V0KFtcclxuICAgICAgLi4uKHJlcz8ub3duZXJzX2dyb3VwID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uYXNzaWduZWVfZ3JvdXBfaWRzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHMgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3VwcyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LnJldmlld2VyX2dyb3VwX2lkcyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3VwcyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3VwcyA/PyBbXSlcclxuICAgICBdKV1cclxuICAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0TWVtYmVyQnlHcm91cHMoaWRzKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDoocmVzcDphbnkpPT57XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzcD8uZGF0YTtcclxuICAgICAgICAgICAgaWYocmVzLm93bmVyc19ncm91cCAmJiByZXM/Lm93bmVyc19ncm91cD8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCBvd25lcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8ub3duZXJzX2dyb3VwPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVyc19ncm91cCcsIG93bmVycyk7XHJcbiAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHJlcy5hc3NpZ25lZV9ncm91cF9pZHMgJiYgcmVzPy5hc3NpZ25lZV9ncm91cF9pZHM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgY29uc3QgYXNzaWduZWUgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8uYXNzaWduZWVfZ3JvdXBfaWRzPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWVfZ3JvdXAnLCBhc3NpZ25lZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IGFzc2lnbmVlO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcyAmJiByZXM/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlKTtcclxuICAgICAgICAgICAgICBpZih0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzPy5yZXZpZXdlcl9ncm91cF9pZHMgJiYgcmVzPy5yZXZpZXdlcl9ncm91cF9pZHM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8ucmV2aWV3ZXJfZ3JvdXBfaWRzPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcmV2aWV3ZXJfZ3JvdXAnLCByZXZpZXdlcik7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA9IHJldmlld2VyO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkVWSUVXRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzICYmIHJlcz8uZGVmYXVsdF9yZXZpZXdlcl9ncm91cF9pZHM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSByZXNwb25zZT8uZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cCcsIHJldmlld2VyKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEudmFsdWUgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPjAgPyAnQU5ZT05FJzp0aGlzLmNvbnRyb2xzPy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZTtcclxuICAgICAgICAgICAgICBpZih0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzPy5vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3VwcyAmJiByZXM/Lm92ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IG92ZXJzZWVyR3JvdXAgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8ub3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHM/LmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vdmVyc2Vlcl9ncm91cCcsIG92ZXJzZWVyR3JvdXApO1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPSBvdmVyc2Vlckdyb3VwO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHMgJiYgcmVzPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRPdmVyc2Vlckdyb3VwID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHM/LmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwJywgZGVmYXVsdE92ZXJzZWVyR3JvdXApO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3VwcyAmJiByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3Vwcz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0T3ZlcnNlZXJGYWlsdXJlR3JvdXAgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXAnLCBkZWZhdWx0T3ZlcnNlZXJGYWlsdXJlR3JvdXApO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gQXMgb2Ygbm93IGdyb3VwcyBoYXMgYmVlbiByZW1vdmVkIGZyb20gcmV2aWV3ZXIgYW5kIG92ZXJzZWVlciBpZiB0aGlzIGdyb3VwIGZlYXR1cmUgZ2V0cyBpbmNvcGVyYXRlZCBpblxyXG4gICAgICAgICAgLy9mdXR1cmUgbmVlZCB0byBhZGQgZ3JvdXAgY29uZGl0aW9uIGhlcmUgdG8gcHJlcG9wdWxhdGUgdGhlIGRhdGEgd2hpbGUgZWRpdGluZy5cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuY2hlY2tQcm9ncmFtT3B0aW9uRmllbGQoKTtcclxuICAgICAgfVxyXG5cclxuICByZXNldEFkZGl0aW9uYWxPcHRpb24oKSB7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUk9MRVMgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PV05FUlMgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BUFBST1ZFUiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlBST0dSQU1fRlJFUVVFTkNZID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uU0NPUEVfQ0hBTkdFUyA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJDID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkVWSUVXRVIgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PVkVSU0VFUiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0VTU01FTlQgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5GT1JNQVRFX0VWSURFTkNFID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQ1VTVE9NX0ZJRUxEUyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tQcm9ncmFtT3B0aW9uRmllbGQoKTogYW55IHtcclxuICAgIGNvbnN0IGNvZGUgPSBbJ1BST0dSQU1fRlJFUVVFTkNZJywgJ1NDT1BFX0NIQU5HRVMnLCAnUkMnLCAnQVNTSUdORUVTJywgJ1JFVklFV0VSJywgJ09WRVJTRUVSJywgJ0FTU0VTU01FTlQnLCAnRk9STUFURV9FVklERU5DRScsICdDVVNUT01fRklFTERTJ11cclxuICAgIGxldCBpc01vcmVPcHRpb24gPSBmYWxzZTtcclxuICAgIGNvZGUuZm9yRWFjaCggKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmKHRoaXMuYWRkaXRpb25hbE9wdGlvbltrZXldKXtcclxuICAgICAgICBpc01vcmVPcHRpb24gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5pc1Byb2dyYW1TY29wZSA9IGlzTW9yZU9wdGlvbjtcclxuICB9XHJcbiAgZW5hYmxlZmVhdHVyZSgpe1xyXG4gICAgdGhpcy5mZWF0dXJlZmxhZ3JvbGUgPSB0aGlzLmFsbG93ZWRGZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX3JvbGVfaW1wcm92ZW1lbnRzJyk7XHJcbiAgICB0aGlzLmlzQXNjZW50QWxsb3dlZCA9IHRoaXMuYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfY29tcGxpYW5jZV9mcmFtZXdvcmsnKVxyXG4gICAgdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnID0gdGhpcy5hbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wcm9ncmFtX3NpbXBsaWZ5Jyk7XHJcbiAgICB0aGlzLmZlYXR1cmVmbGFnR3JvdXBzID0gdGhpcy5hbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFwiZmZfcHJvZ3JhbV9ncm91cHNcIik7XHJcbiAgICB0aGlzLnRvb2xUaXBEYXRhLm93bmVyID0gdGhpcy5mZWF0dXJlZmxhZ3JvbGUgPyBcIk93bmVycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGEgUHJvZ3JhbS4gT25seSBPd25lcnMgY2FuIG1ha2UgY2hhbmdlcyB0byBhIFByb2dyYW0gYW5kIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLjxicj5UaGUgPHN0cm9uZz5LZXkgUG93ZXIgVXNlcjwvc3Ryb25nPiBhbmQgYWxsIDxiPlBvd2VyIFVzZXJzPC9iPiB3aWxsIGJlIHNlbGVjdGVkIGFzIHRoZSBPd25lcnMgb2YgYSBQcm9ncmFtIGJ5IGRlZmF1bHQuXCI6XCJPd25lcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhIFByb2dyYW0uIE9ubHkgT3duZXJzIGNhbiBtYWtlIGNoYW5nZXMgdG8gYSBQcm9ncmFtIGFuZCB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS48YnI+VGhlIDxzdHJvbmc+S2V5IEFkbWluPC9zdHJvbmc+IGFuZCBhbGwgPGI+QWRtaW48L2I+IHVzZXJzIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIE93bmVycyBvZiBhIFByb2dyYW0gYnkgZGVmYXVsdC5cIjtcclxuICAgIHRoaXMuZmZfcmNfbGlzdGluZyA9IHRoaXMuYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfcmNfbGlzdGluZycpO1xyXG4gIH1cclxuXHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwid29ya2Zsb3ctcHJvZ3JhbVwiICNmb3JtPlxyXG4gICAgPGZvcm0gbm92YWxpZGF0ZSBbZm9ybUdyb3VwXT1cInByb2dyYW1Gb3JtXCI+XHJcbiAgICAgICAgPCEtLSBQcm9ncmFtIENhdGVnb3J5IFR5cGUgLS0+XHJcbiAgICAgICAgPGZvcm0tZmllbGQgW2NoZWNrZWRdPVwiY29udHJvbHM/LnByb2dyYW1fdHlwZT8udmFsdWUgPiAtMVwiIFthY3RpdmVdPVwiZmFsc2VcIiBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXCJcclxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2lzc3VlLXR5cGUuc3ZnJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UFJPR1JBTSBUWVBFIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDx0YWItc2VsZWN0b3IgZm9ybUNvbnRyb2xOYW1lPVwicHJvZ3JhbV90eXBlXCIgW2Rpc3BsYXlBcnJheV09XCJjb25zdGFudHM/LmNhdGVnb3J5VHlwZVwiPjwvdGFiLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICA8IS0tIDxwICpuZ0lmPVwicHJvZ3JhbV9uYW1lPy5pbnZhbGlkXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+QWRkIGEgcHJvZ3JhbSB0eXBlPC9wPiAtLT5cclxuICAgICAgICA8L2Zvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgIDwhLS0gRnJhbWV3b3JrIC0tPlxyXG4gICAgICAgIDxmb3JtLWZpZWxkICpuZ0lmPVwiaXNBc2NlbnRBbGxvd2VkXCIgW2NoZWNrZWRdPVwiZmFsc2VcIiBbYWN0aXZlXT1cImZhbHNlXCIgW2Rpc2FibGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2NhdGVnb3J5LnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkZSQU1FV09SSzwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwhLS0gW3NlbGVjdERpdl09XCJ0cnVlXCIgLS0+XHJcbiAgICAgICAgICAgIDxpbnB1dC13aXRoLXBpbGwgIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0IGEgZnJhbWV3b3JrIHRoYXQgdGhpcyBQcm9ncmFtIHJlbGF0ZXMgdG8nXCIgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0ZSQU1FV09SSycpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImNvbnRyb2xzPy5mcmFtZXdvcmsudmFsdWU/Lm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiICpuZ0lmPVwiY2FuRnJhbWV3b3JrQ2hhbmdlXCIgKGNsaWNrKT1cInJlbW92ZSgnJywgJ0ZSQU1FV09SSycpXCI+JiN4ZTlhZTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LmZyYW1ld29yay52YWx1ZT8ubmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2NvbnRyb2xzPy5mcmFtZXdvcmsudmFsdWU/Lm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPjxpIChjbGljayk9XCJyZW1vdmUoJycsICdGUkFNRVdPUksnKVwiICpuZ0lmPVwiY2FuRnJhbWV3b3JrQ2hhbmdlXCIgY2xhc3M9XCJpY29uc1wiID4mI3hlOTBkOzwvaT4ge3tjb250cm9scz8uZnJhbWV3b3JrLnZhbHVlPy5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY2FuRnJhbWV3b3JrQ2hhbmdlXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdGUkFNRVdPUksnKVwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxyXG4gICAgICAgIDwvZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSBQcm9ncmFtIENhdGVnb3J5IE5hbWUgLS0+XHJcbiAgICAgICAgPGZvcm0tZmllbGQgW2NoZWNrZWRdPVwiY29udHJvbHM/LnByb2dyYW1fbmFtZT8udmFsdWU/LnRyaW0oKT8ubGVuZ3RoXCIgW2FjdGl2ZV09XCJmYWxzZVwiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxyXG4gICAgICAgICAgICBbaW1nXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hhdC5zdmcnXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5QUk9HUkFNIE5BTUUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0IElucHV0VHJpbSBmb3JtQ29udHJvbE5hbWU9XCJwcm9ncmFtX25hbWVcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldoYXQgaXMgdGhlIFByb2dyYW0gbmFtZT9cIj5cclxuXHJcbiAgICAgICAgICAgIDxwICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fbmFtZT8uZXJyb3JzICYmIGNvbnRyb2xzPy5wcm9ncmFtX25hbWU/LnRvdWNoZWRcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5FbnRlciBhXHJcbiAgICAgICAgICAgICAgICBuYW1lIGZvciB0aGlzIFByb2dyYW0uPC9wPlxyXG4gICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJpc05hbWVFeGlzdHNcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qcm9ncmFtIG5hbWUgYWxyZWFkeSBleGlzdHMuPC9wPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWZpbGVzIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtZmxleC13cmFwIHZ4LW10LTFcIj5cclxuICAgICAgICAgICAgICAgIDxmaWxlLXBpbGwgKm5nRm9yPVwibGV0IGF0dGFjaG1lbnQgb2YgY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlIHxzbGljZTowOjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtleHRlbnNpb25dPVwiYXR0YWNobWVudD8ub3JnX2ZpbGU/LnNwbGl0KCcuJykucG9wKClcIiBbbmFtZV09XCJhdHRhY2htZW50Py5vcmdfZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImF0dGFjaG1lbnQ/LnVwbG9hZGluZ1wiIChkZWxldGUpPVwiZGVsZXRlQXR0YWNobWVudCgnREVTQ1JJUFRJT04nLGF0dGFjaG1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8L2ZpbGUtcGlsbD5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWU/Lmxlbmd0aCA+IDJcIiBjbGFzcz1cImZpbGUtY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJ1cGxvYWRGaWxlLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlPy5sZW5ndGggLSAyfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjdXBsb2FkRmlsZSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1wLTJcIiAqbmdGb3I9XCJsZXQgYXR0YWNobWVudCBvZiBjb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWV8c2xpY2U6MlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlLXBpbGwgIFtleHRlbnNpb25dPVwiYXR0YWNobWVudD8ub3JnX2ZpbGU/LnNwbGl0KCcuJykucG9wKClcIiBbbmFtZV09XCJhdHRhY2htZW50Py5vcmdfZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImF0dGFjaG1lbnQ/LnVwbG9hZGluZ1wiIChkZWxldGUpPVwiZGVsZXRlQXR0YWNobWVudCgnREVTQ1JJUFRJT04nLGF0dGFjaG1lbnQpXCI+PC9maWxlLXBpbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDx2Y29tcGx5LWVkaXRvciBbKG5nTW9kZWwpXT1cImVkaXRvckRhdGEucHJvZ3JhbURlc2NyaXB0aW9uXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAoc2VuZFNhdmVkRmlsZXMpPVwic2VsZWN0RmlsZSgnREVTQ1JJUFRJT04nLCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uJywkZXZlbnQpXCIgW2VkaXRvckNvbmZpZ109XCJjb25zdGFudHM/LmRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgIDwvdmNvbXBseS1lZGl0b3I+XHJcblxyXG4gICAgICAgIDwvZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSBPYmplY3RpdmUgLS0+XHJcbiAgICAgICAgPGZvcm0tZmllbGQgW2NoZWNrZWRdPVwiY29udHJvbHM/LnByb2dyYW1fb2JqZWN0aXZlPy52YWx1ZT8udHJpbSgpPy5sZW5ndGhcIiBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdPQkpFQ1RJVkUnXCIgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnT0JKRUNUSVZFJ1wiXHJcbiAgICAgICAgICAgIFtpbWddPVwiJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9vYmplY3RpdmVzLnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk9CSkVDVElWRVxyXG4gICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8dmNvbXBseS1lZGl0b3IgWyhuZ01vZGVsKV09XCJlZGl0b3JEYXRhLnByb2dyYW1PYmplY3RpdmVcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgKHNlbmRTYXZlZEZpbGVzKT1cInNlbGVjdEZpbGUoJ09CSkVDVElWRScsJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRGb3JtRmllbGQoJ3Byb2dyYW1fb2JqZWN0aXZlJywkZXZlbnQsIHRydWUpXCIgW2VkaXRvckNvbmZpZ109XCJjb25zdGFudHM/Lm9iamVjdGl2ZVwiPlxyXG4gICAgICAgICAgICA8L3Zjb21wbHktZWRpdG9yPlxyXG4gICAgICAgICAgICA8IS0tIDxwICpuZ0lmPVwiIWlzT2JqZWN0aXZlVmFsaWRcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5TcGVjaWZ5IHRoZSBvYmplY3RpdmUgZm9yIHRoaXMgUHJvZ3JhbS48L3A+IC0tPlxyXG4gICAgICAgIDwvZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSBSb2xlcyAtLT5cclxuICAgICAgICA8Zm9ybS1maWVsZCAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LlJPTEVTXCIgW2NoZWNrZWRdPVwiY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlPy5sZW5ndGggXCIgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnUk9MRSdcIiBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmIGFjdGl2ZUxpc3QgIT09ICdST0xFJ1wiXHJcbiAgICAgICAgICAgIFtpbWddPVwiJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9yb2xlcy5zdmcnXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIiBpZCA9XCJwZXJtaXNzaW9uZ3JvdXBcIj57e2ZmX3JjX2xpc3RpbmcgPydQRVJNSVNTSU9OUyc6J1BFUk1JU1NJT04gR1JPVVAoUyknfX0gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cImZmX3JjX2xpc3RpbmcgPydQZXJtaXNzaW9ucyBsZXQgeW91IHNwZWNpZnkgdGhlIHVzZXJzIHRoYXQgY2FuIGJlIOKAnE93bmVyc+KAnScgKyAoYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfcHJvZ3JhbV9zaW1wbGlmeScpID8gICcgJyA6ICcgYW5kIOKAnEFwcHJvdmVyc+KAnScpICsgJ29mIGEgUHJvZ3JhbS4nOidQZXJtaXNzaW9uIGdyb3VwKHMpIGxldCB5b3Ugc3BlY2lmeSB0aGUgdXNlcnMgdGhhdCBjYW4gYmUg4oCcT3duZXJz4oCdJyArIChhbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wcm9ncmFtX3NpbXBsaWZ5JykgPyAnICcgOiAnIGFuZCDigJxBcHByb3ZlcnPigJ0nKSArICdvZiBhIFByb2dyYW0uJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIiBpZD1cIlJvbGVIZWxwVGV4dFwiPiYjeGViMTY7PC9pPjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dC13aXRoLXBpbGwgaWQ9XCJwbGFjZWhvbGRlcm5hbWVcIiBbcGxhY2Vob2xkZXJdPVwiZmZfcmNfbGlzdGluZyA/J1doaWNoIHVzZXIgcGVybWlzc2lvbnMgaGF2ZSBhY2Nlc3MgdG8gdGhpcyBwcm9ncmFtPyc6J1doaWNoIHVzZXIgcGVybWlzc2lvbiBncm91cHMgaGF2ZSBhY2Nlc3MgdG8gdGhpcyBwcm9ncmFtPydcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ1JPTEUnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKm5nSWY9XCIhbGlzdHMuU1lTVEVNX1JPTEVfSURTLmluY2x1ZGVzKGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8uX2lkKVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlWzBdLCdST0xFJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJmZWF0dXJlZmxhZ3JvbGUgJiYgY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlWzBdPy5wZXJtaXNzaW9uR3JvdXBOYW1lID8gY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlWzBdPy5wZXJtaXNzaW9uR3JvdXBOYW1lIDogY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlWzBdPy5yb2xlTmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2ZlYXR1cmVmbGFncm9sZSAmJiBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/LnBlcm1pc3Npb25Hcm91cE5hbWUgPyBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/LnBlcm1pc3Npb25Hcm91cE5hbWUgOiBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/LnJvbGVOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicm9sZS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlPy5sZW5ndGggPiAxXCI+K3t7Y29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlPy5sZW5ndGggLSAxfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPjxpICpuZ0lmPVwiIWxpc3RzLlNZU1RFTV9ST0xFX0lEUy5pbmNsdWRlcyhjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/Ll9pZClcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXSwnUk9MRScpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPnt7ZmVhdHVyZWZsYWdyb2xlICYmIGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucGVybWlzc2lvbkdyb3VwTmFtZSA/IGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucGVybWlzc2lvbkdyb3VwTmFtZSA6IGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucm9sZU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicm9sZS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlTGlzdCE9PSdST0xFJ1wiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdST0xFJylcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cclxuICAgICAgICAgICAgPHAgKm5nSWY9XCJmYWxzZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPnt7ZmVhdHVyZWZsYWdyb2xlID8gJ0FkZCBhIHBlcm1pc3Npb24gZ3JvdXAocyknIDonQWRkIGEgcm9sZShzKSd9fTwvcD5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNyb2xlIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWUgfCBzbGljZToxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIWxpc3RzLlNZU1RFTV9ST0xFX0lEUy5pbmNsdWRlcyhkYXRhPy5faWQpXCIgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUm9sZShkYXRhLCdST0xFJylcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tmZWF0dXJlZmxhZ3JvbGUgJiYgZGF0YT8ucGVybWlzc2lvbkdyb3VwTmFtZSA/IGRhdGE/LnBlcm1pc3Npb25Hcm91cE5hbWUgOiBkYXRhPy5yb2xlTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDwvZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSBPd25lcnMgLS0+XHJcbiAgICAgICAgPGZvcm0tZmllbGQgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5PV05FUlNcIiBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnMudmFsdWU/Lmxlbmd0aCA+IDAgfHwgY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwLnZhbHVlPy5sZW5ndGggPiAwXCIgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnT1dORVInXCIgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnT1dORVInXCJcclxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L293bmVyLnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk9XTkVSKFMpIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uXCIgKm5nSWY9XCJ0b29sVGlwRGF0YS5vd25lciAhPT0gJydcIiBsaWJQb3BvdmVySG92ZXIgKG1vdXNlb3Zlcik9XCJkYXRhVG9vbHRpcC5wb3BvdmVyKClcIiAobW91c2VsZWF2ZSk9XCJkYXRhVG9vbHRpcC5jbG9zZVBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCIgPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFmOzwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBvcG92ZXItaG92ZXIgI2RhdGFUb29sdGlwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtaW5mby1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtaW5mby1jYXJkLWJvZHlcIiBbaW5uZXJIVE1MXT1cInRvb2xUaXBEYXRhLm93bmVyXCIgaWQ9XCJPd25lckhlbHBUZXh0XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcG9wb3Zlci1ob3Zlcj5cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0LXdpdGgtcGlsbCBbcGxhY2Vob2xkZXJdPVwiJ1dobyBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhpcyBwcm9ncmFtPydcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ09XTkVSJylcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzLnZhbHVlWzBdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm93bmVyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlPy5sZW5ndGggPiAxXCI+K3t7Y29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlPy5sZW5ndGhcIj4mPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiICpuZ0lmPVwiIVsnQURNSU4nLCdLRVlfQURNSU4nLCdMT0dHRURfSU4nXS5pbmNsdWRlcyhvd25lcj8udXNlcl9yb2xlKVwiIChjbGljayk9XCJyZW1vdmUob3duZXIsJ09XTkVSX0dST1VQJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIj4re3tjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiID57e2NvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvd25lci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoXCI+Jjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiICpuZ0lmPVwiIVsnQURNSU4nLCdLRVlfQURNSU4nLCdMT0dHRURfSU4nXS5pbmNsdWRlcyhvd25lcj8udXNlcl9yb2xlKVwiIChjbGljayk9XCJyZW1vdmUob3duZXIsJ09XTkVSX0dST1VQJylcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZUxpc3QhPT0nT1dORVInXCIgW2NsYXNzLmRpc2FibGVkXT1cImNvbnRyb2xzPy5hbGxfdXNlcl9pbl9yb2xlPy52YWx1ZVwiIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ09XTkVSJylcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPkVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cclxuICAgICAgICAgICAgPHAgKm5nSWY9XCJmYWxzZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPkFkZCBhIG93bmVyKHMpPC9wPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWVuZCB2eC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1yLTJcIj57e2ZlYXR1cmVmbGFncm9sZSA/IFwiQUxMIFVTRVJTIEFTU09DSUFURUQgV0lUSCBUSEUgU0VMRUNURUQgUEVSTUlTU0lPTiBHUk9VUFNcIjpcIkFMTCBVU0VSUyBBU1NPQ0lBVEVEIFdJVEggVEhFIFNFTEVDVEVEIFJPTEVTXCJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHN3aXRjaCBmb3JtQ29udHJvbE5hbWU9XCJhbGxfdXNlcl9pbl9yb2xlXCIgKGNoYW5nZSk9XCJzZWxlY3RBbGxSb2xlT3duZXIoJGV2ZW50KVwiPjwvc3dpdGNoPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNvd25lciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG93bmVyIG9mIGNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWUgfCBzbGljZTogMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiEobGlzdHMuTk9OX1JFTU9WQUJMRV9PV05FUlMgIHwgbGlzdFRvSWQgOiAnbWVtYmVyX2lkJykuaW5jbHVkZXMob3duZXI/Lm1lbWJlcl9pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUob3duZXIsJ09XTkVSJylcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvd25lcj8ubWVtYmVyX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNncm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG93bmVyIG9mIGNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWUgfCBzbGljZTogMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFbJ0FETUlOJywnS0VZX0FETUlOJywnTE9HR0VEX0lOJ10uaW5jbHVkZXMob3duZXI/LnVzZXJfcm9sZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUob3duZXIsJ09XTkVSX0dST1VQJylcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvd25lcj8uZ3JvdXBfbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDwvZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSBBcHByb3ZlcnMgLS0+XHJcbiAgICAgICAgPCEtLSBSZW1vdmluZyB0aGlzIG9wdGlvbiBpbiBQcm9ncmFtIHNpbXBsaWZpY2F0aW9uIC0tPlxyXG4gICAgICAgIDxmb3JtLWZpZWxkICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uQVBQUk9WRVIgJiYgIXByb2dyYW1TaW1wbGlmeUZsYWdcIiBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWU/Lmxlbmd0aFwiIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ0FQUFJPVkVSJ1wiIFtkaXNhYmxlZF09XCIoc2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmIGFjdGl2ZUxpc3QgIT09ICdBUFBST1ZFUicpXCJcclxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2FwcHJvdmFsLnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkFQUFJPVkVSIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCInQW4gQXBwcm92ZXIgaXMgcmVzcG9uc2libGUgZm9yIGFwcHJvdmluZyBhIFByb2dyYW0uIFdoZXJlIGFuIEFwcHJvdmVyIGlzIHNlbGVjdGVkLCB0aGUgUHJvZ3JhbSBhbmQgYWxsIHJlc3BvbnNpYmlsaXRpZXMgbGlua2VkIHdpdGggdGhhdCBQcm9ncmFtIHdpbGwgb25seSBjb21tZW5jZSBvbmNlIHRoZSBQcm9ncmFtIGhhcyBiZWVuIGFwcHJvdmVkLidcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgaWQ9XCJBcHByb3ZlckhlbHBUZXh0XCI+JiN4ZWIxNjs8L2k+PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0LXdpdGgtcGlsbCBbcGxhY2Vob2xkZXJdPVwiJ1dobyBpcyByZXNwb25zaWJsZSBmb3IgYXBwcm92aW5nIHRoaXMgcHJvZ3JhbT8nXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzQXBwcm92ZXJEaXNhYmxlZFwiIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdBUFBST1ZFUicpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZVswXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKm5nSWY9XCJpc0FwcHJvdmVyRGlzYWJsZWQgPT09IGZhbHNlXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWVbMF0sJ0FQUFJPVkVSJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fYXBwcm92ZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJpc0FwcHJvdmVyRGlzYWJsZWQgPT09IGZhbHNlXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWVbMF0sJ0FQUFJPVkVSJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyB2eC1mcy05IHZ4LW1yLTEgY3Jvc3NcIj4mI3hlOTBkOzwvaT57e2NvbnRyb2xzPy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIihhY3RpdmVMaXN0IT09J0FQUFJPVkVSJykgJiYgaXNBcHByb3ZlckRpc2FibGVkID09PSBmYWxzZVwiKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnQVBQUk9WRVInKVwiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+RWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxyXG4gICAgICAgIDwvZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSBQZXJmb3JtYW5jZSBDYWxjdWxhdGVkIC0tPlxyXG4gICAgICAgIDwhLS0gPGZvcm0tZmllbGQgW2NoZWNrZWRdPVwiY29udHJvbHM/LnBlcmZvcm1hbmNlX2NhbGN1bGF0aW9uPy52YWx1ZVwiIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ1BFUkZPUk1BTkNFJ1wiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ1BFUkZPUk1BTkNFJ1wiXHJcbiAgICAgICAgICAgIFtpbWddPVwiJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9wZXJmb3JtYW5jZS1jYWxjLnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkhPVyBTSE9VTEQgVEhFIFBFUkZPUk1BTkNFIE9GIFRISVMgUFJPR1JBTSBCRSBDQUxDVUxBVEVEPzwvbGFiZWw+XHJcbiAgICAgICAgICAgIDx0YWItc2VsZWN0b3IgZm9ybUNvbnRyb2xOYW1lPVwicGVyZm9ybWFuY2VfY2FsY3VsYXRpb25cIiBbZGlzcGxheUFycmF5XT1cImNvbnN0YW50cz8ucGVyZm9ybWFuY2VDYWxjdWxhdGlvblwiPlxyXG4gICAgICAgICAgICA8L3RhYi1zZWxlY3Rvcj5cclxuICAgICAgICA8L2Zvcm0tZmllbGQ+IC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Byb2dyYW1TY29wZVwiID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjb3BlLWxhYmVsIHZ4LWZzLTEwIHZ4LXR4dC13aGl0ZSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LW1iLTUgdngtbGgtNCB2eC1kLWlubGluZS1ibG9ja1wiPlBST0dSQU0gU0NPUEU8L2Rpdj5cclxuICAgICAgICAgICAgIDwhLS0gPGkgIGNsYXNzPVwiaWNvbnMgaW5mby1pY29uIHZ4LWZzLTEyIHZ4LXR4dC1ibHVlIHZ4LW1sLTFcIiBbYXBwVG9vbHRpcF09XCJ0b29sdGlwLnByb2dyYW1TY29wZVwiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTFmOzwvaT4gLS0+XHJcbiAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaW5mby1pY29uIHZ4LWZzLTEyIHZ4LXR4dC1ibHVlIHZ4LW1sLTFcIiAqbmdJZj1cInRvb2xUaXBEYXRhLnByb2dyYW1TY29wICE9PSAnJ1wiIGxpYlBvcG92ZXJIb3ZlciAobW91c2VvdmVyKT1cImRhdGFUb29sdGlwLnBvcG92ZXIoKVwiIChtb3VzZWxlYXZlKT1cImRhdGFUb29sdGlwLmNsb3NlUG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxZjs8L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICA8cG9wb3Zlci1ob3ZlciAjZGF0YVRvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtaW5mby1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWluZm8tY2FyZC1ib2R5XCIgW2lubmVySFRNTF09XCJ0b29sVGlwRGF0YS5wcm9ncmFtU2NvcGVcIiBpZD1cIlBTSGVscFRleHRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3BvcG92ZXItaG92ZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gUHJvZ3JhbSBGcmVxdWVuY3kgLS0+XHJcbiAgICAgICAgPGZvcm0tZmllbGQgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5QUk9HUkFNX0ZSRVFVRU5DWVwiIFtjaGVja2VkXT1cIlt0cnVlLGZhbHNlXS5pbmNsdWRlcyhjb250cm9scz8ucmVjdXJyaW5nX2ZyZXF1ZW5jeT8udmFsdWUpXCIgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnRlJFUVVFTkNZJ1wiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ0ZSRVFVRU5DWSdcIlxyXG4gICAgICAgICAgICBbaW1nXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvcmVjdXJyaW5nLnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiIGlkPVwiUERDaGFuZ2VcIj5QUk9HUkFNIERVUkFUSU9OIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCInUHJvZ3JhbSBEdXJhdGlvbiByZWZlcnMgdG8gdGhlIGR1cmF0aW9uIG9mIHRoZSBQcm9ncmFtLiBBIFByb2dyYW0gY2FuIG9jY3VyIGluIHBlcnBldHVpdHksIG9yIGl0IGNhbiBvY2N1ciB1bnRpbCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGJ1c2luZXNzIGN5Y2xlIHRoYXQgaGFzIGJlZW4gc3BlY2lmaWVkIGluICcrIGJ1c2luZXNzQ3ljbGUuc2VsZWN0ZWRDeWNsZS5idXNpbmVzc19jeWNsZSArJy4gIEFsbCByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIHRoYXQgUHJvZ3JhbSB3aWxsIGFsc28gaGF2ZSB0aGUgc2FtZSBQcm9ncmFtIER1cmF0aW9uLidcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgaWQ9XCJQcm9ncmFtRHVyYXRpb25IZWxwVGV4dFwiPiYjeGViMTY7PC9pPjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtZm9ybWF0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQgdngtbWItMFwiPklzIHRoaXMgcHJvZ3JhbSByZWN1cnJpbmc/PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1ncm91cCBwcm9ncmFtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ3JlY3VycmluZ19mcmVxdWVuY3knXCIgW2NoZWNrZWRdPVwiY29udHJvbHM/LnJlY3VycmluZ19mcmVxdWVuY3k/LnZhbHVlXCIgKGNoZWNrZWRFdmVudCk9XCJzZXRGb3JtRmllbGQoJ3JlY3VycmluZ19mcmVxdWVuY3knLHRydWUpXCI+WUVTPC9hcHAtY3MtcmFkaW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ3JlY3VycmluZ19mcmVxdWVuY3knXCIgW2NoZWNrZWRdPVwiIWNvbnRyb2xzPy5yZWN1cnJpbmdfZnJlcXVlbmN5Py52YWx1ZVwiIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdyZWN1cnJpbmdfZnJlcXVlbmN5JyxmYWxzZSlcIj5OTzwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSBTY29wZSBDaGFuZ2VzIC0tPlxyXG4gICAgICAgIDxmb3JtLWZpZWxkICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uU0NPUEVfQ0hBTkdFU1wiIFtjaGVja2VkXT1cIlt0cnVlLGZhbHNlXS5pbmNsdWRlcyhjb250cm9scz8ubG9ja19zY29wZV9jaGFuZ2U/LnZhbHVlKVwiIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ1NDT1BFJ1wiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ1NDT1BFJ1wiXHJcbiAgICAgICAgICAgIFtpbWddPVwiJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9sb2NrLXNjb3BlLnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkxvY2sgdGhlIFByb2dyYW0gU2NvcGUgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidJZiB0aGUgUHJvZ3JhbSBTY29wZSBpcyBsb2NrZWQsIG5laXRoZXIgdGhlIFByb2dyYW0gbm9yIHRoZSByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtIGNhbiBiZSBlZGl0ZWQgb25jZSB0aGUgUHJvZ3JhbSBiZWdpbnMuIEluIG9yZGVyIHRvIGVkaXQgdGhlIFByb2dyYW0gb3IgdGhlIGxpbmtlZCByZXNwb25zaWJpbGl0aWVzLCB0aGUgUHJvZ3JhbSBkZXRhaWxzIHdpbGwgbmVlZCB0byBiZSBlZGl0ZWQuJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIiBpZD1cIlNjb3BlQ2hhbmdlc0hlbHBUZXh0XCI+JiN4ZWIxNjs8L2k+PC9sYWJlbD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1mb3JtYXRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPldvdWxkIHlvdSBsaWtlIHRvIDxzcGFuIGNsYXNzPVwidngtbGFiZWwtdHh0IHZ4LWZ3LTUwMFwiPmxvY2sgY2hhbmdlczwvc3Bhbj4gdG8gdGhlIHByb2dyYW1cclxuICAgICAgICAgICAgICAgICAgICBzY29wZT88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tZ3JvdXAgcHJvZ3JhbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ2xvY2tfc2NvcGVfY2hhbmdlJ1wiIFtjaGVja2VkXT1cImNvbnRyb2xzPy5sb2NrX3Njb3BlX2NoYW5nZT8udmFsdWVcIiAoY2hlY2tlZEV2ZW50KT1cInNldEZvcm1GaWVsZCgnbG9ja19zY29wZV9jaGFuZ2UnLHRydWUpXCI+WUVTPC9hcHAtY3MtcmFkaW8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpbyBbbmFtZV09XCInbG9ja19zY29wZV9jaGFuZ2UnXCIgW2NoZWNrZWRdPVwiIWNvbnRyb2xzPy5sb2NrX3Njb3BlX2NoYW5nZT8udmFsdWVcIiAoY2hlY2tlZEV2ZW50KT1cInNldEZvcm1GaWVsZCgnbG9ja19zY29wZV9jaGFuZ2UnLGZhbHNlKVwiPk5PPC9hcHAtY3MtcmFkaW8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICA8IS0tIEZyYW1ld29yayAtLT5cclxuICAgICAgICA8IS0tIDxmb3JtLWZpZWxkIFtjaGVja2VkXT1cImZhbHNlXCIgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnRlJBTUVXT1JLJ1wiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ0ZSQU1FV09SSydcIlxyXG4gICAgICAgICAgICBbaW1nXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvY2F0ZWdvcnkuc3ZnJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+RlJBTUVXT1JLPC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0LXdpdGgtcGlsbCBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBhIGZyYW1ld29yayB0aGF0IHRoaXMgUHJvZ3JhbSByZWxhdGVzIHRvJ1wiIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdGUkFNRVdPUksnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8uZnJhbWV3b3JrPy52YWx1ZT8uZnJhbWV3b3JrX25hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPjxpIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LmZyYW1ld29yay52YWx1ZSwnRlJBTUVXT1JLJylcIiBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+e3tjb250cm9scz8uZnJhbWV3b3JrPy52YWx1ZT8uZnJhbWV3b3JrX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImZyYW1ld29yay5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPis1PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVMaXN0IT09J0ZSQU1FV09SSydcIiAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdGUkFNRVdPUksnKVwiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNmcmFtZXdvcmsgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIFsxLCAxLCAxLCAxLCAxLCAxLCAxXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmFnZSBmcmFtZXdvcmsgbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICA8L2Zvcm0tZmllbGQ+IC0tPlxyXG5cclxuICAgICAgICA8IS0tIFJlc3BvbnNpYmlsaXR5IENlbnRlciAtLT5cclxuICAgICAgICA8Zm9ybS1maWVsZCAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LlJDXCIgW2NoZWNrZWRdPVwiY29udHJvbHM/LnJjPy52YWx1ZT8ubGVuZ3RoXCIgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnUkMnXCIgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnUkMnXCJcclxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3Jlc3BvbnNpYmlsaXR5LWNlbnRlci5zdmcnXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SRVNQT05TSUJJTElUWSBDRU5URVIgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidSZXNwb25zaWJpbGl0eSBDZW50ZXJzIHJlcHJlc2VudCB5b3VyIG9yZ2FuaXphdGlvbmFsIGFuZCBvcGVyYXRpb25hbCBpbmZyYXN0cnVjdHVyZS4gV2hlcmUgUmVzcG9uc2liaWxpdHkgQ2VudGVycyBhcmUgc2VsZWN0ZWQgd2hlbiBjcmVhdGluZyBhIFByb2dyYW0sIG9ubHkgdGhvc2UgUmVzcG9uc2liaWxpdGllcyBDZW50ZXJzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLidcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgaWQ9XCJSQ0hlbHBUZXh0XCI+JiN4ZWIxNjs8L2k+PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0LXdpdGgtcGlsbCBbc2VsZWN0RGl2XT1cInRydWVcIiAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnUkMnKVwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1doaWNoIFJlc3BvbnNpYmlsaXR5IENlbnRlcihzKSBjYW4gYmUgbGlua2VkIHRvIHRoZSByZXNwb25zaWJpbGl0aWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFByb2dyYW0/J1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucmM/LnZhbHVlICYmIGNvbnRyb2xzPy5yYz8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucmM/LnZhbHVlWzBdLCdSQycpXCI+JiN4ZTlhZTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnJjPy52YWx1ZVswXT8uaXRlbV9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7Y29udHJvbHM/LnJjPy52YWx1ZVswXT8uaXRlbV9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicmMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIiAqbmdJZj1cImNvbnRyb2xzPy5yYz8udmFsdWU/Lmxlbmd0aCAgPiAxXCI+K3t7Y29udHJvbHM/LnJjPy52YWx1ZT8ubGVuZ3RoIC0xIH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucmM/LnZhbHVlWzBdLCdSQycpXCI+JiN4ZTkwZDs8L2k+e3tjb250cm9scz8ucmM/LnZhbHVlWzBdPy5pdGVtX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucmM/LnZhbHVlPy5sZW5ndGggID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJyYy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5yYz8udmFsdWU/Lmxlbmd0aCAtMSB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZUxpc3QhPT0nUkMnXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ1JDJylcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNyYyBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHJjICBvZiBjb250cm9scz8ucmM/LnZhbHVlICB8c2xpY2U6MVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZShyYywnUkMnKVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3JjPy5pdGVtX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICA8L2Zvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgIDwhLS0gQXNzaWduZWUgLS0+XHJcbiAgICAgICAgPGZvcm0tZmllbGQgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5BU1NJR05FRVNcIiBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCAgfHwgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggfHxjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoICB8fCAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aFwiXHJcbiAgICAgICAgW2FjdGl2ZV09XCJbJ0FTU0lHTkVFJywnREVGQVVMVF9BU1NJR05FRSddPy5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHM/LmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmICFbJ0FTU0lHTkVFJywnREVGQVVMVF9BU1NJR05FRSddLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXCJcclxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3doby5zdmcnXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIiBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ0RFRkFVTFRfQVNTSUdORUUnXCI+QVNTSUdORUVTIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCInQXNzaWduZWVzIGFyZSByZXF1aXJlZCB0byBjb21wbGV0ZSB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IGhhdmUgYmVlbiBhc3NpZ25lZCB0byB0aGVtLiBXaGVyZSBBc3NpZ25lZXMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIEFzc2lnbmVlcyB3aWxsIGJlIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4nXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgdHlwZT1cIndoaXRlXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiIGlkPVwiQXNzaWduZWVIZWxwVGV4dFwiPiYjeGViMTY7PC9pPiA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQtd2l0aC1waWxsIFtzZWxlY3REaXZdPVwidHJ1ZVwiIFtkaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnREVGQVVMVF9BU1NJR05FRSdcIiBbcGxhY2Vob2xkZXJdPVwiJ1dobyBpcyByZXNwb25zaWJsZSBmb3IgY29tcGxldGluZyB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0FTU0lHTkVFJylcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggfHwgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWVbMF0sJ0FTU0lHTkVFJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiYXNzaWduZWUucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoID4gMVwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoXCI+Jjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlWzBdLCdBU1NJR05FRV9HUk9VUCcpXCI+JiN4ZTlhZTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJhc3NpZ25lZV9ncm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCI+K3t7Y29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTEgfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlWzBdLCdBU1NJR05FRScpXCIgPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJhc3NpZ25lZS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoXCI+Jjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0sJ0FTU0lHTkVFX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiYXNzaWduZWVfZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCAtMSB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZUxpc3QhPT0nQVNTSUdORUUnXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdBU1NJR05FRScpXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XHJcbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjYXNzaWduZWUgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBhc3NpZ25lZSBvZiBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWUgfCBzbGljZTogMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwicmVtb3ZlKGFzc2lnbmVlLCdBU1NJR05FRScpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YXNzaWduZWU/Lm1lbWJlcl9uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjYXNzaWduZWVfZ3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWUgfCBzbGljZTogMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAgKGNsaWNrKT1cInJlbW92ZShncm91cCwnQVNTSUdORUVfR1JPVVAnKVwiICBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tncm91cD8uZ3JvdXBfbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCIgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdBU1NJR05FRSdcIj5ERUZBVUxUIEFTU0lHTkVFIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCInVGhpcyBvcHRpb24gbGV0cyB5b3Ugc3BlY2lmeSB0aGUgRGVmYXVsdCBBc3NpZ25lZXMgZm9yIGFsbCBuZXcgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCBhIFByb2dyYW0uIElmIGEgRGVmYXVsdCBBc3NpZ25lZXMgaXMgc2VsZWN0ZWQsIHRoZSB1c2VyIHdpbGwgYXV0b21hdGljYWxseSBiZSBzZWxlY3RlZCB0aGUgQXNzaWduZWUgd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLiBBbiBBc3NpZ25vciwgYmVpbmcgdGhlIHBlcnNvbiB3aG8gY3JlYXRlcyB0aGUgcmVzcG9uc2liaWxpdHksIGNhbiBvdmVycmlkZSB0aGlzIG9wdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkuICdcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgaWQ9XCJEQUhlbHBUZXh0XCI+JiN4ZWIxNjs8L2k+PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0LXdpdGgtcGlsbCBbc2VsZWN0RGl2XT1cInRydWVcIiBbZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ0FTU0lHTkVFJ1wiIFtwbGFjZWhvbGRlcl09XCInV2hpY2ggcGVyc29ucyB3aWxsIGJlIHNlbGVjdGVkIGFzIHRoZSBkZWZhdWx0IGFzc2lnbmVlcyBmb3IgdGhlIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoaXMgUHJvZ3JhbT8nXCIgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfQVNTSUdORUUnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIHx8IGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlWzBdLCdERUZBVUxUX0FTU0lHTkVFJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImRlZmF1bHRBc3NpZ25lZS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCA+IDFcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGhcIj4mPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlWzBdLCdERUZBVUxUX0FTU0lHTkVFX0dST1VQJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJkZWZhdWx0QXNzaWduZWVHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xIH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWVbMF0sJ0RFRkFVTFRfQVNTSUdORUUnKVwiID4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57eyBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImRlZmF1bHRBc3NpZ25lZS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggLSAxfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aFwiPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXSwnREVGQVVMVF9BU1NJR05FRV9HUk9VUCcpXCIgPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJkZWZhdWx0QXNzaWduZWVHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTEgfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVMaXN0IT09J0RFRkFVTFRfQVNTSUdORUUnXCIgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9BU1NJR05FRScpXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI2RlZmF1bHRBc3NpZ25lZSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGFzc2lnbmVlIG9mIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlIHwgc2xpY2U6IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgIChjbGljayk9XCJyZW1vdmUoYXNzaWduZWUsJ0RFRkFVTFRfQVNTSUdORUUnKVwiIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Fzc2lnbmVlPy5tZW1iZXJfbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI2RlZmF1bHRBc3NpZ25lZUdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWUgfCBzbGljZTogMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwicmVtb3ZlKGFzc2lnbmVlLCdERUZBVUxUX0FTU0lHTkVFX0dST1VQJylcIiBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Z3JvdXA/Lmdyb3VwX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWdyb3VwLXNlbGVjdG9yXCIgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdBU1NJR05FRSdcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ2Fzc2lnbmVlJ1wiIFtjaGVja2VkXT1cImNvbnRyb2xzPy5hc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZSA9PT0gJ0FMTCdcIiAoY2hlY2tlZEV2ZW50KT1cInNldEZvcm1GaWVsZCgnYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYScsICdBTEwnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEFMTCBTRUxFQ1RFRCBQRVJTT05TIE5FRUQgVE8gQ09NUExFVEUgVEhJUyA8aSBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiJ0lmIHNlbGVjdGVkLCBzZXBhcmF0ZSByZXNwb25zaWJpbGl0aWVzIHdpbGwgYmUgY3JlYXRlZCBmb3IgZWFjaCBwZXJzb24uJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIiA+JiN4ZTkxZjs8L2k+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ2Fzc2lnbmVlJ1wiIFtjaGVja2VkXT1cImNvbnRyb2xzPy5hc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZSA9PT0gJ0FOWU9ORSdcIiAoY2hlY2tlZEV2ZW50KT1cInNldEZvcm1GaWVsZCgnYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYScsICdBTllPTkUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEFOWSBTRUxFQ1RFRCBQRVJTT04gQ0FOIENPTVBMRVRFIFRISVMgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidJZiBzZWxlY3RlZCwgb25seSBvbmUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBjcmVhdGVkLidcIiBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkxZjs8L2k+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICA8IS0tIFJldmlld2VyIC0tPlxyXG4gICAgICAgIDxmb3JtLWZpZWxkIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIiAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LlJFVklFV0VSXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCAgfHwgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGggfHxjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoICB8fCAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiXHJcbiAgICAgICAgW2FjdGl2ZV09XCJbJ1JFVklFV0VSJywnREVGQVVMVF9SRVZJRVdFUiddPy5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHM/LmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmICFbJ1JFVklFV0VSJywnREVGQVVMVF9SRVZJRVdFUiddLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXCJcclxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3Jldmlld2VyLnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnREVGQVVMVF9SRVZJRVdFUidcIiBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SZXZpZXdlcnMgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidSZXZpZXdlcnMgYXJlIHJlcXVpcmVkIHRvIHJldmlldyByZXNwb25zaWJpbGl0aWVzIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGNvbXBsZXRlZC4gV2hlcmUgUmV2aWV3ZXJzIGFyZSBzZWxlY3RlZCB3aGVuIGNyZWF0aW5nIGEgUHJvZ3JhbSwgb25seSB0aG9zZSBSZXZpZXdlcnMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIiBpZD1cIlJldmlld2VySGVscFRleHRcIj4mI3hlYjE2OzwvaT48L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQtd2l0aC1waWxsIFtzZWxlY3REaXZdPVwidHJ1ZVwiIFtkaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnREVGQVVMVF9SRVZJRVdFUidcIiBbcGxhY2Vob2xkZXJdPVwiJ1dobyBpcyByZXNwb25zaWJsZSBmb3IgcmV2aWV3aW5nIHRoZSByZXNwb25zaWJpbGl0aWVzIHdpdGhpbiB0aGlzIFByb2dyYW0/J1wiIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdSRVZJRVdFUicpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIHx8IGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlWzBdLCdSRVZJRVdFUicpXCI+JiN4ZTlhZTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJldmlld2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIj4re3tjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXSwnUkVWSUVXRVJfR1JPVVAnKVwiPiYjeGU5YWU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicmV2aWV3ZXJHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCI+K3t7Y29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLSAxfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlWzBdLCdSRVZJRVdFUicpXCIgPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJyZXZpZXdlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoXCI+Jjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0sJ1JFVklFV0VSX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJldmlld2VyR3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZUxpc3QhPT0nUkVWSUVXRVInXCIgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnUkVWSUVXRVInKVwiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNyZXZpZXdlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHJldmlld2VyIG9mIGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZSB8IHNsaWNlOiAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUocmV2aWV3ZXIsJ1JFVklFV0VSJylcIiBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cmV2aWV3ZXI/Lm1lbWJlcl9uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcmV2aWV3ZXJHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZSB8IHNsaWNlOiAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUoZ3JvdXAsJ1JFVklFV0VSX0dST1VQJylcIiBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Z3JvdXA/Lmdyb3VwX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgPGxhYmVsIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnUkVWSUVXRVInXCIgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+REVGQVVMVCBSZXZpZXdlciA8aSBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiJ1RoaXMgb3B0aW9uIGxldHMgeW91IHNwZWNpZnkgdGhlIERlZmF1bHQgUmV2aWV3ZXJzIGZvciByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIGEgUHJvZ3JhbS4gV2hlcmUgYSB1c2VyIGhhcyBiZWVuIHNwZWNpZmllZCBhcyBhIERlZmF1bHQgUmV2aWV3ZXIsIHRoYXQgdXNlciB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgc2VsZWN0ZWQgYXMgdGhlIFJldmlld2VyIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4gQW4gQXNzaWdub3IsIGJlaW5nIHRoZSBwZXJzb24gd2hvIGNyZWF0ZXMgdGhlIHJlc3BvbnNpYmlsaXR5LCBjYW4gb3ZlcnJpZGUgdGhpcyBvcHRpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5LidcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgaWQ9XCJEUkhlbHBUZXh0XCI+JiN4ZWIxNjs8L2k+PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0LXdpdGgtcGlsbCBbc2VsZWN0RGl2XT1cInRydWVcIiBbZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ1JFVklFV0VSJ1wiIFtwbGFjZWhvbGRlcl09XCInV2hpY2ggcGVyc29ucyB3aWxsIGJlIHNlbGVjdGVkIGFzIHRoZSBkZWZhdWx0IHJldmlld2VycyBmb3IgdGhlIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoaXMgUHJvZ3JhbT8nXCIgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfUkVWSUVXRVInKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIHx8IGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlWzBdLCdERUZBVUxUX1JFVklFV0VSJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImRlZmF1bHRSZXZpZXdlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGhcIj4mPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdLCdERUZBVUxUX1JFVklFV0VSX0dST1VQJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJkZWZhdWx0UmV2aWV3ZXJHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZVswXSwnREVGQVVMVF9SRVZJRVdFUicpXCIgPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJkZWZhdWx0UmV2aWV3ZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGhcIj4mPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0sJ0RFRkFVTFRfUkVWSUVXRVJfR1JPVVAnKVwiID4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZGVmYXVsdFJldmlld2VyR3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVMaXN0IT09J0RFRkFVTFRfUkVWSUVXRVInXCIgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9SRVZJRVdFUicpXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI2RlZmF1bHRSZXZpZXdlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHJldmlld2VyIG9mIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlIHwgc2xpY2U6IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZShyZXZpZXdlciwnREVGQVVMVF9SRVZJRVdFUicpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cmV2aWV3ZXI/Lm1lbWJlcl9uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjZGVmYXVsdFJldmlld2VyR3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZSB8IHNsaWNlOiAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICAoY2xpY2spPVwicmVtb3ZlKGdyb3VwLCdERUZBVUxUX1JFVklFV0VSX0dST1VQJylcIiBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tncm91cD8uZ3JvdXBfbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tZ3JvdXAtc2VsZWN0b3JcIiBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ1JFVklFV0VSJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpbyBbbmFtZV09XCIncmV2aWV3ZXInXCIgW2NoZWNrZWRdPVwiY29udHJvbHM/LnJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE/LnZhbHVlID09PSAnU0VRVUVOVElBTCdcIiAoY2hlY2tlZEV2ZW50KT1cInNldEZvcm1GaWVsZCgncmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYScsICdTRVFVRU5USUFMJylcIiBbY2xhc3MuZGlzYWJsZWRdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICBTRVFVRU5USUFMIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCInVGhlIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgc2VudCBmb3IgcmV2aWV3IG9uZSBhdCBhIHRpbWUgaW4gdGhlIHNlcXVlbmNlIGRlZmluZWQgYnkgeW91LidcIiBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkxZjs8L2k+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ3Jldmlld2VyJ1wiIFtjaGVja2VkXT1cImNvbnRyb2xzPy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZSA9PT0gJ0FOWU9ORSd8fCBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMFwiIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdyZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhJywgJ0FOWU9ORScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQU5ZIFJFVklFV0VSIENBTiBNQVJLIFRISVMgQVMgUkVWSUVXRUQgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidUaGUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBzZW50IGZvciByZXZpZXcgdG8gYWxsIHJldmlld2VycyBhdCB0aGUgc2FtZSB0aW1lLiBJZiBhbnlvbmUgb2YgdGhlIHJldmlld2VyIHJldmlld3MgdGhlIHJlc3BvbnNpYmlsaXR5LCBpdCB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgcmV2aWV3ZWQuJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTFmOzwvaT5cclxuICAgICAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgIDwhLS0gT3ZlcnNlZXIgLS0+XHJcbiAgICAgICAgPGZvcm0tZmllbGQgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uT1ZFUlNFRVJcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoICB8fCAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCB8fGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggIHx8ICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCJcclxuICAgICAgICBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdPVkVSU0VFUidcIiAgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cz8uaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgIVsnT1ZFUlNFRVInLCdERUZBVUxUX09WRVJTRUVSJywnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiXHJcbiAgICAgICAgICAgIFtpbWddPVwiJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9vdmVyc2lnaHQuc3ZnJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCIgW2NsYXNzLmRpc2FibGVkXT1cIlsnREVGQVVMVF9PVkVSU0VFUicsJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJ10uaW5jbHVkZXMoYWN0aXZlTGlzdClcIj5PdmVyc2lnaHRzIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCInT3ZlcnNpZ2h0cyByZWNlaXZlIHVwZGF0ZXMgd2hlbiBhIHJlc3BvbnNpYmlsaXR5IGlzIGNvbXBsZXRlZCwgY29tcGxldGVkIHdpdGggZGVsYXkgb3Igbm90IGNvbXBsZXRlZC4gV2hlcmUgT3ZlcnNpZ2h0cyBhcmUgc2VsZWN0ZWQgd2hlbiBjcmVhdGluZyBhIFByb2dyYW0sIG9ubHkgdGhvc2UgT3ZlcnNpZ2h0cyB3aWxsIGJlIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4nXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgdHlwZT1cIndoaXRlXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiIGlkPVwib3ZlcnNlZXJIZWxwVGV4dFwiPiYjeGViMTY7PC9pPjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dC13aXRoLXBpbGwgW3NlbGVjdERpdl09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cIlsnREVGQVVMVF9PVkVSU0VFUicsJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJ10uaW5jbHVkZXMoYWN0aXZlTGlzdClcIiBbcGxhY2Vob2xkZXJdPVwiJ1dobyBpcyByZXNwb25zaWJsZSBmb3Igb3ZlcnNlZWluZyB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcIiAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnT1ZFUlNFRVInKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCB8fCBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZVswXSwnT1ZFUlNFRVInKVwiPiYjeGU5YWU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2VlcnMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoID4gMVwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggXCIgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXSwnT1ZFUlNFRVJfR1JPVVAnKVwiPiYjeGU5YWU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGg+IDFcIj4re3tjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZVswXSwnT1ZFUlNFRVInKVwiID4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVycy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggXCIgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdLCdPVkVSU0VFUl9HUk9VUCcpXCIgPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGg+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlTGlzdCE9PSdPVkVSU0VFUidcIiAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdPVkVSU0VFUicpXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVycyBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG92ZXJzZWVyIG9mIGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZSB8IHNsaWNlOiAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAgKGNsaWNrKT1cInJlbW92ZShvdmVyc2VlciwnT1ZFUlNFRVInKVwiPiYjeGU5MGQ7PC9pPiB7e292ZXJzZWVyPy5tZW1iZXJfbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyR3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWUgfCBzbGljZTogMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwicmVtb3ZlKGdyb3VwLCdPVkVSU0VFUl9HUk9VUCcpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPiB7e2dyb3VwPy5ncm91cF9uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdPVkVSU0VFUidcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiICBbY2xhc3MuZGlzYWJsZWRdPVwiWydPVkVSU0VFUiddLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXCI+REVGQVVMVCBPdmVyc2lnaHQgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidUaGlzIG9wdGlvbiBsZXRzIHlvdSBzcGVjaWZ5IHRoZSBEZWZhdWx0IE92ZXJzaWdodCBmb3IgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCBhIFByb2dyYW0uIFdoZXJlIGEgdXNlciBoYXMgYmVlbiBzcGVjaWZpZWQgYXMgYSBEZWZhdWx0IE92ZXJzaWdodCwgdGhhdCB1c2VyIHdpbGwgYXV0b21hdGljYWxseSBiZSBzZWxlY3RlZCBhcyB0aGUgT3ZlcnNpZ2h0IHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4nXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgdHlwZT1cIndoaXRlXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiIGlkPVwiRE9IZWxwVGV4dFwiPiYjeGViMTY7PC9pPjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dC13aXRoLXBpbGwgIFtkaXNhYmxlZF09XCJbJ09WRVJTRUVSJywnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiIFtzZWxlY3REaXZdPVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09XCInV2hpY2ggcGVyc29ucyB3aWxsIGJlIHNlbGVjdGVkIGFzIHRoZSBkZWZhdWx0IG92ZXJzZWVycyBmb3IgdGhlIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoaXMgUHJvZ3JhbT8nXCIgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfT1ZFUlNFRVInKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggfHwgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWVbMF0sJ0RFRkFVTFRfT1ZFUlNFRVInKVwiPiYjeGU5YWU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyc0RlZmF1bHQucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggPiAxXCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCI+Jjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0sJ0RFRkFVTFRfT1ZFUlNFRVJfR1JPVVAnKVwiPiYjeGU5YWU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2VlckRlZmF1bHRHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+MVwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZVswXSwnREVGQVVMVF9PVkVSU0VFUicpXCIgPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudCB1c2VyXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJzRGVmYXVsdC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXCIgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0sJ0RFRkFVTFRfT1ZFUlNFRVJfR1JPVVAnKVwiID4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPjFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJEZWZhdWx0R3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVMaXN0IT09J0RFRkFVTFRfT1ZFUlNFRVInXCIgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9PVkVSU0VFUicpXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyc0RlZmF1bHQgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBvdmVyc2VlciBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZSB8IHNsaWNlOiAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAgKGNsaWNrKT1cInJlbW92ZShvdmVyc2VlciwnREVGQVVMVF9PVkVSU0VFUicpXCI+JiN4ZTkwZDs8L2k+IHt7b3ZlcnNlZXI/Lm1lbWJlcl9uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2VlckRlZmF1bHRHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlIHwgc2xpY2U6IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZShncm91cCwnREVGQVVMVF9PVkVSU0VFUl9HUk9VUCcpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPiB7e2dyb3VwPy5ncm91cF9uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiID4gPC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQtd2l0aC1waWxsIGNsYXNzPVwidngtbXQtMlwiIFtzZWxlY3REaXZdPVwidHJ1ZVwiIFtsaW5lXT1cIjNcIiBbZGlzYWJsZWRdPVwiWydPVkVSU0VFUicsJ0RFRkFVTFRfT1ZFUlNFRVInXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiIFtwbGFjZWhvbGRlcl09XCInV2hpY2ggcGVyc29ucyB3aWxsIGJlIHNlbGVjdGVkIGFzIHRoZSBkZWZhdWx0IG92ZXJzZWVycyBmb3IgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBub3QgY29tcGxldGVkIHdpdGhpbiB0aGlzIFByb2dyYW0/J1wiIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCB8fCBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZVswXSwnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiPiYjeGU5YWU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyc0RlZmF1bHRGYWlsLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCI+Jjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0sJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSX0dST1VQJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJEZWZhdWx0RmFpbEdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlWzBdLCdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicpXCIgPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyc0RlZmF1bHRGYWlsLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXCIgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0sJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJEZWZhdWx0RmFpbEdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZUxpc3QhPT0nREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInXCIgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXQ8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvaW5wdXQtd2l0aC1waWxsPlxyXG4gICAgPGFwcC1wb3BvdmVyICNvdmVyc2VlcnNEZWZhdWx0RmFpbCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG92ZXJzZWVyIG9mIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZSB8IHNsaWNlOiAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAgKGNsaWNrKT1cInJlbW92ZShvdmVyc2VlciwnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiPiYjeGU5MGQ7PC9pPiB7e292ZXJzZWVyPy5tZW1iZXJfbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgPGFwcC1wb3BvdmVyICNvdmVyc2VlckRlZmF1bHRGYWlsR3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWUgfCBzbGljZTogMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwicmVtb3ZlKGdyb3VwLCdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUl9HUk9VUCcpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPiB7e2dyb3VwPy5ncm91cF9uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvYXBwLXBvcG92ZXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSBBc3Nlc3NtZW50IC0tPlxyXG4gICAgICAgIDxmb3JtLWZpZWxkIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIiAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LkFTU0VTU01FTlRcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2Vzc21lbnRzPy52YWx1ZT8ubGVuZ3RoXCJcclxuICAgICAgICBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdBU1NFU1NNRU5UJ1wiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ0FTU0VTU01FTlQnXCJcclxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2Fzc2Vzc21lbnRzLnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkFTU0VTU01FTlRTIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCInQXNzZXNzbWVudHMgYXJlIGEgZGlnaXRhbCBmb3JtIHRoYXQgYXJlIGNyZWF0ZWQgaW4g4oCcQXNzZXNzbWVudOKAnSB3aXRoaW4gdGhlIENvbXBsaWFuY2UgTW9kdWxlLiBXaGVyZSBBc3Nlc3NtZW50cyBhcmUgc2VsZWN0ZWQgd2hlbiBjcmVhdGluZyBhIFByb2dyYW0sIG9ubHkgdGhvc2UgQXNzZXNzbWVudHMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIiBpZD1cIkFzc2Vzc21lbnRIZWxwVGV4dFwiPiYjeGViMTY7PC9pPjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dC13aXRoLXBpbGwgW3NlbGVjdERpdl09XCJ0cnVlXCIgIFtwbGFjZWhvbGRlcl09XCInV2hpY2ggYXNzZXNzbWVudHMgY2FuIGJlIGxpbmtlZCB0byB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcIiAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnQVNTRVNTTUVOVCcpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2Vzc21lbnRzPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIiAqbmdJZj1cIihjb250cm9scz8ucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWUgfCBhc3Nlc3NtZW50UmVzb2x2ZXIpIGFzIGFzc2Vzc21lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShhc3Nlc3NtZW50c1swXSwnQVNTRVNTTUVOVCcpXCI+JiN4ZTlhZTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiYXNzZXNzbWVudHNbMF0/LmFzc2Vzc21lbnRfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2Fzc2Vzc21lbnRzWzBdPy5hc3Nlc3NtZW50X25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJwcm9ncmFtX2Fzc2Vzc21lbnRzLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCIgKm5nSWY9XCJhc3Nlc3NtZW50cz8ubGVuZ3RoID4gMVwiPit7e2Fzc2Vzc21lbnRzPy5sZW5ndGggLTEgfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihjb250cm9scz8ucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWUgfCBhc3Nlc3NtZW50UmVzb2x2ZXIpIGFzIGFzc2Vzc21lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKGFzc2Vzc21lbnRzWzBdLCdBU1NFU1NNRU5UJylcIj4mI3hlOTBkOzwvaT57e2Fzc2Vzc21lbnRzWzBdPy5hc3Nlc3NtZW50X25hbWV9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFzc2Vzc21lbnRzPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInByb2dyYW1fYXNzZXNzbWVudHMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3thc3Nlc3NtZW50cz8ubGVuZ3RoIC0xIH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVMaXN0IT09J0FTU0VTU01FTlQnXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0FTU0VTU01FTlQnKVwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3Byb2dyYW1fYXNzZXNzbWVudHMgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBhc3Nlc3NtZW50IG9mIChjb250cm9scz8ucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWUgfCBhc3Nlc3NtZW50UmVzb2x2ZXIpIHwgc2xpY2U6MVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgIChjbGljayk9XCJyZW1vdmUoYXNzZXNzbWVudCwnQVNTRVNTTUVOVCcpXCIgIGNsYXNzPVwiaWNvbnNcIiA+JiN4ZTkwZDs8L2k+IHt7YXNzZXNzbWVudD8uYXNzZXNzbWVudF9uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICA8L2Zvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgIDwhLS0gRm9ybWF0ICYgRXZpZGVuY2UgLS0+XHJcbiAgICAgICAgPGZvcm0tZmllbGQgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uRk9STUFURV9FVklERU5DRVwiIFtjaGVja2VkXT1cIlt0cnVlLGZhbHNlXS5pbmNsdWRlcyhjb250cm9scz8uZXZpZGVuY2VfcmVxdWlyZWQ/LnZhbHVlKVwiXHJcbiAgICAgICAgICAgIFthY3RpdmVdPVwiZmFsc2VcIiBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXCJcclxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2Zvcm1hdC1ldmlkZW5jZS5zdmcnXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5FdmlkZW5jZSA8aSBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiJ0lmIHNlbGVjdGVkLCBldmlkZW5jZSBvZiBjb21wbGV0aW9uIG9mIGEgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSByZXF1aXJlZCBmb3IgYWxsIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uIEFuIEFzc2lnbm9yLCBiZWluZyB0aGUgcGVyc29uIHdobyBjcmVhdGVzIHRoZSByZXNwb25zaWJpbGl0eSwgY2FuIG92ZXJyaWRlIHRoaXMgb3B0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eS4nXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgdHlwZT1cIndoaXRlXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiIGlkPVwiRXZpZGVuY2VIZWxwVGV4dFwiPiYjeGViMTY7PC9pPjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtZm9ybWF0XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCI+RG8gYWxsIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoaXMgcHJvZ3JhbSByZXF1aXJlIGV2aWRlbmNlPzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1ncm91cCBwcm9ncmFtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpbyBbbmFtZV09XCInZXZpZGVuY2VfcmVxdWlyZWQnXCIgW2NoZWNrZWRdPVwiY29udHJvbHM/LmV2aWRlbmNlX3JlcXVpcmVkPy52YWx1ZVwiIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdldmlkZW5jZV9yZXF1aXJlZCcsdHJ1ZSlcIj5ZRVM8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvIFtuYW1lXT1cIidldmlkZW5jZV9yZXF1aXJlZCdcIiBbY2hlY2tlZF09XCIhY29udHJvbHM/LmV2aWRlbmNlX3JlcXVpcmVkPy52YWx1ZVwiIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdldmlkZW5jZV9yZXF1aXJlZCcsZmFsc2UpXCI+Tk88L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWVuZCB2eC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1yLTJcIj5BbGxvdyBhbnkgZmlsZSB0byBiZSBtYXJrZWQgYXNcclxuICAgICAgICAgICAgICAgICAgICBrZXlcclxuICAgICAgICAgICAgICAgICAgICBldmlkZW5jZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHN3aXRjaCBmb3JtQ29udHJvbE5hbWU9XCJhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0Rm9ybUZpZWxkKCdhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2UnLCRldmVudD8udGFyZ2V0Py5jaGVja2VkKVwiPjwvc3dpdGNoPlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICA8IS0tIEN1c3RvbSBGaWVsZCAtLT5cclxuICAgICAgICA8Zm9ybS1maWVsZCBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCIgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5DVVNUT01fRklFTERTXCIgW2NoZWNrZWRdPVwiY29udHJvbHM/LmN1c3RvbV9maWVsZHM/LnZhbHVlPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICBbYWN0aXZlXT1cImZhbHNlXCIgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiXHJcbiAgICAgICAgICAgIFtpbWddPVwiJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9jdXN0b20tZmllbGRzLnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkNVU1RPTSBGSUVMRCA8aSBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiJ1doZXJlIGEgY3VzdG9tIGZpZWxkIGlzIHNwZWNpZmllZCwgYWxsIHJlc3BvbnNpYmlsaXRpZXMgbGlua2VkIHdpdGggYSBQcm9ncmFtIHdpbGwgY29udGFpbiB0aGF0IGN1c3RvbSBmaWVsZC4gQ3VzdG9tIGZpZWxkcyBlbmFibGUgdGhlIGNvbGxlY3Rpb24gb2YgYWRkaXRpb25hbCBtZXRhIGRhdGEuJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIiBpZD1cIkNGSGVscFRleHRcIj4mI3hlYjE2OzwvaT48L2xhYmVsPlxyXG4gICAgICAgICAgICA8Y3VzdG9tLWZpZWxkIGZvcm1Db250cm9sTmFtZT1cImN1c3RvbV9maWVsZHNcIj48L2N1c3RvbS1maWVsZD5cclxuICAgICAgICA8L2Zvcm0tZmllbGQ+XHJcbiAgICA8L2Zvcm0+XHJcbjwvZGl2PlxyXG5cclxuXHJcbjwhLS0gbGlzdCBvZiByb2xlcyAtLT5cclxuPHJvbGUtbGlzdCAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdST0xFJ1wiIFtzZWxlY3RlZF09XCJjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWUgfCByZWZEaXNjb25uZWN0XCIgW2xvYWRpbmddPVwibGlzdExvYWRpbmdTdGF0ZS5ST0xFU1wiXHJcbiAgICBbbGlzdF09XCJsaXN0cz8uUk9MRVM/LmRhdGEgPz8gW11cIiAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwnUk9MRScpXCIgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ1JPTEUnKVwiIFtmZWF0dXJlZmxhZ3JvbGVdPVwiZmVhdHVyZWZsYWdyb2xlXCIgW2ZlYXR1cmVmbGFnR3JvdXBdPVwiZmVhdHVyZWZsYWdHcm91cHNcIiBbZmZfcmNfbGlzdGluZ109XCJmZl9yY19saXN0aW5nXCI+PC9yb2xlLWxpc3Q+XHJcblxyXG48IS0tIGxpc3Qgb2YgZnJhbWV3b3JrcyAtLT5cclxuPCEtLSA8YXBwLWRlZmluZS1mcmFtZXdvcmstbGlzdGluZyAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdGUkFNRVdPUksnXCIgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ0ZSQU1FV09SSycpXCIgKG5leHQpPVwibGlzdEFjdGlvbigkZXZlbnQsJ0ZSQU1FV09SSycpXCIgW21vZGVdPVwibW9kZVwiIFtzZWxlY3RlZEZyYW1ld29ya109XCJjb250cm9scz8uZnJhbWV3b3JrPy52YWx1ZVwiPjwvYXBwLWRlZmluZS1mcmFtZXdvcmstbGlzdGluZz4gLS0+XHJcbjwhLS0gbGlzdCBvZiByZXNwb25zaWJpbGl0eSBjZW50ZXIgLS0+XHJcbjxhcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0ICpuZ0lmPVwiYWN0aXZlTGlzdCA9PT0gJ1JDJ1wiIFtyZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0XT1cImxpc3RzPy5SQyA/PyBbXVwiXHJcbiAgICBbcmFkaW9TZWxlY3Rpb25dPVwiZmFsc2VcIiBbcmNJZEtleV09XCIncmNfaWQnXCIgKGNsb3NlUmNMaXN0KT1cImZpZWxkRGVzZWxlY3RvcignUkMnKVwiXHJcbiAgICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJsaXN0QWN0aW9uKCRldmVudCwnUkMnKVwiIFtzZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVyc109XCJjb250cm9scz8ucmM/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiPlxyXG48L2FwcC1yZXNwb25zaWJpbGl0eS1jZW50ZXJzLWxpc3Q+XHJcbjwhLS0gcmVuZGVyIHVzZXJsaXN0IHdpdGggZ3JvdXAgLS0+XHJcblxyXG48dXNlci1ncm91cC1saXN0ICpuZ0lmPVwiYWN0aXZlTGlzdCA9PT0gJ09XTkVSJ1wiIFtncm91cEVuYWJsZWRdPVwidHJ1ZVwiIFtzaW5nbGVTZWxlY3RdPVwiZmFsc2VcIiBbbG9hZGluZ109XCJsaXN0TG9hZGluZ1N0YXRlLlVTRVJTXCJcclxuICAgIFtub25SZW1vdmFibGVVc2VySWRzXT1cImxpc3RzLk5PTl9SRU1PVkFCTEVfT1dORVJTICB8IGxpc3RUb0lkIDogJ21lbWJlcl9pZCdcIiBbdXNlcmxpc3RdPVwibGlzdHM/Lk9XTkVSUz8uZGF0YSA/PyBbXVwiXHJcbiAgICBbc2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXHJcbiAgICAoZmV0Y2hVc2VyRGF0YSk9XCJmZXRjaFVzZXJzQXNzb2NpYXRlZFdpdGhSb2xlcyhmYWxzZSwkZXZlbnQpXCIgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uT1dORVJTXCJcclxuICAgIFtncm91cExpc3RJbmZvXT1cImxpc3RzPy5PV05FUlNfR1JPVVBTXCIgW2dyb3VwTGlzdF09XCJsaXN0cz8uT1dORVJTX0dST1VQUz8uZGF0YSA/PyBbXVwiXHJcbiAgICBbc2VsZWN0ZWRHcm91cHNdPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIiAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwnT1dORVInKVwiXHJcbiAgICAoY2FuY2VsKT1cImZpZWxkRGVzZWxlY3RvcignT1dORVInKVwiIFtwYW5lbFRpdGxlXT1cInBhbmVsVGl0bGVPd25lclwiIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiPjwvdXNlci1ncm91cC1saXN0PlxyXG48dXNlci1ncm91cC1saXN0ICpuZ0lmPVwiYWN0aXZlTGlzdCA9PT0gJ0FQUFJPVkVSJ1wiIFtncm91cEVuYWJsZWRdPVwiZmFsc2VcIiBbc2luZ2xlU2VsZWN0XT1cInRydWVcIlxyXG4gICAgW3VzZXJsaXN0XT1cImxpc3RzPy5BUFBST1ZFUlM/LmRhdGEgPz8gW11cIiBbc2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWUgfCByZWZEaXNjb25uZWN0XCJcclxuICAgIFt1c2VyTGlzdEluZm9dPVwibGlzdHM/LkFQUFJPVkVSU1wiIChzYXZlKT1cImxpc3RBY3Rpb24oJGV2ZW50LCdBUFBST1ZFUicpXCIgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ0FQUFJPVkVSJylcIiBbcGFuZWxUaXRsZV09XCJwYW5lbFRpdGxlQXBwcm92ZXJcIj5cclxuPC91c2VyLWdyb3VwLWxpc3Q+XHJcbjx1c2VyLWdyb3VwLWxpc3QgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnQVNTSUdORUUnXCIgW2dyb3VwRW5hYmxlZF09XCJ0cnVlXCIgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIlxyXG4gICAgW3VzZXJsaXN0XT1cImxpc3RzPy5BU1NJR05FRVMgPz8gW11cIiBbc2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWUgfCByZWZEaXNjb25uZWN0XCIgIFtncm91cExpc3RdPVwibGlzdHM/LkFTU0lHTkVFU19HUk9VUCA/PyBbXVwiIFtGcm9tUHJvZ3JhbV09XCJ0cnVlXCJcclxuICAgIFtzZWxlY3RlZEdyb3Vwc109XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWUgfCByZWZEaXNjb25uZWN0XCIgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVkQXNzaWduZWVJZHNcIiAgW2Zyb21SZXNwb25zaWJpbGl0eV0gPSBcIidBc3NpZ25lZSdcIiAgW3Jldmlld2VySWRzXT1cInNlbGVjdGVkUmV2aWV3ZXJJZHNcIiBbb3ZlcnNlZXJJZHNdPVwic2VsZWN0ZWRPdmVyc2Vlcklkc1wiIFthc3NpZ25vcklkXT1cImFzc2lnbm9ySWRcIlxyXG4gICAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uQVNTSUdORUVTXCIgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsJ0FTU0lHTkVFJylcIiAoY2FuY2VsKT1cImZpZWxkRGVzZWxlY3RvcignQVNTSUdORUUnKVwiIFtwYW5lbFRpdGxlXT1cInBhbmVsVGl0bGVBc3NpZ25lZVwiXHJcbiAgICBbZGVmYXVsdFNlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWUgfCByZWZEaXNjb25uZWN0XCIgW3VzZXJUeXBlXT1cIidhc3NpZ25lZXMnXCIgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnR3JvdXBzXCI+XHJcbjwvdXNlci1ncm91cC1saXN0PlxyXG48dXNlci1ncm91cC1saXN0ICpuZ0lmPVwiYWN0aXZlTGlzdCA9PT0gJ0RFRkFVTFRfQVNTSUdORUUnXCIgW2dyb3VwRW5hYmxlZF09XCJ0cnVlXCIgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIlxyXG4gICAgW3VzZXJsaXN0XT1cImxpc3RzPy5ERUZBVUxUX0FTU0lHTkVFUyA/PyBbXVwiIFtzZWxlY3RlZFVzZXJzXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiICBbZ3JvdXBMaXN0XT1cImxpc3RzPy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA/PyBbXVwiIFtGcm9tUHJvZ3JhbV09XCJ0cnVlXCJcclxuICAgIFtzZWxlY3RlZEdyb3Vwc109XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIiBbZGlzYWJsZWRJZHNdPVwiZGlzYWJsZWRBc3NpZ25lZUlkc1wiICBbZnJvbVJlc3BvbnNpYmlsaXR5XSA9IFwiJ0Fzc2lnbmVlJ1wiICBbcmV2aWV3ZXJJZHNdPVwic2VsZWN0ZWRSZXZpZXdlcklkc1wiIFtvdmVyc2Vlcklkc109XCJzZWxlY3RlZE92ZXJzZWVySWRzXCIgW2Fzc2lnbm9ySWRdPVwiYXNzaWdub3JJZFwiXHJcbiAgICBbdXNlckxpc3RJbmZvXT1cImxpc3RzPy5ERUZBVUxUX0FTU0lHTkVFXCIgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsJ0RFRkFVTFRfQVNTSUdORUUnKVwiIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdERUZBVUxUX0FTU0lHTkVFJylcIiBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZWZsYWdHcm91cHNcIj5cclxuPC91c2VyLWdyb3VwLWxpc3Q+XHJcblxyXG48dXNlci1ncm91cC1saXN0ICpuZ0lmPVwiKGFjdGl2ZUxpc3QgPT09ICdSRVZJRVdFUicgJiYgKCFmZWF0dXJlZmxhZ0dyb3VwcyB8fCBmZWF0dXJlZmxhZ0dyb3VwcykpXCIgW2dyb3VwRW5hYmxlZF09XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiIFtzaW5nbGVTZWxlY3RdPVwiZmFsc2VcIiBbbG9hZGluZ109XCJsaXN0TG9hZGluZ1N0YXRlLlVTRVJTXCIgW0Zyb21Qcm9ncmFtXT1cInRydWVcIlxyXG4gICAgW3VzZXJsaXN0XT1cImxpc3RzPy5SRVZJRVdFUlMgPz8gW11cIiBbc2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWUgfCByZWZEaXNjb25uZWN0XCIgIFtncm91cExpc3RdPVwibGlzdHM/LlJFVklFV0VSU19HUk9VUCA/PyBbXVwiIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXHJcbiAgICBbc2VsZWN0ZWRHcm91cHNdPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiIFtkaXNhYmxlZElkc109XCJkaXNhYmxlUmV2aWV3ZXJJZHNcIiBbZnJvbVJlc3BvbnNpYmlsaXR5XSA9IFwiJ1Jldmlld2VyJ1wiIFthc3NpZ25vcklkXT1cImFzc2lnbm9ySWRcIiBbYXNzaWduZWVJZHNdPVwic2VsZWN0ZWRBc3NpZ25lZUlkc1wiICBbb3ZlcnNlZXJJZHNdPVwic2VsZWN0ZWRPdmVyc2Vlcklkc1wiXHJcbiAgICBbdXNlckxpc3RJbmZvXT1cImxpc3RzPy5SRVZJRVdFUlNcIiAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwnUkVWSUVXRVInKVwiIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdSRVZJRVdFUicpXCIgW3BhbmVsVGl0bGVdPVwicGFuZWxUaXRsZVJldmlld2VyXCJcclxuICAgIFtkZWZhdWx0U2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIiBbdXNlclR5cGVdPVwiJ3Jldmlld2VycydcIj5cclxuPC91c2VyLWdyb3VwLWxpc3Q+XHJcbjx1c2VyLWdyb3VwLWxpc3QgKm5nSWY9XCIoYWN0aXZlTGlzdCA9PT0gJ0RFRkFVTFRfUkVWSUVXRVInICYmICghZmVhdHVyZWZsYWdHcm91cHMgfHwgZmVhdHVyZWZsYWdHcm91cHMpKVwiIFtncm91cEVuYWJsZWRdPVwiZmVhdHVyZWZsYWdHcm91cHNcIiBbc2luZ2xlU2VsZWN0XT1cImZhbHNlXCIgIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIiBbRnJvbVByb2dyYW1dPVwidHJ1ZVwiXHJcbiAgICBbdXNlcmxpc3RdPVwibGlzdHM/LkRFRkFVTFRfUkVWSUVXRVJTID8/IFtdXCIgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWUgfCByZWZEaXNjb25uZWN0XCIgIFtncm91cExpc3RdPVwibGlzdHM/LkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQID8/IFtdXCIgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcclxuICAgIFtzZWxlY3RlZEdyb3Vwc109XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIiBbZGlzYWJsZWRJZHNdPVwiZGlzYWJsZVJldmlld2VySWRzXCIgW2Zyb21SZXNwb25zaWJpbGl0eV0gPSBcIidSZXZpZXdlcidcIiBbYXNzaWdub3JJZF09XCJhc3NpZ25vcklkXCIgW2Fzc2lnbmVlSWRzXT1cInNlbGVjdGVkQXNzaWduZWVJZHNcIiAgW292ZXJzZWVySWRzXT1cInNlbGVjdGVkT3ZlcnNlZXJJZHNcIlxyXG4gICAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uREVGQVVMVF9SRVZJRVdFUlNcIiAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwnREVGQVVMVF9SRVZJRVdFUicpXCIgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ0RFRkFVTFRfUkVWSUVXRVInKVwiIFtwYW5lbFRpdGxlXT1cInBhbmVsVGl0bGVEZWZhdWx0UmV2aWV3ZXJcIj5cclxuPC91c2VyLWdyb3VwLWxpc3Q+XHJcbjx1c2VyLWdyb3VwLWxpc3QgKm5nSWY9XCIoYWN0aXZlTGlzdCA9PT0gJ09WRVJTRUVSJyAmJiAoIWZlYXR1cmVmbGFnR3JvdXBzIHx8IGZlYXR1cmVmbGFnR3JvdXBzKSlcIiBbZ3JvdXBFbmFibGVkXT1cImZlYXR1cmVmbGFnR3JvdXBzXCIgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIiBbRnJvbVByb2dyYW1dPVwidHJ1ZVwiXHJcbiAgICBbdXNlcmxpc3RdPVwibGlzdHM/Lk9WRVJTRUVSUyA/PyBbXVwiIFtzZWxlY3RlZFVzZXJzXT1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIiAgW2dyb3VwTGlzdF09XCJsaXN0cz8uT1ZFUlNFRVJTX0dST1VQID8/IFtdXCJcclxuICAgIFtzZWxlY3RlZEdyb3Vwc109XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWUgfCByZWZEaXNjb25uZWN0XCIgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnR3JvdXBzXCIgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVPdmVyc2Vlcklkc1wiIFtmcm9tUmVzcG9uc2liaWxpdHldID0gXCInT3ZlcnNlZXInXCIgW2Fzc2lnbm9ySWRdPVwiYXNzaWdub3JJZFwiIFthc3NpZ25lZUlkc109XCJzZWxlY3RlZEFzc2lnbmVlSWRzXCIgW3Jldmlld2VySWRzXT1cInNlbGVjdGVkUmV2aWV3ZXJJZHNcIlxyXG4gICAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uT1ZFUlNFRVNcIiAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwnT1ZFUlNFRVInKVwiIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdPVkVSU0VFUicpXCJcclxuICAgIFtkZWZhdWx0U2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3QgfCBhcnJheUNvbmNhdDogY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlXCIgW3VzZXJUeXBlXT1cIidvdmVyc2VlcnMnXCI+XHJcbjwvdXNlci1ncm91cC1saXN0PlxyXG48dXNlci1ncm91cC1saXN0ICpuZ0lmPVwiKGFjdGl2ZUxpc3QgPT09ICdERUZBVUxUX09WRVJTRUVSJyAmJiAoIWZlYXR1cmVmbGFnR3JvdXBzIHx8IGZlYXR1cmVmbGFnR3JvdXBzKSlcIiBbZ3JvdXBFbmFibGVkXT1cImZlYXR1cmVmbGFnR3JvdXBzXCIgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIiBbRnJvbVByb2dyYW1dPVwidHJ1ZVwiXHJcbiAgICBbdXNlcmxpc3RdPVwibGlzdHM/LkRFRkFVTFRfT1ZFUlNFRVJTID8/IFtdXCIgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWUgfCByZWZEaXNjb25uZWN0XCIgIFtncm91cExpc3RdPVwibGlzdHM/LkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID8/IFtdXCJcclxuICAgIFtzZWxlY3RlZEdyb3Vwc109XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIiBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZWZsYWdHcm91cHNcIiBbZGlzYWJsZWRJZHNdPVwiZGlzYWJsZU92ZXJzZWVySWRzXCIgW2Zyb21SZXNwb25zaWJpbGl0eV0gPSBcIidPdmVyc2VlcidcIiBbYXNzaWdub3JJZF09XCJhc3NpZ25vcklkXCIgW2Fzc2lnbmVlSWRzXT1cInNlbGVjdGVkQXNzaWduZWVJZHNcIiBbcmV2aWV3ZXJJZHNdPVwic2VsZWN0ZWRSZXZpZXdlcklkc1wiXHJcbiAgICBbdXNlckxpc3RJbmZvXT1cImxpc3RzPy5ERUZBVUxUX09WRVJTRUVSU1wiIChzYXZlKT1cImxpc3RBY3Rpb24oJGV2ZW50LCdERUZBVUxUX09WRVJTRUVSJylcIiAoY2FuY2VsKT1cImZpZWxkRGVzZWxlY3RvcignREVGQVVMVF9PVkVSU0VFUicpXCI+XHJcbjwvdXNlci1ncm91cC1saXN0PlxyXG48dXNlci1ncm91cC1saXN0ICpuZ0lmPVwiKGFjdGl2ZUxpc3QgPT09ICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicgJiYgKCFmZWF0dXJlZmxhZ0dyb3VwcyB8fCBmZWF0dXJlZmxhZ0dyb3VwcykpXCIgW2dyb3VwRW5hYmxlZF09XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiIFtzaW5nbGVTZWxlY3RdPVwiZmFsc2VcIiBbbG9hZGluZ109XCJsaXN0TG9hZGluZ1N0YXRlLlVTRVJTXCIgW0Zyb21Qcm9ncmFtXT1cInRydWVcIlxyXG4gICAgW3VzZXJsaXN0XT1cImxpc3RzPy5ERUZBVUxUX09WRVJTRUVSUyA/PyBbXVwiIFtzZWxlY3RlZFVzZXJzXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIiAgW2dyb3VwTGlzdF09XCJsaXN0cz8uREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPz8gW11cIlxyXG4gICAgW3NlbGVjdGVkR3JvdXBzXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIiBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZWZsYWdHcm91cHNcIiBbZGlzYWJsZWRJZHNdPVwiZGlzYWJsZU92ZXJzZWVySWRzXCIgW2Zyb21SZXNwb25zaWJpbGl0eV0gPSBcIidPdmVyc2VlcidcIiBbYXNzaWdub3JJZF09XCJhc3NpZ25vcklkXCIgW2Fzc2lnbmVlSWRzXT1cInNlbGVjdGVkQXNzaWduZWVJZHNcIiBbcmV2aWV3ZXJJZHNdPVwic2VsZWN0ZWRSZXZpZXdlcklkc1wiXHJcbiAgICBbdXNlckxpc3RJbmZvXT1cImxpc3RzPy5ERUZBVUxUX09WRVJTRUVSU1wiIChzYXZlKT1cImxpc3RBY3Rpb24oJGV2ZW50LCdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicpXCIgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJylcIj5cclxuPC91c2VyLWdyb3VwLWxpc3Q+XHJcbjxhc3Nlc3NtZW50LXBpY2tlciAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdBU1NFU1NNRU5UJ1wiIFtzZWxlY3RlZEFzc2Vzc21lbnRdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzZXNzbWVudHM/LnZhbHVlXCIgKGNhbmNlbEFzc2Vzc21lbnQpPVwiZmllbGREZXNlbGVjdG9yKCdBU1NFU1NNRU5UJylcIiAob25Bc3Nlc3NtZW50U2VsZWN0KT1cImxpc3RBY3Rpb24oJGV2ZW50LCdBU1NFU1NNRU5UJylcIj48L2Fzc2Vzc21lbnQtcGlja2VyPlxyXG48YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxyXG4gICAgPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxyXG4gICAgICAgICpuZ0lmPVwic2hvd1NtaWxleVwiXHJcbiAgICAgICAgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiXHJcbiAgICAgICAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXHJcbiAgICAgICAgKGFjdGlvbik9XCJhY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgKGNsb3NlU21pbGV5KT1cImNsb3NlU21pbGV5KCRldmVudClcIj5cclxuICAgIDwvYXBwLXNtaWxleS1kaWFsb2ctaW5saW5lPlxyXG5cclxuICAgPCEtLSBGcmFtZXdvcmsgc2VsZWN0b3IgIC0tPlxyXG4gICAgPGFwcC1mcmFtZXdvcmstbGlzdCAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdGUkFNRVdPUksnXCIgW3dvcmtmbG93UGFnZV09XCJbJ0ZSQU1FV09SSyddXCIgKGFzc2lnbkNvbnRyb2wpPVwibGlzdEFjdGlvbigkZXZlbnQsICdGUkFNRVdPUksnKVwiXHJcbiAgICAoY2xvc2VGcmFtZXdvcmspPVwiZmllbGREZXNlbGVjdG9yKCdGUkFNRVdPUksnKVwiIFtwcmV2aW91c1NlbGVjdGVkVmFsdWVzXT1cIntmcmFtZXdvcms6IGNvbnRyb2xzPy5mcmFtZXdvcmsudmFsdWV9XCIoZW50cnVzdEZyYW1ld29yayk9XCJlbnRydXN0RnJhbWV3b3JrKCRldmVudClcIiBbaGVhZGVyVGV4dF09XCInU2VsZWN0IGEgZnJhbWV3b3JrJ1wiPjwvYXBwLWZyYW1ld29yay1saXN0PlxyXG4iXX0=
|
|
1428
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcHJvZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcHJvZ3JhbS93b3JrZmxvdy1wcm9ncmFtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0MsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUEwQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSWxELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU94QyxNQUFNLE9BQU8sd0JBQXdCO0lBc0RuQyxZQUFvQixFQUFzQixFQUFVLGNBQStCLEVBQVUsV0FBd0IsRUFBUyxZQUF5QixFQUFVLFNBQTRCO1FBQXpLLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBckQ3TCxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBRXRCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGtCQUFh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QUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNsRSxJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEwsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0UsSUFBSSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BMLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ3pFLElBQUksbUJBQW1CLEdBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BMLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFD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QUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3RSxDQUFDOztxSEFwNUNVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLHd1QkFLUixVQUFVLHdIQ3BCdkMsKy9xR0F3OUJBOzJGRHo4QmEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHNCQUFzQjs0TkFTUyxJQUFJO3NCQUE1QyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBRWQsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNiLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRywyQkFBMkI7c0JBQXBDLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyw4QkFBOEI7c0JBQXZDLE1BQU07Z0JBRUUsa0JBQWtCO3NCQUExQixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICduZzItZGF0ZS1waWNrZXInO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFByb2dyYW1zU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3Byb2dyYW1zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XHJcbmltcG9ydCB7IENPTlNUQU5UUyB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXdvcmtmbG93LXByb2dyYW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1wcm9ncmFtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1wcm9ncmFtLmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dQcm9ncmFtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBjb25zdGFudHMgPSBDT05TVEFOVFM7XHJcbiAgc2hvd0NvbmZpcm1hdGlvbjogYW55O1xyXG4gIGlzQXNjZW50QWxsb3dlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZmX3JjX2xpc3Rpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdmb3JtJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGZvcm0gITogRWxlbWVudFJlZjtcclxuICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXInKSBkYXRlUGlja2VyITogRGF0ZVBpY2tlckNvbXBvbmVudDtcclxuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcG9wdWxhdGVPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNob3dDb25maXJtYXRpb25BbGVydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlZnJlc2hGb3JtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUmVtb3ZpbmdSb2xlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGlzYWJsZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIHNjcm9sbFRvQm90dG9tITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjYW5GcmFtZXdvcmtDaGFuZ2U6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByb2dyYW1TaW1wbGlmeUZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gQWxsIElucHV0IGZpZWxkc1xyXG4gIEBJbnB1dCgpIG1vZGU6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHByb2dyYW1JZDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgcHJvZ3JhbVR5cGU6IG51bWJlciA9IDE7XHJcbiAgQElucHV0KCkgYWxsb3dlZEZlYXR1cmUhOiBhbnk7XHJcbiAgQElucHV0KCkgYWRkVG9Qcm9ncmFtRGV0YWlsczogYW55O1xyXG4gIEBJbnB1dCgpIG9yZ0RldGFpbHM6IGFueTtcclxuICBwYW5lbFRpdGxlRGVmYXVsdFJldmlld2VyID0gXCJTZWxlY3QgRGVmYXVsdCBSZXZpZXdlcihzKVwiO1xyXG4gIHBhbmVsVGl0bGVPd25lciA9IFwiU2VsZWN0IE93bmVyKHMpXCI7XHJcbiAgcGFuZWxUaXRsZVJldmlld2VyID0gXCJTZWxlY3QgUmV2aWV3ZXIocylcIjtcclxuICBwYW5lbFRpdGxlQXNzaWduZWUgPSBcIlNlbGVjdCBBc3NpZ25lZShzKVwiO1xyXG4gIHBhbmVsVGl0bGVBcHByb3ZlciA9IFwiU2VsZWN0ICBBcHByb3ZlclwiXHJcbiAgaXNBcHByb3ZlckRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNQcm9ncmFtU2NvcGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0b29sVGlwRGF0YTogYW55ID17XHJcbiAgICBvd25lciA6XCJPd25lcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhIFByb2dyYW0uIE9ubHkgT3duZXJzIGNhbiBtYWtlIGNoYW5nZXMgdG8gYSBQcm9ncmFtIGFuZCB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS48YnI+VGhlIDxzdHJvbmc+S2V5IEFkbWluPC9zdHJvbmc+IGFuZCBhbGwgPGI+QWRtaW48L2I+IHVzZXJzIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIE93bmVycyBvZiBhIFByb2dyYW0gYnkgZGVmYXVsdC5cIixcclxuICAgIHByb2dyYW1TY29wZTogYEEgUHJvZ3JhbSBTY29wZSBjYW4gYmUgdXNlZCBhcyBmb2xsb3dzOlxyXG4gIDxsaT5UbyBzcGVjaWZ5IHRoZSBkdXJhdGlvbiBvZiB0aGUgUHJvZ3JhbS48L2xpPlxyXG4gIDxsaT5UbyBwcmUtc2VsZWN0IGNlcnRhaW4gb3B0aW9ucyB0aGF0IGFyZSBhdmFpbGFibGUgd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5LCB0aGVyZWJ5IGRlY3JlYXNpbmcgdGhlIHRpbWUgcmVxdWlyZWQgdG8gY3JlYXRlIGEgcmVzcG9uc2liaWxpdHkuPC9saT5cclxuICA8bGk+VG8gbGltaXQgdGhlIG9wdGlvbnMgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5LCB0aGVyZWJ5IG1ha2luZyBpdCBlYXNpZXIgdG8gY3JlYXRlIGEgcmVzcG9uc2liaWxpdHkgYW5kIHJlZHVjaW5nIHRoZSBsaWtlbGlob29kIG9mIGFuIGluY29ycmVjdCBvcHRpb24gYmVpbmcgc2VsZWN0ZWQuPC9saT5cclxuICAgIGBcclxuICB9XHJcbiAgYnVzaW5lc3NDeWNsZTogYW55O1xyXG4gIGZlYXR1cmVmbGFncm9sZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZlYXR1cmVmbGFnR3JvdXBzOiBib29sZWFuID1mYWxzZTtcclxuICBkaXNhYmxlZEFzc2lnbmVlSWRzOiBhbnlbXSA9IFtdO1xyXG4gIHNlbGVjdGVkUmV2aWV3ZXJJZHM6IGFueVtdID0gW107XHJcbiAgc2VsZWN0ZWRBc3NpZ25lZUlkczogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZE92ZXJzZWVySWRzOiBhbnlbXSA9IFtdO1xyXG4gIGFzc2lnbm9ySWQ6IG51bWJlcltdID0gW107XHJcbiAgZGlzYWJsZVJldmlld2VySWRzOiBhbnlbXSA9IFtdO1xyXG4gIGRpc2FibGVPdmVyc2VlcklkczogYW55W10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogVW50eXBlZEZvcm1CdWlsZGVyLCBwcml2YXRlIHByb2dyYW1TZXJ2aWNlOiBQcm9ncmFtc1NlcnZpY2UsIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLHByaXZhdGUgdWlLaXRTZXJ2aWNlOlVpS2l0U2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB0aGlzLmJ1c2luZXNzQ3ljbGUgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NDeWNsZVwiKSA/PyAne30nKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuYnVzaW5lc3NDeWNsZSwgJ2JjJyk7XHJcbiAgIH1cclxuICBwdWJsaWMgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCkge1xyXG4gICAgY29uc3QgaXNXaGl0ZXNwYWNlID0gKGNvbnRyb2wudmFsdWUgfHwgJycpLnRyaW0oKS5sZW5ndGggPT09IDA7XHJcbiAgICBjb25zdCBpc1ZhbGlkID0gIWlzV2hpdGVzcGFjZTtcclxuICAgIHJldHVybiBpc1ZhbGlkID8gbnVsbCA6IHsgJ3doaXRlc3BhY2UnOiB0cnVlIH07XHJcbiAgfVxyXG4gIHB1YmxpYyBibGFua0FycmF5VmFsaWRhdG9yKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCkge1xyXG4gICAgY29uc3QgaXNCbGFuayA9IGNvbnRyb2wudmFsdWU/LmZpbHRlcigoZWxlOmFueSk9PiBlbGUpPy5sZW5ndGggPT09IDA7XHJcbiAgICBjb25zdCBpc1ZhbGlkID0gIWlzQmxhbms7XHJcbiAgICByZXR1cm4gaXNWYWxpZCA/IG51bGwgOiB7ICdibGFuayc6IHRydWUgfTtcclxuICB9XHJcbiBsb2FkZXIgPSBmYWxzZTtcclxuIHNob3dTbWlsZXkgPSBmYWxzZTtcclxuIGFjdGlvbkJ1dHRvbnMgPSBbXHJcbiAgeyBidXR0b25UZXh0OiAnQWRkIE1vcmUgUHJvZ3JhbXMnLCBjbGFzczogJ3doaXRlLWJ0bicsIGlkOiAnYWRkTW9yZScgfSxcclxuICB7IGJ1dHRvblRleHQ6ICdWaWV3IFByb2dyYW0nLCBjbGFzczogJ2JsdWUtYnRuJywgaWQ6ICd2aWV3UHJvZ3JhbScgfSxcclxuXTtcclxuc21pbGV5TWVzc2FnZSA9IGBZb3UncmUgQWxsIFNldCFgO1xyXG5jcmVhdGVkUHJvZ3JhbUlkID0gJyc7XHJcbiAgaXNPYmplY3RpdmVWYWxpZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNOYW1lRXhpc3RzOiBib29sZWFuID1mYWxzZTtcclxuICAvL2Zvcm0gYm9keSBmb3IgcHJvZ3JhbSBtZXRhIGRhdGFcclxuICBwcm9ncmFtRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgcHJvZ3JhbV90eXBlOiBbdGhpcy5wcm9ncmFtVHlwZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDApLCBWYWxpZGF0b3JzLm1heCgzKV1dLFxyXG4gICAgcHJvZ3JhbV9uYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLm5vV2hpdGVzcGFjZVZhbGlkYXRvcl1dLFxyXG4gICAgcHJvZ3JhbV9kZXNjcmlwdGlvbjogWycnXSxcclxuICAgIHByb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHM6IFtbXV0sXHJcbiAgICBwcm9ncmFtX29iamVjdGl2ZTogWycnXSxcclxuICAgLy8gcHJvZ3JhbV9vYmplY3RpdmU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMubm9XaGl0ZXNwYWNlVmFsaWRhdG9yXV0sXHJcbiAgICBwcm9ncmFtX29iamVjdGl2ZV9hdHRhY2htZW50czogW1tdXSxcclxuICAgIHByb2dyYW1fcm9sZXM6IFtbXSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsdGhpcy5ibGFua0FycmF5VmFsaWRhdG9yXV0sXHJcbiAgICBhbGxfdXNlcl9pbl9yb2xlOiBbZmFsc2VdLFxyXG4gICAgcHJvZ3JhbV9vd25lcnM6IFtbXSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsdGhpcy5ibGFua0FycmF5VmFsaWRhdG9yXV0sXHJcbiAgICBwcm9ncmFtX293bmVyc19ncm91cCA6W1tdXSxcclxuICAgIHByb2dyYW1fYXBwcm92ZXI6IFtbXV0sXHJcbiAgICBwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbjogWydQQVNUX0VWRU5UJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgIHJlY3VycmluZ19mcmVxdWVuY3k6IFt0cnVlLFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICBsb2NrX3Njb3BlX2NoYW5nZTogW2ZhbHNlLFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICBmcmFtZXdvcms6IFtdLFxyXG4gICAgcmM6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2Fzc2lnbmVlOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9hc3NpZ25lZV9ncm91cDogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZTogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cDogW1tdXSxcclxuICAgIGFzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWE6IFsnQUxMJ10sXHJcbiAgICBwcm9ncmFtX3Jldmlld2VyOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9yZXZpZXdlcl9ncm91cDogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcjogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cDogW1tdXSxcclxuICAgIHJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE6IFsnU0VRVUVOVElBTCddLFxyXG4gICAgcHJvZ3JhbV9vdmVyc2VlcjogW1tdXSxcclxuICAgIHByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cDogW1tdXSxcclxuICAgIHByb2dyYW1fYXNzZXNzbWVudHM6IFtbXV0sXHJcbiAgICBldmlkZW5jZV9yZXF1aXJlZDogW2ZhbHNlXSxcclxuICAgIGFsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZTogW2ZhbHNlXSxcclxuICAgIGN1c3RvbV9maWVsZHM6IFtbXV0sXHJcbiAgICBwcm9ncmFtX3N0YXRlOiAwLFxyXG4gIH0pO1xyXG5cclxuICAvL2V4Y2VwdGlvbmFsIGhhbmRsaW5nIG9mIGN1c3RvbSBmaWVsZHNcclxuXHJcbiAgIHNob3dBZGRDdXN0b21GaWVsZCA9IHRydWU7XHJcbiAgLy9Qcm9ncmFtIG9iamVjdGl2ZSBhbmQgZGVzY3JpcGlvbiBhcmUgZXhwbGVjdGx5IGRlY2xhcmVkIGFzIHRoZXkgYXJlIHVzaW5nIG1hcnggZWRpdG9yIHdoaWNoIGRvZXMgbm90IHN1cHBvcnRzIFJlYWN0aXZlIGZvcm1zIGJpbmRpbmdcclxuICBlZGl0b3JEYXRhID0ge1xyXG4gICAgcHJvZ3JhbU9iamVjdGl2ZTogJycsXHJcbiAgICBwcm9ncmFtRGVzY3JpcHRpb246ICcnXHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZEFzc2Vzc21lbnQhOiBhbnk7XHJcblxyXG5cclxuXHJcbiAgY3VycmVudFVzZXIoKSB7XHJcbiAgICBjb25zdCB1c2VyID0gdGhpcy5hdXRoU2VydmljZS50b2tlbkluZm8oKVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbWVtYmVyX2VtYWlsOiB1c2VyPy5lbWFpbCxcclxuICAgICAgbWVtYmVyX2lkOiB1c2VyPy5pZCxcclxuICAgICAgbWVtYmVyX25hbWU6IHVzZXI/Lm5hbWUsXHJcbiAgICAgIHVzZXJfcm9sZTogXCJMT0dHRURfSU5cIixcclxuICAgICAgX2lkOiBcIlwiXHJcbiAgICB9XHJcblxyXG4gIH1cclxuICAvL1NldHMgdGhlIHZhbHVlIG9mIGEgZm9ybSBjb250cm9sXHJcbiAgc2V0Rm9ybUZpZWxkKGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIGlzRnJvbUZvcm0/OiBib29sZWFuKSB7XHJcbiAgICBsZXQgcGF0Y2g6IGFueSA9IHt9O1xyXG4gICAgcGF0Y2hbY29udHJvbE5hbWVdID0gdmFsdWU7XHJcbiAgICB0aGlzLnByb2dyYW1Gb3JtLnBhdGNoVmFsdWUocGF0Y2gpO1xyXG4gICAgdGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0/Lm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIGlmKGlzRnJvbUZvcm0gJiYgY29udHJvbE5hbWUgPT09ICdwcm9ncmFtX29iamVjdGl2ZScgJiYgIXZhbHVlLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpLnRyaW0oKSkgdGhpcy5pc09iamVjdGl2ZVZhbGlkID0gZmFsc2U7XHJcbiAgICBlbHNlIHRoaXMuaXNPYmplY3RpdmVWYWxpZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvL1JldHVybnMgd2VhdGhlciB0aGUgZm9ybSBpcyB2YWxpZCBvciBub3RcclxuICBnZXQgZm9ybVZhbGlkKCkge1xyXG4gICAgaWYgKHRoaXMucHJvZ3JhbUZvcm0udmFsaWQgJiYgdGhpcy5lZGl0b3JEYXRhPy5wcm9ncmFtT2JqZWN0aXZlPy5yZXBsYWNlKC8mbmJzcDsvZywgJyAnKT8udHJpbSgpPy5sZW5ndGggKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29udHJvbHM6IGFueSA9IHtcclxuICAgIHByb2dyYW1fbmFtZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fbmFtZScpLFxyXG4gICAgcHJvZ3JhbV90eXBlOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3R5cGUnKSxcclxuICAgIHByb2dyYW1fb2JqZWN0aXZlOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9vYmplY3RpdmUnKSxcclxuICAgIHByb2dyYW1fcm9sZXM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3JvbGVzJyksXHJcbiAgICBwcm9ncmFtX293bmVyczogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb3duZXJzJyksXHJcbiAgICBwcm9ncmFtX293bmVyc19ncm91cDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb3duZXJzX2dyb3VwJyksXHJcbiAgICBhbGxfdXNlcl9pbl9yb2xlOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnYWxsX3VzZXJfaW5fcm9sZScpLFxyXG4gICAgcHJvZ3JhbV9hcHByb3ZlcjogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXBwcm92ZXInKSxcclxuICAgIGRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyksXHJcbiAgICBvYmplY3RpdmVfYXR0YWNobWVudHM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX29iamVjdGl2ZV9hdHRhY2htZW50cycpLFxyXG4gICAgcGVyZm9ybWFuY2VfY2FsY3VsYXRpb246dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3BlcmZvcm1hbmNlX2NhbGN1bGF0aW9uJyksXHJcbiAgICByZWN1cnJpbmdfZnJlcXVlbmN5OiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncmVjdXJyaW5nX2ZyZXF1ZW5jeScpLFxyXG4gICAgbG9ja19zY29wZV9jaGFuZ2U6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdsb2NrX3Njb3BlX2NoYW5nZScpLFxyXG4gICAgcmM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdyYycpLFxyXG4gICAgZXZpZGVuY2VfcmVxdWlyZWQ6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdldmlkZW5jZV9yZXF1aXJlZCcpLFxyXG4gICAgZnJhbWV3b3JrOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnZnJhbWV3b3JrJyksXHJcbiAgICBhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2U6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2UnKSxcclxuICAgIHByb2dyYW1fYXNzaWduZWU6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXNzaWduZWUnKSxcclxuICAgIHByb2dyYW1fYXNzaWduZWVfZ3JvdXA6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXNzaWduZWVfZ3JvdXAnKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZTp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJyksXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcpLFxyXG4gICAgYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYTp0aGlzLnByb2dyYW1Gb3JtLmdldCgnYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYScpLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cDp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwJyksXHJcbiAgICBwcm9ncmFtX3Jldmlld2VyOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3Jldmlld2VyJyksXHJcbiAgICBwcm9ncmFtX3Jldmlld2VyX2dyb3VwOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3Jldmlld2VyX2dyb3VwJyksXHJcbiAgICBwcm9ncmFtX292ZXJzZWVyOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX292ZXJzZWVyJyksXHJcbiAgICBwcm9ncmFtX292ZXJzZWVyX2dyb3VwOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX292ZXJzZWVyX2dyb3VwJyksXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicpLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXAnKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXAnKSxcclxuICAgIHJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEgOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYScpLFxyXG4gICAgcHJvZ3JhbV9hc3Nlc3NtZW50czogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXNzZXNzbWVudHMnKSxcclxuICAgIGN1c3RvbV9maWVsZHM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdjdXN0b21fZmllbGRzJyksXHJcbiAgICBpc0FwcHJvdmVyRGlzYWJsZWQ6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdpc0FwcHJvdmVyRGlzYWJsZWQnKSxcclxuICB9XHJcblxyXG4gIGxpc3RzOiBhbnkgPSB7XHJcbiAgICBST0xFUzogW10sXHJcbiAgICBPV05FUlM6IFtdLFxyXG4gICAgT1dORVJTX0dST1VQUzpbXSxcclxuICAgIEFQUFJPVkVSUzpbXSxcclxuICAgIFJFVklFV0VSUzogW10sXHJcbiAgICBSRVZJRVdFUlNfR1JPVVA6W10sXHJcbiAgICBBU1NJR05FRVM6IFtdLFxyXG4gICAgQVNTSUdORUVTX0dST1VQIDpbXSxcclxuICAgIERFRkFVTFRfQVNTSUdORUVTOltdLFxyXG4gICAgREVGQVVMVF9BU1NJR05FRVNfR1JPVVA6W10sXHJcbiAgICBERUZBVUxUX1JFVklFV0VSUzpbXSxcclxuICAgIERFRkFVTFRfUkVWSUVXRVJTX0dST1VQOltdLFxyXG4gICAgT1ZFUlNFRVJTOiBbXSxcclxuICAgIE9WRVJTRUVSU19HUk9VUDpbXSxcclxuICAgIERFRkFVTFRfT1ZFUlNFRVJTOiBbXSxcclxuICAgIERFRkFVTFRfT1ZFUlNFRVJTX0dST1VQOltdLFxyXG4gICAgUkM6IFtdLFxyXG4gICAgTk9OX1JFTU9WQUJMRV9PV05FUlM6IFtdLFxyXG4gICAgQUxMX1VTRVI6W10sXHJcbiAgICBBTExfR1JPVVA6W10sXHJcbiAgICBTWVNURU1fUk9MRV9JRFM6W11cclxuICB9XHJcblxyXG5cclxuXHJcbiAgbGlzdExvYWRpbmdTdGF0ZSA9IHtcclxuICAgIFJPTEVTOmZhbHNlLFxyXG4gICAgVVNFUlM6ZmFsc2UsXHJcbiAgICBHUk9VUDpmYWxzZSxcclxuICAgIFJDOmZhbHNlLFxyXG4gIH1cclxuICBzaWRlRWxlbWVudHMgPSBbJ1JPTEUnLCdSQycsJ09XTkVSJywnQVNTSUdORUUnLCdBUFBST1ZFUicsJ0RFRkFVTFRfQVNTSUdORUUnLCdSRVZJRVdFUicsJ0RFRkFVTFRfUkVWSUVXRVInLCdBU1NFU1NNRU5UJywnRlJBTUVXT1JLJywnT1ZFUlNFRVInLCdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicsJ0RFRkFVTFRfT1ZFUlNFRVInLCdPVkVSU0VFUiddO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3R5cGUnLCB0aGlzLnByb2dyYW1UeXBlKTtcclxuICAgIGlmKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgIHRoaXMuZ2V0UHJvZ3JhbURldGFpbHMoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uVXNlcnMoKTtcclxuICAgICAgdGhpcy5mZXRjaE9yZ2FuaXphdGlvbkdyb3VwKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZldGNoUm9sZXMoKTtcclxuICAgIHRoaXMuZmV0Y2hSQygpO1xyXG4gICAgaWYodGhpcy5hZGRUb1Byb2dyYW1EZXRhaWxzPy5faWQpIHtcclxuICAgICAgdGhpcy5saXN0QWN0aW9uKHRoaXMuYWRkVG9Qcm9ncmFtRGV0YWlscywgJ0ZSQU1FV09SSycpXHJcbiAgICB9XHJcbiAgICB0aGlzLmVuYWJsZWZlYXR1cmUoKTtcclxuICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgZ2V0IHZhbGlkKCkge1xyXG4gICByZXR1cm4gdGhpcy5wcm9ncmFtRm9ybS52YWxpZFxyXG4gIH1cclxuXHJcbiAgYWRkaXRpb25hbE9wdGlvbjogYW55ID0gey4uLkNPTlNUQU5UUy5hZGRpdGlvbmFsT3B0aW9ufTtcclxuICBhY3RpdmVMaXN0ID0gJydcclxuICAvKipcclxuICAgKiAjIyMjIERlc2NyaXB0aW9uXHJcbiAgICogUG9wdWxhdGVzIG9wdGlvbmFsIGZpZWxkcyBzdGF0dXMgZm9yIHRoZSBvcHRpb25hbCBmaWVsZHNcclxuICAgKi9cclxuICBwb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCkge1xyXG4gICAgY29uc3QgYWN0aXZhdGVkT3B0aW9ucyA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5hZGRpdGlvbmFsT3B0aW9uKSkge1xyXG4gICAgICBpZiAodGhpcy5hZGRpdGlvbmFsT3B0aW9uW2tleV0gPT09IHRydWUpIHtcclxuICAgICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goa2V5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGFjdGl2YXRlZE9wdGlvbnMpO1xyXG4gIH1cclxuICBhZGRNb3JlSW5mbyhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb25bZXZlbnQuY29kZV0gPSBldmVudC5jaGVja2VkO1xyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IHRydWU7XHJcbiAgICB0aGlzLmNoZWNrUHJvZ3JhbU9wdGlvbkZpZWxkKCk7XHJcbiAgfVxyXG5cclxuICAvLyBmdW5jdGlvbiB0byBhdXRvbWF0ZSBmb3JtIHZhbHVlIGNoYW5nZSBoYW5kbmdcclxuICBmb3JtQ2hhbmdlTGlzdG5lcigpIHtcclxuICAgIGNvbnN0IGZpZWxkcyA9IE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpO1xyXG4gICAgZmllbGRzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuY29udHJvbHNbZWxlXT8udmFsdWVDaGFuZ2VzLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHsgdGhpcy5oYW5kbGVGb3JtRmllbGRDaGFuZ2UoZWxlLCByZXMpIH1cclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBoYW5kbGVGb3JtRmllbGRDaGFuZ2UoY29udHJvbDogc3RyaW5nLCBwYXlsb2FkPzogYW55KSB7XHJcbiAgICBzd2l0Y2ggKGNvbnRyb2wpIHtcclxuICAgICAgY2FzZSAncHJvZ3JhbV9yb2xlcyc6IHtcclxuICAgICAgICB0aGlzLmZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGVMaXN0KGV2dDogc3RyaW5nKSB7XHJcbiAgICBpZihldnQgPT09ICdGUkFNRVdPUksnICYmICF0aGlzLmNhbkZyYW1ld29ya0NoYW5nZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5hY3RpdmVMaXN0ID0gZXZ0O1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBsaXN0QWN0aW9uKGV2dDogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdST0xFJzoge1xyXG4gICAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbiA9IHRydWU7XHJcbiAgICAgICAgY29uc3Qgc3lzdGVtUm9sZXMgPSBldnQ/LmZpbHRlcigoZWxlOiBhbnkpID0+IChlbGU/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAna2V5IGFkbWluJyB8fCBlbGU/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAnYWRtaW4nKSk7XHJcbiAgICAgICAgY29uc3QgcGF0Y2hWYWwgPSB0aGlzLnVuaXF1ZUJ5UHJvcChbLi4uc3lzdGVtUm9sZXMsIC4uLmV2dF0sICdfaWQnKTtcclxuICAgICAgICBpZiAoIWlzRXF1YWwodGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzLnZhbHVlLnNvcnQoKSwgcGF0Y2hWYWwuc29ydCgpKSkge1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCBwYXRjaFZhbCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5mZXRjaEdyb3Vwc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnUkMnOiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJyb2xlXCIsZXZ0KVxyXG4gICAgICAgIGNvbnN0IHJjID0gdGhpcy5zZXRMaXN0KHRoaXMubGlzdHMuUkMsIGV2dCwgJ2l0ZW1faWQnKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwic2V0cmNcIixyYylcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmMnLCB0aGlzLnVuaXF1ZUJ5UHJvcChyYywgJ2l0ZW1faWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnT1dORVInIDp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FQUFJPVkVSJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXBwcm92ZXInLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FTU0lHTkVFJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWUnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJykpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRBc3NpZ25lZShldnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfQVNTSUdORUUnOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KClcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdSRVZJRVdFUic6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3Jldmlld2VyJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yZXZpZXdlcl9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0UmV2aWV3ZXIoZXZ0KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX1JFVklFV0VSJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgdGhpcy5jb250cm9scy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhLnZhbHVlID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4wID8gJ0FOWU9ORSc6dGhpcy5jb250cm9scz8ucmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYT8udmFsdWVcclxuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KClcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdPVkVSU0VFUic6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vdmVyc2Vlcl9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0T3ZlcnNlZXIoZXZ0KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX09WRVJTRUVSJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcicsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXAnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaExpc3QoKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FTU0VTU01FTlQnOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3Nlc3NtZW50cycsIGV2dCk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnRlJBTUVXT1JLJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2ZyYW1ld29yaycsIGV2dCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fbmFtZScsIGV2dD8ubmFtZSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb24nLCBldnQ/LmRlc2NyaXB0aW9uKTtcclxuICAgICAgICB0aGlzLmVkaXRvckRhdGEucHJvZ3JhbURlc2NyaXB0aW9uID0gZXZ0Py5kZXNjcmlwdGlvbjtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coXCJzZWxlY3RlZCBmb3JtID09PT5cIiwgdGhpcy5jb250cm9scylcclxuICB9XHJcblxyXG4gIHJlbW92ZShldnQ6IGFueSwgdHlwZTogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnUk9MRSc6IHtcclxuICAgICAgICBsZXQgbXNnID0gJyc7XHJcbiAgICAgICAgbXNnID0gJ0lmIHlvdSBjaGFuZ2UgdGhlIHJvbGVzLCBhbnkgdW5zYXZlZCBjaGFuZ2VzIHdvdWxkIGJlIGxvc3QuJ1xyXG4gICAgICAgIGNvbnN0IHJvbGVzID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uX2lkICE9PSBldnQ/Ll9pZCk7XHJcbiAgICAgICAgdGhpcy5saXN0QWN0aW9uKHJvbGVzLCdST0xFJyk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCByb2xlcyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnUkMnOiB7XHJcbiAgICAgICAgY29uc3QgcmNzID0gdGhpcy5jb250cm9scz8ucmM/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lml0ZW1faWQgIT09IGV2dD8uaXRlbV9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3JjJywgcmNzKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdPV05FUic6e1xyXG4gICAgICAgIGNvbnN0IG93bmVycyA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCBvd25lcnMpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ09XTkVSX0dST1VQJzp7XHJcbiAgICAgICAgY29uc3Qgb3duZXJzX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCBvd25lcnNfZ3JvdXApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FQUFJPVkVSJzp7XHJcbiAgICAgICAgY29uc3QgYXBwcm92ZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIGFwcHJvdmVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBU1NJR05FRSc6e1xyXG4gICAgICAgIGNvbnN0IGFzc2lnbmVlID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWUnLCBhc3NpZ25lZSk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0QXNzaWduZWVPblJlbW92ZShldnQsdHlwZSlcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBU1NJR05FRV9HUk9VUCc6e1xyXG4gICAgICAgIGNvbnN0IGFzc2lnbmVlX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwJywgYXNzaWduZWVfZ3JvdXApO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEFzc2lnbmVlT25SZW1vdmUoZXZ0LHR5cGUpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9BU1NJR05FRSc6e1xyXG4gICAgICAgIGNvbnN0IGFzc2lnbmVlID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgYXNzaWduZWUpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaExpc3QoKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfQVNTSUdORUVfR1JPVVAnOntcclxuICAgICAgICBjb25zdCBhc3NpZ25lZV9ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXAnLCBhc3NpZ25lZV9ncm91cCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnUkVWSUVXRVInOntcclxuICAgICAgICBjb25zdCByZXZpZXdlciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3Jldmlld2VyJywgcmV2aWV3ZXIpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFJldmlld2VyT25SZW1vdmUoZXZ0LHR5cGUpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnUkVWSUVXRVJfR1JPVVAnOntcclxuICAgICAgICBjb25zdCByZXZpZXdlcl9ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yZXZpZXdlcl9ncm91cCcsIHJldmlld2VyX2dyb3VwKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRSZXZpZXdlck9uUmVtb3ZlKGV2dCx0eXBlKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfUkVWSUVXRVInOntcclxuICAgICAgICBjb25zdCByZXZpZXdlciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIHJldmlld2VyKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KClcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX1JFVklFV0VSX0dST1VQJzp7XHJcbiAgICAgICAgY29uc3QgcmV2aWV3ZXJfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwJywgcmV2aWV3ZXJfZ3JvdXApO1xyXG4gICAgICAgIHRoaXMuY29udHJvbHMucmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYS52YWx1ZSA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+MCA/ICdBTllPTkUnOnRoaXMuY29udHJvbHM/LnJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE/LnZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ09WRVJTRUVSJzp7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vdmVyc2VlcicsIG92ZXJzZWVyKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRPdmVyc2Vlck9uUmVtb3ZlKGV2dCx0eXBlKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ09WRVJTRUVSX0dST1VQJzp7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3ZlcnNlZXJfZ3JvdXAnLCBvdmVyc2Vlcl9ncm91cCk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0T3ZlcnNlZXJPblJlbW92ZShldnQsdHlwZSlcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX09WRVJTRUVSJzp7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInLCBvdmVyc2Vlcik7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9PVkVSU0VFUl9HUk9VUCc6e1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cCcsIG92ZXJzZWVyX2dyb3VwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUic6e1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInLCBvdmVyc2Vlcik7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVJfR1JPVVAnOntcclxuICAgICAgICBjb25zdCBvdmVyc2Vlcl9ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cCcsIG92ZXJzZWVyX2dyb3VwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBU1NFU1NNRU5UJyA6e1xyXG5cclxuICAgICAgICBsZXQgY3VycmVudCA9IGNsb25lRGVlcCh0aGlzLmNvbnRyb2xzLnByb2dyYW1fYXNzZXNzbWVudHM/LnZhbHVlKTtcclxuICAgICAgICBjb25zdCBpbmRleCA9IGN1cnJlbnQuZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlLmNhdGVnb3J5X2lkID09IGV2dC5jYXRlZ29yeV9pZCk7XHJcbiAgICAgICAgY3VycmVudFtpbmRleF0uYXNzZXNzbWVudElkcyA9IGN1cnJlbnRbaW5kZXhdLmFzc2Vzc21lbnRJZHMuZmlsdGVyKChhc3Nlc3NtZW50OiBhbnkpID0+IGFzc2Vzc21lbnQuaWQgIT09IGV2dC5pZCk7XHJcbiAgICAgICAgaWYoY3VycmVudFtpbmRleF0uYXNzZXNzbWVudElkcy5sZW5ndGggID09PSAwKSAgY3VycmVudC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMubGlzdEFjdGlvbihjdXJyZW50LCAnQVNTRVNTTUVOVCcpO1xyXG4gICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnRlJBTUVXT1JLJyA6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdmcmFtZXdvcmsnLCBudWxsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybklkcyhsaXN0OiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBsaXN0Py5tYXAoZWxlID0+IHsgaWYgKGVsZVtrZXldKSB7IHJldHVybiBlbGVba2V5XTsgfSB9KS5maWx0ZXIoZWxlID0+IGVsZSk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoTGlzdCgpe1xyXG4gICAgdGhpcy5zZWxlY3RlZEFzc2lnbmVlSWRzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHMgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRPdmVyc2VlcklkcyA9IFtdO1xyXG4gICAgbGV0IGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzIDphbnkgPSBbXTtcclxuICAgIHRoaXMuYXNzaWdub3JJZCA9IFtdO1xyXG4gICAgbGV0IHNlbGVjdGVkQXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlO1xyXG4gICAgbGV0IHNlbGVjdGVkUmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlO1xyXG4gICAgbGV0IHNlbGVjdGVkT3ZlcnNlZXJMaXN0ID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZTtcclxuICAgIGxldCBzZWxlY3RlZE92ZXJzZWVyRmFpbHVyZUxpc3QgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZTtcclxuICAgIGxldCBhc3NpZ25vciA9IHRoaXMuY3VycmVudFVzZXIoKVxyXG4gICAgdGhpcy5hc3NpZ25vcklkLnB1c2goYXNzaWdub3I/Lm1lbWJlcl9pZCk7XHJcbiAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKGFzc2lnbm9yPy5tZW1iZXJfaWQpXHJcbiAgICBzZWxlY3RlZEFzc2lnbmVlPy5mb3JFYWNoKCh1c2VyOmFueSk9PntcclxuICAgICAgdGhpcy5zZWxlY3RlZEFzc2lnbmVlSWRzLnB1c2godXNlcj8ubWVtYmVyX2lkKVxyXG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKHVzZXI/Lm1lbWJlcl9pZClcclxuICAgIH0pXHJcbiAgICBzZWxlY3RlZFJldmlld2VyPy5mb3JFYWNoKCh1c2VyOmFueSk9PntcclxuICAgICAgdGhpcy5zZWxlY3RlZFJldmlld2VySWRzLnB1c2godXNlcj8ubWVtYmVyX2lkKVxyXG4gICAgfSlcclxuICAgIHNlbGVjdGVkT3ZlcnNlZXJMaXN0Py5mb3JFYWNoKCh1c2VyOmFueSk9PntcclxuICAgICAgdGhpcy5zZWxlY3RlZE92ZXJzZWVySWRzLnB1c2godXNlcj8ubWVtYmVyX2lkKVxyXG4gICAgfSlcclxuICAgIHNlbGVjdGVkT3ZlcnNlZXJGYWlsdXJlTGlzdD8uZm9yRWFjaCgodXNlcjphbnkpPT57XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm1lbWJlcl9pZClcclxuICAgIH0pXHJcbiAgICB0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHMgPSBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHMpXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRBc3NpZ25lZUlkcyA9IFsuLi5uZXcgU2V0KHRoaXMuc2VsZWN0ZWRBc3NpZ25lZUlkcyldO1xyXG4gICAgdGhpcy5zZWxlY3RlZE92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQodGhpcy5zZWxlY3RlZE92ZXJzZWVySWRzKV07XHJcbiAgICBsZXQgZGlzYWJsZUFzc2lnbmVlTGlzdCA9IHRoaXMubGlzdHM/LkFMTF9VU0VSPy5maWx0ZXIoKHVzZXI6IGFueSkgPT4gKHRoaXMuc2VsZWN0ZWRSZXZpZXdlcklkcz8uaW5jbHVkZXModXNlcj8ubWVtYmVyX2lkKSB8fCB0aGlzLnNlbGVjdGVkT3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZCkpKTtcclxuICAgIHRoaXMuZGlzYWJsZWRBc3NpZ25lZUlkcyA9IHRoaXMucmV0dXJuSWRzKGRpc2FibGVBc3NpZ25lZUxpc3QsJ21lbWJlcl9pZCcpO1xyXG4gICAgbGV0IGRpc2FibGVSZXZpZXdlckxpc3QgPSB0aGlzLmxpc3RzPy5BTExfVVNFUj8uZmlsdGVyKCh1c2VyOiBhbnkpID0+ICh0aGlzLnNlbGVjdGVkT3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZCkgfHwgdGhpcy5zZWxlY3RlZEFzc2lnbmVlSWRzPy5pbmNsdWRlcyh1c2VyPy5tZW1iZXJfaWQpKSk7XHJcbiAgICB0aGlzLmRpc2FibGVSZXZpZXdlcklkcyA9IHRoaXMucmV0dXJuSWRzKGRpc2FibGVSZXZpZXdlckxpc3QsJ21lbWJlcl9pZCcpXHJcbiAgICBsZXQgZGlzYWJsZU92ZXJzZWVyTGlzdCA9ICB0aGlzLmxpc3RzPy5BTExfVVNFUj8uZmlsdGVyKCh1c2VyOiBhbnkpID0+IChhc3NpZ25vckFuZEFzc2lnbmVlc0lkcz8uaW5jbHVkZXModXNlcj8ubWVtYmVyX2lkKSB8fCB0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZCkpKTtcclxuICAgIHRoaXMuZGlzYWJsZU92ZXJzZWVySWRzID0gdGhpcy5yZXR1cm5JZHMoZGlzYWJsZU92ZXJzZWVyTGlzdCwnbWVtYmVyX2lkJylcclxuICB9XHJcblxyXG4gIHJlbW92ZVJvbGUoZXZ0OiBhbnkpe1xyXG4gICAgdGhpcy5vblJlbW92aW5nUm9sZS5lbWl0KGV2dCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy9iZWxvdyA0IGZ1bmN0aW9ucyBjYW4gYmUgZWFzaWx0eSBjb21iaW5lZCBpbnRvIG9uZSBhcyB0aGV5IGZvbGxvdyBzYW1lIGtpbmQgb2YgcGF0dGVybiBvciBjYW4gYmUgb2ZmbG9hZGVkIHRvIGEgZXh0ZXJuYWwgc2VydmljZVxyXG4gIHNldERlZmF1bHRBc3NpZ25lZShldnQ6YW55KXtcclxuICAgIGlmKGV2dD8udXNlcnM/Lmxlbmd0aCB8fCBldnQ/Lmdyb3Vwcz8ubGVuZ3RoKXtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUyA9IHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKTtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKTtcclxuXHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUyA9IHRoaXMubGlzdHMuQUxMX1VTRVI7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPSB0aGlzLmxpc3RzLkFMTF9HUk9VUDtcclxuICAgIH1cclxuICAgIGNvbnN0IGFzc2lnbmVlTWFwID0gIGV2dD8udXNlcnM/Lm1hcCgoZWxlOmFueSkgPT4gZWxlPy5tZW1iZXJfaWQpO1xyXG4gICAgbGV0IGN1cnJlbnREZWZhdWx0QXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU7XHJcbiAgICBjdXJyZW50RGVmYXVsdEFzc2lnbmVlID0gY3VycmVudERlZmF1bHRBc3NpZ25lZS5maWx0ZXIoKGVsZTphbnkpPT4gYXNzaWduZWVNYXAuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWUnLCBjdXJyZW50RGVmYXVsdEFzc2lnbmVlKTtcclxuICB9XHJcblxyXG4gIHNldERlZmF1bHRBc3NpZ25lZU9uUmVtb3ZlKGV2dDphbnksdHlwZTphbnkpe1xyXG4gICBzd2l0Y2godHlwZSl7XHJcbiAgICAgY2FzZSAnQVNTSUdORUUnIDp7XHJcbiAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUy5maWx0ZXIoKGVsZTphbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICBjb25zdCBkZWZhdWx0QXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU7XHJcbiAgICAgICBjb25zdCBhc3NpZ25lZSA9IGRlZmF1bHRBc3NpZ25lZS5maWx0ZXIoKGVsZTphbnkpID0+ICBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpXHJcbiAgICAgICBpZighYXNzaWduZWU/Lmxlbmd0aCl7XHJcbiAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSB0aGlzLmxpc3RzLkFMTF9VU0VSO1xyXG4gICAgICAgfVxyXG4gICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIGFzc2lnbmVlKTtcclxuXHJcblxyXG4gICAgICBicmVhaztcclxuICAgICB9XHJcbiAgICAgY2FzZSAnQVNTSUdORUVfR1JPVVAnOntcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAuZmlsdGVyKChlbGU6YW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgY29uc3QgZGVmYXVsdEFzc2lnbmVlR3JvdXAgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU7XHJcbiAgICAgIGNvbnN0IGFzc2lnbmVlR3JvdXAgPSBkZWZhdWx0QXNzaWduZWVHcm91cC5maWx0ZXIoKGVsZTphbnkpID0+ICBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKVxyXG4gICAgICBpZighYXNzaWduZWVHcm91cD8ubGVuZ3RoKXtcclxuICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gdGhpcy5saXN0cy5BTExfR1JPVVA7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlR3JvdXApO1xyXG4gICAgIH1cclxuICAgfVxyXG4gIH1cclxuICBzZXREZWZhdWx0UmV2aWV3ZXIoZXZ0OmFueSl7XHJcbiAgICBpZihldnQ/LnVzZXJzPy5sZW5ndGggfHwgZXZ0Py5ncm91cHM/Lmxlbmd0aCl7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJyk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA9IHRoaXMubGlzdHMuQUxMX0dST1VQO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmV2aWV3ZXJNYXAgPSAgZXZ0Py51c2Vycz8ubWFwKChlbGU6YW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk7XHJcbiAgICBsZXQgY3VycmVudERlZmF1bHRSZXZpZXdlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZTtcclxuICAgIGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIgPSBjdXJyZW50RGVmYXVsdFJldmlld2VyLmZpbHRlcigoZWxlOmFueSk9PiByZXZpZXdlck1hcC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIpO1xyXG4gIH1cclxuICBzZXREZWZhdWx0T3ZlcnNlZXIoZXZ0OmFueSl7XHJcbiAgICBpZihldnQ/LnVzZXJzPy5sZW5ndGggfHwgZXZ0Py5ncm91cHM/Lmxlbmd0aCl7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJyk7XHJcblxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSB0aGlzLmxpc3RzLkFMTF9VU0VSO1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID0gdGhpcy5saXN0cy5BTExfR1JPVVA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvdmVyc2Vlck1hcCA9ICBldnQ/LnVzZXJzPy5tYXAoKGVsZTphbnkpID0+IGVsZT8ubWVtYmVyX2lkKTtcclxuICAgIGxldCBjdXJyZW50RGVmYXVsdFJldmlld2VyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlO1xyXG4gICAgbGV0IGN1cnJlbnREZWZhdWx0RmFpbFJldmlld2VyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZTtcclxuICAgIGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIgPSBjdXJyZW50RGVmYXVsdFJldmlld2VyLmZpbHRlcigoZWxlOmFueSk9PiBvdmVyc2Vlck1hcC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgY3VycmVudERlZmF1bHRGYWlsUmV2aWV3ZXIgPSBjdXJyZW50RGVmYXVsdFJldmlld2VyLmZpbHRlcigoZWxlOmFueSk9PiBvdmVyc2Vlck1hcC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIpO1xyXG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInLCBjdXJyZW50RGVmYXVsdEZhaWxSZXZpZXdlcik7XHJcbiAgfVxyXG4gIHNldERlZmF1bHRSZXZpZXdlck9uUmVtb3ZlKGV2dDphbnksdHlwZTphbnkpe1xyXG4gICBzd2l0Y2godHlwZSl7XHJcbiAgICAgY2FzZSAnUkVWSUVXRVInIDp7XHJcbiAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUy5maWx0ZXIoKGVsZTphbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICBjb25zdCBkZWZhdWx0UmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU7XHJcbiAgICAgICBjb25zdCByZXZpZXdlciA9IGRlZmF1bHRSZXZpZXdlci5maWx0ZXIoKGVsZTphbnkpID0+ICBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpXHJcbiAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyJywgcmV2aWV3ZXIpO1xyXG5cclxuICAgICAgYnJlYWs7XHJcbiAgICAgfVxyXG4gICAgIGNhc2UgJ1JFVklFV0VSX0dST1VQJzp7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAgPSB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgIGNvbnN0IGRlZmF1bHRSZXZpZXdlckdyb3VwID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlO1xyXG4gICAgICBjb25zdCByZXZpZXdlckdyb3VwID0gZGVmYXVsdFJldmlld2VyR3JvdXAuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZClcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cCcsIHJldmlld2VyR3JvdXApO1xyXG4gICAgIH1cclxuICAgfVxyXG4gIH1cclxuICBzZXREZWZhdWx0T3ZlcnNlZXJPblJlbW92ZShldnQ6YW55LHR5cGU6YW55KXtcclxuICAgIHN3aXRjaCh0eXBlKXtcclxuICAgICAgY2FzZSAnT1ZFUlNFRVInIDp7XHJcbiAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMuZmlsdGVyKChlbGU6YW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRPdmVyc2VlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZTtcclxuICAgICAgICBjb25zdCBvdmVyc2VlciA9IGRlZmF1bHRPdmVyc2Vlci5maWx0ZXIoKGVsZTphbnkpID0+ICBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpXHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIG92ZXJzZWVyKTtcclxuXHJcbiAgICAgICAgY29uc3QgZGVmYXVsdEZhaWxPdmVyc2VlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJGYWlsID0gZGVmYXVsdEZhaWxPdmVyc2Vlci5maWx0ZXIoKGVsZTphbnkpID0+ICBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpXHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInLCBvdmVyc2VlckZhaWwpO1xyXG5cclxuICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ09WRVJTRUVSX0dST1VQJzp7XHJcbiAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID0gdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUC5maWx0ZXIoKGVsZTphbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgY29uc3QgZGVmYXVsdE92ZXJzZWVyR3JvdXAgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU7XHJcbiAgICAgICBjb25zdCBvdmVyc2Vlckdyb3VwID0gZGVmYXVsdE92ZXJzZWVyR3JvdXAuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZClcclxuICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXAnLCBvdmVyc2Vlckdyb3VwKTtcclxuXHJcbiAgICAgICBjb25zdCBkZWZhdWx0T3ZlcnNlZXJGYWlsZWRHcm91cCA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU7XHJcbiAgICAgICBjb25zdCBvdmVyc2VlckZhaWxlZEdyb3VwID0gZGVmYXVsdE92ZXJzZWVyRmFpbGVkR3JvdXAuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZClcclxuICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJGYWlsZWRHcm91cCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgfVxyXG5cclxuXHJcblxyXG4gIGZpZWxkRGVzZWxlY3Rvcih0eXBlOiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aXZlTGlzdCA9ICcnO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gICAgdGhpcy5tYXJrYXNUb3VjaGVkU2VsZWN0b3IodHlwZSlcclxuICB9XHJcbiAgbWFya2FzVG91Y2hlZFNlbGVjdG9yKGZpZWxkTmFtZTphbnkpe1xyXG4gICAgY29uc3QgdHlwZUZpZWxkOmFueSA9IHtcclxuICAgICAgUk9MRToncHJvZ3JhbV9yb2xlcycsXHJcbiAgICAgIEFQUFJPVkVSOidwcm9ncmFtX2FwcHJvdmVyJyxcclxuICAgICAgT1dORVI6J3Byb2dyYW1fb3duZXJzJyxcclxuICAgICAgT1dORVJfR1JPVVA6J3Byb2dyYW1fb3duZXJzX2dyb3VwJ1xyXG4gICAgIH1cclxuICAgICB0aGlzLmNvbnRyb2xzW3R5cGVGaWVsZFtmaWVsZE5hbWVdXT8ubWFya0FzVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hSb2xlcygpIHtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0Um9sZXMoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmxpc3RzLlJPTEVTID0gcmVzO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRTeXN0ZW1WYWwgPSB0aGlzLmxpc3RzPy5ST0xFUz8uZGF0YT8uZmlsdGVyKChlbGU6IGFueSkgPT4gKGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdrZXkgYWRtaW4nIHx8IGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdhZG1pbicpKT8ubWFwKChlbGU6YW55KSA9PiBlbGU/Ll9pZCk7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbCA9IHRoaXMubGlzdHM/LlJPTEVTPy5kYXRhPy5maWx0ZXIoKGVsZTogYW55KSA9PiAoZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2tleSBhZG1pbicgfHwgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2FkbWluJykpO1xyXG4gICAgICB0aGlzLmxpc3RzLlNZU1RFTV9ST0xFX0lEUyA9IGRlZmF1bHRTeXN0ZW1WYWw7XHJcbiAgICAgICAgaWYodGhpcy5tb2RlICE9PSAnRURJVCcpe1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCBkZWZhdWx0VmFsKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hHcm91cHNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9XHJcbiAgICB9KVxyXG4gIH1cclxuICAvL2ZldGNoIHRoZSBsaXN0IG9mIHJlc3BvbnNpYmlsaXRpZXMgY2VudGVyXHJcbiAgZmV0Y2hSQygpIHtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5saXN0cy5SQyA9IHJlcztcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIGZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKGNhbGxlZEZyb20/OiBhbnkpIHtcclxuICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IHRoaXMuY3VycmVudFVzZXIoKTtcclxuICAgIGNvbnN0IHJvbGVJZHMgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCk7XHJcbiAgIC8vIGlmIChmZXRjaEFsbCkge1xyXG4gICAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZVVzZXJzKHJvbGVJZHMpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpc1VzZXJGaW5kID0gcmVzPy5kYXRhPy5zb21lKCAocmVzOiBhbnkpID0+IHJlcz8ubWVtYmVyX2lkID09PSBsb2dnZWRJblVzZXI/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgICBpZighaXNVc2VyRmluZCkge1xyXG4gICAgICAgICAgICByZXM/LmRhdGE/LnB1c2gobG9nZ2VkSW5Vc2VyKTtcclxuICAgICAgICAgICAgcmVzLnRvdGFsX2l0ZW1zID0gcmVzPy50b3RhbF9pdGVtcyArIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLk9XTkVSUyA9IHJlcztcclxuICAgICAgICAgIHRoaXMubGlzdHMuQVBQUk9WRVJTID0gcmVzO1xyXG4gICAgICAgICAgaWYoIXJlcz8uZGF0YT8ubWFwKChlbGU6YW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk/LmluY2x1ZGVzKHRoaXMuY29udHJvbHMucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWVbMF0/Lm1lbWJlcl9pZCkpe1xyXG4gICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIFtdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzPy5hbGxfdXNlcl9pbl9yb2xlPy52YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCByZXM/LmRhdGEpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0T3duZXJzKHJlcz8uZGF0YSwgY2FsbGVkRnJvbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7IH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGZldGNoR3JvdXBzQXNzb2NpYXRlZFdpdGhSb2xlcygpe1xyXG4gICAgY29uc3Qgcm9sZUlkcyA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcclxuICAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZUdyb3Vwcyhyb2xlSWRzKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6KHJlczphbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMubGlzdHMuT1dORVJTX0dST1VQUyA9IHJlcztcclxuICAgICAgICAgIGNvbnN0IHJvbGVJZHM6IEFycmF5PHN0cmluZz4gID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZS5tYXAoKGVsZTogYW55KSA9PiBlbGUuX2lkKVxyXG4gICAgICAgICBjb25zdCBncm91cERldGFpbHMgPSAgdGhpcy5jb250cm9scy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWUuZmlsdGVyKChyb2xlSWQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZihyb2xlSWQucm9sZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGlzU2FtZVJvbGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICByb2xlSWQucm9sZXMuZm9yRWFjaCgocm9sZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZihyb2xlSWRzLmluY2x1ZGVzKHJvbGUucm9sZUlkKSkge1xyXG4gICAgICAgICAgICAgICAgICBpc1NhbWVSb2xlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgIGlmKGlzU2FtZVJvbGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByb2xlSWQ7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCBncm91cERldGFpbHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgIH0pXHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0T3duZXJzKHVzZXJMaXN0OiBhbnksIGNhbGxlZEZyb20/OiBhbnkpIHtcclxuICAgIGNvbnN0IGxvZ2dlZEludXNlciA9IHRoaXMuY3VycmVudFVzZXIoKTtcclxuICAgIGNvbnN0IGRlZmF1bHRPd25lciA9IHVzZXJMaXN0LmZpbHRlcigoZWxlOiBhbnkpID0+IFsnQURNSU4nLCAnS0VZX0FETUlOJ10uaW5jbHVkZXMoZWxlPy51c2VyX3JvbGUpICYmIGVsZT8ubWVtYmVyX2lkICE9IGxvZ2dlZEludXNlcj8ubWVtYmVyX2lkKTtcclxuICAgIHRoaXMubGlzdHMuTk9OX1JFTU9WQUJMRV9PV05FUlMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChbLi4uW2xvZ2dlZEludXNlcl0sIC4uLmRlZmF1bHRPd25lcl0sICdtZW1iZXJfaWQnKTtcclxuICAgIC8vIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIHRoaXMubGlzdHMuTk9OX1JFTU9WQUJMRV9PV05FUlMpO1xyXG4gICAgY29uc3QgcHJlU2VsZWN0ZWRVc2VycyA9IHRoaXMuZ2V0UHJlU2VsZWN0ZWRPd25lcnModGhpcy5jb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlLCB1c2VyTGlzdCk7XHJcbiAgICBpZihjYWxsZWRGcm9tICE9PSAnZ2V0UHJvZ3JhbURldGFpbHMnKSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIHByZVNlbGVjdGVkVXNlcnM/Lmxlbmd0aCA/IHByZVNlbGVjdGVkVXNlcnMgOiB0aGlzLmxpc3RzLk5PTl9SRU1PVkFCTEVfT1dORVJTKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFByZVNlbGVjdGVkT3duZXJzKHByZXZpb3VzU2VsZWN0ZWRVc2VyczogYW55LCBjdXJyZW50VXNlcnM6IGFueSkge1xyXG4gICAgbGV0IGZpbmFsVXNlcnMgPSBbXTtcclxuICAgIGZpbmFsVXNlcnMgPSBwcmV2aW91c1NlbGVjdGVkVXNlcnM/LmZpbHRlcigocHJldmlvdXM6IGFueSkgPT4gY3VycmVudFVzZXJzPy5zb21lKChjdXJyZW50IDogYW55KSA9PiBwcmV2aW91cz8ubWVtYmVyX2lkID09PSBjdXJyZW50Py5tZW1iZXJfaWQpKTtcclxuICAgIHJldHVybiBmaW5hbFVzZXJzO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hPcmdhbml6YXRpb25Vc2VycyhkYXRhPzogYW55KXtcclxuICAgIHRoaXMubGlzdExvYWRpbmdTdGF0ZS5VU0VSUyA9IHRydWU7XHJcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsT3JnVXNlcigpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6KHJlczphbnkpPT57XHJcbiAgICAgICAgdGhpcy5saXN0cy5BTExfVVNFUiA9IHJlcztcclxuICAgICAgICB0aGlzLmxpc3RzLkFTU0lHTkVFUyA9IHJlcztcclxuICAgICAgICB0aGlzLmxpc3RzLlJFVklFV0VSUyA9IHJlcztcclxuICAgICAgICB0aGlzLmxpc3RzLk9WRVJTRUVSUyA9IHJlcztcclxuICAgICAgICBpZih0aGlzLm1vZGUgIT09J0VESVQnKXtcclxuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHJlcztcclxuICAgICAgICB9ZWxzZSBpZih0aGlzLm1vZGUgPT09ICdFRElUJyl7XHJcbiAgICAgICAgICAgaWYoIXRoaXMuY29udHJvbHMucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSByZXM7XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICAgIGlmKCF0aGlzLmNvbnRyb2xzLnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gcmVzO1xyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgICBpZighdGhpcy5jb250cm9scy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHJlcztcclxuICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdGUuVVNFUlMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOigpPT57dGhpcy5saXN0TG9hZGluZ1N0YXRlLlVTRVJTID0gZmFsc2U7fVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICBmZXRjaE9yZ2FuaXphdGlvbkdyb3VwKGRhdGE/OiBhbnkpe1xyXG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaENvbXBsaWFuY2VHcm91cHMoKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICAgdGhpcy5saXN0cy5BTExfR1JPVVAgPSByZXM7XHJcblxyXG4gICAgICAgICB0aGlzLmxpc3RzLkFTU0lHTkVFU19HUk9VUCA9IHJlcztcclxuICAgICAgICAgdGhpcy5saXN0cy5SRVZJRVdFUlNfR1JPVVAgPSByZXM7XHJcblxyXG4gICAgICAgICB0aGlzLmxpc3RzLk9WRVJTRUVSU19HUk9VUCA9IHJlcztcclxuXHJcbiAgICAgICAgIGlmKHRoaXMubW9kZSAhPT0nRURJVCcpe1xyXG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IHJlcztcclxuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID0gcmVzO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgIGVycm9yOihlcnI6YW55KT0+e31cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBmaWxlVXBsb2FkVHJhY2tlciA9IHtcclxuICAgIGRlc2NyaXB0aW9uOiBbXSxcclxuICAgIG9iamVjdGl2ZTogW11cclxuICB9XHJcblxyXG4gIHNlbGVjdEZpbGUodHlwZTogYW55LCBmaWxlczogYW55KSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBmaWxlcy5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgY29uc3QgbmFtZSA9IGZpbGVzW2ldLmZpbGUubmFtZSA/PyAnJztcclxuICAgICAgdGhpcy51cGxvYWRGaWxlcyh0eXBlLCBmaWxlc1tpXS5maWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwbG9hZEZpbGVzKHR5cGU6ICdERVNDUklQVElPTicgfCAnT0JKRUNUSVZFJywgZmlsZTogYW55KSB7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XHJcbiAgICBjb25zdCBkZXN0aW5hdGlvblN0cmluZyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKS50b1N0cmluZygpO1xyXG4gICAgY29uc3QgZHVtbXlGaWxlID0ge1xyXG4gICAgICBmaWxlX3VybF9wYXRoOiBgJHtmaWxlPy5uYW1lfWAsXHJcbiAgICAgIG5hbWU6IGAke2ZpbGU/Lm5hbWV9YCxcclxuICAgICAgdXBsb2FkaW5nOiB0cnVlLFxyXG4gICAgICBvcmdfZmlsZTogYCR7ZmlsZT8ubmFtZX1gXHJcbiAgICB9XHJcbiAgICBpZiAodHlwZSA9PT0gJ0RFU0NSSVBUSU9OJykge1xyXG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCBbLi4uZGVzY3JpcHRpb24sIC4uLltkdW1teUZpbGVdXSlcclxuICAgICAgdGhpcy5wcm9ncmFtU2VydmljZS51cGxvYWRGaWxlcyhmb3JtRGF0YSwgZGVzdGluYXRpb25TdHJpbmcpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xyXG4gICAgICAgICAgbGV0IGRlc2NyaXB0aW9uSW5kZXggPSBkZXNjcmlwdGlvbi5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlID09PSByZXM/Lm9yZ19maWxlKTtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uW2Rlc2NyaXB0aW9uSW5kZXhdID0gcmVzXHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKSlcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgIT09IGZpbGU/Lm5hbWUpO1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCB0aGlzLnVuaXF1ZUJ5UHJvcChkZXNjcmlwdGlvbiwgJ29yZ19maWxlJykpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnT0JKRUNUSVZFJykge1xyXG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCBbLi4uZGVzY3JpcHRpb24sIC4uLltkdW1teUZpbGVdXSlcclxuICAgICAgdGhpcy5wcm9ncmFtU2VydmljZS51cGxvYWRGaWxlcyhmb3JtRGF0YSwgZGVzdGluYXRpb25TdHJpbmcpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xyXG4gICAgICAgICAgbGV0IGRlc2NyaXB0aW9uSW5kZXggPSBkZXNjcmlwdGlvbi5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlID09PSByZXM/Lm9yZ19maWxlKTtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uW2Rlc2NyaXB0aW9uSW5kZXhdID0gcmVzXHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKSlcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgIT09IGZpbGU/Lm5hbWUpO1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCB0aGlzLnVuaXF1ZUJ5UHJvcChkZXNjcmlwdGlvbiwgJ29yZ19maWxlJykpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGRlbGV0ZUF0dGFjaG1lbnQodHlwZTogJ0RFU0NSSVBUSU9OJyB8ICdPQkpFQ1RJVkUnLCBmaWxlOiBhbnkpIHtcclxuICAgIGlmICh0eXBlID09PSAnREVTQ1JJUFRJT04nKSB7XHJcbiAgICAgIGxldCBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xyXG4gICAgICBpZiAoZGVzY3JpcHRpb24pIHtcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgIT09IGZpbGU/Lm9yZ19maWxlKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIGRlc2NyaXB0aW9uKVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdPQkpFQ1RJVkUnKSB7XHJcbiAgICAgIGxldCBvYmplY3RpdmUgPSB0aGlzLmNvbnRyb2xzPy5vYmplY3RpdmVfYXR0YWNobWVudHM/LnZhbHVlID8/IFtdO1xyXG4gICAgICBpZiAob2JqZWN0aXZlKSB7XHJcbiAgICAgICAgb2JqZWN0aXZlID0gb2JqZWN0aXZlLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgIT09IGZpbGU/Lm9yZ19maWxlKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIG9iamVjdGl2ZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdEFsbFJvbGVPd25lcihldnQ6IGFueSkge1xyXG4gICAgLy9uZWVkIHRvIGZldGNoIGFsbCB0aGUgdXNlcnMgZm9yIGFsbCB0aGUgc2VsZWN0ZWQgcm9sZXNcclxuICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IHRoaXMuY3VycmVudFVzZXIoKTtcclxuICAgIGxldCByb2xlSWQgPSBbXTtcclxuICAgIGxldCB1c2VyOmFueTtcclxuICAgIGlmKGV2dD8udGFyZ2V0Py5jaGVja2VkKXtcclxuICAgICAgIHJvbGVJZCA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcclxuICAgICAgIGlmKHRoaXMuZmVhdHVyZWZsYWdHcm91cHMpe1xyXG4gICAgICAgICB1c2VyPXRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcCgoZWxlOmFueSk9PmVsZT8uX2lkKTtcclxuICAgICAgICAgdGhpcy5jb250cm9scy5wcm9ncmFtX293bmVyc19ncm91cC52YWx1ZT0gdXNlcjtcclxuXHJcbiAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWUgPT0+XCIsIHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWUpO1xyXG4gICAgICByb2xlSWQgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlPy5tYXAoKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYoWydrZXkgYWRtaW4nLCAnYWRtaW4nXS5pbmNsdWRlcyhlbGUucm9sZU5hbWUudG9Mb3dlckNhc2UoKSkgKSB7XHJcbiAgICAgICAgICByZXR1cm4gZWxlPy5faWRcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coXCJ0aGlzLmNvbnRyb2xzLnByb2dyYW1fb3duZXJzPy52YWx1ZSA9PT5cIixyb2xlSWQsICB0aGlzLmNvbnRyb2xzLnByb2dyYW1fb3duZXJzPy52YWx1ZSlcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZmV0Y2hBbGxSb2xlVXNlcnMocm9sZUlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy51bmlxdWVCeVByb3AoWy4uLltsb2dnZWRJblVzZXJdLCAuLi5yZXM/LmRhdGFdLCAnbWVtYmVyX2lkJylcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCB1c2VyKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaEFsbFJvbGVHcm91cHModXNlcikuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVuaXF1ZUJ5UHJvcChbLi4ucmVzPy5kYXRhXSwgJ2dyb3VwX2lkJylcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCB1c2VyKTtcclxuICAgICAgICB9XHJcbiAgIH0pXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIFJldHVybnMgdGhlIHVuaXF1ZSBhcnJheSBvZiBvYmplY3QgYmFzZWQgb24gdW5pcXVlIGtleVxyXG4gICAqIEBwYXJhbSBhcnJheVxyXG4gICAqIEBwYXJhbSBrZXlcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHVuaXF1ZUJ5UHJvcChhcnJheTogYW55LCBrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oXHJcbiAgICAgIGFycmF5XHJcbiAgICAgICAgLnJlZHVjZShcclxuICAgICAgICAgIChhY2M6IGFueSwgaXRlbTogYW55KSA9PiAoXHJcbiAgICAgICAgICAgIGl0ZW0gJiYgaXRlbVtrZXldICYmIGFjYy5zZXQoaXRlbVtrZXldLCBpdGVtKSxcclxuICAgICAgICAgICAgYWNjXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgbmV3IE1hcCgpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC52YWx1ZXMoKVxyXG4gICAgKTtcclxuICB9XHJcbiAgc2V0TGlzdChsaXN0OiBhbnlbXSwgaWRzOiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xyXG4gICAgaWRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGxpc3QuZmluZEluZGV4KChsaXN0RWxlbWVudDogYW55KSA9PiBsaXN0RWxlbWVudFtrZXldID09IGVsZW1lbnQpO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgIHNhdmVQcm9ncmFtKCl7XHJcbiAgICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgIGxldCBwYXlsb2FkID0gIHRoaXMucHJvZ3JhbVNlcnZpY2UuYnVpbGRQYXlsb2FkKHRoaXMucHJvZ3JhbUZvcm0sdGhpcyk7XHJcbiAgICAgIGlmKHBheWxvYWQgJiYgdGhpcy5tb2RlID09PSAnQ1JFQVRFJyl7XHJcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2Uuc2F2ZVByb2dyYW0ocGF5bG9hZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkID0gcmVzLl9pZFxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjooZXJyOmFueSk9PntcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgICAgICBpZihlcnI/LmVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnQ2F0ZWdvcnkgYWxyZWFkeSBleGlzdCcpKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRoaXMuaXNOYW1lRXhpc3RzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgIH1cclxuICAgICAgfSlcclxuICAgfVxyXG4gICBpZihwYXlsb2FkICYmIHRoaXMubW9kZSA9PT0gJ0VESVQnKXtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UudXBkYXRlUHJvZ3JhbShwYXlsb2FkLCB0aGlzLnByb2dyYW1JZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkID0gcmVzLl9pZDtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6KGVycjphbnkpPT57XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgICAgICAgaWYoZXJyPy5lcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoJ0NhdGVnb3J5IGFscmVhZHkgZXhpc3QnKSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aGlzLmlzTmFtZUV4aXN0cyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gfVxyXG4gIH1cclxuXHJcbiAgYWN0aW9uKGV2ZW50OiBzdHJpbmcpIHtcclxuICAgIGNvbnNvbGUubG9nKGV2ZW50KVxyXG4gICAgc3dpdGNoIChldmVudCkge1xyXG4gICAgICBjYXNlICdhZGRNb3JlJzpcclxuICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd2aWV3UHJvZ3JhbSc6XHJcbiAgICAgICB0aGlzLnZpZXdQcm9ncmFtcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmlld1Byb2dyYW1zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcclxuICAgIGxldCB1cmw6IHN0cmluZztcclxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICB1cmwgPSAnaHR0cDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVybCA9ICdodHRwczovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgdXJsICs9ICcvcHJvZ3JhbS13b3Jrcm9vbT9pZD0nICsgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdXJsICs9ICcvcHJvZ3JhbS9wcm9ncmFtLXdvcmtyb29tP2lkPScgKyB0aGlzLmNyZWF0ZWRQcm9ncmFtSWQ7XHJcbiAgICB9XHJcblxyXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICBjb25zb2xlLmxvZyhcInRoaXMuY3JlYXRlZFByb2dyYW1JZCA9PT5cIiwgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkKVxyXG5cclxuICB9XHJcbiAgcmVzZXRGb3JtKCl7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgY29uc3QgIERFRkFVTFRfVkFMVUVTID0ge1xyXG4gICAgcHJvZ3JhbV90eXBlOjEsXHJcbiAgICBwcm9ncmFtX25hbWU6JycsXHJcbiAgICBwcm9ncmFtX2Rlc2NyaXB0aW9uOicnLFxyXG4gICAgcHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50czpbXSxcclxuICAgIHByb2dyYW1fb2JqZWN0aXZlOicnLFxyXG4gICAgcHJvZ3JhbV9vYmplY3RpdmVfYXR0YWNobWVudHM6W10sXHJcbiAgICBwcm9ncmFtX3JvbGVzOltdLFxyXG4gICAgYWxsX3VzZXJfaW5fcm9sZTpmYWxzZSxcclxuICAgIHByb2dyYW1fb3duZXJzOltdLFxyXG4gICAgcHJvZ3JhbV9vd25lcnNfZ3JvdXA6W10sXHJcbiAgICBwcm9ncmFtX2FwcHJvdmVyOltdLFxyXG4gICAgcGVyZm9ybWFuY2VfY2FsY3VsYXRpb246IFwiUEFTVF9FVkVOVFwiLFxyXG4gICAgcmVjdXJyaW5nX2ZyZXF1ZW5jeTpmYWxzZSxcclxuICAgIGxvY2tfc2NvcGVfY2hhbmdlOmZhbHNlLFxyXG4gICAgZnJhbWV3b3JrOltdLFxyXG4gICAgcmM6W10sXHJcbiAgICBwcm9ncmFtX2Fzc2lnbmVlOiBbXSxcclxuICAgIHByb2dyYW1fYXNzaWduZWVfZ3JvdXA6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlOiBbXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cDogW10sXHJcbiAgICBhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhOiAnQUxMJyxcclxuICAgIHByb2dyYW1fcmV2aWV3ZXI6IFtdLFxyXG4gICAgcHJvZ3JhbV9yZXZpZXdlcl9ncm91cDogW10sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwOiBbXSxcclxuICAgIHJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE6ICdTRVFVRU5USUFMJyxcclxuICAgIHByb2dyYW1fb3ZlcnNlZXI6IFtdLFxyXG4gICAgcHJvZ3JhbV9vdmVyc2Vlcl9ncm91cDogW10sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwOiBbXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cDogW10sXHJcbiAgICBwcm9ncmFtX2Fzc2Vzc21lbnRzOiBbXSxcclxuICAgIGV2aWRlbmNlX3JlcXVpcmVkOiBmYWxzZSxcclxuICAgIGFsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZTogZmFsc2UsXHJcbiAgICBjdXN0b21fZmllbGRzOiBbXSxcclxuICAgIHByb2dyYW1fc3RhdGU6IDAsXHJcbiAgIH1cclxuICAgdGhpcy5yZXNldEFkZGl0aW9uYWxPcHRpb24oKTtcclxuICAgdGhpcy5wcm9ncmFtRm9ybS5yZXNldCgpO1xyXG4gICB0aGlzLnByb2dyYW1Gb3JtLnBhdGNoVmFsdWUoREVGQVVMVF9WQUxVRVMpO1xyXG4gICB0aGlzLmVkaXRvckRhdGEgID0ge1xyXG4gICAgcHJvZ3JhbU9iamVjdGl2ZTogJycsXHJcbiAgICBwcm9ncmFtRGVzY3JpcHRpb246ICcnXHJcbiAgfVxyXG4gIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgdGhpcy5pc05hbWVFeGlzdHMgPSBmYWxzZTtcclxuICAgdGhpcy5mZXRjaFJvbGVzKCk7XHJcbiAgIHRoaXMucmVmcmVzaEZvcm0uZW1pdCh0cnVlKTtcclxuICAgdGhpcy5mb3JtLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGNsb3NlU21pbGV5KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6ICcnLCBjb25maXJtOiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBwcm9ncmFtIGRldGFpbHMgd2hlbiB1c2VyIGlzIHRyeWluZyB0byBlZGl0IHByb2dyYW1cclxuICAgKi9cclxuICBnZXRQcm9ncmFtRGV0YWlscygpIHtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0UHJvZ3JhbSh0aGlzLnByb2dyYW1JZCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX25hbWUnLCByZXM/Lm5hbWUpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV90eXBlJywgcmVzPy5wcm9ncmFtVHlwZSk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX29iamVjdGl2ZScsIHJlcz8ucHJvZ3JhbV9vYmplY3RpdmU/LnRleHQpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgnYWxsX3VzZXJfaW5fcm9sZScsIHJlcz8uYWxsX3VzZXJfaW5fcm9sZSk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgcmVzPy5kZXNjcmlwdGlvbj8uYXR0YWNobWVudHMpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vYmplY3RpdmVfYXR0YWNobWVudHMnLCByZXM/LnByb2dyYW1fb2JqZWN0aXZlPy5hdHRhY2htZW50cyk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbicsIHJlcz8uY2FsY3VsYXRlX3Bhc3RfdXBjb21pbmdfZXZlbnQpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmVjdXJyaW5nX2ZyZXF1ZW5jeScsIHJlcz8ucHJvZ3JhbV9mcmVxdWVuY3kpO1xyXG4gICAgICBpZihyZXM/LnByb2dyYW1fZnJlcXVlbmN5ICYmIHRoaXMubW9kZSA9PT0gJ0VESVQnICYmICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSkge1xyXG4gICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5QUk9HUkFNX0ZSRVFVRU5DWSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgnbG9ja19zY29wZV9jaGFuZ2UnLCByZXM/LmxvY2tfc2NvcGUpO1xyXG4gICAgICBpZihyZXM/LmxvY2tfc2NvcGUgJiYgKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpKSB7XHJcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlNDT1BFX0NIQU5HRVMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fc3RhdGUnLCByZXM/LnN0YXRlKTtcclxuICAgICAgY29uc3QgcmMgPSByZXMucmNfZGV0YWlscy5tYXAoKGVsZTphbnkpID0+IHtyZXR1cm4gey4uLmVsZSxpdGVtX25hbWUgOiBlbGU/LnJjX25hbWUsaXRlbV9pZDogZWxlPy5yY19pZH19KVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmMnLHJjKTtcclxuICAgICAgaWYocmVzPy5yY19kZXRhaWxzICYmIHJlcz8ucmNfZGV0YWlscz8ubGVuZ3RoICYmICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSkge1xyXG4gICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5SQyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZXZpZGVuY2VfcmVxdWlyZWQnLCByZXM/LmV2aWRlbmNlX3VwbG9hZF9mbGFnKTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2FsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZScsIHJlcz8uaXNfa2V5X2V2aWRlbmNlKTtcclxuICAgICAgaWYoKHJlcz8uZXZpZGVuY2VfdXBsb2FkX2ZsYWcgfHwgcmVzPy5pc19rZXlfZXZpZGVuY2UpICYmICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSl7XHJcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkZPUk1BVEVfRVZJREVOQ0UgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhJywgcmVzLmRlZmF1bHRfYXNzaWduZWVfdHlwZSk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdyZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhJywgcmVzLmRlZmF1bHRfcmV2aWV3ZXJzX3R5cGUpO1xyXG5cclxuICAgICAgdGhpcy5lZGl0b3JEYXRhLnByb2dyYW1EZXNjcmlwdGlvbiA9IHJlcy5kZXNjcmlwdGlvbj8udGV4dDtcclxuICAgICAgdGhpcy5lZGl0b3JEYXRhLnByb2dyYW1PYmplY3RpdmUgPSByZXMucHJvZ3JhbV9vYmplY3RpdmU/LnRleHQ7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdmcmFtZXdvcmsnLHsuLi5yZXMuZnJhbWV3b3JrX2RldGFpbHMsLi4ue19pZDpyZXM/LmZyYW1ld29ya19kZXRhaWxzPy5mcmFtZXdvcmtfaWR9fSlcclxuICAgICAgY29uc3Qgcm9sZSA9IHJlcz8ucm9sZXM/Lm1hcCgoZWxlOmFueSkgPT4gIHtyZXR1cm4ge19pZDplbGU/LnJvbGVJZCxyb2xlTmFtZTplbGU/LnJvbGVOYW1lLCBsaWNlbnNlVHlwZTplbGU/LmxpY2Vuc2VUeXBlICxwZXJtaXNzaW9uR3JvdXBOYW1lIDplbGU/LnBlcm1pc3Npb25Hcm91cE5hbWV9fSlcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCByb2xlKTtcclxuICAgICAgaWYocmVzPy5yb2xlcyAmJiByZXM/LnJvbGVzPy5sZW5ndGggICYmIHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJPTEVTID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZihyZXMuYXNzZXNzbWVudERhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgcmVzLmFzc2Vzc21lbnREYXRhID0gcmVzLmFzc2Vzc21lbnREYXRhLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7Li4uZWxlLCBhc3Nlc3NtZW50SWRzOiBlbGU/LmFzc2Vzc21lbnRzLm1hcCgoYXNzZXNzOmFueSkgPT4geyByZXR1cm4gey4uLmFzc2VzcyxpZDphc3Nlc3M/Ll9pZH19KX19XHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3Nlc3NtZW50cycsIHJlcy5hc3Nlc3NtZW50RGF0YSk7XHJcbiAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0VTU01FTlQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihyZXMuY3VzdG9tX2ZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnY3VzdG9tX2ZpZWxkcycsIHJlcy5jdXN0b21fZmllbGRzKTtcclxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQ1VTVE9NX0ZJRUxEUyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXNBcHByb3ZlckRpc2FibGVkID0gcmVzPy5pc0FwcHJvdmVyRGlzYWJsZWQgPz8gZmFsc2U7XHJcbiAgICAgIGlmKHRoaXMuaXNBcHByb3ZlckRpc2FibGVkKXtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpPT57dGhpcy5kaXNhYmxlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMuZW1pdChbJ0FQUFJPVkVSJ10pfSw1MDApXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnBvcHVsYXRlTWVtYmVycyhyZXMpO1xyXG4gICAgICB0aGlzLnBvcHVsYXRlR3JvdXBzKHJlcyk7XHJcbiAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoJ2dldFByb2dyYW1EZXRhaWxzJyk7XHJcbiAgICAgIHRoaXMuZmV0Y2hHcm91cHNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XHJcbiAgICAgIHRoaXMuZmV0Y2hPcmdhbml6YXRpb25Hcm91cCgpO1xyXG4gICAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uVXNlcnMoKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbnBvcHVsYXRlTWVtYmVycyhyZXM6YW55KXtcclxuICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgY29uc3QgaWRzPSBbXHJcbiAgICAuLi5uZXcgU2V0KFtcclxuICAgICAgLi4uKHJlcz8ub3duZXJzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uYXBwcm92ZXJzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uYXNzaWduZWVfaWRzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9pZHMgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5yZXZpZXdlcnMgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5kZWZhdWx0X3Jldmlld2VycyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/Lm92ZXJzZWVycz8uY2NfZW1haWwgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWwgPz8gW10pLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWwgPz8gW10pLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlKVxyXG4gICAgIF0pXVxyXG4gICAgICAgdGhpcy5wcm9ncmFtU2VydmljZS5nZXRNZW1lYmVyQnlJZHMoaWRzKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDoocmVzcG9uc2U6YW55KT0+e1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZihyZXMub3duZXJzICYmIHJlcz8ub3duZXJzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IG93bmVycyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5vd25lcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCBvd25lcnMpO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1dORVJTID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzLmFwcHJvdmVycyAmJiByZXM/LmFwcHJvdmVycz8ubGVuZ3RoICYmICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFwcHJvdmVycyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5hcHByb3ZlcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIGFwcHJvdmVycyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFQUFJPVkVSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LmFzc2lnbmVlX2lkcyAmJiByZXM/LmFzc2lnbmVlX2lkcz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5hc3NpZ25lZV9pZHMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3NpZ25lZScsIGFzc2lnbmVlKTtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gYXNzaWduZWU7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0lHTkVFUyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2lkcyAmJiByZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIGFzc2lnbmVlKTtcclxuICAgICAgICAgICAgICBpZih0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LnJldmlld2VycyAmJiByZXM/LnJldmlld2Vycz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCByZXZpZXdlcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8ucmV2aWV3ZXJzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcmV2aWV3ZXInLCByZXZpZXdlcnMpO1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSByZXZpZXdlcnM7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LmRlZmF1bHRfcmV2aWV3ZXJzICYmIHJlcz8uZGVmYXVsdF9yZXZpZXdlcnM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmV2aWV3ZXJzID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfcmV2aWV3ZXJzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIHJldmlld2Vycyk7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHJlcz8ub3ZlcnNlZXJzICYmIHJlcz8ub3ZlcnNlZXJzPy5jY19lbWFpbD8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNjID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/Lm92ZXJzZWVycz8uY2NfZW1haWwuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyJywgY2MpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IGNjO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzICYmIChyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbD8ubGVuZ3RoIHx8IHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWw/Lmxlbmd0aCkpe1xyXG4gICAgICAgICAgICAgIGlmKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdENDID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIGRlZmF1bHRDQyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWw/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmYWlsQ0MgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWwuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJywgZmFpbENDKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHwgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9WRVJTRUVSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICB9KVxyXG4gICAgICAgdGhpcy5jaGVja1Byb2dyYW1PcHRpb25GaWVsZCgpO1xyXG59XHJcblxyXG5cclxucG9wdWxhdGVHcm91cHMocmVzOmFueSl7XHJcbiAgY29uc3QgaWRzPSBbXHJcbiAgICAuLi5uZXcgU2V0KFtcclxuICAgICAgLi4uKHJlcz8ub3duZXJzX2dyb3VwID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uYXNzaWduZWVfZ3JvdXBfaWRzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHMgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3VwcyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LnJldmlld2VyX2dyb3VwX2lkcyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3VwcyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3VwcyA/PyBbXSlcclxuICAgICBdKV1cclxuICAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0TWVtYmVyQnlHcm91cHMoaWRzKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDoocmVzcDphbnkpPT57XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzcD8uZGF0YTtcclxuICAgICAgICAgICAgaWYocmVzLm93bmVyc19ncm91cCAmJiByZXM/Lm93bmVyc19ncm91cD8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCBvd25lcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8ub3duZXJzX2dyb3VwPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVyc19ncm91cCcsIG93bmVycyk7XHJcbiAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHJlcy5hc3NpZ25lZV9ncm91cF9pZHMgJiYgcmVzPy5hc3NpZ25lZV9ncm91cF9pZHM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgY29uc3QgYXNzaWduZWUgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8uYXNzaWduZWVfZ3JvdXBfaWRzPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWVfZ3JvdXAnLCBhc3NpZ25lZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IGFzc2lnbmVlO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcyAmJiByZXM/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlKTtcclxuICAgICAgICAgICAgICBpZih0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzPy5yZXZpZXdlcl9ncm91cF9pZHMgJiYgcmVzPy5yZXZpZXdlcl9ncm91cF9pZHM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8ucmV2aWV3ZXJfZ3JvdXBfaWRzPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcmV2aWV3ZXJfZ3JvdXAnLCByZXZpZXdlcik7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA9IHJldmlld2VyO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkVWSUVXRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzICYmIHJlcz8uZGVmYXVsdF9yZXZpZXdlcl9ncm91cF9pZHM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSByZXNwb25zZT8uZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cCcsIHJldmlld2VyKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEudmFsdWUgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPjAgPyAnQU5ZT05FJzp0aGlzLmNvbnRyb2xzPy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZTtcclxuICAgICAgICAgICAgICBpZih0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fCAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzPy5vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3VwcyAmJiByZXM/Lm92ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IG92ZXJzZWVyR3JvdXAgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8ub3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHM/LmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vdmVyc2Vlcl9ncm91cCcsIG92ZXJzZWVyR3JvdXApO1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPSBvdmVyc2Vlckdyb3VwO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHMgJiYgcmVzPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRPdmVyc2Vlckdyb3VwID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHM/LmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwJywgZGVmYXVsdE92ZXJzZWVyR3JvdXApO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3VwcyAmJiByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3Vwcz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0T3ZlcnNlZXJGYWlsdXJlR3JvdXAgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXAnLCBkZWZhdWx0T3ZlcnNlZXJGYWlsdXJlR3JvdXApO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8ICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gQXMgb2Ygbm93IGdyb3VwcyBoYXMgYmVlbiByZW1vdmVkIGZyb20gcmV2aWV3ZXIgYW5kIG92ZXJzZWVlciBpZiB0aGlzIGdyb3VwIGZlYXR1cmUgZ2V0cyBpbmNvcGVyYXRlZCBpblxyXG4gICAgICAgICAgLy9mdXR1cmUgbmVlZCB0byBhZGQgZ3JvdXAgY29uZGl0aW9uIGhlcmUgdG8gcHJlcG9wdWxhdGUgdGhlIGRhdGEgd2hpbGUgZWRpdGluZy5cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuY2hlY2tQcm9ncmFtT3B0aW9uRmllbGQoKTtcclxuICAgICAgfVxyXG5cclxuICByZXNldEFkZGl0aW9uYWxPcHRpb24oKSB7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUk9MRVMgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PV05FUlMgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BUFBST1ZFUiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlBST0dSQU1fRlJFUVVFTkNZID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uU0NPUEVfQ0hBTkdFUyA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJDID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkVWSUVXRVIgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PVkVSU0VFUiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0VTU01FTlQgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5GT1JNQVRFX0VWSURFTkNFID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQ1VTVE9NX0ZJRUxEUyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tQcm9ncmFtT3B0aW9uRmllbGQoKTogYW55IHtcclxuICAgIGNvbnN0IGNvZGUgPSBbJ1BST0dSQU1fRlJFUVVFTkNZJywgJ1NDT1BFX0NIQU5HRVMnLCAnUkMnLCAnQVNTSUdORUVTJywgJ1JFVklFV0VSJywgJ09WRVJTRUVSJywgJ0FTU0VTU01FTlQnLCAnRk9STUFURV9FVklERU5DRScsICdDVVNUT01fRklFTERTJ11cclxuICAgIGxldCBpc01vcmVPcHRpb24gPSBmYWxzZTtcclxuICAgIGNvZGUuZm9yRWFjaCggKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmKHRoaXMuYWRkaXRpb25hbE9wdGlvbltrZXldKXtcclxuICAgICAgICBpc01vcmVPcHRpb24gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5pc1Byb2dyYW1TY29wZSA9IGlzTW9yZU9wdGlvbjtcclxuICB9XHJcbiAgZW5hYmxlZmVhdHVyZSgpe1xyXG4gICAgdGhpcy5mZWF0dXJlZmxhZ3JvbGUgPSB0aGlzLmFsbG93ZWRGZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX3JvbGVfaW1wcm92ZW1lbnRzJyk7XHJcbiAgICB0aGlzLmlzQXNjZW50QWxsb3dlZCA9IHRoaXMuYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfY29tcGxpYW5jZV9mcmFtZXdvcmsnKVxyXG4gICAgdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnID0gdGhpcy5hbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wcm9ncmFtX3NpbXBsaWZ5Jyk7XHJcbiAgICB0aGlzLmZlYXR1cmVmbGFnR3JvdXBzID0gdGhpcy5hbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFwiZmZfcHJvZ3JhbV9ncm91cHNcIik7XHJcbiAgICB0aGlzLnRvb2xUaXBEYXRhLm93bmVyID0gdGhpcy5mZWF0dXJlZmxhZ3JvbGUgPyBcIk93bmVycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGEgUHJvZ3JhbS4gT25seSBPd25lcnMgY2FuIG1ha2UgY2hhbmdlcyB0byBhIFByb2dyYW0gYW5kIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLjxicj5UaGUgPHN0cm9uZz5LZXkgUG93ZXIgVXNlcjwvc3Ryb25nPiBhbmQgYWxsIDxiPlBvd2VyIFVzZXJzPC9iPiB3aWxsIGJlIHNlbGVjdGVkIGFzIHRoZSBPd25lcnMgb2YgYSBQcm9ncmFtIGJ5IGRlZmF1bHQuXCI6XCJPd25lcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhIFByb2dyYW0uIE9ubHkgT3duZXJzIGNhbiBtYWtlIGNoYW5nZXMgdG8gYSBQcm9ncmFtIGFuZCB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS48YnI+VGhlIDxzdHJvbmc+S2V5IEFkbWluPC9zdHJvbmc+IGFuZCBhbGwgPGI+QWRtaW48L2I+IHVzZXJzIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIE93bmVycyBvZiBhIFByb2dyYW0gYnkgZGVmYXVsdC5cIjtcclxuICAgIHRoaXMuZmZfcmNfbGlzdGluZyA9IHRoaXMuYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfcmNfbGlzdGluZycpO1xyXG4gIH1cclxuXHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwid29ya2Zsb3ctcHJvZ3JhbVwiICNmb3JtPlxyXG4gICAgPGZvcm0gbm92YWxpZGF0ZSBbZm9ybUdyb3VwXT1cInByb2dyYW1Gb3JtXCI+XHJcbiAgICAgICAgPCEtLSBQcm9ncmFtIENhdGVnb3J5IFR5cGUgLS0+XHJcbiAgICAgICAgPGZvcm0tZmllbGQgW2NoZWNrZWRdPVwiY29udHJvbHM/LnByb2dyYW1fdHlwZT8udmFsdWUgPiAtMVwiIFthY3RpdmVdPVwiZmFsc2VcIiBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXCJcclxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2lzc3VlLXR5cGUuc3ZnJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UFJPR1JBTSBUWVBFIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDx0YWItc2VsZWN0b3IgZm9ybUNvbnRyb2xOYW1lPVwicHJvZ3JhbV90eXBlXCIgW2Rpc3BsYXlBcnJheV09XCJjb25zdGFudHM/LmNhdGVnb3J5VHlwZVwiPjwvdGFiLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICA8IS0tIDxwICpuZ0lmPVwicHJvZ3JhbV9uYW1lPy5pbnZhbGlkXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+QWRkIGEgcHJvZ3JhbSB0eXBlPC9wPiAtLT5cclxuICAgICAgICA8L2Zvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgIDwhLS0gRnJhbWV3b3JrIC0tPlxyXG4gICAgICAgIDxmb3JtLWZpZWxkICpuZ0lmPVwiaXNBc2NlbnRBbGxvd2VkXCIgW2NoZWNrZWRdPVwiZmFsc2VcIiBbYWN0aXZlXT1cImZhbHNlXCIgW2Rpc2FibGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2NhdGVnb3J5LnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkZSQU1FV09SSzwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwhLS0gW3NlbGVjdERpdl09XCJ0cnVlXCIgLS0+XHJcbiAgICAgICAgICAgIDxpbnB1dC13aXRoLXBpbGwgIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0IGEgZnJhbWV3b3JrIHRoYXQgdGhpcyBQcm9ncmFtIHJlbGF0ZXMgdG8nXCIgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0ZSQU1FV09SSycpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImNvbnRyb2xzPy5mcmFtZXdvcmsudmFsdWU/Lm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiICpuZ0lmPVwiY2FuRnJhbWV3b3JrQ2hhbmdlXCIgKGNsaWNrKT1cInJlbW92ZSgnJywgJ0ZSQU1FV09SSycpXCI+JiN4ZTlhZTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LmZyYW1ld29yay52YWx1ZT8ubmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2NvbnRyb2xzPy5mcmFtZXdvcmsudmFsdWU/Lm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPjxpIChjbGljayk9XCJyZW1vdmUoJycsICdGUkFNRVdPUksnKVwiICpuZ0lmPVwiY2FuRnJhbWV3b3JrQ2hhbmdlXCIgY2xhc3M9XCJpY29uc1wiID4mI3hlOTBkOzwvaT4ge3tjb250cm9scz8uZnJhbWV3b3JrLnZhbHVlPy5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY2FuRnJhbWV3b3JrQ2hhbmdlXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdGUkFNRVdPUksnKVwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxyXG4gICAgICAgIDwvZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSBQcm9ncmFtIENhdGVnb3J5IE5hbWUgLS0+XHJcbiAgICAgICAgPGZvcm0tZmllbGQgW2NoZWNrZWRdPVwiY29udHJvbHM/LnByb2dyYW1fbmFtZT8udmFsdWU/LnRyaW0oKT8ubGVuZ3RoXCIgW2FjdGl2ZV09XCJmYWxzZVwiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxyXG4gICAgICAgICAgICBbaW1nXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hhdC5zdmcnXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5QUk9HUkFNIE5BTUUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0IElucHV0VHJpbSBmb3JtQ29udHJvbE5hbWU9XCJwcm9ncmFtX25hbWVcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldoYXQgaXMgdGhlIFByb2dyYW0gbmFtZT9cIj5cclxuXHJcbiAgICAgICAgICAgIDxwICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fbmFtZT8uZXJyb3JzICYmIGNvbnRyb2xzPy5wcm9ncmFtX25hbWU/LnRvdWNoZWRcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5FbnRlciBhXHJcbiAgICAgICAgICAgICAgICBuYW1lIGZvciB0aGlzIFByb2dyYW0uPC9wPlxyXG4gICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJpc05hbWVFeGlzdHNcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qcm9ncmFtIG5hbWUgYWxyZWFkeSBleGlzdHMuPC9wPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWZpbGVzIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtZmxleC13cmFwIHZ4LW10LTFcIj5cclxuICAgICAgICAgICAgICAgIDxmaWxlLXBpbGwgKm5nRm9yPVwibGV0IGF0dGFjaG1lbnQgb2YgY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlIHxzbGljZTowOjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtleHRlbnNpb25dPVwiYXR0YWNobWVudD8ub3JnX2ZpbGU/LnNwbGl0KCcuJykucG9wKClcIiBbbmFtZV09XCJhdHRhY2htZW50Py5vcmdfZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImF0dGFjaG1lbnQ/LnVwbG9hZGluZ1wiIChkZWxldGUpPVwiZGVsZXRlQXR0YWNobWVudCgnREVTQ1JJUFRJT04nLGF0dGFjaG1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8L2ZpbGUtcGlsbD5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWU/Lmxlbmd0aCA+IDJcIiBjbGFzcz1cImZpbGUtY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJ1cGxvYWRGaWxlLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlPy5sZW5ndGggLSAyfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjdXBsb2FkRmlsZSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1wLTJcIiAqbmdGb3I9XCJsZXQgYXR0YWNobWVudCBvZiBjb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWV8c2xpY2U6MlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlLXBpbGwgIFtleHRlbnNpb25dPVwiYXR0YWNobWVudD8ub3JnX2ZpbGU/LnNwbGl0KCcuJykucG9wKClcIiBbbmFtZV09XCJhdHRhY2htZW50Py5vcmdfZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImF0dGFjaG1lbnQ/LnVwbG9hZGluZ1wiIChkZWxldGUpPVwiZGVsZXRlQXR0YWNobWVudCgnREVTQ1JJUFRJT04nLGF0dGFjaG1lbnQpXCI+PC9maWxlLXBpbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDx2Y29tcGx5LWVkaXRvciBbKG5nTW9kZWwpXT1cImVkaXRvckRhdGEucHJvZ3JhbURlc2NyaXB0aW9uXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAoc2VuZFNhdmVkRmlsZXMpPVwic2VsZWN0RmlsZSgnREVTQ1JJUFRJT04nLCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uJywkZXZlbnQpXCIgW2VkaXRvckNvbmZpZ109XCJjb25zdGFudHM/LmRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgIDwvdmNvbXBseS1lZGl0b3I+XHJcblxyXG4gICAgICAgIDwvZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSBPYmplY3RpdmUgLS0+XHJcbiAgICAgICAgPGZvcm0tZmllbGQgW2NoZWNrZWRdPVwiY29udHJvbHM/LnByb2dyYW1fb2JqZWN0aXZlPy52YWx1ZT8udHJpbSgpPy5sZW5ndGhcIiBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdPQkpFQ1RJVkUnXCIgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnT0JKRUNUSVZFJ1wiXHJcbiAgICAgICAgICAgIFtpbWddPVwiJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9vYmplY3RpdmVzLnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk9CSkVDVElWRVxyXG4gICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8dmNvbXBseS1lZGl0b3IgWyhuZ01vZGVsKV09XCJlZGl0b3JEYXRhLnByb2dyYW1PYmplY3RpdmVcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgKHNlbmRTYXZlZEZpbGVzKT1cInNlbGVjdEZpbGUoJ09CSkVDVElWRScsJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRGb3JtRmllbGQoJ3Byb2dyYW1fb2JqZWN0aXZlJywkZXZlbnQsIHRydWUpXCIgW2VkaXRvckNvbmZpZ109XCJjb25zdGFudHM/Lm9iamVjdGl2ZVwiPlxyXG4gICAgICAgICAgICA8L3Zjb21wbHktZWRpdG9yPlxyXG4gICAgICAgICAgICA8IS0tIDxwICpuZ0lmPVwiIWlzT2JqZWN0aXZlVmFsaWRcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5TcGVjaWZ5IHRoZSBvYmplY3RpdmUgZm9yIHRoaXMgUHJvZ3JhbS48L3A+IC0tPlxyXG4gICAgICAgIDwvZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSBSb2xlcyAtLT5cclxuICAgICAgICA8Zm9ybS1maWVsZCAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LlJPTEVTXCIgW2NoZWNrZWRdPVwiY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlPy5sZW5ndGggXCIgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnUk9MRSdcIiBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmIGFjdGl2ZUxpc3QgIT09ICdST0xFJ1wiXHJcbiAgICAgICAgICAgIFtpbWddPVwiJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9yb2xlcy5zdmcnXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIiBpZCA9XCJwZXJtaXNzaW9uZ3JvdXBcIj57e2ZmX3JjX2xpc3RpbmcgPydQRVJNSVNTSU9OUyc6J1BFUk1JU1NJT04gR1JPVVAoUyknfX0gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cImZmX3JjX2xpc3RpbmcgPydQZXJtaXNzaW9ucyBsZXQgeW91IHNwZWNpZnkgdGhlIHVzZXJzIHRoYXQgY2FuIGJlIOKAnE93bmVyc+KAnScgKyAoYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfcHJvZ3JhbV9zaW1wbGlmeScpID8gICcgJyA6ICcgYW5kIOKAnEFwcHJvdmVyc+KAnScpICsgJ29mIGEgUHJvZ3JhbS4nOidQZXJtaXNzaW9uIGdyb3VwKHMpIGxldCB5b3Ugc3BlY2lmeSB0aGUgdXNlcnMgdGhhdCBjYW4gYmUg4oCcT3duZXJz4oCdJyArIChhbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wcm9ncmFtX3NpbXBsaWZ5JykgPyAnICcgOiAnIGFuZCDigJxBcHByb3ZlcnPigJ0nKSArICdvZiBhIFByb2dyYW0uJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIiBpZD1cIlJvbGVIZWxwVGV4dFwiPiYjeGViMTY7PC9pPjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dC13aXRoLXBpbGwgaWQ9XCJwbGFjZWhvbGRlcm5hbWVcIiBbcGxhY2Vob2xkZXJdPVwiZmZfcmNfbGlzdGluZyA/J1doaWNoIHVzZXIgcGVybWlzc2lvbnMgaGF2ZSBhY2Nlc3MgdG8gdGhpcyBwcm9ncmFtPyc6J1doaWNoIHVzZXIgcGVybWlzc2lvbiBncm91cHMgaGF2ZSBhY2Nlc3MgdG8gdGhpcyBwcm9ncmFtPydcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ1JPTEUnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKm5nSWY9XCIhbGlzdHMuU1lTVEVNX1JPTEVfSURTLmluY2x1ZGVzKGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8uX2lkKVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlWzBdLCdST0xFJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJmZWF0dXJlZmxhZ3JvbGUgJiYgY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlWzBdPy5wZXJtaXNzaW9uR3JvdXBOYW1lID8gY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlWzBdPy5wZXJtaXNzaW9uR3JvdXBOYW1lIDogY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlWzBdPy5yb2xlTmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2ZlYXR1cmVmbGFncm9sZSAmJiBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/LnBlcm1pc3Npb25Hcm91cE5hbWUgPyBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/LnBlcm1pc3Npb25Hcm91cE5hbWUgOiBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/LnJvbGVOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicm9sZS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlPy5sZW5ndGggPiAxXCI+K3t7Y29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlPy5sZW5ndGggLSAxfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPjxpICpuZ0lmPVwiIWxpc3RzLlNZU1RFTV9ST0xFX0lEUy5pbmNsdWRlcyhjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/Ll9pZClcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXSwnUk9MRScpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPnt7ZmVhdHVyZWZsYWdyb2xlICYmIGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucGVybWlzc2lvbkdyb3VwTmFtZSA/IGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucGVybWlzc2lvbkdyb3VwTmFtZSA6IGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucm9sZU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicm9sZS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlTGlzdCE9PSdST0xFJ1wiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdST0xFJylcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cclxuICAgICAgICAgICAgPHAgKm5nSWY9XCJmYWxzZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPnt7ZmVhdHVyZWZsYWdyb2xlID8gJ0FkZCBhIHBlcm1pc3Npb24gZ3JvdXAocyknIDonQWRkIGEgcm9sZShzKSd9fTwvcD5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNyb2xlIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWUgfCBzbGljZToxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIWxpc3RzLlNZU1RFTV9ST0xFX0lEUy5pbmNsdWRlcyhkYXRhPy5faWQpXCIgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUm9sZShkYXRhLCdST0xFJylcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tmZWF0dXJlZmxhZ3JvbGUgJiYgZGF0YT8ucGVybWlzc2lvbkdyb3VwTmFtZSA/IGRhdGE/LnBlcm1pc3Npb25Hcm91cE5hbWUgOiBkYXRhPy5yb2xlTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDwvZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSBPd25lcnMgLS0+XHJcbiAgICAgICAgPGZvcm0tZmllbGQgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5PV05FUlNcIiBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnMudmFsdWU/Lmxlbmd0aCA+IDAgfHwgY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwLnZhbHVlPy5sZW5ndGggPiAwXCIgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnT1dORVInXCIgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnT1dORVInXCJcclxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L293bmVyLnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk9XTkVSKFMpIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uXCIgKm5nSWY9XCJ0b29sVGlwRGF0YS5vd25lciAhPT0gJydcIiBsaWJQb3BvdmVySG92ZXIgKG1vdXNlb3Zlcik9XCJkYXRhVG9vbHRpcC5wb3BvdmVyKClcIiAobW91c2VsZWF2ZSk9XCJkYXRhVG9vbHRpcC5jbG9zZVBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCIgPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFmOzwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBvcG92ZXItaG92ZXIgI2RhdGFUb29sdGlwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtaW5mby1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtaW5mby1jYXJkLWJvZHlcIiBbaW5uZXJIVE1MXT1cInRvb2xUaXBEYXRhLm93bmVyXCIgaWQ9XCJPd25lckhlbHBUZXh0XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcG9wb3Zlci1ob3Zlcj5cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0LXdpdGgtcGlsbCBbcGxhY2Vob2xkZXJdPVwiJ1dobyBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhpcyBwcm9ncmFtPydcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ09XTkVSJylcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzLnZhbHVlWzBdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm93bmVyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlPy5sZW5ndGggPiAxXCI+K3t7Y29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlPy5sZW5ndGhcIj4mPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiICpuZ0lmPVwiIVsnQURNSU4nLCdLRVlfQURNSU4nLCdMT0dHRURfSU4nXS5pbmNsdWRlcyhvd25lcj8udXNlcl9yb2xlKVwiIChjbGljayk9XCJyZW1vdmUob3duZXIsJ09XTkVSX0dST1VQJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIj4re3tjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiID57e2NvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvd25lci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoXCI+Jjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiICpuZ0lmPVwiIVsnQURNSU4nLCdLRVlfQURNSU4nLCdMT0dHRURfSU4nXS5pbmNsdWRlcyhvd25lcj8udXNlcl9yb2xlKVwiIChjbGljayk9XCJyZW1vdmUob3duZXIsJ09XTkVSX0dST1VQJylcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZUxpc3QhPT0nT1dORVInXCIgW2NsYXNzLmRpc2FibGVkXT1cImNvbnRyb2xzPy5hbGxfdXNlcl9pbl9yb2xlPy52YWx1ZVwiIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ09XTkVSJylcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPkVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cclxuICAgICAgICAgICAgPHAgKm5nSWY9XCJmYWxzZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPkFkZCBhIG93bmVyKHMpPC9wPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWVuZCB2eC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1yLTJcIj57e2ZlYXR1cmVmbGFncm9sZSA/IFwiQUxMIFVTRVJTIEFTU09DSUFURUQgV0lUSCBUSEUgU0VMRUNURUQgUEVSTUlTU0lPTiBHUk9VUFNcIjpcIkFMTCBVU0VSUyBBU1NPQ0lBVEVEIFdJVEggVEhFIFNFTEVDVEVEIFJPTEVTXCJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHN3aXRjaCBmb3JtQ29udHJvbE5hbWU9XCJhbGxfdXNlcl9pbl9yb2xlXCIgKGNoYW5nZSk9XCJzZWxlY3RBbGxSb2xlT3duZXIoJGV2ZW50KVwiPjwvc3dpdGNoPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNvd25lciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG93bmVyIG9mIGNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWUgfCBzbGljZTogMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiEobGlzdHMuTk9OX1JFTU9WQUJMRV9PV05FUlMgIHwgbGlzdFRvSWQgOiAnbWVtYmVyX2lkJykuaW5jbHVkZXMob3duZXI/Lm1lbWJlcl9pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUob3duZXIsJ09XTkVSJylcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvd25lcj8ubWVtYmVyX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNncm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG93bmVyIG9mIGNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWUgfCBzbGljZTogMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFbJ0FETUlOJywnS0VZX0FETUlOJywnTE9HR0VEX0lOJ10uaW5jbHVkZXMob3duZXI/LnVzZXJfcm9sZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUob3duZXIsJ09XTkVSX0dST1VQJylcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvd25lcj8uZ3JvdXBfbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDwvZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSBBcHByb3ZlcnMgLS0+XHJcbiAgICAgICAgPCEtLSBSZW1vdmluZyB0aGlzIG9wdGlvbiBpbiBQcm9ncmFtIHNpbXBsaWZpY2F0aW9uIC0tPlxyXG4gICAgICAgIDxmb3JtLWZpZWxkICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uQVBQUk9WRVIgJiYgIXByb2dyYW1TaW1wbGlmeUZsYWdcIiBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWU/Lmxlbmd0aFwiIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ0FQUFJPVkVSJ1wiIFtkaXNhYmxlZF09XCIoc2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmIGFjdGl2ZUxpc3QgIT09ICdBUFBST1ZFUicpXCJcclxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2FwcHJvdmFsLnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkFQUFJPVkVSIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCInQW4gQXBwcm92ZXIgaXMgcmVzcG9uc2libGUgZm9yIGFwcHJvdmluZyBhIFByb2dyYW0uIFdoZXJlIGFuIEFwcHJvdmVyIGlzIHNlbGVjdGVkLCB0aGUgUHJvZ3JhbSBhbmQgYWxsIHJlc3BvbnNpYmlsaXRpZXMgbGlua2VkIHdpdGggdGhhdCBQcm9ncmFtIHdpbGwgb25seSBjb21tZW5jZSBvbmNlIHRoZSBQcm9ncmFtIGhhcyBiZWVuIGFwcHJvdmVkLidcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgaWQ9XCJBcHByb3ZlckhlbHBUZXh0XCI+JiN4ZWIxNjs8L2k+PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0LXdpdGgtcGlsbCBbcGxhY2Vob2xkZXJdPVwiJ1dobyBpcyByZXNwb25zaWJsZSBmb3IgYXBwcm92aW5nIHRoaXMgcHJvZ3JhbT8nXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzQXBwcm92ZXJEaXNhYmxlZFwiIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdBUFBST1ZFUicpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZVswXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKm5nSWY9XCJpc0FwcHJvdmVyRGlzYWJsZWQgPT09IGZhbHNlXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWVbMF0sJ0FQUFJPVkVSJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fYXBwcm92ZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJpc0FwcHJvdmVyRGlzYWJsZWQgPT09IGZhbHNlXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWVbMF0sJ0FQUFJPVkVSJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyB2eC1mcy05IHZ4LW1yLTEgY3Jvc3NcIj4mI3hlOTBkOzwvaT57e2NvbnRyb2xzPy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIihhY3RpdmVMaXN0IT09J0FQUFJPVkVSJykgJiYgaXNBcHByb3ZlckRpc2FibGVkID09PSBmYWxzZVwiKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnQVBQUk9WRVInKVwiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+RWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxyXG4gICAgICAgIDwvZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSBQZXJmb3JtYW5jZSBDYWxjdWxhdGVkIC0tPlxyXG4gICAgICAgIDwhLS0gPGZvcm0tZmllbGQgW2NoZWNrZWRdPVwiY29udHJvbHM/LnBlcmZvcm1hbmNlX2NhbGN1bGF0aW9uPy52YWx1ZVwiIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ1BFUkZPUk1BTkNFJ1wiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ1BFUkZPUk1BTkNFJ1wiXHJcbiAgICAgICAgICAgIFtpbWddPVwiJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9wZXJmb3JtYW5jZS1jYWxjLnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkhPVyBTSE9VTEQgVEhFIFBFUkZPUk1BTkNFIE9GIFRISVMgUFJPR1JBTSBCRSBDQUxDVUxBVEVEPzwvbGFiZWw+XHJcbiAgICAgICAgICAgIDx0YWItc2VsZWN0b3IgZm9ybUNvbnRyb2xOYW1lPVwicGVyZm9ybWFuY2VfY2FsY3VsYXRpb25cIiBbZGlzcGxheUFycmF5XT1cImNvbnN0YW50cz8ucGVyZm9ybWFuY2VDYWxjdWxhdGlvblwiPlxyXG4gICAgICAgICAgICA8L3RhYi1zZWxlY3Rvcj5cclxuICAgICAgICA8L2Zvcm0tZmllbGQ+IC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Byb2dyYW1TY29wZVwiID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjb3BlLWxhYmVsIHZ4LWZzLTEwIHZ4LXR4dC13aGl0ZSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LW1iLTUgdngtbGgtNCB2eC1kLWlubGluZS1ibG9ja1wiPlBST0dSQU0gU0NPUEU8L2Rpdj5cclxuICAgICAgICAgICAgIDwhLS0gPGkgIGNsYXNzPVwiaWNvbnMgaW5mby1pY29uIHZ4LWZzLTEyIHZ4LXR4dC1ibHVlIHZ4LW1sLTFcIiBbYXBwVG9vbHRpcF09XCJ0b29sdGlwLnByb2dyYW1TY29wZVwiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTFmOzwvaT4gLS0+XHJcbiAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaW5mby1pY29uIHZ4LWZzLTEyIHZ4LXR4dC1ibHVlIHZ4LW1sLTFcIiAqbmdJZj1cInRvb2xUaXBEYXRhLnByb2dyYW1TY29wICE9PSAnJ1wiIGxpYlBvcG92ZXJIb3ZlciAobW91c2VvdmVyKT1cImRhdGFUb29sdGlwLnBvcG92ZXIoKVwiIChtb3VzZWxlYXZlKT1cImRhdGFUb29sdGlwLmNsb3NlUG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxZjs8L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICA8cG9wb3Zlci1ob3ZlciAjZGF0YVRvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtaW5mby1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWluZm8tY2FyZC1ib2R5XCIgW2lubmVySFRNTF09XCJ0b29sVGlwRGF0YS5wcm9ncmFtU2NvcGVcIiBpZD1cIlBTSGVscFRleHRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3BvcG92ZXItaG92ZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gUHJvZ3JhbSBGcmVxdWVuY3kgLS0+XHJcbiAgICAgICAgPGZvcm0tZmllbGQgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5QUk9HUkFNX0ZSRVFVRU5DWVwiIFtjaGVja2VkXT1cIlt0cnVlLGZhbHNlXS5pbmNsdWRlcyhjb250cm9scz8ucmVjdXJyaW5nX2ZyZXF1ZW5jeT8udmFsdWUpXCIgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnRlJFUVVFTkNZJ1wiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ0ZSRVFVRU5DWSdcIlxyXG4gICAgICAgICAgICBbaW1nXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvcmVjdXJyaW5nLnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiIGlkPVwiUERDaGFuZ2VcIj5QUk9HUkFNIERVUkFUSU9OIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCInUHJvZ3JhbSBEdXJhdGlvbiByZWZlcnMgdG8gdGhlIGR1cmF0aW9uIG9mIHRoZSBQcm9ncmFtLiBBIFByb2dyYW0gY2FuIG9jY3VyIGluIHBlcnBldHVpdHksIG9yIGl0IGNhbiBvY2N1ciB1bnRpbCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGJ1c2luZXNzIGN5Y2xlIHRoYXQgaGFzIGJlZW4gc3BlY2lmaWVkIGluICcrIGJ1c2luZXNzQ3ljbGUuc2VsZWN0ZWRDeWNsZS5idXNpbmVzc19jeWNsZSArJy4gIEFsbCByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIHRoYXQgUHJvZ3JhbSB3aWxsIGFsc28gaGF2ZSB0aGUgc2FtZSBQcm9ncmFtIER1cmF0aW9uLidcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgaWQ9XCJQcm9ncmFtRHVyYXRpb25IZWxwVGV4dFwiPiYjeGViMTY7PC9pPjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtZm9ybWF0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQgdngtbWItMFwiPklzIHRoaXMgcHJvZ3JhbSByZWN1cnJpbmc/PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1ncm91cCBwcm9ncmFtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ3JlY3VycmluZ19mcmVxdWVuY3knXCIgW2NoZWNrZWRdPVwiY29udHJvbHM/LnJlY3VycmluZ19mcmVxdWVuY3k/LnZhbHVlXCIgKGNoZWNrZWRFdmVudCk9XCJzZXRGb3JtRmllbGQoJ3JlY3VycmluZ19mcmVxdWVuY3knLHRydWUpXCI+WUVTPC9hcHAtY3MtcmFkaW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ3JlY3VycmluZ19mcmVxdWVuY3knXCIgW2NoZWNrZWRdPVwiIWNvbnRyb2xzPy5yZWN1cnJpbmdfZnJlcXVlbmN5Py52YWx1ZVwiIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdyZWN1cnJpbmdfZnJlcXVlbmN5JyxmYWxzZSlcIj5OTzwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSBTY29wZSBDaGFuZ2VzIC0tPlxyXG4gICAgICAgIDxmb3JtLWZpZWxkICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uU0NPUEVfQ0hBTkdFU1wiIFtjaGVja2VkXT1cIlt0cnVlLGZhbHNlXS5pbmNsdWRlcyhjb250cm9scz8ubG9ja19zY29wZV9jaGFuZ2U/LnZhbHVlKVwiIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ1NDT1BFJ1wiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ1NDT1BFJ1wiXHJcbiAgICAgICAgICAgIFtpbWddPVwiJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9sb2NrLXNjb3BlLnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkxvY2sgdGhlIFByb2dyYW0gU2NvcGUgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidJZiB0aGUgUHJvZ3JhbSBTY29wZSBpcyBsb2NrZWQsIG5laXRoZXIgdGhlIFByb2dyYW0gbm9yIHRoZSByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtIGNhbiBiZSBlZGl0ZWQgb25jZSB0aGUgUHJvZ3JhbSBiZWdpbnMuIEluIG9yZGVyIHRvIGVkaXQgdGhlIFByb2dyYW0gb3IgdGhlIGxpbmtlZCByZXNwb25zaWJpbGl0aWVzLCB0aGUgUHJvZ3JhbSBkZXRhaWxzIHdpbGwgbmVlZCB0byBiZSBlZGl0ZWQuJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIiBpZD1cIlNjb3BlQ2hhbmdlc0hlbHBUZXh0XCI+JiN4ZWIxNjs8L2k+PC9sYWJlbD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1mb3JtYXRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPldvdWxkIHlvdSBsaWtlIHRvIDxzcGFuIGNsYXNzPVwidngtbGFiZWwtdHh0IHZ4LWZ3LTUwMFwiPmxvY2sgY2hhbmdlczwvc3Bhbj4gdG8gdGhlIHByb2dyYW1cclxuICAgICAgICAgICAgICAgICAgICBzY29wZT88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tZ3JvdXAgcHJvZ3JhbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ2xvY2tfc2NvcGVfY2hhbmdlJ1wiIFtjaGVja2VkXT1cImNvbnRyb2xzPy5sb2NrX3Njb3BlX2NoYW5nZT8udmFsdWVcIiAoY2hlY2tlZEV2ZW50KT1cInNldEZvcm1GaWVsZCgnbG9ja19zY29wZV9jaGFuZ2UnLHRydWUpXCI+WUVTPC9hcHAtY3MtcmFkaW8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpbyBbbmFtZV09XCInbG9ja19zY29wZV9jaGFuZ2UnXCIgW2NoZWNrZWRdPVwiIWNvbnRyb2xzPy5sb2NrX3Njb3BlX2NoYW5nZT8udmFsdWVcIiAoY2hlY2tlZEV2ZW50KT1cInNldEZvcm1GaWVsZCgnbG9ja19zY29wZV9jaGFuZ2UnLGZhbHNlKVwiPk5PPC9hcHAtY3MtcmFkaW8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICA8IS0tIEZyYW1ld29yayAtLT5cclxuICAgICAgICA8IS0tIDxmb3JtLWZpZWxkIFtjaGVja2VkXT1cImZhbHNlXCIgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnRlJBTUVXT1JLJ1wiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ0ZSQU1FV09SSydcIlxyXG4gICAgICAgICAgICBbaW1nXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvY2F0ZWdvcnkuc3ZnJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+RlJBTUVXT1JLPC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0LXdpdGgtcGlsbCBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBhIGZyYW1ld29yayB0aGF0IHRoaXMgUHJvZ3JhbSByZWxhdGVzIHRvJ1wiIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdGUkFNRVdPUksnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8uZnJhbWV3b3JrPy52YWx1ZT8uZnJhbWV3b3JrX25hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPjxpIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LmZyYW1ld29yay52YWx1ZSwnRlJBTUVXT1JLJylcIiBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+e3tjb250cm9scz8uZnJhbWV3b3JrPy52YWx1ZT8uZnJhbWV3b3JrX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImZyYW1ld29yay5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPis1PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVMaXN0IT09J0ZSQU1FV09SSydcIiAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdGUkFNRVdPUksnKVwiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNmcmFtZXdvcmsgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIFsxLCAxLCAxLCAxLCAxLCAxLCAxXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmFnZSBmcmFtZXdvcmsgbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICA8L2Zvcm0tZmllbGQ+IC0tPlxyXG5cclxuICAgICAgICA8IS0tIFJlc3BvbnNpYmlsaXR5IENlbnRlciAtLT5cclxuICAgICAgICA8Zm9ybS1maWVsZCAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LlJDXCIgW2NoZWNrZWRdPVwiY29udHJvbHM/LnJjPy52YWx1ZT8ubGVuZ3RoXCIgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnUkMnXCIgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnUkMnXCJcclxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3Jlc3BvbnNpYmlsaXR5LWNlbnRlci5zdmcnXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SRVNQT05TSUJJTElUWSBDRU5URVIgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidSZXNwb25zaWJpbGl0eSBDZW50ZXJzIHJlcHJlc2VudCB5b3VyIG9yZ2FuaXphdGlvbmFsIGFuZCBvcGVyYXRpb25hbCBpbmZyYXN0cnVjdHVyZS4gV2hlcmUgUmVzcG9uc2liaWxpdHkgQ2VudGVycyBhcmUgc2VsZWN0ZWQgd2hlbiBjcmVhdGluZyBhIFByb2dyYW0sIG9ubHkgdGhvc2UgUmVzcG9uc2liaWxpdGllcyBDZW50ZXJzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLidcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgaWQ9XCJSQ0hlbHBUZXh0XCI+JiN4ZWIxNjs8L2k+PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0LXdpdGgtcGlsbCBbc2VsZWN0RGl2XT1cInRydWVcIiAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnUkMnKVwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1doaWNoIFJlc3BvbnNpYmlsaXR5IENlbnRlcihzKSBjYW4gYmUgbGlua2VkIHRvIHRoZSByZXNwb25zaWJpbGl0aWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFByb2dyYW0/J1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucmM/LnZhbHVlICYmIGNvbnRyb2xzPy5yYz8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucmM/LnZhbHVlWzBdLCdSQycpXCI+JiN4ZTlhZTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnJjPy52YWx1ZVswXT8uaXRlbV9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7Y29udHJvbHM/LnJjPy52YWx1ZVswXT8uaXRlbV9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicmMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIiAqbmdJZj1cImNvbnRyb2xzPy5yYz8udmFsdWU/Lmxlbmd0aCAgPiAxXCI+K3t7Y29udHJvbHM/LnJjPy52YWx1ZT8ubGVuZ3RoIC0xIH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucmM/LnZhbHVlWzBdLCdSQycpXCI+JiN4ZTkwZDs8L2k+e3tjb250cm9scz8ucmM/LnZhbHVlWzBdPy5pdGVtX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucmM/LnZhbHVlPy5sZW5ndGggID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJyYy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5yYz8udmFsdWU/Lmxlbmd0aCAtMSB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZUxpc3QhPT0nUkMnXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ1JDJylcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNyYyBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHJjICBvZiBjb250cm9scz8ucmM/LnZhbHVlICB8c2xpY2U6MVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZShyYywnUkMnKVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3JjPy5pdGVtX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICA8L2Zvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgIDwhLS0gQXNzaWduZWUgLS0+XHJcbiAgICAgICAgPGZvcm0tZmllbGQgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5BU1NJR05FRVNcIiBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCAgfHwgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggfHxjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoICB8fCAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aFwiXHJcbiAgICAgICAgW2FjdGl2ZV09XCJbJ0FTU0lHTkVFJywnREVGQVVMVF9BU1NJR05FRSddPy5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHM/LmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmICFbJ0FTU0lHTkVFJywnREVGQVVMVF9BU1NJR05FRSddLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXCJcclxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3doby5zdmcnXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIiBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ0RFRkFVTFRfQVNTSUdORUUnXCI+QVNTSUdORUVTIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCInQXNzaWduZWVzIGFyZSByZXF1aXJlZCB0byBjb21wbGV0ZSB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IGhhdmUgYmVlbiBhc3NpZ25lZCB0byB0aGVtLiBXaGVyZSBBc3NpZ25lZXMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIEFzc2lnbmVlcyB3aWxsIGJlIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4nXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgdHlwZT1cIndoaXRlXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiIGlkPVwiQXNzaWduZWVIZWxwVGV4dFwiPiYjeGViMTY7PC9pPiA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQtd2l0aC1waWxsIFtzZWxlY3REaXZdPVwidHJ1ZVwiIFtkaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnREVGQVVMVF9BU1NJR05FRSdcIiBbcGxhY2Vob2xkZXJdPVwiJ1dobyBpcyByZXNwb25zaWJsZSBmb3IgY29tcGxldGluZyB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0FTU0lHTkVFJylcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggfHwgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWVbMF0sJ0FTU0lHTkVFJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiYXNzaWduZWUucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoID4gMVwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoXCI+Jjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlWzBdLCdBU1NJR05FRV9HUk9VUCcpXCI+JiN4ZTlhZTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJhc3NpZ25lZV9ncm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCI+K3t7Y29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTEgfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlWzBdLCdBU1NJR05FRScpXCIgPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJhc3NpZ25lZS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoXCI+Jjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0sJ0FTU0lHTkVFX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiYXNzaWduZWVfZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCAtMSB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZUxpc3QhPT0nQVNTSUdORUUnXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdBU1NJR05FRScpXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XHJcbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjYXNzaWduZWUgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBhc3NpZ25lZSBvZiBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWUgfCBzbGljZTogMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwicmVtb3ZlKGFzc2lnbmVlLCdBU1NJR05FRScpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YXNzaWduZWU/Lm1lbWJlcl9uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjYXNzaWduZWVfZ3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWUgfCBzbGljZTogMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAgKGNsaWNrKT1cInJlbW92ZShncm91cCwnQVNTSUdORUVfR1JPVVAnKVwiICBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tncm91cD8uZ3JvdXBfbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCIgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdBU1NJR05FRSdcIj5ERUZBVUxUIEFTU0lHTkVFIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCInVGhpcyBvcHRpb24gbGV0cyB5b3Ugc3BlY2lmeSB0aGUgRGVmYXVsdCBBc3NpZ25lZXMgZm9yIGFsbCBuZXcgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCBhIFByb2dyYW0uIElmIGEgRGVmYXVsdCBBc3NpZ25lZXMgaXMgc2VsZWN0ZWQsIHRoZSB1c2VyIHdpbGwgYXV0b21hdGljYWxseSBiZSBzZWxlY3RlZCB0aGUgQXNzaWduZWUgd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLiBBbiBBc3NpZ25vciwgYmVpbmcgdGhlIHBlcnNvbiB3aG8gY3JlYXRlcyB0aGUgcmVzcG9uc2liaWxpdHksIGNhbiBvdmVycmlkZSB0aGlzIG9wdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkuICdcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgaWQ9XCJEQUhlbHBUZXh0XCI+JiN4ZWIxNjs8L2k+PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0LXdpdGgtcGlsbCBbc2VsZWN0RGl2XT1cInRydWVcIiBbZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ0FTU0lHTkVFJ1wiIFtwbGFjZWhvbGRlcl09XCInV2hpY2ggcGVyc29ucyB3aWxsIGJlIHNlbGVjdGVkIGFzIHRoZSBkZWZhdWx0IGFzc2lnbmVlcyBmb3IgdGhlIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoaXMgUHJvZ3JhbT8nXCIgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfQVNTSUdORUUnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIHx8IGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlWzBdLCdERUZBVUxUX0FTU0lHTkVFJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImRlZmF1bHRBc3NpZ25lZS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCA+IDFcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGhcIj4mPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlWzBdLCdERUZBVUxUX0FTU0lHTkVFX0dST1VQJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJkZWZhdWx0QXNzaWduZWVHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xIH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWVbMF0sJ0RFRkFVTFRfQVNTSUdORUUnKVwiID4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57eyBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImRlZmF1bHRBc3NpZ25lZS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggLSAxfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aFwiPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXSwnREVGQVVMVF9BU1NJR05FRV9HUk9VUCcpXCIgPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJkZWZhdWx0QXNzaWduZWVHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTEgfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVMaXN0IT09J0RFRkFVTFRfQVNTSUdORUUnXCIgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9BU1NJR05FRScpXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI2RlZmF1bHRBc3NpZ25lZSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGFzc2lnbmVlIG9mIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlIHwgc2xpY2U6IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgIChjbGljayk9XCJyZW1vdmUoYXNzaWduZWUsJ0RFRkFVTFRfQVNTSUdORUUnKVwiIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Fzc2lnbmVlPy5tZW1iZXJfbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI2RlZmF1bHRBc3NpZ25lZUdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWUgfCBzbGljZTogMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwicmVtb3ZlKGFzc2lnbmVlLCdERUZBVUxUX0FTU0lHTkVFX0dST1VQJylcIiBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Z3JvdXA/Lmdyb3VwX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWdyb3VwLXNlbGVjdG9yXCIgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdBU1NJR05FRSdcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ2Fzc2lnbmVlJ1wiIFtjaGVja2VkXT1cImNvbnRyb2xzPy5hc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZSA9PT0gJ0FMTCdcIiAoY2hlY2tlZEV2ZW50KT1cInNldEZvcm1GaWVsZCgnYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYScsICdBTEwnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEFMTCBTRUxFQ1RFRCBQRVJTT05TIE5FRUQgVE8gQ09NUExFVEUgVEhJUyA8aSBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiJ0lmIHNlbGVjdGVkLCBzZXBhcmF0ZSByZXNwb25zaWJpbGl0aWVzIHdpbGwgYmUgY3JlYXRlZCBmb3IgZWFjaCBwZXJzb24uJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIiA+JiN4ZTkxZjs8L2k+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ2Fzc2lnbmVlJ1wiIFtjaGVja2VkXT1cImNvbnRyb2xzPy5hc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZSA9PT0gJ0FOWU9ORSdcIiAoY2hlY2tlZEV2ZW50KT1cInNldEZvcm1GaWVsZCgnYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYScsICdBTllPTkUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEFOWSBTRUxFQ1RFRCBQRVJTT04gQ0FOIENPTVBMRVRFIFRISVMgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidJZiBzZWxlY3RlZCwgb25seSBvbmUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBjcmVhdGVkLidcIiBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkxZjs8L2k+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICA8IS0tIFJldmlld2VyIC0tPlxyXG4gICAgICAgIDxmb3JtLWZpZWxkIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIiAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LlJFVklFV0VSXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCAgfHwgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGggfHxjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoICB8fCAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiXHJcbiAgICAgICAgW2FjdGl2ZV09XCJbJ1JFVklFV0VSJywnREVGQVVMVF9SRVZJRVdFUiddPy5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHM/LmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmICFbJ1JFVklFV0VSJywnREVGQVVMVF9SRVZJRVdFUiddLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXCJcclxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3Jldmlld2VyLnN2ZydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnREVGQVVMVF9SRVZJRVdFUidcIiBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SZXZpZXdlcnMgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidSZXZpZXdlcnMgYXJlIHJlcXVpcmVkIHRvIHJldmlldyByZXNwb25zaWJpbGl0aWVzIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGNvbXBsZXRlZC4gV2hlcmUgUmV2aWV3ZXJzIGFyZSBzZWxlY3RlZCB3aGVuIGNyZWF0aW5nIGEgUHJvZ3JhbSwgb25seSB0aG9zZSBSZXZpZXdlcnMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIiBpZD1cIlJldmlld2VySGVscFRleHRcIj4mI3hlYjE2OzwvaT48L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQtd2l0aC1waWxsIFtzZWxlY3REaXZdPVwidHJ1ZVwiIFtkaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnREVGQVVMVF9SRVZJRVdFUidcIiBbcGxhY2Vob2xkZXJdPVwiJ1dobyBpcyByZXNwb25zaWJsZSBmb3IgcmV2aWV3aW5nIHRoZSByZXNwb25zaWJpbGl0aWVzIHdpdGhpbiB0aGlzIFByb2dyYW0/J1wiIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdSRVZJRVdFUicpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIHx8IGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlWzBdLCdSRVZJRVdFUicpXCI+JiN4ZTlhZTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJldmlld2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIj4re3tjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXSwnUkVWSUVXRVJfR1JPVVAnKVwiPiYjeGU5YWU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicmV2aWV3ZXJHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCI+K3t7Y29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLSAxfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlWzBdLCdSRVZJRVdFUicpXCIgPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJyZXZpZXdlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoXCI+Jjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0sJ1JFVklFV0VSX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJldmlld2VyR3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZUxpc3QhPT0nUkVWSUVXRVInXCIgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnUkVWSUVXRVInKVwiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNyZXZpZXdlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHJldmlld2VyIG9mIGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZSB8IHNsaWNlOiAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUocmV2aWV3ZXIsJ1JFVklFV0VSJylcIiBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cmV2aWV3ZXI/Lm1lbWJlcl9uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcmV2aWV3ZXJHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZSB8IHNsaWNlOiAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUoZ3JvdXAsJ1JFVklFV0VSX0dST1VQJylcIiBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Z3JvdXA/Lmdyb3VwX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgPGxhYmVsIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnUkVWSUVXRVInXCIgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+REVGQVVMVCBSZXZpZXdlciA8aSBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiJ1RoaXMgb3B0aW9uIGxldHMgeW91IHNwZWNpZnkgdGhlIERlZmF1bHQgUmV2aWV3ZXJzIGZvciByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIGEgUHJvZ3JhbS4gV2hlcmUgYSB1c2VyIGhhcyBiZWVuIHNwZWNpZmllZCBhcyBhIERlZmF1bHQgUmV2aWV3ZXIsIHRoYXQgdXNlciB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgc2VsZWN0ZWQgYXMgdGhlIFJldmlld2VyIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4gQW4gQXNzaWdub3IsIGJlaW5nIHRoZSBwZXJzb24gd2hvIGNyZWF0ZXMgdGhlIHJlc3BvbnNpYmlsaXR5LCBjYW4gb3ZlcnJpZGUgdGhpcyBvcHRpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5LidcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgaWQ9XCJEUkhlbHBUZXh0XCI+JiN4ZWIxNjs8L2k+PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0LXdpdGgtcGlsbCBbc2VsZWN0RGl2XT1cInRydWVcIiBbZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ1JFVklFV0VSJ1wiIFtwbGFjZWhvbGRlcl09XCInV2hpY2ggcGVyc29ucyB3aWxsIGJlIHNlbGVjdGVkIGFzIHRoZSBkZWZhdWx0IHJldmlld2VycyBmb3IgdGhlIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoaXMgUHJvZ3JhbT8nXCIgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfUkVWSUVXRVInKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIHx8IGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlWzBdLCdERUZBVUxUX1JFVklFV0VSJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImRlZmF1bHRSZXZpZXdlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGhcIj4mPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdLCdERUZBVUxUX1JFVklFV0VSX0dST1VQJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJkZWZhdWx0UmV2aWV3ZXJHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZVswXSwnREVGQVVMVF9SRVZJRVdFUicpXCIgPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJkZWZhdWx0UmV2aWV3ZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGhcIj4mPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0sJ0RFRkFVTFRfUkVWSUVXRVJfR1JPVVAnKVwiID4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZGVmYXVsdFJldmlld2VyR3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVMaXN0IT09J0RFRkFVTFRfUkVWSUVXRVInXCIgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9SRVZJRVdFUicpXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI2RlZmF1bHRSZXZpZXdlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHJldmlld2VyIG9mIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlIHwgc2xpY2U6IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZShyZXZpZXdlciwnREVGQVVMVF9SRVZJRVdFUicpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cmV2aWV3ZXI/Lm1lbWJlcl9uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjZGVmYXVsdFJldmlld2VyR3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZSB8IHNsaWNlOiAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICAoY2xpY2spPVwicmVtb3ZlKGdyb3VwLCdERUZBVUxUX1JFVklFV0VSX0dST1VQJylcIiBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tncm91cD8uZ3JvdXBfbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tZ3JvdXAtc2VsZWN0b3JcIiBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ1JFVklFV0VSJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpbyBbbmFtZV09XCIncmV2aWV3ZXInXCIgW2NoZWNrZWRdPVwiY29udHJvbHM/LnJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE/LnZhbHVlID09PSAnU0VRVUVOVElBTCdcIiAoY2hlY2tlZEV2ZW50KT1cInNldEZvcm1GaWVsZCgncmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYScsICdTRVFVRU5USUFMJylcIiBbY2xhc3MuZGlzYWJsZWRdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICBTRVFVRU5USUFMIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCInVGhlIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgc2VudCBmb3IgcmV2aWV3IG9uZSBhdCBhIHRpbWUgaW4gdGhlIHNlcXVlbmNlIGRlZmluZWQgYnkgeW91LidcIiBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkxZjs8L2k+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ3Jldmlld2VyJ1wiIFtjaGVja2VkXT1cImNvbnRyb2xzPy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZSA9PT0gJ0FOWU9ORSd8fCBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMFwiIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdyZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhJywgJ0FOWU9ORScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQU5ZIFJFVklFV0VSIENBTiBNQVJLIFRISVMgQVMgUkVWSUVXRUQgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidUaGUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBzZW50IGZvciByZXZpZXcgdG8gYWxsIHJldmlld2VycyBhdCB0aGUgc2FtZSB0aW1lLiBJZiBhbnlvbmUgb2YgdGhlIHJldmlld2VyIHJldmlld3MgdGhlIHJlc3BvbnNpYmlsaXR5LCBpdCB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgcmV2aWV3ZWQuJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTFmOzwvaT5cclxuICAgICAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgIDwhLS0gT3ZlcnNlZXIgLS0+XHJcbiAgICAgICAgPGZvcm0tZmllbGQgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uT1ZFUlNFRVJcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoICB8fCAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCB8fGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggIHx8ICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCJcclxuICAgICAgICBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdPVkVSU0VFUidcIiAgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cz8uaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgIVsnT1ZFUlNFRVInLCdERUZBVUxUX09WRVJTRUVSJywnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiXHJcbiAgICAgICAgICAgIFtpbWddPVwiJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9vdmVyc2lnaHQuc3ZnJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCIgW2NsYXNzLmRpc2FibGVkXT1cIlsnREVGQVVMVF9PVkVSU0VFUicsJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJ10uaW5jbHVkZXMoYWN0aXZlTGlzdClcIj5PdmVyc2VlcnMgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidPdmVyc2VlcnMgcmVjZWl2ZSB1cGRhdGVzIHdoZW4gYSByZXNwb25zaWJpbGl0eSBpcyBjb21wbGV0ZWQsIGNvbXBsZXRlZCB3aXRoIGRlbGF5IG9yIG5vdCBjb21wbGV0ZWQuIFdoZXJlIE92ZXJzZWVycyBhcmUgc2VsZWN0ZWQgd2hlbiBjcmVhdGluZyBhIFByb2dyYW0sIG9ubHkgdGhvc2UgT3ZlcnNlZXJzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLidcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgaWQ9XCJvdmVyc2VlckhlbHBUZXh0XCI+JiN4ZWIxNjs8L2k+PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0LXdpdGgtcGlsbCBbc2VsZWN0RGl2XT1cInRydWVcIiBbZGlzYWJsZWRdPVwiWydERUZBVUxUX09WRVJTRUVSJywnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiIFtwbGFjZWhvbGRlcl09XCInV2hvIGlzIHJlc3BvbnNpYmxlIGZvciBvdmVyc2VlaW5nIHRoZSByZXNwb25zaWJpbGl0aWVzIHdpdGhpbiB0aGlzIFByb2dyYW0/J1wiIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdPVkVSU0VFUicpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIHx8IGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlWzBdLCdPVkVSU0VFUicpXCI+JiN4ZTlhZTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVycy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggPiAxXCI+K3t7Y29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCBcIiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCI+Jjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdLCdPVkVSU0VFUl9HUk9VUCcpXCI+JiN4ZTlhZTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2Vlckdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aD4gMVwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlWzBdLCdPVkVSU0VFUicpXCIgPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudCB1c2VyXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJzLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCBcIiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCI+Jjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0sJ09WRVJTRUVSX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aD4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2Vlckdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVMaXN0IT09J09WRVJTRUVSJ1wiIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ09WRVJTRUVSJylcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XHJcbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJzIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgb3ZlcnNlZXIgb2YgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlIHwgc2xpY2U6IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiICAoY2xpY2spPVwicmVtb3ZlKG92ZXJzZWVyLCdPVkVSU0VFUicpXCI+JiN4ZTkwZDs8L2k+IHt7b3ZlcnNlZXI/Lm1lbWJlcl9uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZSB8IHNsaWNlOiAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUoZ3JvdXAsJ09WRVJTRUVSX0dST1VQJylcIiBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+IHt7Z3JvdXA/Lmdyb3VwX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ09WRVJTRUVSJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCIgIFtjbGFzcy5kaXNhYmxlZF09XCJbJ09WRVJTRUVSJ10uaW5jbHVkZXMoYWN0aXZlTGlzdClcIj5ERUZBVUxUIE92ZXJzZWVyIDxpIGNsYXNzPVwiaWNvbnNcIiBbYXBwVG9vbHRpcF09XCInVGhpcyBvcHRpb24gbGV0cyB5b3Ugc3BlY2lmeSB0aGUgRGVmYXVsdCBPdmVyc2VlciBmb3IgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCBhIFByb2dyYW0uIFdoZXJlIGEgdXNlciBoYXMgYmVlbiBzcGVjaWZpZWQgYXMgYSBEZWZhdWx0IE92ZXJzZWVyLCB0aGF0IHVzZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHNlbGVjdGVkIGFzIHRoZSBPdmVyc2VlciB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIiBpZD1cIkRPSGVscFRleHRcIj4mI3hlYjE2OzwvaT48L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQtd2l0aC1waWxsICBbZGlzYWJsZWRdPVwiWydPVkVSU0VFUicsJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJ10uaW5jbHVkZXMoYWN0aXZlTGlzdClcIiBbc2VsZWN0RGl2XT1cInRydWVcIiBbcGxhY2Vob2xkZXJdPVwiJ1doaWNoIHBlcnNvbnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgZGVmYXVsdCBvdmVyc2VlcnMgZm9yIHRoZSByZXNwb25zaWJpbGl0aWVzIHdpdGhpbiB0aGlzIFByb2dyYW0/J1wiIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdERUZBVUxUX09WRVJTRUVSJylcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIHx8IGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlWzBdLCdERUZBVUxUX09WRVJTRUVSJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2VlcnNEZWZhdWx0LnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoID4gMVwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXCIgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdLCdERUZBVUxUX09WRVJTRUVSX0dST1VQJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJEZWZhdWx0R3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPjFcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWVbMF0sJ0RFRkFVTFRfT1ZFUlNFRVInKVwiID4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyc0RlZmF1bHQucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIj4mPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdLCdERUZBVUxUX09WRVJTRUVSX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4xXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyRGVmYXVsdEdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlTGlzdCE9PSdERUZBVUxUX09WRVJTRUVSJ1wiIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfT1ZFUlNFRVInKVwiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2VlcnNEZWZhdWx0IFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgb3ZlcnNlZXIgb2YgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWUgfCBzbGljZTogMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgIChjbGljayk9XCJyZW1vdmUob3ZlcnNlZXIsJ0RFRkFVTFRfT1ZFUlNFRVInKVwiPiYjeGU5MGQ7PC9pPiB7e292ZXJzZWVyPy5tZW1iZXJfbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJEZWZhdWx0R3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZSB8IHNsaWNlOiAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUoZ3JvdXAsJ0RFRkFVTFRfT1ZFUlNFRVJfR1JPVVAnKVwiIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT4ge3tncm91cD8uZ3JvdXBfbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIiA+IDwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0LXdpdGgtcGlsbCBjbGFzcz1cInZ4LW10LTJcIiBbc2VsZWN0RGl2XT1cInRydWVcIiBbbGluZV09XCIzXCIgW2Rpc2FibGVkXT1cIlsnT1ZFUlNFRVInLCdERUZBVUxUX09WRVJTRUVSJ10uaW5jbHVkZXMoYWN0aXZlTGlzdClcIiBbcGxhY2Vob2xkZXJdPVwiJ1doaWNoIHBlcnNvbnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgZGVmYXVsdCBvdmVyc2VlcnMgZm9yIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgbm90IGNvbXBsZXRlZCB3aXRoaW4gdGhpcyBQcm9ncmFtPydcIiAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggfHwgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWVbMF0sJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJylcIj4mI3hlOWFlOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2VlcnNEZWZhdWx0RmFpbC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggPiAxXCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXCIgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdLCdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUl9HUk9VUCcpXCI+JiN4ZTlhZTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyRGVmYXVsdEZhaWxHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZVswXSwnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiID4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2VlcnNEZWZhdWx0RmFpbC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIj4mPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdLCdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUl9HUk9VUCcpXCIgPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyRGVmYXVsdEZhaWxHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVMaXN0IT09J0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJ1wiIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJylcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2lucHV0LXdpdGgtcGlsbD5cclxuICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJzRGVmYXVsdEZhaWwgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBvdmVyc2VlciBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWUgfCBzbGljZTogMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgIChjbGljayk9XCJyZW1vdmUob3ZlcnNlZXIsJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJylcIj4mI3hlOTBkOzwvaT4ge3tvdmVyc2Vlcj8ubWVtYmVyX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJEZWZhdWx0RmFpbEdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlIHwgc2xpY2U6IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZShncm91cCwnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVJfR1JPVVAnKVwiIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT4ge3tncm91cD8uZ3JvdXBfbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2FwcC1wb3BvdmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Zvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgIDwhLS0gQXNzZXNzbWVudCAtLT5cclxuICAgICAgICA8Zm9ybS1maWVsZCBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCIgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5BU1NFU1NNRU5UXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWU/Lmxlbmd0aFwiXHJcbiAgICAgICAgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnQVNTRVNTTUVOVCdcIiBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmIGFjdGl2ZUxpc3QgIT09ICdBU1NFU1NNRU5UJ1wiXHJcbiAgICAgICAgICAgIFtpbWddPVwiJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9hc3Nlc3NtZW50cy5zdmcnXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5BU1NFU1NNRU5UUyA8aSBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiJ0Fzc2Vzc21lbnRzIGFyZSBhIGRpZ2l0YWwgZm9ybSB0aGF0IGFyZSBjcmVhdGVkIGluIOKAnEFzc2Vzc21lbnTigJ0gd2l0aGluIHRoZSBDb21wbGlhbmNlIE1vZHVsZS4gV2hlcmUgQXNzZXNzbWVudHMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIEFzc2Vzc21lbnRzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLidcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgaWQ9XCJBc3Nlc3NtZW50SGVscFRleHRcIj4mI3hlYjE2OzwvaT48L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQtd2l0aC1waWxsIFtzZWxlY3REaXZdPVwidHJ1ZVwiICBbcGxhY2Vob2xkZXJdPVwiJ1doaWNoIGFzc2Vzc21lbnRzIGNhbiBiZSBsaW5rZWQgdG8gdGhlIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoaXMgUHJvZ3JhbT8nXCIgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0FTU0VTU01FTlQnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCIgKm5nSWY9XCIoY29udHJvbHM/LnByb2dyYW1fYXNzZXNzbWVudHM/LnZhbHVlIHwgYXNzZXNzbWVudFJlc29sdmVyKSBhcyBhc3Nlc3NtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoYXNzZXNzbWVudHNbMF0sJ0FTU0VTU01FTlQnKVwiPiYjeGU5YWU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImFzc2Vzc21lbnRzWzBdPy5hc3Nlc3NtZW50X25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3thc3Nlc3NtZW50c1swXT8uYXNzZXNzbWVudF9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicHJvZ3JhbV9hc3Nlc3NtZW50cy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiICpuZ0lmPVwiYXNzZXNzbWVudHM/Lmxlbmd0aCA+IDFcIj4re3thc3Nlc3NtZW50cz8ubGVuZ3RoIC0xIH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoY29udHJvbHM/LnByb2dyYW1fYXNzZXNzbWVudHM/LnZhbHVlIHwgYXNzZXNzbWVudFJlc29sdmVyKSBhcyBhc3Nlc3NtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZShhc3Nlc3NtZW50c1swXSwnQVNTRVNTTUVOVCcpXCI+JiN4ZTkwZDs8L2k+e3thc3Nlc3NtZW50c1swXT8uYXNzZXNzbWVudF9uYW1lfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhc3Nlc3NtZW50cz8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJwcm9ncmFtX2Fzc2Vzc21lbnRzLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7YXNzZXNzbWVudHM/Lmxlbmd0aCAtMSB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlTGlzdCE9PSdBU1NFU1NNRU5UJ1wiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdBU1NFU1NNRU5UJylcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNwcm9ncmFtX2Fzc2Vzc21lbnRzIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgYXNzZXNzbWVudCBvZiAoY29udHJvbHM/LnByb2dyYW1fYXNzZXNzbWVudHM/LnZhbHVlIHwgYXNzZXNzbWVudFJlc29sdmVyKSB8IHNsaWNlOjFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICAoY2xpY2spPVwicmVtb3ZlKGFzc2Vzc21lbnQsJ0FTU0VTU01FTlQnKVwiICBjbGFzcz1cImljb25zXCIgPiYjeGU5MGQ7PC9pPiB7e2Fzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPC9mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICA8IS0tIEZvcm1hdCAmIEV2aWRlbmNlIC0tPlxyXG4gICAgICAgIDxmb3JtLWZpZWxkIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIiAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LkZPUk1BVEVfRVZJREVOQ0VcIiBbY2hlY2tlZF09XCJbdHJ1ZSxmYWxzZV0uaW5jbHVkZXMoY29udHJvbHM/LmV2aWRlbmNlX3JlcXVpcmVkPy52YWx1ZSlcIlxyXG4gICAgICAgICAgICBbYWN0aXZlXT1cImZhbHNlXCIgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiXHJcbiAgICAgICAgICAgIFtpbWddPVwiJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9mb3JtYXQtZXZpZGVuY2Uuc3ZnJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+RXZpZGVuY2UgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidJZiBzZWxlY3RlZCwgZXZpZGVuY2Ugb2YgY29tcGxldGlvbiBvZiBhIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgcmVxdWlyZWQgZm9yIGFsbCByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLiBBbiBBc3NpZ25vciwgYmVpbmcgdGhlIHBlcnNvbiB3aG8gY3JlYXRlcyB0aGUgcmVzcG9uc2liaWxpdHksIGNhbiBvdmVycmlkZSB0aGlzIG9wdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkuJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIiBpZD1cIkV2aWRlbmNlSGVscFRleHRcIj4mI3hlYjE2OzwvaT48L2xhYmVsPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWZvcm1hdFwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPkRvIGFsbCByZXNwb25zaWJpbGl0aWVzIHdpdGhpbiB0aGlzIHByb2dyYW0gcmVxdWlyZSBldmlkZW5jZT88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tZ3JvdXAgcHJvZ3JhbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ2V2aWRlbmNlX3JlcXVpcmVkJ1wiIFtjaGVja2VkXT1cImNvbnRyb2xzPy5ldmlkZW5jZV9yZXF1aXJlZD8udmFsdWVcIiAoY2hlY2tlZEV2ZW50KT1cInNldEZvcm1GaWVsZCgnZXZpZGVuY2VfcmVxdWlyZWQnLHRydWUpXCI+WUVTPC9hcHAtY3MtcmFkaW8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpbyBbbmFtZV09XCInZXZpZGVuY2VfcmVxdWlyZWQnXCIgW2NoZWNrZWRdPVwiIWNvbnRyb2xzPy5ldmlkZW5jZV9yZXF1aXJlZD8udmFsdWVcIiAoY2hlY2tlZEV2ZW50KT1cInNldEZvcm1GaWVsZCgnZXZpZGVuY2VfcmVxdWlyZWQnLGZhbHNlKVwiPk5PPC9hcHAtY3MtcmFkaW8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1lbmQgdngtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tci0yXCI+QWxsb3cgYW55IGZpbGUgdG8gYmUgbWFya2VkIGFzXHJcbiAgICAgICAgICAgICAgICAgICAga2V5XHJcbiAgICAgICAgICAgICAgICAgICAgZXZpZGVuY2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxzd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwiYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldEZvcm1GaWVsZCgnYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlJywkZXZlbnQ/LnRhcmdldD8uY2hlY2tlZClcIj48L3N3aXRjaD5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSBDdXN0b20gRmllbGQgLS0+XHJcbiAgICAgICAgPGZvcm0tZmllbGQgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uQ1VTVE9NX0ZJRUxEU1wiIFtjaGVja2VkXT1cImNvbnRyb2xzPy5jdXN0b21fZmllbGRzPy52YWx1ZT8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgW2FjdGl2ZV09XCJmYWxzZVwiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxyXG4gICAgICAgICAgICBbaW1nXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvY3VzdG9tLWZpZWxkcy5zdmcnXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5DVVNUT00gRklFTEQgPGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidXaGVyZSBhIGN1c3RvbSBmaWVsZCBpcyBzcGVjaWZpZWQsIGFsbCByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIGEgUHJvZ3JhbSB3aWxsIGNvbnRhaW4gdGhhdCBjdXN0b20gZmllbGQuIEN1c3RvbSBmaWVsZHMgZW5hYmxlIHRoZSBjb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgbWV0YSBkYXRhLidcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgaWQ9XCJDRkhlbHBUZXh0XCI+JiN4ZWIxNjs8L2k+PC9sYWJlbD5cclxuICAgICAgICAgICAgPGN1c3RvbS1maWVsZCBmb3JtQ29udHJvbE5hbWU9XCJjdXN0b21fZmllbGRzXCI+PC9jdXN0b20tZmllbGQ+XHJcbiAgICAgICAgPC9mb3JtLWZpZWxkPlxyXG4gICAgPC9mb3JtPlxyXG48L2Rpdj5cclxuXHJcblxyXG48IS0tIGxpc3Qgb2Ygcm9sZXMgLS0+XHJcbjxyb2xlLWxpc3QgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnUk9MRSdcIiBbc2VsZWN0ZWRdPVwiY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuUk9MRVNcIlxyXG4gICAgW2xpc3RdPVwibGlzdHM/LlJPTEVTPy5kYXRhID8/IFtdXCIgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsJ1JPTEUnKVwiIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdST0xFJylcIiBbZmVhdHVyZWZsYWdyb2xlXT1cImZlYXR1cmVmbGFncm9sZVwiIFtmZWF0dXJlZmxhZ0dyb3VwXT1cImZlYXR1cmVmbGFnR3JvdXBzXCIgW2ZmX3JjX2xpc3RpbmddPVwiZmZfcmNfbGlzdGluZ1wiPjwvcm9sZS1saXN0PlxyXG5cclxuPCEtLSBsaXN0IG9mIGZyYW1ld29ya3MgLS0+XHJcbjwhLS0gPGFwcC1kZWZpbmUtZnJhbWV3b3JrLWxpc3RpbmcgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnRlJBTUVXT1JLJ1wiIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdGUkFNRVdPUksnKVwiIChuZXh0KT1cImxpc3RBY3Rpb24oJGV2ZW50LCdGUkFNRVdPUksnKVwiIFttb2RlXT1cIm1vZGVcIiBbc2VsZWN0ZWRGcmFtZXdvcmtdPVwiY29udHJvbHM/LmZyYW1ld29yaz8udmFsdWVcIj48L2FwcC1kZWZpbmUtZnJhbWV3b3JrLWxpc3Rpbmc+IC0tPlxyXG48IS0tIGxpc3Qgb2YgcmVzcG9uc2liaWxpdHkgY2VudGVyIC0tPlxyXG48YXBwLXJlc3BvbnNpYmlsaXR5LWNlbnRlcnMtbGlzdCAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdSQydcIiBbcmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdF09XCJsaXN0cz8uUkMgPz8gW11cIlxyXG4gICAgW3JhZGlvU2VsZWN0aW9uXT1cImZhbHNlXCIgW3JjSWRLZXldPVwiJ3JjX2lkJ1wiIChjbG9zZVJjTGlzdCk9XCJmaWVsZERlc2VsZWN0b3IoJ1JDJylcIlxyXG4gICAgKHNhdmVTZWxlY3RlZExpc3QpPVwibGlzdEFjdGlvbigkZXZlbnQsJ1JDJylcIiBbc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnNdPVwiY29udHJvbHM/LnJjPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIj5cclxuPC9hcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0PlxyXG48IS0tIHJlbmRlciB1c2VybGlzdCB3aXRoIGdyb3VwIC0tPlxyXG5cclxuPHVzZXItZ3JvdXAtbGlzdCAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdPV05FUidcIiBbZ3JvdXBFbmFibGVkXT1cInRydWVcIiBbc2luZ2xlU2VsZWN0XT1cImZhbHNlXCIgW2xvYWRpbmddPVwibGlzdExvYWRpbmdTdGF0ZS5VU0VSU1wiXHJcbiAgICBbbm9uUmVtb3ZhYmxlVXNlcklkc109XCJsaXN0cy5OT05fUkVNT1ZBQkxFX09XTkVSUyAgfCBsaXN0VG9JZCA6ICdtZW1iZXJfaWQnXCIgW3VzZXJsaXN0XT1cImxpc3RzPy5PV05FUlM/LmRhdGEgPz8gW11cIlxyXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxyXG4gICAgKGZldGNoVXNlckRhdGEpPVwiZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoZmFsc2UsJGV2ZW50KVwiIFt1c2VyTGlzdEluZm9dPVwibGlzdHM/Lk9XTkVSU1wiXHJcbiAgICBbZ3JvdXBMaXN0SW5mb109XCJsaXN0cz8uT1dORVJTX0dST1VQU1wiIFtncm91cExpc3RdPVwibGlzdHM/Lk9XTkVSU19HUk9VUFM/LmRhdGEgPz8gW11cIlxyXG4gICAgW3NlbGVjdGVkR3JvdXBzXT1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWUgfCByZWZEaXNjb25uZWN0XCIgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsJ09XTkVSJylcIlxyXG4gICAgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ09XTkVSJylcIiBbcGFuZWxUaXRsZV09XCJwYW5lbFRpdGxlT3duZXJcIiBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZWZsYWdHcm91cHNcIj48L3VzZXItZ3JvdXAtbGlzdD5cclxuPHVzZXItZ3JvdXAtbGlzdCAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdBUFBST1ZFUidcIiBbZ3JvdXBFbmFibGVkXT1cImZhbHNlXCIgW3NpbmdsZVNlbGVjdF09XCJ0cnVlXCJcclxuICAgIFt1c2VybGlzdF09XCJsaXN0cz8uQVBQUk9WRVJTPy5kYXRhID8/IFtdXCIgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fYXBwcm92ZXI/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXHJcbiAgICBbdXNlckxpc3RJbmZvXT1cImxpc3RzPy5BUFBST1ZFUlNcIiAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwnQVBQUk9WRVInKVwiIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdBUFBST1ZFUicpXCIgW3BhbmVsVGl0bGVdPVwicGFuZWxUaXRsZUFwcHJvdmVyXCI+XHJcbjwvdXNlci1ncm91cC1saXN0PlxyXG48dXNlci1ncm91cC1saXN0ICpuZ0lmPVwiYWN0aXZlTGlzdCA9PT0gJ0FTU0lHTkVFJ1wiIFtncm91cEVuYWJsZWRdPVwidHJ1ZVwiIFtzaW5nbGVTZWxlY3RdPVwiZmFsc2VcIiBbbG9hZGluZ109XCJsaXN0TG9hZGluZ1N0YXRlLlVTRVJTXCJcclxuICAgIFt1c2VybGlzdF09XCJsaXN0cz8uQVNTSUdORUVTID8/IFtdXCIgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiICBbZ3JvdXBMaXN0XT1cImxpc3RzPy5BU1NJR05FRVNfR1JPVVAgPz8gW11cIiBbRnJvbVByb2dyYW1dPVwidHJ1ZVwiXHJcbiAgICBbc2VsZWN0ZWRHcm91cHNdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiIFtkaXNhYmxlZElkc109XCJkaXNhYmxlZEFzc2lnbmVlSWRzXCIgIFtmcm9tUmVzcG9uc2liaWxpdHldID0gXCInQXNzaWduZWUnXCIgIFtyZXZpZXdlcklkc109XCJzZWxlY3RlZFJldmlld2VySWRzXCIgW292ZXJzZWVySWRzXT1cInNlbGVjdGVkT3ZlcnNlZXJJZHNcIiBbYXNzaWdub3JJZF09XCJhc3NpZ25vcklkXCJcclxuICAgIFt1c2VyTGlzdEluZm9dPVwibGlzdHM/LkFTU0lHTkVFU1wiIChzYXZlKT1cImxpc3RBY3Rpb24oJGV2ZW50LCdBU1NJR05FRScpXCIgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ0FTU0lHTkVFJylcIiBbcGFuZWxUaXRsZV09XCJwYW5lbFRpdGxlQXNzaWduZWVcIlxyXG4gICAgW2RlZmF1bHRTZWxlY3RlZFVzZXJzXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiIFt1c2VyVHlwZV09XCInYXNzaWduZWVzJ1wiIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiPlxyXG48L3VzZXItZ3JvdXAtbGlzdD5cclxuPHVzZXItZ3JvdXAtbGlzdCAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdERUZBVUxUX0FTU0lHTkVFJ1wiIFtncm91cEVuYWJsZWRdPVwidHJ1ZVwiIFtzaW5nbGVTZWxlY3RdPVwiZmFsc2VcIiBbbG9hZGluZ109XCJsaXN0TG9hZGluZ1N0YXRlLlVTRVJTXCJcclxuICAgIFt1c2VybGlzdF09XCJsaXN0cz8uREVGQVVMVF9BU1NJR05FRVMgPz8gW11cIiBbc2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIiAgW2dyb3VwTGlzdF09XCJsaXN0cz8uREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPz8gW11cIiBbRnJvbVByb2dyYW1dPVwidHJ1ZVwiXHJcbiAgICBbc2VsZWN0ZWRHcm91cHNdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWUgfCByZWZEaXNjb25uZWN0XCIgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVkQXNzaWduZWVJZHNcIiAgW2Zyb21SZXNwb25zaWJpbGl0eV0gPSBcIidBc3NpZ25lZSdcIiAgW3Jldmlld2VySWRzXT1cInNlbGVjdGVkUmV2aWV3ZXJJZHNcIiBbb3ZlcnNlZXJJZHNdPVwic2VsZWN0ZWRPdmVyc2Vlcklkc1wiIFthc3NpZ25vcklkXT1cImFzc2lnbm9ySWRcIlxyXG4gICAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uREVGQVVMVF9BU1NJR05FRVwiIChzYXZlKT1cImxpc3RBY3Rpb24oJGV2ZW50LCdERUZBVUxUX0FTU0lHTkVFJylcIiAoY2FuY2VsKT1cImZpZWxkRGVzZWxlY3RvcignREVGQVVMVF9BU1NJR05FRScpXCIgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnR3JvdXBzXCI+XHJcbjwvdXNlci1ncm91cC1saXN0PlxyXG5cclxuPHVzZXItZ3JvdXAtbGlzdCAqbmdJZj1cIihhY3RpdmVMaXN0ID09PSAnUkVWSUVXRVInICYmICghZmVhdHVyZWZsYWdHcm91cHMgfHwgZmVhdHVyZWZsYWdHcm91cHMpKVwiIFtncm91cEVuYWJsZWRdPVwiZmVhdHVyZWZsYWdHcm91cHNcIiBbc2luZ2xlU2VsZWN0XT1cImZhbHNlXCIgW2xvYWRpbmddPVwibGlzdExvYWRpbmdTdGF0ZS5VU0VSU1wiIFtGcm9tUHJvZ3JhbV09XCJ0cnVlXCJcclxuICAgIFt1c2VybGlzdF09XCJsaXN0cz8uUkVWSUVXRVJTID8/IFtdXCIgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiICBbZ3JvdXBMaXN0XT1cImxpc3RzPy5SRVZJRVdFUlNfR1JPVVAgPz8gW11cIiBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZWZsYWdHcm91cHNcIlxyXG4gICAgW3NlbGVjdGVkR3JvdXBzXT1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIiBbZGlzYWJsZWRJZHNdPVwiZGlzYWJsZVJldmlld2VySWRzXCIgW2Zyb21SZXNwb25zaWJpbGl0eV0gPSBcIidSZXZpZXdlcidcIiBbYXNzaWdub3JJZF09XCJhc3NpZ25vcklkXCIgW2Fzc2lnbmVlSWRzXT1cInNlbGVjdGVkQXNzaWduZWVJZHNcIiAgW292ZXJzZWVySWRzXT1cInNlbGVjdGVkT3ZlcnNlZXJJZHNcIlxyXG4gICAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uUkVWSUVXRVJTXCIgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsJ1JFVklFV0VSJylcIiAoY2FuY2VsKT1cImZpZWxkRGVzZWxlY3RvcignUkVWSUVXRVInKVwiIFtwYW5lbFRpdGxlXT1cInBhbmVsVGl0bGVSZXZpZXdlclwiXHJcbiAgICBbZGVmYXVsdFNlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWUgfCByZWZEaXNjb25uZWN0XCIgW3VzZXJUeXBlXT1cIidyZXZpZXdlcnMnXCI+XHJcbjwvdXNlci1ncm91cC1saXN0PlxyXG48dXNlci1ncm91cC1saXN0ICpuZ0lmPVwiKGFjdGl2ZUxpc3QgPT09ICdERUZBVUxUX1JFVklFV0VSJyAmJiAoIWZlYXR1cmVmbGFnR3JvdXBzIHx8IGZlYXR1cmVmbGFnR3JvdXBzKSlcIiBbZ3JvdXBFbmFibGVkXT1cImZlYXR1cmVmbGFnR3JvdXBzXCIgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiICBbbG9hZGluZ109XCJsaXN0TG9hZGluZ1N0YXRlLlVTRVJTXCIgW0Zyb21Qcm9ncmFtXT1cInRydWVcIlxyXG4gICAgW3VzZXJsaXN0XT1cImxpc3RzPy5ERUZBVUxUX1JFVklFV0VSUyA/PyBbXVwiIFtzZWxlY3RlZFVzZXJzXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiICBbZ3JvdXBMaXN0XT1cImxpc3RzPy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA/PyBbXVwiIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXHJcbiAgICBbc2VsZWN0ZWRHcm91cHNdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWUgfCByZWZEaXNjb25uZWN0XCIgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVSZXZpZXdlcklkc1wiIFtmcm9tUmVzcG9uc2liaWxpdHldID0gXCInUmV2aWV3ZXInXCIgW2Fzc2lnbm9ySWRdPVwiYXNzaWdub3JJZFwiIFthc3NpZ25lZUlkc109XCJzZWxlY3RlZEFzc2lnbmVlSWRzXCIgIFtvdmVyc2Vlcklkc109XCJzZWxlY3RlZE92ZXJzZWVySWRzXCJcclxuICAgIFt1c2VyTGlzdEluZm9dPVwibGlzdHM/LkRFRkFVTFRfUkVWSUVXRVJTXCIgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsJ0RFRkFVTFRfUkVWSUVXRVInKVwiIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdERUZBVUxUX1JFVklFV0VSJylcIiBbcGFuZWxUaXRsZV09XCJwYW5lbFRpdGxlRGVmYXVsdFJldmlld2VyXCI+XHJcbjwvdXNlci1ncm91cC1saXN0PlxyXG48dXNlci1ncm91cC1saXN0ICpuZ0lmPVwiKGFjdGl2ZUxpc3QgPT09ICdPVkVSU0VFUicgJiYgKCFmZWF0dXJlZmxhZ0dyb3VwcyB8fCBmZWF0dXJlZmxhZ0dyb3VwcykpXCIgW2dyb3VwRW5hYmxlZF09XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiIFtzaW5nbGVTZWxlY3RdPVwiZmFsc2VcIiBbbG9hZGluZ109XCJsaXN0TG9hZGluZ1N0YXRlLlVTRVJTXCIgW0Zyb21Qcm9ncmFtXT1cInRydWVcIlxyXG4gICAgW3VzZXJsaXN0XT1cImxpc3RzPy5PVkVSU0VFUlMgPz8gW11cIiBbc2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWUgfCByZWZEaXNjb25uZWN0XCIgIFtncm91cExpc3RdPVwibGlzdHM/Lk9WRVJTRUVSU19HUk9VUCA/PyBbXVwiXHJcbiAgICBbc2VsZWN0ZWRHcm91cHNdPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiIFtkaXNhYmxlZElkc109XCJkaXNhYmxlT3ZlcnNlZXJJZHNcIiBbZnJvbVJlc3BvbnNpYmlsaXR5XSA9IFwiJ092ZXJzZWVyJ1wiIFthc3NpZ25vcklkXT1cImFzc2lnbm9ySWRcIiBbYXNzaWduZWVJZHNdPVwic2VsZWN0ZWRBc3NpZ25lZUlkc1wiIFtyZXZpZXdlcklkc109XCJzZWxlY3RlZFJldmlld2VySWRzXCJcclxuICAgIFt1c2VyTGlzdEluZm9dPVwibGlzdHM/Lk9WRVJTRUVTXCIgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsJ09WRVJTRUVSJylcIiAoY2FuY2VsKT1cImZpZWxkRGVzZWxlY3RvcignT1ZFUlNFRVInKVwiXHJcbiAgICBbZGVmYXVsdFNlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWUgfCByZWZEaXNjb25uZWN0IHwgYXJyYXlDb25jYXQ6IGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZVwiIFt1c2VyVHlwZV09XCInb3ZlcnNlZXJzJ1wiPlxyXG48L3VzZXItZ3JvdXAtbGlzdD5cclxuPHVzZXItZ3JvdXAtbGlzdCAqbmdJZj1cIihhY3RpdmVMaXN0ID09PSAnREVGQVVMVF9PVkVSU0VFUicgJiYgKCFmZWF0dXJlZmxhZ0dyb3VwcyB8fCBmZWF0dXJlZmxhZ0dyb3VwcykpXCIgW2dyb3VwRW5hYmxlZF09XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiIFtzaW5nbGVTZWxlY3RdPVwiZmFsc2VcIiBbbG9hZGluZ109XCJsaXN0TG9hZGluZ1N0YXRlLlVTRVJTXCIgW0Zyb21Qcm9ncmFtXT1cInRydWVcIlxyXG4gICAgW3VzZXJsaXN0XT1cImxpc3RzPy5ERUZBVUxUX09WRVJTRUVSUyA/PyBbXVwiIFtzZWxlY3RlZFVzZXJzXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiICBbZ3JvdXBMaXN0XT1cImxpc3RzPy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUCA/PyBbXVwiXHJcbiAgICBbc2VsZWN0ZWRHcm91cHNdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWUgfCByZWZEaXNjb25uZWN0XCIgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnR3JvdXBzXCIgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVPdmVyc2Vlcklkc1wiIFtmcm9tUmVzcG9uc2liaWxpdHldID0gXCInT3ZlcnNlZXInXCIgW2Fzc2lnbm9ySWRdPVwiYXNzaWdub3JJZFwiIFthc3NpZ25lZUlkc109XCJzZWxlY3RlZEFzc2lnbmVlSWRzXCIgW3Jldmlld2VySWRzXT1cInNlbGVjdGVkUmV2aWV3ZXJJZHNcIlxyXG4gICAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uREVGQVVMVF9PVkVSU0VFUlNcIiAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwnREVGQVVMVF9PVkVSU0VFUicpXCIgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ0RFRkFVTFRfT1ZFUlNFRVInKVwiPlxyXG48L3VzZXItZ3JvdXAtbGlzdD5cclxuPHVzZXItZ3JvdXAtbGlzdCAqbmdJZj1cIihhY3RpdmVMaXN0ID09PSAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInICYmICghZmVhdHVyZWZsYWdHcm91cHMgfHwgZmVhdHVyZWZsYWdHcm91cHMpKVwiIFtncm91cEVuYWJsZWRdPVwiZmVhdHVyZWZsYWdHcm91cHNcIiBbc2luZ2xlU2VsZWN0XT1cImZhbHNlXCIgW2xvYWRpbmddPVwibGlzdExvYWRpbmdTdGF0ZS5VU0VSU1wiIFtGcm9tUHJvZ3JhbV09XCJ0cnVlXCJcclxuICAgIFt1c2VybGlzdF09XCJsaXN0cz8uREVGQVVMVF9PVkVSU0VFUlMgPz8gW11cIiBbc2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWUgfCByZWZEaXNjb25uZWN0XCIgIFtncm91cExpc3RdPVwibGlzdHM/LkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID8/IFtdXCJcclxuICAgIFtzZWxlY3RlZEdyb3Vwc109XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWUgfCByZWZEaXNjb25uZWN0XCIgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnR3JvdXBzXCIgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVPdmVyc2Vlcklkc1wiIFtmcm9tUmVzcG9uc2liaWxpdHldID0gXCInT3ZlcnNlZXInXCIgW2Fzc2lnbm9ySWRdPVwiYXNzaWdub3JJZFwiIFthc3NpZ25lZUlkc109XCJzZWxlY3RlZEFzc2lnbmVlSWRzXCIgW3Jldmlld2VySWRzXT1cInNlbGVjdGVkUmV2aWV3ZXJJZHNcIlxyXG4gICAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uREVGQVVMVF9PVkVSU0VFUlNcIiAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicpXCI+XHJcbjwvdXNlci1ncm91cC1saXN0PlxyXG48YXNzZXNzbWVudC1waWNrZXIgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnQVNTRVNTTUVOVCdcIiBbc2VsZWN0ZWRBc3Nlc3NtZW50XT1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2Vzc21lbnRzPy52YWx1ZVwiIChjYW5jZWxBc3Nlc3NtZW50KT1cImZpZWxkRGVzZWxlY3RvcignQVNTRVNTTUVOVCcpXCIgKG9uQXNzZXNzbWVudFNlbGVjdCk9XCJsaXN0QWN0aW9uKCRldmVudCwnQVNTRVNTTUVOVCcpXCI+PC9hc3Nlc3NtZW50LXBpY2tlcj5cclxuPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwibG9hZGVyXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cclxuICAgIDxhcHAtc21pbGV5LWRpYWxvZy1pbmxpbmVcclxuICAgICAgICAqbmdJZj1cInNob3dTbWlsZXlcIlxyXG4gICAgICAgIFttZXNzYWdlXT1cInNtaWxleU1lc3NhZ2VcIlxyXG4gICAgICAgIFthY3Rpb25CdXR0b25zXT1cImFjdGlvbkJ1dHRvbnNcIlxyXG4gICAgICAgIChhY3Rpb24pPVwiYWN0aW9uKCRldmVudClcIlxyXG4gICAgICAgIChjbG9zZVNtaWxleSk9XCJjbG9zZVNtaWxleSgkZXZlbnQpXCI+XHJcbiAgICA8L2FwcC1zbWlsZXktZGlhbG9nLWlubGluZT5cclxuXHJcbiAgIDwhLS0gRnJhbWV3b3JrIHNlbGVjdG9yICAtLT5cclxuICAgIDxhcHAtZnJhbWV3b3JrLWxpc3QgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnRlJBTUVXT1JLJ1wiIFt3b3JrZmxvd1BhZ2VdPVwiWydGUkFNRVdPUksnXVwiIChhc3NpZ25Db250cm9sKT1cImxpc3RBY3Rpb24oJGV2ZW50LCAnRlJBTUVXT1JLJylcIlxyXG4gICAgKGNsb3NlRnJhbWV3b3JrKT1cImZpZWxkRGVzZWxlY3RvcignRlJBTUVXT1JLJylcIiBbcHJldmlvdXNTZWxlY3RlZFZhbHVlc109XCJ7ZnJhbWV3b3JrOiBjb250cm9scz8uZnJhbWV3b3JrLnZhbHVlfVwiKGVudHJ1c3RGcmFtZXdvcmspPVwiZW50cnVzdEZyYW1ld29yaygkZXZlbnQpXCIgW2hlYWRlclRleHRdPVwiJ1NlbGVjdCBhIGZyYW1ld29yaydcIj48L2FwcC1mcmFtZXdvcmstbGlzdD5cclxuIl19
|