vcomply-workflow-engine 3.2.1 → 3.2.2
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/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +4 -3
- package/fesm2015/vcomply-workflow-engine.mjs +3 -2
- package/fesm2015/vcomply-workflow-engine.mjs.map +1 -1
- package/fesm2020/vcomply-workflow-engine.mjs +3 -2
- package/fesm2020/vcomply-workflow-engine.mjs.map +1 -1
- package/package.json +1 -1
package/esm2020/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs
CHANGED
|
@@ -617,8 +617,9 @@ export class GrcObjectContainerComponent {
|
|
|
617
617
|
return riskCategoryPayload;
|
|
618
618
|
}
|
|
619
619
|
updateGRCObject() {
|
|
620
|
-
|
|
621
|
-
this.
|
|
620
|
+
let PAYLOAD = JSON.parse(JSON.stringify(this.grcPayload));
|
|
621
|
+
PAYLOAD.owners = this.getOwnersExceptDefault(PAYLOAD.owners);
|
|
622
|
+
this.apiService.updateGRCObject(PAYLOAD, this.ID).subscribe({
|
|
622
623
|
next: (data) => {
|
|
623
624
|
this.showSmiley = true;
|
|
624
625
|
this.setMoreOptionsOnSubmit();
|
|
@@ -733,4 +734,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
733
734
|
'hideElementsFromMoreOptions',
|
|
734
735
|
], inputs: ['grcType', 'MODE', 'ID'], template: "<ng-container *ngIf=\"!showSmiley\">\r\n <div class=\"workflow-grc\">\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"openedPopup && dialogFields?.includes(openedPopup)\"\r\n *ngIf=\"!isLoading\"\r\n >\r\n <lib-text-field-icon\r\n [disabled]=\"openedPopup && dialogFields?.includes(openedPopup)\"\r\n [cdnLink]=\"CDN_LINK.grcType\"\r\n [isChecked]=\"true\"\r\n field-icons\r\n >\r\n </lib-text-field-icon>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n GRC OBJECT TYPE<span class=\"required\">*</span>\r\n </label>\r\n <div class=\"select\">\r\n <tab-selector\r\n [selectedItem]=\"grcPayload.type\"\r\n [displayArray]=\"OBJECT_TYPE\"\r\n (onValueChanged)=\"changeAttributesType($event)\"\r\n ></tab-selector>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Object name field -->\r\n <lib-text-field\r\n [disabled]=\"\r\n openedPopup &&\r\n openedPopup !== INPUT_TYPE.name &&\r\n dialogFields?.includes(openedPopup)\r\n \"\r\n [isEditMode]=\"grcPayload.name && openedPopup !== INPUT_TYPE.name\"\r\n [titleText]=\"ALL_TEXT?.grcObjectName\"\r\n [placeholderText]=\"ALL_TEXT?.grcObjectPlaceholder\"\r\n [(textValue)]=\"grcPayload.name\"\r\n (textValueChange)=\"onTextChange($event)\"\r\n (clickOutside)=\"onClickOutside()\"\r\n (onClick)=\"onPopupOpen(INPUT_TYPE.name)\"\r\n >\r\n <lib-text-field-icon\r\n [cdnLink]=\"CDN_LINK.grcObjectName\"\r\n [isChecked]=\"grcPayload.name\"\r\n field-icons\r\n >\r\n </lib-text-field-icon>\r\n <span class=\"required\" is-required>*</span>\r\n <lib-edit-mode\r\n *ngIf=\"grcPayload.name && openedPopup !== INPUT_TYPE.name\"\r\n [selectedData]=\"[grcPayload]\"\r\n [type]=\"'text'\"\r\n (isOnEdit)=\"onEdit(INPUT_TYPE.name)\"\r\n edit-mode\r\n ></lib-edit-mode>\r\n <p\r\n *ngIf=\"grcValidationCheck || isDuplicateName\"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n error-message\r\n >\r\n {{ grcNameValidationError }}\r\n </p>\r\n <vcomply-editor\r\n [editorConfig]=\"EDITOR_CONFIG\"\r\n [(ngModel)]=\"grcPayload.description\"\r\n rich-text-editor\r\n ></vcomply-editor>\r\n </lib-text-field>\r\n\r\n <!-- Specify Owners -->\r\n <lib-text-field\r\n [disabled]=\"\r\n openedPopup &&\r\n openedPopup !== INPUT_TYPE.owner &&\r\n dialogFields?.includes(openedPopup)\r\n \"\r\n [active]=\"openedPopup && openedPopup == INPUT_TYPE.owner\"\r\n [isEditMode]=\"\r\n listObject.OWNER?.selectedData?.length &&\r\n openedPopup !== INPUT_TYPE.owner\r\n \"\r\n [titleText]=\"ALL_TEXT?.grcOwnersTitle\"\r\n [placeholderText]=\"ALL_TEXT?.grcOwnersPlaceholder\"\r\n [isReadOnly]=\"true\"\r\n (onClick)=\"onPopupOpen(INPUT_TYPE.owner)\"\r\n >\r\n <lib-text-field-icon\r\n [cdnLink]=\"CDN_LINK.grcOwners\"\r\n [isChecked]=\"listObject.OWNER?.selectedData?.length > 0\"\r\n field-icons\r\n >\r\n </lib-text-field-icon>\r\n <span class=\"required\" is-required>*</span>\r\n <lib-edit-mode\r\n *ngIf=\"\r\n listObject.OWNER?.selectedData?.length &&\r\n openedPopup !== INPUT_TYPE.owner\r\n \"\r\n [nonRemovableIds]=\"disabledIds\"\r\n [countColor]=\"'greenBg'\"\r\n [selectedData]=\"listObject.OWNER?.selectedData\"\r\n [type]=\"'list'\"\r\n (isOnEdit)=\"onEdit(INPUT_TYPE.owner)\"\r\n (onRemoveData)=\"onRemoveData($event, INPUT_TYPE.owner)\"\r\n edit-mode\r\n ></lib-edit-mode>\r\n </lib-text-field>\r\n\r\n <!-- Link Responsibility Centers (RC) -->\r\n <lib-text-field\r\n [disabled]=\"\r\n openedPopup &&\r\n openedPopup !== INPUT_TYPE.RC &&\r\n dialogFields?.includes(openedPopup)\r\n \"\r\n [active]=\"openedPopup && openedPopup == INPUT_TYPE.RC\"\r\n [isEditMode]=\"\r\n listObject.RC?.selectedData?.length && openedPopup !== INPUT_TYPE.RC\r\n \"\r\n [titleText]=\"ALL_TEXT?.grcRCTitle\"\r\n [placeholderText]=\"ALL_TEXT?.grcRCPlaceholder\"\r\n [isReadOnly]=\"true\"\r\n (onClick)=\"onPopupOpen(INPUT_TYPE.RC)\"\r\n >\r\n <lib-text-field-icon\r\n [cdnLink]=\"CDN_LINK.grcRC\"\r\n [isChecked]=\"listObject.RC?.selectedData?.length > 0\"\r\n field-icons\r\n >\r\n </lib-text-field-icon>\r\n <span class=\"required\" is-required>*</span>\r\n <lib-edit-mode\r\n *ngIf=\"\r\n listObject.RC?.selectedData?.length && openedPopup !== INPUT_TYPE.RC\r\n \"\r\n (onRemoveData)=\"onRemoveData($event, INPUT_TYPE.RC)\"\r\n [selectedData]=\"listObject.RC?.selectedData\"\r\n [type]=\"'list'\"\r\n (isOnEdit)=\"onEdit(INPUT_TYPE.RC)\"\r\n edit-mode\r\n ></lib-edit-mode>\r\n <p\r\n *ngIf=\"isFormSubmitted && !listObject.RC?.selectedData?.length\"\r\n [appScrollInView]=\"true\"\r\n class=\"error-message\"\r\n error-message\r\n >\r\n {{ VALIDATION_MESSAGE.grcRC }}\r\n </p>\r\n </lib-text-field>\r\n\r\n <!-- Link Risk Categories and Risk -->\r\n <lib-text-field\r\n [disabled]=\"\r\n openedPopup &&\r\n openedPopup !== INPUT_TYPE?.riskCategory &&\r\n dialogFields?.includes(openedPopup)\r\n \"\r\n [active]=\"openedPopup && openedPopup == INPUT_TYPE?.riskCategory\"\r\n *ngIf=\"grcForm?.linkRisk\"\r\n [titleText]=\"ALL_TEXT?.grcRiskCategoryTitle\"\r\n [placeholderText]=\"ALL_TEXT?.grcRiskCategoryPlaceholder\"\r\n [isReadOnly]=\"true\"\r\n (onClick)=\"onPopupOpen(INPUT_TYPE.riskCategory)\"\r\n [isEditMode]=\"\r\n listObject?.RISK_CATEGORY?.selectedData?.length &&\r\n openedPopup !== INPUT_TYPE?.riskCategory\r\n \"\r\n >\r\n <lib-text-field-icon\r\n [cdnLink]=\"CDN_LINK.linkGRC\"\r\n [isChecked]=\"listObject.RISK_CATEGORY?.selectedData?.length > 0\"\r\n field-icons\r\n >\r\n </lib-text-field-icon>\r\n\r\n <lib-edit-mode\r\n *ngIf=\"\r\n listObject.RISK_CATEGORY?.selectedData?.length &&\r\n openedPopup !== INPUT_TYPE.RISK_CATEGORY\r\n \"\r\n (onRemoveData)=\"onRemoveData($event, INPUT_TYPE?.riskCategory)\"\r\n [selectedData]=\"selectedRisks\"\r\n [type]=\"'list'\"\r\n (isOnEdit)=\"onEdit(INPUT_TYPE.riskCategory, data?.key)\"\r\n edit-mode\r\n >\r\n </lib-edit-mode>\r\n </lib-text-field>\r\n </div>\r\n\r\n <!-- Link Other GRC Objects -->\r\n <lib-text-field\r\n *ngIf=\"grcForm?.otherGrcObjects\"\r\n [disabled]=\"\r\n openedPopup &&\r\n openedPopup !== INPUT_TYPE?.otherGrcObjects &&\r\n dialogFields?.includes(openedPopup)\r\n \"\r\n [active]=\"openedPopup && openedPopup == INPUT_TYPE?.otherGrcObjects\"\r\n [titleText]=\"ALL_TEXT?.otherGRCObjectsTitle\"\r\n [placeholderText]=\"ALL_TEXT?.otherGRCObjectsPlaceholder\"\r\n [isReadOnly]=\"true\"\r\n (onClick)=\"onPopupOpen(INPUT_TYPE.otherGrcObjects)\"\r\n [isEditMode]=\"\r\n listObject?.OTHER_GRC_OBJECTS?.selectedData?.length &&\r\n openedPopup !== INPUT_TYPE?.otherGrcObjects\r\n \"\r\n >\r\n <lib-text-field-icon\r\n [cdnLink]=\"CDN_LINK.linkOthers\"\r\n [isChecked]=\"listObject?.OTHER_GRC_OBJECTS?.selectedData?.length > 0\"\r\n field-icons\r\n >\r\n </lib-text-field-icon>\r\n\r\n <lib-edit-mode\r\n *ngFor=\"let data of GRC_TYPE_ARRAY\"\r\n (onRemoveData)=\"onRemoveData($event, INPUT_TYPE?.otherGrcObjects)\"\r\n [selectedData]=\"grcDataWithTypes[data]\"\r\n [type]=\"'list'\"\r\n [isMultiple]=\"true\"\r\n (isOnEdit)=\"onEdit(INPUT_TYPE.otherGrcObjects, data)\"\r\n edit-mode\r\n >\r\n <div\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >\r\n {{ data | titlecase }}\r\n </div>\r\n </lib-edit-mode>\r\n </lib-text-field>\r\n <lib-attributes\r\n [disabled]=\"openedPopup && dialogFields?.includes(openedPopup)\"\r\n *ngIf=\"selectedAttributes?.attributes?.length && this.grcForm.grcObjectType\"\r\n [attributesInfo]=\"selectedAttributes\"\r\n [isFormSubmitted]=\"isFormSubmitted\"\r\n (onClick)=\"getAttributeSelection($event)\"\r\n ></lib-attributes>\r\n <lib-list-popup\r\n [openedPopup]=\"openedPopup\"\r\n [listObject]=\"listObject\"\r\n [tableCard]=\"otherGRCCard\"\r\n [otherGrcCardLoader]=\"grcTabLoader\"\r\n [GRCSelectedTab]=\"GRCSelectedTab\"\r\n [mode]=\"MODE\"\r\n [onEditGRCId]=\"ID\"\r\n (onSaveSelectedList)=\"onSaveSelectedList($event)\"\r\n (getOtherGRCObjects)=\"getOtherGRCObjects($event)\"\r\n ></lib-list-popup>\r\n</ng-container>\r\n<app-smiley-dialog-inline\r\n *ngIf=\"showSmiley\"\r\n [message]=\"smileyMessage\"\r\n [actionButtons]=\"actionButtons\"\r\n (action)=\"smileyActions($event)\"\r\n (closeSmiley)=\"closeSmiley($event)\"\r\n></app-smiley-dialog-inline>\r\n<app-loader-inline *ngIf=\"isLoading\"></app-loader-inline>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";::ng-deep .workflow-grc{position:relative}.disabled{opacity:.5;pointer-events:none}\n", "@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.withBtn:after{display:none}::ng-deep .selectBoxEnable.withBtn button.setBtn{background:transparent;border-radius:0;border:none;min-width:98px}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer 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"] }]
|
|
735
736
|
}], ctorParameters: function () { return [{ type: i1.GrcService }, { type: i2.ResponsibilityService }, { type: i3.AuthService }, { type: i4.UiKitService }]; } });
|
|
736
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JjLW9iamVjdC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvZ3JjLW9iamVjdC9ncmMtb2JqZWN0LWNvbnRhaW5lci9ncmMtb2JqZWN0LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy9ncmMtb2JqZWN0L2dyYy1vYmplY3QtY29udGFpbmVyL2dyYy1vYmplY3QtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDeEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBV3hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUcvRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLDJCQUEyQixHQUM1QixNQUFNLDJDQUEyQyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQjNFLE1BQU0sT0FBTywyQkFBMkI7SUE2RXRDLFlBQ1UsVUFBc0IsRUFDdEIsVUFBaUMsRUFDakMsV0FBd0IsRUFDeEIsWUFBMEI7UUFIMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUF1QjtRQUNqQyxnQkFBVyxHQUFYLFdB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RTtZQUNyQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNkLEdBQUcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7d0hBbHpCVSwyQkFBMkI7NEdBQTNCLDJCQUEyQixtV0MxQ3hDLCt5U0F1UUE7MkZEN05hLDJCQUEyQjtrQkFkdkMsU0FBUzsrQkFDRSwwQkFBMEIsV0FHM0I7d0JBQ1AsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLDZCQUE2QjtxQkFDOUIsVUFDTyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZJRUxEX1RFWFQgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzL2ZpZWxkLXRleHQuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBMSU5LUyB9IGZyb20gJy4uLy4uL3NoYXJlZC9jb25zdGFudHMvY2RuLWxpbmsuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBWQUxJREFUSU9OX01FU1NBR0UgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzL3ZhbGlkYXRpb24tbWVzc2FnZS5jb25zdGFudCc7XHJcbmltcG9ydCB7XHJcbiAgQWRkR3JjLFxyXG4gIEF0dHJpYnV0ZXMsXHJcbiAgQnV0dG9uLFxyXG4gIEdSQ1R5cGUsXHJcbiAgSW5wdXRUeXBlLFxyXG4gIExpc3RPYmplY3QsXHJcbiAgT3BlbmVkUG9wdXAsXHJcbiAgUkNMaXN0LFxyXG59IGZyb20gJy4uLy4uL3NoYXJlZC9pbnRlcmZhY2VzL2FkZC1ncmMnO1xyXG5pbXBvcnQgeyBHcmNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2dyYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzcG9uc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvcmVzcG9uc2liaWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBHUkNfVFlQRV9BUlJBWSxcclxuICBPVEhFUl9HUkNfQ0FSRCxcclxuICBPVEhFUl9HUkNfVEFCX0lOREVYLFxyXG4gIFNNSUxFWV9CVVRUT05TLFxyXG4gIFVOQ0FURUdPUklaRURfTElOS19DQVRFR09SWSxcclxufSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzL2dyY09iamVjdC5jb25zdGFudCc7XHJcbmltcG9ydCB7IFNVQ0NFU1NfTUVTU0FHRSB9IGZyb20gJy4uLy4uL3NoYXJlZC9jb25zdGFudHMvbWVzc2FnZS5jb250c3RhbnQnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVWlLaXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvdWkta2l0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZ3JjLW9iamVjdC1jb250YWluZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmMtb2JqZWN0LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JjLW9iamVjdC1jb250YWluZXIuY29tcG9uZW50Lmxlc3MnLCAnLi4vLi4vLi4vZm9ybXMubGVzcyddLFxyXG4gIG91dHB1dHM6IFtcclxuICAgICdwb3B1bGF0ZU9wdGlvbicsXHJcbiAgICAncGlja2VyQ2hhbmdlZCcsXHJcbiAgICAnY2xvc2VXb3JrZmxvdycsXHJcbiAgICAnZGlzY29ubmVjdFJlZnJlc2gnLFxyXG4gICAgJ3Jlc2V0Rm9ybScsXHJcbiAgICAnaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zJyxcclxuICBdLFxyXG4gIGlucHV0czogWydncmNUeXBlJywgJ01PREUnLCAnSUQnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdyY09iamVjdENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBNT0RFOiAnQ1JFQVRFJyB8ICdFRElUJyA9ICdDUkVBVEUnO1xyXG4gIElEOiBzdHJpbmcgPSAnJztcclxuICBBTExfVEVYVCA9IEZJRUxEX1RFWFQ7XHJcbiAgQ0ROX0xJTksgPSBMSU5LUztcclxuICBWQUxJREFUSU9OX01FU1NBR0UgPSBWQUxJREFUSU9OX01FU1NBR0U7XHJcbiAgR1JDX1RZUEVfQVJSQVkgPSBHUkNfVFlQRV9BUlJBWTtcclxuICBFRElUT1JfQ09ORklHID0gR3JjU2VydmljZS5FRElUT1JfQ09ORklHO1xyXG4gIG90aGVyR1JDQ2FyZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoT1RIRVJfR1JDX0NBUkQpKTtcclxuICBPQkpFQ1RfVFlQRSE6IEdSQ1R5cGVbXTtcclxuICBMSVNUX1BPUFVQOiBBcnJheTxzdHJpbmc+ID0gWydSQyddO1xyXG4gIHNtaWxleU1lc3NhZ2U6IHN0cmluZyA9IFNVQ0NFU1NfTUVTU0FHRS5BRERfR1JDX09CSkVDVDtcclxuICBJTlBVVF9UWVBFOiBJbnB1dFR5cGUgPSB7XHJcbiAgICBuYW1lOiAnTkFNRScsXHJcbiAgICBvd25lcjogJ09XTkVSJyxcclxuICAgIFJDOiAnUkMnLFxyXG4gICAgcmlza0NhdGVnb3J5OiAnUklTS19DQVRFR09SWScsXHJcbiAgICBvdGhlckdyY09iamVjdHM6ICdPVEhFUl9HUkNfT0JKRUNUUycsXHJcbiAgfTtcclxuICBPUklHSU5BTF9HUkNfQVRUUklCVVRFUzogYW55OyAvLyBEb24ndCBjaGFuZ2UgdGhlIHZhbHVlIG9uY2UgaXQgaXMgYXNzaWduZWRcclxuICBkaWFsb2dGaWVsZHM6IEFycmF5PHN0cmluZz4gPSBbXHJcbiAgICAnUkMnLFxyXG4gICAgJ09XTkVSJyxcclxuICAgICdPVEhFUl9HUkNfT0JKRUNUUycsXHJcbiAgICAnUklTS19DQVRFR09SWScsXHJcbiAgICAnQVRUUklCVVRFUycsXHJcbiAgXTtcclxuICBzY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xyXG4gIGdyY1R5cGU6IDAgfCAxIHwgMiB8IDMgPSAwO1xyXG4gIGRpc2FibGVkSWRzOiBBcnJheTxudW1iZXI+ID0gW107XHJcbiAgb3BlbmVkUG9wdXA6IE9wZW5lZFBvcHVwWyd0eXBlJ10gPSAnJztcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGFkZGl0aW9uYWxPcHRpb246IGFueSA9IHtcclxuICAgIEFUVFJJQlVURVM6IGZhbHNlLFxyXG4gICAgTElOS19QUk9HUkFNOiBmYWxzZSxcclxuICAgIExJTktfUklTS19DQVRFR09SSUVTX1JJU0tTOiBmYWxzZSxcclxuICAgIE9USEVSX0dSQ19PQkpFQ1RTOiBmYWxzZSxcclxuICB9O1xyXG4gIGdyY0Zvcm06IGFueSA9IHtcclxuICAgIGdyY09iamVjdFR5cGU6IGZhbHNlLFxyXG4gICAgbGlua1Byb2dyYW06IGZhbHNlLFxyXG4gICAgbGlua1Jpc2s6IGZhbHNlLFxyXG4gICAgb3RoZXJHcmNPYmplY3RzOiBmYWxzZSxcclxuICB9O1xyXG4gIGdyY1BheWxvYWQhOiBBZGRHcmM7XHJcbiAgbGlzdE9iamVjdCE6IExpc3RPYmplY3Q7XHJcbiAgc2VsZWN0ZWRBdHRyaWJ1dGVzITogR1JDVHlwZTtcclxuICBzaG93U21pbGV5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWN0aW9uQnV0dG9uczogQnV0dG9uW10gPSBTTUlMRVlfQlVUVE9OUztcclxuICBncmNEYXRhV2l0aFR5cGVzOiBhbnkgPSB7XHJcbiAgICBhc3NldHM6IFtdLFxyXG4gICAgcHJvY2Vzc2VzOiBbXSxcclxuICAgIHZlbmRvcnM6IFtdLFxyXG4gICAgaW52ZW50b3J5OiBbXSxcclxuICB9O1xyXG4gIEdSQ1NlbGVjdGVkVGFiOiBudW1iZXIgPSAwO1xyXG4gIG90aGVyR1JDVGFiSW5kZXggPSBPVEhFUl9HUkNfVEFCX0lOREVYO1xyXG4gIGlzRm9ybVN1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdyY05hbWVWYWxpZGF0aW9uRXJyb3I6IHN0cmluZyA9ICcnO1xyXG4gIGlzRHVwbGljYXRlTmFtZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRldGFpbHNMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZENhdGVnb3JpZXM6IGFueVtdID0gW107XHJcbiAgc2VsZWN0ZWRSaXNrczogYW55W10gPSBbXTtcclxuICBhZGRlZEdSQzogYW55O1xyXG4gIG90aGVyR1JDU2VhcmNoOiBzdHJpbmcgPSAnJztcclxuICBncmNUYWJMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcG9wdWxhdGVPcHRpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIHBpY2tlckNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGNsb3NlV29ya2Zsb3c6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGRpc2Nvbm5lY3RSZWZyZXNoOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICByZXNldEZvcm06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9uczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG90aGVyR1JDU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG4gIGhpZGVNb3JlT3B0aW9uOiBhbnkgPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGdyY1NlcnZpY2U6IEdyY1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IFJlc3BvbnNpYmlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRVc2VySW5mbygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgY29uc3Qgcmlza1Blcm1pc3Npb24gPVxyXG4gICAgICAgIHJlcz8ucm9sZUFjdGlvbnNbXHJcbiAgICAgICAgICByZXM/LnJvbGVBY3Rpb25zPy5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGUubW9kdWxlTmFtZSA9PSAncmlzaycpXHJcbiAgICAgICAgXTtcclxuICAgICAgaWYgKCFyaXNrUGVybWlzc2lvbj8uaXNBY3RpdmUpIHtcclxuICAgICAgICB0aGlzLmhpZGVNb3JlT3B0aW9uLnB1c2goJ0xJTktfUklTS19DQVRFR09SSUVTX1JJU0tTJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5oaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMuZW1pdCh0aGlzLmhpZGVNb3JlT3B0aW9uKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzZXRHUkNGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JjUGF5bG9hZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ncmNTZXJ2aWNlLkdSQ19QQVlMT0FEKSk7XHJcbiAgICB0aGlzLmdyY1BheWxvYWQudHlwZSA9IHRoaXMuZ3JjVHlwZTtcclxuICAgIHRoaXMubGlzdE9iamVjdCA9IHRoaXMuZ3JjU2VydmljZS5MSVNUX09CSkVDVDtcclxuICAgIHRoaXMuX2luaXRpYXRlQVBJKCk7XHJcbiAgfVxyXG5cclxuICAvL1RPRE86IGltcGxlbWVudCB0aGlzXHJcbiAgcG9wdWxhdGVPcHRpb25hbEZpZWxkcygpIHtcclxuICAgIGNvbnN0IGFjdGl2YXRlZE9wdGlvbnMgPSBbXTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuYWRkaXRpb25hbE9wdGlvbikpIHtcclxuICAgICAgaWYgKHRoaXMuYWRkaXRpb25hbE9wdGlvbltrZXldID09PSB0cnVlKSB7XHJcbiAgICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKGtleSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoYWN0aXZhdGVkT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvL1RPRE86IGltcGxlbWVudCB0aGlzXHJcbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xyXG4gICAgc3dpdGNoIChldmVudD8uY29kZSkge1xyXG4gICAgICBjYXNlICdBVFRSSUJVVEVTJzpcclxuICAgICAgICB0aGlzLmdyY0Zvcm0uZ3JjT2JqZWN0VHlwZSA9IGV2ZW50Py5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdMSU5LX1BST0dSQU1fUkVTUE9OU0lCSUxJVElFUyc6XHJcbiAgICAgICAgdGhpcy5ncmNGb3JtLmxpbmtQcm9ncmFtID0gZXZlbnQ/LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0xJTktfUklTS19DQVRFR09SSUVTX1JJU0tTJzpcclxuICAgICAgICB0aGlzLmdyY0Zvcm0ubGlua1Jpc2sgPSBldmVudD8uY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnT1RIRVJfR1JDX09CSkVDVFMnOlxyXG4gICAgICAgIHRoaXMuZ3JjRm9ybS5vdGhlckdyY09iamVjdHMgPSBldmVudD8uY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9UT0RPOiBpbXBsZW1lbnQgdGhpc1xyXG4gIG9uVGV4dENoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmdyY1BheWxvYWQubmFtZSA9IGV2ZW50LnRyaW0oKTtcclxuICAgIHRoaXMub3BlbmVkUG9wdXAgPSAnJztcclxuICAgIHRoaXMuZ3JjTmFtZVZhbGlkYXRpb25FcnJvciA9ICcnO1xyXG4gICAgdGhpcy5pc0R1cGxpY2F0ZU5hbWUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vVE9ETzogaW1wbGVtZW50IHRoaXNcclxuICBvblBvcHVwT3Blbih0eXBlOiBPcGVuZWRQb3B1cFsndHlwZSddKSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnT1dORVInOlxyXG4gICAgICBjYXNlICdSQyc6XHJcbiAgICAgICAgdGhpcy5vcGVuZWRQb3B1cCA9IHR5cGU7XHJcbiAgICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ09USEVSX0dSQ19PQkpFQ1RTJzpcclxuICAgICAgICB0aGlzLm9wZW5lZFBvcHVwID0gdHlwZTtcclxuICAgICAgICB0aGlzLmdldE90aGVyR1JDT2JqZWN0cyh7IHJjX2lkczogJycgfSk7XHJcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ1RhYkNvdW50KHsgcmNfaWRzOiAnJyB9KTtcclxuICAgICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnUklTS19DQVRFR09SWSc6XHJcbiAgICAgICAgdGhpcy5vcGVuZWRQb3B1cCA9IHR5cGU7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5wcmV2aWV3UGFuZWwubmV4dCh0cnVlKTtcclxuICAgICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2F2ZVNlbGVjdGVkTGlzdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmxpc3RPYmplY3QgPSBldmVudDtcclxuICAgIGlmICh0aGlzLm9wZW5lZFBvcHVwID09PSAnT1RIRVJfR1JDX09CSkVDVFMnKSB7XHJcbiAgICAgIHRoaXMuc2V0T3RoZXJHUkNUeXBlc0Zvcm1hdGUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0TGlzdFBheWxvYWQodGhpcy5vcGVuZWRQb3B1cCk7XHJcbiAgICB0aGlzLm9wZW5lZFBvcHVwID0gJyc7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnByZXZpZXdQYW5lbC5uZXh0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGdldEF0dHJpYnV0ZVNlbGVjdGlvbihldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgdGhpcy5vcGVuZWRQb3B1cCA9ICcnO1xyXG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub3BlbmVkUG9wdXAgPSAnJztcclxuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLnByZXZpZXdQYW5lbC5uZXh0KGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldExpc3RQYXlsb2FkKHR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKHR5cGUgPT09ICdPV05FUicpIHtcclxuICAgICAgdGhpcy5ncmNQYXlsb2FkLm93bmVycyA9IHRoaXMubGlzdE9iamVjdC5PV05FUi5zZWxlY3RlZERhdGEubWFwKFxyXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0ubWVtYmVyX2lkXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGUgPT09ICdSQycpIHtcclxuICAgICAgdGhpcy5ncmNQYXlsb2FkLnJjX2lkcyA9IHRoaXMubGlzdE9iamVjdC5SQy5zZWxlY3RlZERhdGEubWFwKFxyXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/Ll9pZFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGUgPT09ICdPVEhFUl9HUkNfT0JKRUNUUycpIHtcclxuICAgICAgdGhpcy5ncmNQYXlsb2FkLmxpbmtlZF9HUkNfaWRzID1cclxuICAgICAgICB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuc2VsZWN0ZWREYXRhLm1hcChcclxuICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0uX2lkXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlID09PSAnUklTS19DQVRFR09SWScpIHtcclxuICAgICAgdGhpcy5ncmNQYXlsb2FkLnJpc2tfY2F0ZWdvcnlfaWRzID0gdGhpcy5nZXRSaXNrQ2F0ZWdvcnlQYXlsb2FkKFxyXG4gICAgICAgIHRoaXMubGlzdE9iamVjdD8uUklTS19DQVRFR09SWT8uc2VsZWN0ZWREYXRhXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrT3V0c2lkZSgpIHtcclxuICAgIC8vdGhpcy5vcGVuZWRQb3B1cCA9ICcnO1xyXG4gIH1cclxuXHJcbiAgb25FZGl0KGV2ZW50OiBhbnksIHN1YlR5cGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5vcGVuZWRQb3B1cCA9IGV2ZW50O1xyXG4gICAgaWYgKGV2ZW50ID09PSAnT1RIRVJfR1JDX09CSkVDVFMnKSB7XHJcbiAgICAgIHRoaXMuR1JDU2VsZWN0ZWRUYWIgPSB0aGlzLm90aGVyR1JDVGFiSW5kZXhbc3ViVHlwZV0gPz8gMDtcclxuICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyB0eXBlOiB0aGlzLkdSQ1NlbGVjdGVkVGFiLCByY19pZHM6ICcnIH0pO1xyXG4gICAgICB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoeyByY19pZHM6ICcnIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuTElTVF9QT1BVUC5pbmNsdWRlcyhldmVudCkpIHtcclxuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XHJcbiAgICAgIC8vIHRoaXMuYXV0aFNlcnZpY2UucHJldmlld1BhbmVsLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQgPT09ICdSSVNLX0NBVEVHT1JZJykge1xyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLnByZXZpZXdQYW5lbC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SZW1vdmVEYXRhKFxyXG4gICAgZXZlbnQ6IGFueSxcclxuICAgIHR5cGU6ICdSQycgfCAnT1dORVInIHwgJ09USEVSX0dSQ19PQkpFQ1RTJyB8ICdSSVNLX0NBVEVHT1JZJ1xyXG4gICkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ1JDJzpcclxuICAgICAgY2FzZSAnT1dORVInOlxyXG4gICAgICAgIHRoaXMubGlzdE9iamVjdFt0eXBlXS5zZWxlY3RlZERhdGEuc3BsaWNlKGV2ZW50LmluZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnT1RIRVJfR1JDX09CSkVDVFMnOlxyXG4gICAgICAgIHRoaXMucmVtb3ZlT3RoZXJHUkNPYmplY3RzKGV2ZW50Py5kYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnUklTS19DQVRFR09SWSc6XHJcbiAgICAgICAgdGhpcy5kZWxldGVTZWxlY3RlZFJpc2soZXZlbnQuZGF0YT8uQ2F0ZWdvcnlJZHNbMF0sIGV2ZW50Py5kYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuc2V0TGlzdFBheWxvYWQodHlwZSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VBdHRyaWJ1dGVzVHlwZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmdyY1R5cGUgPSBldmVudDtcclxuICAgIHRoaXMuZ3JjUGF5bG9hZC50eXBlID0gZXZlbnQ7XHJcbiAgICB0aGlzLnNldERlZmF1bHRHUkNPYmplY3RUeXBlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0aWF0ZUFQSSgpIHtcclxuICAgIGlmICh0aGlzLk1PREUgPT09ICdFRElUJykge1xyXG4gICAgICB0aGlzLmdldEdSQ09iamVjdERldGFpbHModGhpcy5JRCk7XHJcbiAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9IFNVQ0NFU1NfTUVTU0FHRS5VUERBVEVfR1JDX09CSkVDVDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGV0YWlsc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLl9nZXRHUkNPYmplY3RUeXBlKCk7XHJcbiAgICAgIHRoaXMuX2dldE93bmVyTGlzdCgpO1xyXG4gICAgICB0aGlzLl9nZXRSQ0xpc3QoKTtcclxuICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyByY19pZHM6ICcnIH0pO1xyXG4gICAgICAvLyB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldE93bmVyTGlzdCgpIHtcclxuICAgIHRoaXMubGlzdE9iamVjdC5PV05FUi5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmdldEdSQ093bmVyTGlzdCgpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICh1c2VyTGlzdDogYW55KSA9PiB0aGlzLm1hcFVzZXJMaXN0KHVzZXJMaXN0KSxcclxuICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7fSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGZ1bmN0aW9uIGBtYXBVc2VyTGlzdGAgbWFwcyB0aGUgdXNlciBsaXN0IGRhdGEgYW5kIHBlcmZvcm1zIHNvbWUgYWRkaXRpb25hbCBvcGVyYXRpb25zIG9uIGVhY2hcclxuICAgKiB1c2VyIG9iamVjdC5cclxuICAgKiBAcGFyYW0ge2FueX0gdXNlckxpc3QgLSBUaGUgYHVzZXJMaXN0YCBwYXJhbWV0ZXIgaXMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBgZGF0YWAgcHJvcGVydHkuIFRoZVxyXG4gICAqIGBkYXRhYCBwcm9wZXJ0eSBpcyBhbiBhcnJheSBvZiB1c2VyIG9iamVjdHMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtYXBVc2VyTGlzdCh1c2VyTGlzdDogYW55KSB7XHJcbiAgICB0aGlzLmxpc3RPYmplY3RbJ09XTkVSJ11bJ2RhdGEnXSA9IHt9O1xyXG4gICAgdGhpcy5saXN0T2JqZWN0WydPV05FUiddLnNlbGVjdGVkRGF0YSA9IFtdO1xyXG4gICAgdGhpcy5kaXNhYmxlZElkcyA9IFtdO1xyXG4gICAgLy8gTWFwIHdpbGwgZ2V0IHJlbW92ZSBvbmNlIEFQSSBjaGFuZ2VcclxuICAgIHRoaXMubGlzdE9iamVjdFsnT1dORVInXVsnZGF0YSddWydhc3NpZ25lZXNMaXN0J10gPSB1c2VyTGlzdD8uZGF0YS5tYXAoXHJcbiAgICAgICh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgICB1c2VyLml0ZW1fbmFtZSA9IHVzZXIubWVtYmVyX25hbWU7XHJcbiAgICAgICAgdXNlci5lbXBsb3llZV9uYW1lID0gdXNlci5tZW1iZXJfbmFtZTtcclxuICAgICAgICB1c2VyLm15X21lbWJlcl9pZCA9IHVzZXIubWVtYmVyX2lkO1xyXG4gICAgICAgIHVzZXIuaXRlbV9pZCA9IHVzZXIubWVtYmVyX2lkO1xyXG4gICAgICAgIGlmIChbJ0FETUlOJywgJ0tFWV9BRE1JTiddLmluY2x1ZGVzKHVzZXIudXNlcl9yb2xlKSkge1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlZElkcy5wdXNoKHVzZXIubWVtYmVyX2lkKTtcclxuICAgICAgICAgIHRoaXMubGlzdE9iamVjdFsnT1dORVInXS5zZWxlY3RlZERhdGEucHVzaCh1c2VyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVzZXI7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5NT0RFID09PSAnRURJVCcpIHtcclxuICAgICAgdGhpcy5saXN0T2JqZWN0Lk9XTkVSLnNlbGVjdGVkRGF0YSA9IHRoaXMubGlzdE9iamVjdFsnT1dORVInXVsnZGF0YSddW1xyXG4gICAgICAgICdhc3NpZ25lZXNMaXN0J1xyXG4gICAgICBdLmZpbHRlcigoaXRlbTogYW55KSA9PiB0aGlzLmdyY1BheWxvYWQub3duZXJzLmluY2x1ZGVzKGl0ZW0/Lm1lbWJlcl9pZCkpO1xyXG4gICAgICB0aGlzLmxpc3RPYmplY3RbJ09XTkVSJ10uZGlzYWJsZWRJZHMgPSBbLi4ubmV3IFNldCh0aGlzLmRpc2FibGVkSWRzKV07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRlZmF1bHRTZWxlY3RlZFVzZXIoKTtcclxuICAgIH1cclxuICAgIHRoaXMubGlzdE9iamVjdC5PV05FUi5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuY2hlY2tJc0RhdGFMb2FkZWQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBmdW5jdGlvbiBgZGVmYXVsdFNlbGVjdGVkVXNlcigpYCBzZXRzIHRoZSBkZWZhdWx0IHNlbGVjdGVkIHVzZXIgYmFzZWQgb24gdGhlIGN1cnJlbnQgdXNlcidzIHJvbGVcclxuICAgKiBhbmQgYXNzaWducyBpdCB0byB0aGUgYE9XTkVSYCBsaXN0IG9iamVjdC5cclxuICAgKi9cclxuICBwcml2YXRlIGRlZmF1bHRTZWxlY3RlZFVzZXIoKSB7XHJcbiAgICBpZiAoIXRoaXMuYXV0aFNlcnZpY2UuaXNBZG1pbigpICYmICF0aGlzLmF1dGhTZXJ2aWNlLmlzS2V5QWRtaW4oKSkge1xyXG4gICAgICBjb25zdCBVU0VSID0gdGhpcy5saXN0T2JqZWN0WydPV05FUiddWydkYXRhJ11bJ2Fzc2lnbmVlc0xpc3QnXS5maW5kKFxyXG4gICAgICAgICh1c2VyOiBhbnkpID0+IHVzZXIubWVtYmVyX2lkID09PSB0aGlzLmF1dGhTZXJ2aWNlLmdldE1lbWJlcklkKClcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5saXN0T2JqZWN0WydPV05FUiddLnNlbGVjdGVkRGF0YS5wdXNoKFVTRVIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5saXN0T2JqZWN0WydPV05FUiddWydkaXNhYmxlZElkcyddID0gWy4uLnRoaXMuZGlzYWJsZWRJZHNdO1xyXG4gICAgdGhpcy5ncmNQYXlsb2FkLm93bmVycyA9IHRoaXMubGlzdE9iamVjdFsnT1dORVInXS5zZWxlY3RlZERhdGEubWFwKFxyXG4gICAgICAodXNlcjogYW55KSA9PiB1c2VyLm1lbWJlcl9pZFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldFJDTGlzdCgpIHtcclxuICAgIHRoaXMubGlzdE9iamVjdC5SQy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmdldFJlc3BvbnNpYmlsaXR5Q2VudGVyTGlzdCgpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdE9iamVjdFsnUkMnXVsnZGF0YSddID0gZGF0YTtcclxuICAgICAgdGhpcy5saXN0T2JqZWN0LlJDLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5NT0RFID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLmxpc3RPYmplY3QuUkMuc2VsZWN0ZWREYXRhID0gZGF0YS5maWx0ZXIoKGl0ZW06IGFueSkgPT5cclxuICAgICAgICAgIHRoaXMuZ3JjUGF5bG9hZC5yY19pZHMuaW5jbHVkZXMoaXRlbT8uX2lkKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGVja0lzRGF0YUxvYWRlZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRHUkNPYmplY3RUeXBlKCkge1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmdldE9iamVjdFR5cGUoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZGF0YTogR1JDVHlwZVtdKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy5zZXRMaW5rUmlza1RhYihkYXRhKTtcclxuICAgICAgICBjb25zdCBPQkpFQ1RfTEFCRUw6IGFueSA9IHtcclxuICAgICAgICAgIEFTU0VUUzogJ0Fzc2V0JyxcclxuICAgICAgICAgIFBST0NFU1NFUzogJ1Byb2Nlc3MnLFxyXG4gICAgICAgICAgVkVORE9SUzogJ1ZlbmRvcicsXHJcbiAgICAgICAgICBJTlZFTlRPUlk6ICdJbnZlbnRvcnknLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5PQkpFQ1RfVFlQRSA9IGRhdGEubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGl0ZW0udmFsdWUgPSBpbmRleDtcclxuICAgICAgICAgIGl0ZW0ubGFiZWwgPSBPQkpFQ1RfTEFCRUxbaXRlbT8ubGFiZWw/LnRvVXBwZXJDYXNlKCldID8/IGl0ZW0/LmxhYmVsO1xyXG4gICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuT1JJR0lOQUxfR1JDX0FUVFJJQlVURVMgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5PQkpFQ1RfVFlQRSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5NT0RFID09PSAnRURJVCcpIHtcclxuICAgICAgICAgIHRoaXMuT0JKRUNUX1RZUEVbdGhpcy5ncmNUeXBlXS5hdHRyaWJ1dGVzID1cclxuICAgICAgICAgICAgdGhpcy5ncmNQYXlsb2FkLmF0dHJpYnV0ZXM7XHJcblxyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLmdyY1NlcnZpY2UuY2hlY2tBdHRyaWJ1dGVzU2VsZWN0ZWQoXHJcbiAgICAgICAgICAgICAgdGhpcy5PQkpFQ1RfVFlQRVt0aGlzLmdyY1R5cGVdLmF0dHJpYnV0ZXNcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JjRm9ybS5ncmNPYmplY3RUeXBlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFUVFJJQlVURVMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0R1JDT2JqZWN0VHlwZSgpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tJc0RhdGFMb2FkZWQoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7fSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREZWZhdWx0R1JDT2JqZWN0VHlwZSgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGVzID1cclxuICAgICAgdGhpcy5PQkpFQ1RfVFlQRS5maW5kKChlbGU6IGFueSkgPT4gZWxlLnZhbHVlID09PSB0aGlzLmdyY1R5cGUpID8/XHJcbiAgICAgIHRoaXMuT0JKRUNUX1RZUEVbMF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrSXNEYXRhTG9hZGVkKCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPVxyXG4gICAgICB0aGlzLmxpc3RPYmplY3QuT1dORVIuaXNMb2FkaW5nIHx8XHJcbiAgICAgIHRoaXMubGlzdE9iamVjdC5SQy5pc0xvYWRpbmcgfHxcclxuICAgICAgdGhpcy5saXN0T2JqZWN0Lk9USEVSX0dSQ19PQkpFQ1RTLmlzTG9hZGluZyB8fFxyXG4gICAgICAodGhpcy5NT0RFID09PSAnRURJVCcgJiYgdGhpcy5kZXRhaWxzTG9hZGVyKTtcclxuICB9XHJcblxyXG4gIGdldE90aGVyR1JDT2JqZWN0cyhldmVudD86IGFueSkge1xyXG4gICAgaWYgKHRoaXMub3RoZXJHUkNTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5vdGhlckdSQ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50Py5zZWFyY2hTdHJpbmcgJiYgdGhpcy5vdGhlckdSQ1NlYXJjaCAhPT0gZXZlbnQ/LnNlYXJjaFN0cmluZykge1xyXG4gICAgICB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoZXZlbnQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vdGhlckdSQ1NlYXJjaCA9IGV2ZW50Py5zZWFyY2hTdHJpbmcgPz8gJyc7XHJcbiAgICB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIC8vIGV2ZW50WydyY19pZHMnXSA9IHRoaXMubGlzdE9iamVjdD8uUkM/LnNlbGVjdGVkRGF0YVxyXG4gICAgLy8gICA/Lm1hcCgocmM6IGFueSkgPT4gcmM/Ll9pZClcclxuICAgIC8vICAgLmpvaW4oJywnKTtcclxuICAgIHRoaXMub3RoZXJHUkNTdWJzY3JpcHRpb24gPSB0aGlzLmdyY1NlcnZpY2VcclxuICAgICAgLmdldEdSQ0xpc3QoZXZlbnQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubGlzdE9iamVjdC5PVEhFUl9HUkNfT0JKRUNUUy5kYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuTU9ERSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgICAvLyB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuc2VsZWN0ZWREYXRhID0gZGF0YS5maWx0ZXIoXHJcbiAgICAgICAgICAvLyAgIChpdGVtOiBhbnkpID0+IHRoaXMuZ3JjUGF5bG9hZC5saW5rZWRfR1JDX2lkcy5pbmNsdWRlcyhpdGVtPy5faWQpXHJcbiAgICAgICAgICAvLyApO1xyXG4gICAgICAgICAgaWYgKHRoaXMuZ3JjUGF5bG9hZC5saW5rZWRfR1JDX2lkcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JjRm9ybS5vdGhlckdyY09iamVjdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1RIRVJfR1JDX09CSkVDVFMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGVja0lzRGF0YUxvYWRlZCgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldE90aGVyR1JDVGFiQ291bnQoZXZlbnQ/OiBhbnkpIHtcclxuICAgIHRoaXMuZ3JjVGFiTG9hZGVyID0gdHJ1ZTtcclxuICAgIC8vIGV2ZW50WydyY19pZHMnXSA9IHRoaXMubGlzdE9iamVjdD8uUkM/LnNlbGVjdGVkRGF0YVxyXG4gICAgLy8gICA/Lm1hcCgocmM6IGFueSkgPT4gcmM/Ll9pZClcclxuICAgIC8vICAgLmpvaW4oJywnKTtcclxuICAgIHRoaXMuZ3JjU2VydmljZS5nZXRHUkNUYWJzQ291bnQoZXZlbnQpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JjVGFiTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMub3RoZXJHUkNDYXJkWzBdLmNvdW50ID0gZGF0YT8uYXNzZXRzX3R5cGVfY291bnQ7XHJcbiAgICAgIHRoaXMub3RoZXJHUkNDYXJkWzFdLmNvdW50ID0gZGF0YT8ucHJvY2Vzc2VzX3R5cGVfY291bnQ7XHJcbiAgICAgIHRoaXMub3RoZXJHUkNDYXJkWzJdLmNvdW50ID0gZGF0YT8udmVuZG9yc190eXBlX2NvdW50O1xyXG4gICAgICB0aGlzLm90aGVyR1JDQ2FyZFszXS5jb3VudCA9IGRhdGE/LmludmVudG9yeV90eXBlX2NvdW50O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRPdGhlckdSQ1RhYkluZGV4KGV2ZW50PzogYW55LCBkYXRhPzogYW55KSB7fVxyXG5cclxuICAvL1BvcHVsYXRlL0VkaXQgR1JDIE9iamVjdFxyXG5cclxuICBnZXRHUkNPYmplY3REZXRhaWxzKGdyY0lkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYXBpU2VydmljZS5nZXRHUkNPYmplY3REZXRhaWxzKGdyY0lkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vcGVuZWRQb3B1cCA9ICcnO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVQYXlsb2FkKGRhdGEpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlR1JDT2JqZWN0KGRhdGE/LmxpbmtlZEdyY0RldGFpbHMpO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsc0xvYWRlciA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLl9nZXRSQ0xpc3QoKTtcclxuICAgICAgICB0aGlzLl9nZXRPd25lckxpc3QoKTtcclxuICAgICAgICB0aGlzLl9nZXRHUkNPYmplY3RUeXBlKCk7XHJcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyByY19pZHM6ICcnIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvcicsIGVycm9yKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVHUkNPYmplY3QoZGF0YTogYW55KSB7XHJcbiAgICBpZiAoZGF0YT8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZ3JjRm9ybS5vdGhlckdyY09iamVjdHMgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1RIRVJfR1JDX09CSkVDVFMgPSB0cnVlO1xyXG4gICAgICBsZXQgR1JDT2JqZWN0OiBhbnkgPSB7XHJcbiAgICAgICAgYXNzZXRzOiBbXSxcclxuICAgICAgICBwcm9jZXNzZXM6IFtdLFxyXG4gICAgICAgIHZlbmRvcnM6IFtdLFxyXG4gICAgICAgIGludmVudG9yeTogW10sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMubGlzdE9iamVjdC5PVEhFUl9HUkNfT0JKRUNUUy5zZWxlY3RlZERhdGEgPSBbLi4ubmV3IFNldChkYXRhKV07XHJcbiAgICAgIGNvbnN0IEdSQ19UWVBFID0gR1JDX1RZUEVfQVJSQVk7XHJcbiAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgR1JDT2JqZWN0W0dSQ19UWVBFW2l0ZW0/LnR5cGUgPz8gMV1dLnB1c2goaXRlbSk7XHJcbiAgICAgICAgdGhpcy5vdGhlckdSQ0NhcmRbaXRlbT8udHlwZV0uc2VsZWN0ZWRDb3VudCArPSAxO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuZ3JjRGF0YVdpdGhUeXBlcyA9IEdSQ09iamVjdDtcclxuICAgICAgdGhpcy51cGRhdGVPdGhlckdSQ09iamVjdHNQYXlsb2FkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgcG9wdWxhdGVQYXlsb2FkKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5ncmNQYXlsb2FkLm5hbWUgPSBkYXRhPy5uYW1lO1xyXG4gICAgdGhpcy5ncmNQYXlsb2FkLnR5cGUgPSBkYXRhPy50eXBlO1xyXG4gICAgdGhpcy5ncmNQYXlsb2FkLm93bmVycyA9IGRhdGE/Lm93bmVycztcclxuICAgIHRoaXMuZ3JjUGF5bG9hZC5yY19pZHMgPSBkYXRhPy5yY19pZHM7XHJcbiAgICB0aGlzLmdyY1BheWxvYWQubGlua2VkX0dSQ19pZHMgPSBkYXRhPy5saW5rZWRfR1JDX2lkcztcclxuICAgIHRoaXMuZ3JjUGF5bG9hZC5yaXNrX2NhdGVnb3J5X2lkcyA9XHJcbiAgICAgIHRoaXMucG9wdWxhdGVMaW5rUmlzayhkYXRhPy5yaXNrX2NhdGVnb3J5X2lkcykgPz8gW107XHJcbiAgICB0aGlzLmdyY1BheWxvYWQuYXR0cmlidXRlcyA9IGRhdGE/LmF0dHJpYnV0ZXM7XHJcbiAgICB0aGlzLmdyY1BheWxvYWQuc3RhdGUgPSBkYXRhPy5zdGF0ZTtcclxuICAgIHRoaXMuZ3JjUGF5bG9hZC5kZXNjcmlwdGlvbiA9IGRhdGE/LmRlc2NyaXB0aW9uO1xyXG4gICAgdGhpcy5ncmNQYXlsb2FkLmZyZXF1ZW5jeSA9IGRhdGE/LmZyZXF1ZW5jeTtcclxuICAgIHRoaXMuZ3JjUGF5bG9hZC5wYXJlbnRfZ3JjX2lkcyA9IGRhdGE/LnBhcmVudF9ncmNfaWRzO1xyXG4gICAgdGhpcy5ncmNQYXlsb2FkLmVtYWlsX25vdGlmaWNhdGlvbl9tZW1iZXJfaWRzID1cclxuICAgICAgZGF0YT8uZW1haWxfbm90aWZpY2F0aW9uX21lbWJlcl9pZHM7XHJcbiAgICB0aGlzLmdyY1BheWxvYWQucHJvZ3JhbV9jYXRlZ29yeV9pZHMgPSBkYXRhPy5wcm9ncmFtX2NhdGVnb3J5X2lkcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlR1JDT2JqZWN0KCkge1xyXG4gICAgdGhpcy5pc0Zvcm1TdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuZ3JjRm9ybS5ncmNPYmplY3RUeXBlKSB7XHJcbiAgICAgIHRoaXMuZ3JjUGF5bG9hZC5hdHRyaWJ1dGVzID0gdGhpcy5zZWxlY3RlZEF0dHJpYnV0ZXMuYXR0cmlidXRlcztcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5ncmNTZXJ2aWNlLmNoZWNrVmFsaWRhdGlvbihcclxuICAgICAgICB0aGlzLmdyY1BheWxvYWQsXHJcbiAgICAgICAgdGhpcy5ncmNGb3JtLmdyY09iamVjdFR5cGVcclxuICAgICAgKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xyXG4gICAgICBpZiAodGhpcy5NT0RFID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUdSQ09iamVjdCgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBsZXQgUEFZTE9BRCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ncmNQYXlsb2FkKSk7XHJcbiAgICAgIFBBWUxPQUQub3duZXJzID0gdGhpcy5nZXRPd25lcnNFeGNlcHREZWZhdWx0KFBBWUxPQUQub3duZXJzKTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLmFkZEdSQ09iamVjdChQQVlMT0FEKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNldE1vcmVPcHRpb25zT25TdWJtaXQoKTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5hZGRlZEdSQyA9IGRhdGE7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvcicsIGVycm9yLCBlcnJvci5zdGF0dXMpO1xyXG4gICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA5IHx8IGVycm9yLnN0YXR1cyA9PT0gNDAzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNEdXBsaWNhdGVOYW1lID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZXRNb3JlT3B0aW9uc09uU3VibWl0KCk7XHJcbiAgICAgICAgICAgIHRoaXMubWFwVXNlckxpc3Qoe1xyXG4gICAgICAgICAgICAgIGRhdGE6IHRoaXMubGlzdE9iamVjdC5PV05FUi5kYXRhLmFzc2lnbmVlc0xpc3QsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmdyY05hbWVWYWxpZGF0aW9uRXJyb3IgPSBWQUxJREFUSU9OX01FU1NBR0UuZ3JjX2V4aXN0cztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0R1JDT2JqZWN0KCkge1xyXG4gICAgdGhpcy5NT0RFID0gJ0NSRUFURSc7XHJcbiAgICB0aGlzLnNtaWxleU1lc3NhZ2UgPSBTVUNDRVNTX01FU1NBR0UuQUREX0dSQ19PQkpFQ1Q7XHJcbiAgICB0aGlzLmdyY1BheWxvYWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZ3JjU2VydmljZS5HUkNfUEFZTE9BRCkpO1xyXG4gICAgdGhpcy5ncmNQYXlsb2FkLnR5cGUgPSB0aGlzLmdyY1R5cGU7XHJcbiAgICB0aGlzLmlzRm9ybVN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0R1cGxpY2F0ZU5hbWUgPSBmYWxzZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQodGhpcy5oaWRlTW9yZU9wdGlvbik7XHJcbiAgICB0aGlzLk9CSkVDVF9UWVBFID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLk9SSUdJTkFMX0dSQ19BVFRSSUJVVEVTKSk7XHJcbiAgICB0aGlzLm90aGVyR1JDQ2FyZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoT1RIRVJfR1JDX0NBUkQpKTtcclxuICAgIHRoaXMucmVzZXRPdGhlckdSQ0NhcmQoKTtcclxuICAgIHRoaXMuc2V0RGVmYXVsdEdSQ09iamVjdFR5cGUoKTtcclxuICAgIHRoaXMucmVzZXRHUkNEYXRhV2l0aFR5cGVzKCk7XHJcbiAgICB0aGlzLnJlc2V0TGlzdE9iamVjdFNlbGVjdGlvbigpO1xyXG4gICAgdGhpcy5tYXBVc2VyTGlzdCh7IGRhdGE6IHRoaXMubGlzdE9iamVjdC5PV05FUi5kYXRhLmFzc2lnbmVlc0xpc3QgfSk7XHJcbiAgfVxyXG5cclxuICByZXNldExpc3RPYmplY3RTZWxlY3Rpb24oKSB7XHJcbiAgICB0aGlzLmxpc3RPYmplY3QuT1dORVIuc2VsZWN0ZWREYXRhID0gW107XHJcbiAgICB0aGlzLmxpc3RPYmplY3QuUkMuc2VsZWN0ZWREYXRhID0gW107XHJcbiAgICB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuc2VsZWN0ZWREYXRhID0gW107XHJcbiAgICB0aGlzLmxpc3RPYmplY3QuUklTS19DQVRFR09SWS5zZWxlY3RlZERhdGEgPSBbXTtcclxuICB9XHJcblxyXG4gIHNtaWxleUFjdGlvbnMoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgaWYgKGV2ZW50ID09PSAnYWRkTW9yZScpIHtcclxuICAgICAgdGhpcy5yZXNldEdSQ0Zvcm0oKTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICd2aWV3Jykge1xyXG4gICAgICB0aGlzLnJlc2V0R1JDRm9ybSgpO1xyXG4gICAgICB0aGlzLnZpZXdHUkMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlU21pbGV5KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgIHRoaXMucmVzZXRHUkNGb3JtKCk7XHJcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogdGhpcy5hZGRlZEdSQywgY29uZmlybTogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICByZXNldEdSQ0Zvcm0oKSB7XHJcbiAgICB0aGlzLk1PREUgPSAnQ1JFQVRFJztcclxuICAgIHRoaXMucmVzZXRHUkNPYmplY3QoKTtcclxuICAgIHRoaXMuZ3JjRm9ybS5vdGhlckdyY09iamVjdHMgPSBmYWxzZTtcclxuICAgIHRoaXMuZ3JjRm9ybS5saW5rUmlzayA9IGZhbHNlO1xyXG4gICAgdGhpcy5ncmNGb3JtLmxpbmtQcm9ncmFtID0gZmFsc2U7XHJcbiAgICB0aGlzLmdyY0Zvcm0uZ3JjT2JqZWN0VHlwZSA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMucmVzZXRGb3JtLmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICB2aWV3R1JDKCkge1xyXG4gICAgbGV0IHVybDogc3RyaW5nO1xyXG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcclxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICB1cmwgPSAnaHR0cDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvIy9tYW5hZ2UtZ3JjLW9iamVjdHMnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdXJsID1cclxuICAgICAgICAnaHR0cHM6Ly8nICtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaG9zdCArXHJcbiAgICAgICAgJy9vcmdhbml6YXRpb24vIy9tYW5hZ2UtZ3JjLW9iamVjdHMnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLk1PREUgIT09ICdFRElUJykge1xyXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgIH1cclxuICAgIHRoaXMucmVzZXRHUkNGb3JtKCk7XHJcbiAgICB0aGlzLmNsb3NlU21pbGV5KCcnKTtcclxuICAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHsgZXZ0OiB0aGlzLmFkZGVkR1JDLCBjb25maXJtOiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIHNldE90aGVyR1JDVHlwZXNGb3JtYXRlKCkge1xyXG4gICAgY29uc3QgZ3JjVHlwZXMgPSBHUkNfVFlQRV9BUlJBWTtcclxuICAgIHRoaXMucmVzZXRHUkNEYXRhV2l0aFR5cGVzKCk7XHJcbiAgICB0aGlzLmxpc3RPYmplY3Q/Lk9USEVSX0dSQ19PQkpFQ1RTPy5zZWxlY3RlZERhdGE/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmdyY0RhdGFXaXRoVHlwZXNbZ3JjVHlwZXNbaXRlbT8udHlwZV1dPy5wdXNoKGl0ZW0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnVwZGF0ZU90aGVyR1JDT2JqZWN0c1BheWxvYWQoKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZU90aGVyR1JDT2JqZWN0cyhldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBncmNUeXBlcyA9IEdSQ19UWVBFX0FSUkFZO1xyXG4gICAgdGhpcy5saXN0T2JqZWN0Lk9USEVSX0dSQ19PQkpFQ1RTLnNlbGVjdGVkRGF0YSA9XHJcbiAgICAgIHRoaXMubGlzdE9iamVjdC5PVEhFUl9HUkNfT0JKRUNUUy5zZWxlY3RlZERhdGEuZmlsdGVyKFxyXG4gICAgICAgIChncmM6IGFueSkgPT4gZ3JjPy5faWQgIT09IGV2ZW50Py5faWRcclxuICAgICAgKTtcclxuICAgIHRoaXMuZmlsdGVyT3RoZXJHUkNEYXRhKGV2ZW50LCBncmNUeXBlc1tldmVudD8udHlwZV0pO1xyXG4gICAgdGhpcy5vdGhlckdSQ0NhcmRbMF0uc2VsZWN0ZWRDb3VudFxyXG4gICAgICA/ICh0aGlzLm90aGVyR1JDQ2FyZFtldmVudD8udHlwZV0uc2VsZWN0ZWRDb3VudCAtPSAxKVxyXG4gICAgICA6IDA7XHJcbiAgICB0aGlzLnVwZGF0ZU90aGVyR1JDT2JqZWN0c1BheWxvYWQoKTtcclxuICB9XHJcblxyXG4gIGZpbHRlck90aGVyR1JDRGF0YShldmVudDogYW55LCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZ3JjRGF0YVdpdGhUeXBlc1t0eXBlXSA9IHRoaXMuZ3JjRGF0YVdpdGhUeXBlc1t0eXBlXT8uZmlsdGVyKFxyXG4gICAgICAoZ3JjOiBhbnkpID0+IGdyYz8uX2lkICE9PSBldmVudD8uX2lkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRHUkNEYXRhV2l0aFR5cGVzKCkge1xyXG4gICAgdGhpcy5ncmNEYXRhV2l0aFR5cGVzID0ge1xyXG4gICAgICBhc3NldHM6IFtdLFxyXG4gICAgICBwcm9jZXNzZXM6IFtdLFxyXG4gICAgICB2ZW5kb3JzOiBbXSxcclxuICAgICAgaW52ZW50b3J5OiBbXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBnZXQgZ3JjVmFsaWRhdGlvbkNoZWNrKCkge1xyXG4gICAgaWYgKHRoaXMuaXNGb3JtU3VibWl0dGVkICYmICF0aGlzLmdyY1BheWxvYWQubmFtZSkge1xyXG4gICAgICB0aGlzLmdyY05hbWVWYWxpZGF0aW9uRXJyb3IgPSBWQUxJREFUSU9OX01FU1NBR0UuZ3JjT2JqZWN0TmFtZTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuaXNGb3JtU3VibWl0dGVkICYmICEodGhpcy5ncmNQYXlsb2FkLm5hbWUgfHwgdGhpcy5pc0R1cGxpY2F0ZU5hbWUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Umlza0NhdGVnb3J5UGF5bG9hZChzZWxlY3RlZERhdGE6IGFueSkge1xyXG4gICAgY29uc3Qgcmlza0NhdGVnb3J5UGF5bG9hZDogYW55ID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkUmlza3MgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzID0gW107XHJcbiAgICBzZWxlY3RlZERhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIHJpc2tDYXRlZ29yeVBheWxvYWQucHVzaCh7XHJcbiAgICAgICAgY2F0ZWdvcnlfaWQ6IFtpdGVtPy5jYXRlZ29yeT8uY2F0ZWdvcnlfaWQgPz8gW11dLFxyXG4gICAgICAgIHJpc2tfaWRzOiBpdGVtPy5yaXNrcz8ubWFwKChyaXNrOiBhbnkpID0+IHJpc2s/LlJpc2tJZCksXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUmlza3M/LnB1c2goLi4uaXRlbT8ucmlza3MpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcmllcy5wdXNoKGl0ZW0/LmNhdGVnb3J5KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJpc2tDYXRlZ29yeVBheWxvYWQ7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVHUkNPYmplY3QoKSB7XHJcbiAgICB0aGlzLmdyY1BheWxvYWQub3duZXJzID0gdGhpcy5nZXRPd25lcnNFeGNlcHREZWZhdWx0KFxyXG4gICAgICB0aGlzLmdyY1BheWxvYWQub3duZXJzXHJcbiAgICApO1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLnVwZGF0ZUdSQ09iamVjdCh0aGlzLmdyY1BheWxvYWQsIHRoaXMuSUQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0TW9yZU9wdGlvbnNPblN1Ym1pdCgpO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkZWRHUkMgPSBkYXRhO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yJywgZXJyb3IsIGVycm9yLnN0YXR1cyk7XHJcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA5KSB7XHJcbiAgICAgICAgICB0aGlzLmlzRHVwbGljYXRlTmFtZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNldE1vcmVPcHRpb25zT25TdWJtaXQoKTtcclxuICAgICAgICAgIHRoaXMuZ3JjTmFtZVZhbGlkYXRpb25FcnJvciA9IFZBTElEQVRJT05fTUVTU0FHRS5ncmNfZXhpc3RzO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB1cGRhdGVPdGhlckdSQ09iamVjdHNQYXlsb2FkKCkge1xyXG4gICAgdGhpcy5ncmNQYXlsb2FkLmxpbmtlZF9HUkNfaWRzID1cclxuICAgICAgdGhpcy5saXN0T2JqZWN0Lk9USEVSX0dSQ19PQkpFQ1RTLnNlbGVjdGVkRGF0YS5tYXAoXHJcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS5faWRcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVNlbGVjdGVkUmlzayhjYXRlZ29yeUlkOiBudW1iZXIsIHJpc2s6IGFueSkge1xyXG4gICAgY29uc3QgY2F0ZWdvcnlJbmRleCA9IHRoaXMuZmluZENoZWNrZWRDYXRlZ29yeUluZGV4KGNhdGVnb3J5SWQpO1xyXG4gICAgaWYgKGNhdGVnb3J5SW5kZXggIT09IC0xKSB7XHJcbiAgICAgIC8vIENhdGVnb3J5IGV4aXN0cywgdXBkYXRlIHJpc2sgdmFsdWVcclxuICAgICAgY29uc3Qgcmlza0luZGV4ID0gdGhpcy5saXN0T2JqZWN0Py5SSVNLX0NBVEVHT1JZPy5zZWxlY3RlZERhdGFbXHJcbiAgICAgICAgY2F0ZWdvcnlJbmRleFxyXG4gICAgICBdPy5yaXNrcz8uZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0/Ll9pZCA9PT0gcmlzaz8uX2lkKTtcclxuICAgICAgaWYgKHJpc2tJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLmxpc3RPYmplY3Q/LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YVtcclxuICAgICAgICAgIGNhdGVnb3J5SW5kZXhcclxuICAgICAgICBdPy5yaXNrcy5zcGxpY2Uocmlza0luZGV4LCAxKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMubGlzdE9iamVjdD8uUklTS19DQVRFR09SWT8uc2VsZWN0ZWREYXRhW2NhdGVnb3J5SW5kZXhdPy5yaXNrc1xyXG4gICAgICAgICAgPy5sZW5ndGggPT09IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgLy8gUmVtb3ZlIGNhdGVnb3J5IGlmIHNlbGVjdGVkTGlzdERhdGEgaXMgZW1wdHlcclxuICAgICAgICB0aGlzLmxpc3RPYmplY3Q/LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YS5zcGxpY2UoY2F0ZWdvcnlJbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZ3JjUGF5bG9hZC5yaXNrX2NhdGVnb3J5X2lkcyA9IHRoaXMuZ2V0Umlza0NhdGVnb3J5UGF5bG9hZChcclxuICAgICAgdGhpcy5saXN0T2JqZWN0Py5SSVNLX0NBVEVHT1JZPy5zZWxlY3RlZERhdGFcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBmaW5kQ2hlY2tlZENhdGVnb3J5SW5kZXgoY2F0ZWdvcnlJZDogbnVtYmVyIHwgbnVtYmVyW10pIHtcclxuICAgIGxldCBjYXRlZ29yeUluZGV4ID0gLTE7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjYXRlZ29yeUlkKSAmJiBjYXRlZ29yeUlkPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgLy8gSGFuZGxlIGVtcHR5IGNhdGVnb3J5SWQgYXJyYXkgY2FzZVxyXG4gICAgICBjb25zdCB1bmNhdGVnb3JpemVkSW5kZXggPVxyXG4gICAgICAgIHRoaXMubGlzdE9iamVjdD8uUklTS19DQVRFR09SWT8uc2VsZWN0ZWREYXRhLmZpbmRJbmRleChcclxuICAgICAgICAgIChjYXQ6IGFueSkgPT4gY2F0Py5jYXRlZ29yeT8uX2lkID09PSAndW5jYXRlZ29yaXplZCdcclxuICAgICAgICApO1xyXG4gICAgICBpZiAodW5jYXRlZ29yaXplZEluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIHJldHVybiB1bmNhdGVnb3JpemVkSW5kZXg7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNhdGVnb3J5SW5kZXggPSB0aGlzLmxpc3RPYmplY3Q/LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YS5maW5kSW5kZXgoXHJcbiAgICAgICAgKGNhdDogYW55KSA9PiBjYXQ/LmNhdGVnb3J5Py5jYXRlZ29yeV9pZCA9PT0gY2F0ZWdvcnlJZFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNhdGVnb3J5SW5kZXg7XHJcbiAgfVxyXG5cclxuICBzZXRMaW5rUmlza1RhYih0YWJEZXRhaWxzOiBhbnkpIHtcclxuICAgIHRoaXMub3RoZXJHUkNDYXJkID0gdGFiRGV0YWlscy5tYXAoKHRhYjogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgdGl0bGU6IHRhYj8ubGFiZWwsXHJcbiAgICAgICAgY291bnQ6IDAsXHJcbiAgICAgICAgc2VsZWN0ZWRDb3VudDogMCxcclxuICAgICAgICBrZXk6IHRhYj8ubGFiZWw/LnRvTG93ZXJDYXNlKCksXHJcbiAgICAgICAgdHlwZTogaW5kZXgsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ2V0T3RoZXJHUkNUYWJDb3VudCh7IHJjX2lkczogJycgfSk7XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZUxpbmtSaXNrKHNlbGVjdGVkRGF0YTogYW55KSB7XHJcbiAgICBsZXQgdXBkYXRlZERhdGEgPSBzZWxlY3RlZERhdGE/Lm1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChkYXRhPy5jYXRlZ29yeV9pZCAmJiBPYmplY3Q/LmtleXMoZGF0YT8uY2F0ZWdvcnlfaWQpPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4uZGF0YSxcclxuICAgICAgICAgIGNhdGVnb3J5OiBVTkNBVEVHT1JJWkVEX0xJTktfQ0FURUdPUlksXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmRhdGEsXHJcbiAgICAgICAgY2F0ZWdvcnk6IHtcclxuICAgICAgICAgIGNhdGVnb3J5X2lkOiBkYXRhPy5jYXRlZ29yeV9pZFswXSxcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICBpZiAodXBkYXRlZERhdGEubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZ3JjRm9ybS5saW5rUmlzayA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5MSU5LX1JJU0tfQ0FURUdPUklFU19SSVNLUyA9IHRydWU7XHJcbiAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5saXN0T2JqZWN0LlJJU0tfQ0FURUdPUlkuc2VsZWN0ZWREYXRhID0gdXBkYXRlZERhdGE7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRSaXNrQ2F0ZWdvcnlQYXlsb2FkKHVwZGF0ZWREYXRhKTtcclxuICB9XHJcblxyXG4gIGdldE93bmVyc0V4Y2VwdERlZmF1bHQodXNlcnM6IGFueSkge1xyXG4gICAgY29uc3QgdXNlcnNJZCA9IHVzZXJzLmZpbHRlcihcclxuICAgICAgKHVzZXI6IGFueSkgPT4gIXRoaXMuZGlzYWJsZWRJZHMuaW5jbHVkZXModXNlcilcclxuICAgICk7XHJcbiAgICByZXR1cm4gdXNlcnNJZCB8fCBbXTtcclxuICB9XHJcblxyXG4gIHNldE1vcmVPcHRpb25zT25TdWJtaXQoKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJlc2V0T3RoZXJHUkNDYXJkKCkge1xyXG4gICAgdGhpcy5vdGhlckdSQ0NhcmQuZm9yRWFjaCgodGFiOiBhbnkpID0+IHtcclxuICAgICAgdGFiLmNvdW50ID0gMDtcclxuICAgICAgdGFiLnNlbGVjdGVkQ291bnQgPSAwO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd1NtaWxleVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1ncmNcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJvcGVuZWRQb3B1cCAmJiBkaWFsb2dGaWVsZHM/LmluY2x1ZGVzKG9wZW5lZFBvcHVwKVwiXHJcbiAgICAgICpuZ0lmPVwiIWlzTG9hZGluZ1wiXHJcbiAgICA+XHJcbiAgICAgIDxsaWItdGV4dC1maWVsZC1pY29uXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm9wZW5lZFBvcHVwICYmIGRpYWxvZ0ZpZWxkcz8uaW5jbHVkZXMob3BlbmVkUG9wdXApXCJcclxuICAgICAgICBbY2RuTGlua109XCJDRE5fTElOSy5ncmNUeXBlXCJcclxuICAgICAgICBbaXNDaGVja2VkXT1cInRydWVcIlxyXG4gICAgICAgIGZpZWxkLWljb25zXHJcbiAgICAgID5cclxuICAgICAgPC9saWItdGV4dC1maWVsZC1pY29uPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxyXG4gICAgICAgICAgICBHUkMgT0JKRUNUIFRZUEU8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCI+XHJcbiAgICAgICAgICAgIDx0YWItc2VsZWN0b3JcclxuICAgICAgICAgICAgICBbc2VsZWN0ZWRJdGVtXT1cImdyY1BheWxvYWQudHlwZVwiXHJcbiAgICAgICAgICAgICAgW2Rpc3BsYXlBcnJheV09XCJPQkpFQ1RfVFlQRVwiXHJcbiAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImNoYW5nZUF0dHJpYnV0ZXNUeXBlKCRldmVudClcIlxyXG4gICAgICAgICAgICA+PC90YWItc2VsZWN0b3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gT2JqZWN0IG5hbWUgZmllbGQgLS0+XHJcbiAgICA8bGliLXRleHQtZmllbGRcclxuICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgIG9wZW5lZFBvcHVwICYmXHJcbiAgICAgICAgb3BlbmVkUG9wdXAgIT09IElOUFVUX1RZUEUubmFtZSAmJlxyXG4gICAgICAgIGRpYWxvZ0ZpZWxkcz8uaW5jbHVkZXMob3BlbmVkUG9wdXApXHJcbiAgICAgIFwiXHJcbiAgICAgIFtpc0VkaXRNb2RlXT1cImdyY1BheWxvYWQubmFtZSAmJiBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5uYW1lXCJcclxuICAgICAgW3RpdGxlVGV4dF09XCJBTExfVEVYVD8uZ3JjT2JqZWN0TmFtZVwiXHJcbiAgICAgIFtwbGFjZWhvbGRlclRleHRdPVwiQUxMX1RFWFQ/LmdyY09iamVjdFBsYWNlaG9sZGVyXCJcclxuICAgICAgWyh0ZXh0VmFsdWUpXT1cImdyY1BheWxvYWQubmFtZVwiXHJcbiAgICAgICh0ZXh0VmFsdWVDaGFuZ2UpPVwib25UZXh0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAoY2xpY2tPdXRzaWRlKT1cIm9uQ2xpY2tPdXRzaWRlKClcIlxyXG4gICAgICAob25DbGljayk9XCJvblBvcHVwT3BlbihJTlBVVF9UWVBFLm5hbWUpXCJcclxuICAgID5cclxuICAgICAgPGxpYi10ZXh0LWZpZWxkLWljb25cclxuICAgICAgICBbY2RuTGlua109XCJDRE5fTElOSy5ncmNPYmplY3ROYW1lXCJcclxuICAgICAgICBbaXNDaGVja2VkXT1cImdyY1BheWxvYWQubmFtZVwiXHJcbiAgICAgICAgZmllbGQtaWNvbnNcclxuICAgICAgPlxyXG4gICAgICA8L2xpYi10ZXh0LWZpZWxkLWljb24+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIiBpcy1yZXF1aXJlZD4qPC9zcGFuPlxyXG4gICAgICA8bGliLWVkaXQtbW9kZVxyXG4gICAgICAgICpuZ0lmPVwiZ3JjUGF5bG9hZC5uYW1lICYmIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFLm5hbWVcIlxyXG4gICAgICAgIFtzZWxlY3RlZERhdGFdPVwiW2dyY1BheWxvYWRdXCJcclxuICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxyXG4gICAgICAgIChpc09uRWRpdCk9XCJvbkVkaXQoSU5QVVRfVFlQRS5uYW1lKVwiXHJcbiAgICAgICAgZWRpdC1tb2RlXHJcbiAgICAgID48L2xpYi1lZGl0LW1vZGU+XHJcbiAgICAgIDxwXHJcbiAgICAgICAgKm5nSWY9XCJncmNWYWxpZGF0aW9uQ2hlY2sgfHwgaXNEdXBsaWNhdGVOYW1lXCJcclxuICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxyXG4gICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgZXJyb3ItbWVzc2FnZVxyXG4gICAgICA+XHJcbiAgICAgICAge3sgZ3JjTmFtZVZhbGlkYXRpb25FcnJvciB9fVxyXG4gICAgICA8L3A+XHJcbiAgICAgIDx2Y29tcGx5LWVkaXRvclxyXG4gICAgICAgIFtlZGl0b3JDb25maWddPVwiRURJVE9SX0NPTkZJR1wiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJncmNQYXlsb2FkLmRlc2NyaXB0aW9uXCJcclxuICAgICAgICByaWNoLXRleHQtZWRpdG9yXHJcbiAgICAgID48L3Zjb21wbHktZWRpdG9yPlxyXG4gICAgPC9saWItdGV4dC1maWVsZD5cclxuXHJcbiAgICA8IS0tIFNwZWNpZnkgT3duZXJzIC0tPlxyXG4gICAgPGxpYi10ZXh0LWZpZWxkXHJcbiAgICAgIFtkaXNhYmxlZF09XCJcclxuICAgICAgICBvcGVuZWRQb3B1cCAmJlxyXG4gICAgICAgIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFLm93bmVyICYmXHJcbiAgICAgICAgZGlhbG9nRmllbGRzPy5pbmNsdWRlcyhvcGVuZWRQb3B1cClcclxuICAgICAgXCJcclxuICAgICAgW2FjdGl2ZV09XCJvcGVuZWRQb3B1cCAmJiBvcGVuZWRQb3B1cCA9PSBJTlBVVF9UWVBFLm93bmVyXCJcclxuICAgICAgW2lzRWRpdE1vZGVdPVwiXHJcbiAgICAgICAgbGlzdE9iamVjdC5PV05FUj8uc2VsZWN0ZWREYXRhPy5sZW5ndGggJiZcclxuICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5vd25lclxyXG4gICAgICBcIlxyXG4gICAgICBbdGl0bGVUZXh0XT1cIkFMTF9URVhUPy5ncmNPd25lcnNUaXRsZVwiXHJcbiAgICAgIFtwbGFjZWhvbGRlclRleHRdPVwiQUxMX1RFWFQ/LmdyY093bmVyc1BsYWNlaG9sZGVyXCJcclxuICAgICAgW2lzUmVhZE9ubHldPVwidHJ1ZVwiXHJcbiAgICAgIChvbkNsaWNrKT1cIm9uUG9wdXBPcGVuKElOUFVUX1RZUEUub3duZXIpXCJcclxuICAgID5cclxuICAgICAgPGxpYi10ZXh0LWZpZWxkLWljb25cclxuICAgICAgICBbY2RuTGlua109XCJDRE5fTElOSy5ncmNPd25lcnNcIlxyXG4gICAgICAgIFtpc0NoZWNrZWRdPVwibGlzdE9iamVjdC5PV05FUj8uc2VsZWN0ZWREYXRhPy5sZW5ndGggPiAwXCJcclxuICAgICAgICBmaWVsZC1pY29uc1xyXG4gICAgICA+XHJcbiAgICAgIDwvbGliLXRleHQtZmllbGQtaWNvbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiIGlzLXJlcXVpcmVkPio8L3NwYW4+XHJcbiAgICAgIDxsaWItZWRpdC1tb2RlXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGxpc3RPYmplY3QuT1dORVI/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoICYmXHJcbiAgICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5vd25lclxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW25vblJlbW92YWJsZUlkc109XCJkaXNhYmxlZElkc1wiXHJcbiAgICAgICAgW2NvdW50Q29sb3JdPVwiJ2dyZWVuQmcnXCJcclxuICAgICAgICBbc2VsZWN0ZWREYXRhXT1cImxpc3RPYmplY3QuT1dORVI/LnNlbGVjdGVkRGF0YVwiXHJcbiAgICAgICAgW3R5cGVdPVwiJ2xpc3QnXCJcclxuICAgICAgICAoaXNPbkVkaXQpPVwib25FZGl0KElOUFVUX1RZUEUub3duZXIpXCJcclxuICAgICAgICAob25SZW1vdmVEYXRhKT1cIm9uUmVtb3ZlRGF0YSgkZXZlbnQsIElOUFVUX1RZUEUub3duZXIpXCJcclxuICAgICAgICBlZGl0LW1vZGVcclxuICAgICAgPjwvbGliLWVkaXQtbW9kZT5cclxuICAgIDwvbGliLXRleHQtZmllbGQ+XHJcblxyXG4gICAgPCEtLSBMaW5rIFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgKFJDKSAtLT5cclxuICAgIDxsaWItdGV4dC1maWVsZFxyXG4gICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgb3BlbmVkUG9wdXAgJiZcclxuICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5SQyAmJlxyXG4gICAgICAgIGRpYWxvZ0ZpZWxkcz8uaW5jbHVkZXMob3BlbmVkUG9wdXApXHJcbiAgICAgIFwiXHJcbiAgICAgIFthY3RpdmVdPVwib3BlbmVkUG9wdXAgJiYgb3BlbmVkUG9wdXAgPT0gSU5QVVRfVFlQRS5SQ1wiXHJcbiAgICAgIFtpc0VkaXRNb2RlXT1cIlxyXG4gICAgICAgIGxpc3RPYmplY3QuUkM/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoICYmIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFLlJDXHJcbiAgICAgIFwiXHJcbiAgICAgIFt0aXRsZVRleHRdPVwiQUxMX1RFWFQ/LmdyY1JDVGl0bGVcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJUZXh0XT1cIkFMTF9URVhUPy5ncmNSQ1BsYWNlaG9sZGVyXCJcclxuICAgICAgW2lzUmVhZE9ubHldPVwidHJ1ZVwiXHJcbiAgICAgIChvbkNsaWNrKT1cIm9uUG9wdXBPcGVuKElOUFVUX1RZUEUuUkMpXCJcclxuICAgID5cclxuICAgICAgPGxpYi10ZXh0LWZpZWxkLWljb25cclxuICAgICAgICBbY2RuTGlua109XCJDRE5fTElOSy5ncmNSQ1wiXHJcbiAgICAgICAgW2lzQ2hlY2tlZF09XCJsaXN0T2JqZWN0LlJDPy5zZWxlY3RlZERhdGE/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgIGZpZWxkLWljb25zXHJcbiAgICAgID5cclxuICAgICAgPC9saWItdGV4dC1maWVsZC1pY29uPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCIgaXMtcmVxdWlyZWQ+Kjwvc3Bhbj5cclxuICAgICAgPGxpYi1lZGl0LW1vZGVcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgbGlzdE9iamVjdC5SQz8uc2VsZWN0ZWREYXRhPy5sZW5ndGggJiYgb3BlbmVkUG9wdXAgIT09IElOUFVUX1RZUEUuUkNcclxuICAgICAgICBcIlxyXG4gICAgICAgIChvblJlbW92ZURhdGEpPVwib25SZW1vdmVEYXRhKCRldmVudCwgSU5QVVRfVFlQRS5SQylcIlxyXG4gICAgICAgIFtzZWxlY3RlZERhdGFdPVwibGlzdE9iamVjdC5SQz8uc2VsZWN0ZWREYXRhXCJcclxuICAgICAgICBbdHlwZV09XCInbGlzdCdcIlxyXG4gICAgICAgIChpc09uRWRpdCk9XCJvbkVkaXQoSU5QVVRfVFlQRS5SQylcIlxyXG4gICAgICAgIGVkaXQtbW9kZVxyXG4gICAgICA+PC9saWItZWRpdC1tb2RlPlxyXG4gICAgICA8cFxyXG4gICAgICAgICpuZ0lmPVwiaXNGb3JtU3VibWl0dGVkICYmICFsaXN0T2JqZWN0LlJDPy5zZWxlY3RlZERhdGE/Lmxlbmd0aFwiXHJcbiAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcclxuICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxyXG4gICAgICAgIGVycm9yLW1lc3NhZ2VcclxuICAgICAgPlxyXG4gICAgICAgIHt7IFZBTElEQVRJT05fTUVTU0FHRS5ncmNSQyB9fVxyXG4gICAgICA8L3A+XHJcbiAgICA8L2xpYi10ZXh0LWZpZWxkPlxyXG5cclxuICAgIDwhLS0gTGluayBSaXNrIENhdGVnb3JpZXMgYW5kIFJpc2sgLS0+XHJcbiAgICA8bGliLXRleHQtZmllbGRcclxuICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgIG9wZW5lZFBvcHVwICYmXHJcbiAgICAgICAgb3BlbmVkUG9wdXAgIT09IElOUFVUX1RZUEU/LnJpc2tDYXRlZ29yeSAmJlxyXG4gICAgICAgIGRpYWxvZ0ZpZWxkcz8uaW5jbHVkZXMob3BlbmVkUG9wdXApXHJcbiAgICAgIFwiXHJcbiAgICAgIFthY3RpdmVdPVwib3BlbmVkUG9wdXAgJiYgb3BlbmVkUG9wdXAgPT0gSU5QVVRfVFlQRT8ucmlza0NhdGVnb3J5XCJcclxuICAgICAgKm5nSWY9XCJncmNGb3JtPy5saW5rUmlza1wiXHJcbiAgICAgIFt0aXRsZVRleHRdPVwiQUxMX1RFWFQ/LmdyY1Jpc2tDYXRlZ29yeVRpdGxlXCJcclxuICAgICAgW3BsYWNlaG9sZGVyVGV4dF09XCJBTExfVEVYVD8uZ3JjUmlza0NhdGVnb3J5UGxhY2Vob2xkZXJcIlxyXG4gICAgICBbaXNSZWFkT25seV09XCJ0cnVlXCJcclxuICAgICAgKG9uQ2xpY2spPVwib25Qb3B1cE9wZW4oSU5QVVRfVFlQRS5yaXNrQ2F0ZWdvcnkpXCJcclxuICAgICAgW2lzRWRpdE1vZGVdPVwiXHJcbiAgICAgICAgbGlzdE9iamVjdD8uUklTS19DQVRFR09SWT8uc2VsZWN0ZWREYXRhPy5sZW5ndGggJiZcclxuICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRT8ucmlza0NhdGVnb3J5XHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxsaWItdGV4dC1maWVsZC1pY29uXHJcbiAgICAgICAgW2NkbkxpbmtdPVwiQ0ROX0xJTksubGlua0dSQ1wiXHJcbiAgICAgICAgW2lzQ2hlY2tlZF09XCJsaXN0T2JqZWN0LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgZmllbGQtaWNvbnNcclxuICAgICAgPlxyXG4gICAgICA8L2xpYi10ZXh0LWZpZWxkLWljb24+XHJcblxyXG4gICAgICA8bGliLWVkaXQtbW9kZVxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBsaXN0T2JqZWN0LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoICYmXHJcbiAgICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5SSVNLX0NBVEVHT1JZXHJcbiAgICAgICAgXCJcclxuICAgICAgICAob25SZW1vdmVEYXRhKT1cIm9uUmVtb3ZlRGF0YSgkZXZlbnQsIElOUFVUX1RZUEU/LnJpc2tDYXRlZ29yeSlcIlxyXG4gICAgICAgIFtzZWxlY3RlZERhdGFdPVwic2VsZWN0ZWRSaXNrc1wiXHJcbiAgICAgICAgW3R5cGVdPVwiJ2xpc3QnXCJcclxuICAgICAgICAoaXNPbkVkaXQpPVwib25FZGl0KElOUFVUX1RZUEUucmlza0NhdGVnb3J5LCBkYXRhPy5rZXkpXCJcclxuICAgICAgICBlZGl0LW1vZGVcclxuICAgICAgPlxyXG4gICAgICA8L2xpYi1lZGl0LW1vZGU+XHJcbiAgICA8L2xpYi10ZXh0LWZpZWxkPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIExpbmsgT3RoZXIgR1JDIE9iamVjdHMgLS0+XHJcbiAgPGxpYi10ZXh0LWZpZWxkXHJcbiAgICAqbmdJZj1cImdyY0Zvcm0/Lm90aGVyR3JjT2JqZWN0c1wiXHJcbiAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgIG9wZW5lZFBvcHVwICYmXHJcbiAgICAgIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFPy5vdGhlckdyY09iamVjdHMgJiZcclxuICAgICAgZGlhbG9nRmllbGRzPy5pbmNsdWRlcyhvcGVuZWRQb3B1cClcclxuICAgIFwiXHJcbiAgICBbYWN0aXZlXT1cIm9wZW5lZFBvcHVwICYmIG9wZW5lZFBvcHVwID09IElOUFVUX1RZUEU/Lm90aGVyR3JjT2JqZWN0c1wiXHJcbiAgICBbdGl0bGVUZXh0XT1cIkFMTF9URVhUPy5vdGhlckdSQ09iamVjdHNUaXRsZVwiXHJcbiAgICBbcGxhY2Vob2xkZXJUZXh0XT1cIkFMTF9URVhUPy5vdGhlckdSQ09iamVjdHNQbGFjZWhvbGRlclwiXHJcbiAgICBbaXNSZWFkT25seV09XCJ0cnVlXCJcclxuICAgIChvbkNsaWNrKT1cIm9uUG9wdXBPcGVuKElOUFVUX1RZUEUub3RoZXJHcmNPYmplY3RzKVwiXHJcbiAgICBbaXNFZGl0TW9kZV09XCJcclxuICAgICAgbGlzdE9iamVjdD8uT1RIRVJfR1JDX09CSkVDVFM/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoICYmXHJcbiAgICAgIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFPy5vdGhlckdyY09iamVjdHNcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGxpYi10ZXh0LWZpZWxkLWljb25cclxuICAgICAgW2NkbkxpbmtdPVwiQ0ROX0xJTksubGlua090aGVyc1wiXHJcbiAgICAgIFtpc0NoZWNrZWRdPVwibGlzdE9iamVjdD8uT1RIRVJfR1JDX09CSkVDVFM/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoID4gMFwiXHJcbiAgICAgIGZpZWxkLWljb25zXHJcbiAgICA+XHJcbiAgICA8L2xpYi10ZXh0LWZpZWxkLWljb24+XHJcblxyXG4gICAgPGxpYi1lZGl0LW1vZGVcclxuICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgR1JDX1RZUEVfQVJSQVlcIlxyXG4gICAgICAob25SZW1vdmVEYXRhKT1cIm9uUmVtb3ZlRGF0YSgkZXZlbnQsIElOUFVUX1RZUEU/Lm90aGVyR3JjT2JqZWN0cylcIlxyXG4gICAgICBbc2VsZWN0ZWREYXRhXT1cImdyY0RhdGFXaXRoVHlwZXNbZGF0YV1cIlxyXG4gICAgICBbdHlwZV09XCInbGlzdCdcIlxyXG4gICAgICBbaXNNdWx0aXBsZV09XCJ0cnVlXCJcclxuICAgICAgKGlzT25FZGl0KT1cIm9uRWRpdChJTlBVVF9UWVBFLm90aGVyR3JjT2JqZWN0cywgZGF0YSlcIlxyXG4gICAgICBlZGl0LW1vZGVcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwid29ya2Zsb3dMYXZlbCB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTQgdngtbXItMSB2eC10ZXh0LWNlbnRlclwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBkYXRhIHwgdGl0bGVjYXNlIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9saWItZWRpdC1tb2RlPlxyXG4gIDwvbGliLXRleHQtZmllbGQ+XHJcbiAgPGxpYi1hdHRyaWJ1dGVzXHJcbiAgICBbZGlzYWJsZWRdPVwib3BlbmVkUG9wdXAgJiYgZGlhbG9nRmllbGRzPy5pbmNsdWRlcyhvcGVuZWRQb3B1cClcIlxyXG4gICAgKm5nSWY9XCJzZWxlY3RlZEF0dHJpYnV0ZXM/LmF0dHJpYnV0ZXM/Lmxlbmd0aCAmJiB0aGlzLmdyY0Zvcm0uZ3JjT2JqZWN0VHlwZVwiXHJcbiAgICBbYXR0cmlidXRlc0luZm9dPVwic2VsZWN0ZWRBdHRyaWJ1dGVzXCJcclxuICAgIFtpc0Zvcm1TdWJtaXR0ZWRdPVwiaXNGb3JtU3VibWl0dGVkXCJcclxuICAgIChvbkNsaWNrKT1cImdldEF0dHJpYnV0ZVNlbGVjdGlvbigkZXZlbnQpXCJcclxuICA+PC9saWItYXR0cmlidXRlcz5cclxuICA8bGliLWxpc3QtcG9wdXBcclxuICAgIFtvcGVuZWRQb3B1cF09XCJvcGVuZWRQb3B1cFwiXHJcbiAgICBbbGlzdE9iamVjdF09XCJsaXN0T2JqZWN0XCJcclxuICAgIFt0YWJsZUNhcmRdPVwib3RoZXJHUkNDYXJkXCJcclxuICAgIFtvdGhlckdyY0NhcmRMb2FkZXJdPVwiZ3JjVGFiTG9hZGVyXCJcclxuICAgIFtHUkNTZWxlY3RlZFRhYl09XCJHUkNTZWxlY3RlZFRhYlwiXHJcbiAgICBbbW9kZV09XCJNT0RFXCJcclxuICAgIFtvbkVkaXRHUkNJZF09XCJJRFwiXHJcbiAgICAob25TYXZlU2VsZWN0ZWRMaXN0KT1cIm9uU2F2ZVNlbGVjdGVkTGlzdCgkZXZlbnQpXCJcclxuICAgIChnZXRPdGhlckdSQ09iamVjdHMpPVwiZ2V0T3RoZXJHUkNPYmplY3RzKCRldmVudClcIlxyXG4gID48L2xpYi1saXN0LXBvcHVwPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxyXG4gICpuZ0lmPVwic2hvd1NtaWxleVwiXHJcbiAgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiXHJcbiAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXHJcbiAgKGFjdGlvbik9XCJzbWlsZXlBY3Rpb25zKCRldmVudClcIlxyXG4gIChjbG9zZVNtaWxleSk9XCJjbG9zZVNtaWxleSgkZXZlbnQpXCJcclxuPjwvYXBwLXNtaWxleS1kaWFsb2ctaW5saW5lPlxyXG48YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJpc0xvYWRpbmdcIj48L2FwcC1sb2FkZXItaW5saW5lPlxyXG4iXX0=
|
|
737
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JjLW9iamVjdC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvZ3JjLW9iamVjdC9ncmMtb2JqZWN0LWNvbnRhaW5lci9ncmMtb2JqZWN0LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy9ncmMtb2JqZWN0L2dyYy1vYmplY3QtY29udGFpbmVyL2dyYy1vYmplY3QtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDeEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBV3hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUcvRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLDJCQUEyQixHQUM1QixNQUFNLDJDQUEyQyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQjNFLE1BQU0sT0FBTywyQkFBMkI7SUE2RXRDLFlBQ1UsVUFBc0IsRUFDdEIsVUFBaUMsRUFDakMsV0FBd0IsRUFDeEIsWUFBMEI7UUFIMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUF1QjtRQUNqQyxnQkFBVyxHQUFYLFdB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aUJBQWlCO1FBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNyQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNkLEdBQUcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7d0hBanpCVSwyQkFBMkI7NEdBQTNCLDJCQUEyQixtV0MxQ3hDLCt5U0F1UUE7MkZEN05hLDJCQUEyQjtrQkFkdkMsU0FBUzsrQkFDRSwwQkFBMEIsV0FHM0I7d0JBQ1AsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLDZCQUE2QjtxQkFDOUIsVUFDTyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZJRUxEX1RFWFQgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzL2ZpZWxkLXRleHQuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBMSU5LUyB9IGZyb20gJy4uLy4uL3NoYXJlZC9jb25zdGFudHMvY2RuLWxpbmsuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBWQUxJREFUSU9OX01FU1NBR0UgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzL3ZhbGlkYXRpb24tbWVzc2FnZS5jb25zdGFudCc7XHJcbmltcG9ydCB7XHJcbiAgQWRkR3JjLFxyXG4gIEF0dHJpYnV0ZXMsXHJcbiAgQnV0dG9uLFxyXG4gIEdSQ1R5cGUsXHJcbiAgSW5wdXRUeXBlLFxyXG4gIExpc3RPYmplY3QsXHJcbiAgT3BlbmVkUG9wdXAsXHJcbiAgUkNMaXN0LFxyXG59IGZyb20gJy4uLy4uL3NoYXJlZC9pbnRlcmZhY2VzL2FkZC1ncmMnO1xyXG5pbXBvcnQgeyBHcmNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2dyYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzcG9uc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvcmVzcG9uc2liaWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBHUkNfVFlQRV9BUlJBWSxcclxuICBPVEhFUl9HUkNfQ0FSRCxcclxuICBPVEhFUl9HUkNfVEFCX0lOREVYLFxyXG4gIFNNSUxFWV9CVVRUT05TLFxyXG4gIFVOQ0FURUdPUklaRURfTElOS19DQVRFR09SWSxcclxufSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzL2dyY09iamVjdC5jb25zdGFudCc7XHJcbmltcG9ydCB7IFNVQ0NFU1NfTUVTU0FHRSB9IGZyb20gJy4uLy4uL3NoYXJlZC9jb25zdGFudHMvbWVzc2FnZS5jb250c3RhbnQnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVWlLaXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvdWkta2l0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZ3JjLW9iamVjdC1jb250YWluZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmMtb2JqZWN0LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JjLW9iamVjdC1jb250YWluZXIuY29tcG9uZW50Lmxlc3MnLCAnLi4vLi4vLi4vZm9ybXMubGVzcyddLFxyXG4gIG91dHB1dHM6IFtcclxuICAgICdwb3B1bGF0ZU9wdGlvbicsXHJcbiAgICAncGlja2VyQ2hhbmdlZCcsXHJcbiAgICAnY2xvc2VXb3JrZmxvdycsXHJcbiAgICAnZGlzY29ubmVjdFJlZnJlc2gnLFxyXG4gICAgJ3Jlc2V0Rm9ybScsXHJcbiAgICAnaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zJyxcclxuICBdLFxyXG4gIGlucHV0czogWydncmNUeXBlJywgJ01PREUnLCAnSUQnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdyY09iamVjdENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBNT0RFOiAnQ1JFQVRFJyB8ICdFRElUJyA9ICdDUkVBVEUnO1xyXG4gIElEOiBzdHJpbmcgPSAnJztcclxuICBBTExfVEVYVCA9IEZJRUxEX1RFWFQ7XHJcbiAgQ0ROX0xJTksgPSBMSU5LUztcclxuICBWQUxJREFUSU9OX01FU1NBR0UgPSBWQUxJREFUSU9OX01FU1NBR0U7XHJcbiAgR1JDX1RZUEVfQVJSQVkgPSBHUkNfVFlQRV9BUlJBWTtcclxuICBFRElUT1JfQ09ORklHID0gR3JjU2VydmljZS5FRElUT1JfQ09ORklHO1xyXG4gIG90aGVyR1JDQ2FyZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoT1RIRVJfR1JDX0NBUkQpKTtcclxuICBPQkpFQ1RfVFlQRSE6IEdSQ1R5cGVbXTtcclxuICBMSVNUX1BPUFVQOiBBcnJheTxzdHJpbmc+ID0gWydSQyddO1xyXG4gIHNtaWxleU1lc3NhZ2U6IHN0cmluZyA9IFNVQ0NFU1NfTUVTU0FHRS5BRERfR1JDX09CSkVDVDtcclxuICBJTlBVVF9UWVBFOiBJbnB1dFR5cGUgPSB7XHJcbiAgICBuYW1lOiAnTkFNRScsXHJcbiAgICBvd25lcjogJ09XTkVSJyxcclxuICAgIFJDOiAnUkMnLFxyXG4gICAgcmlza0NhdGVnb3J5OiAnUklTS19DQVRFR09SWScsXHJcbiAgICBvdGhlckdyY09iamVjdHM6ICdPVEhFUl9HUkNfT0JKRUNUUycsXHJcbiAgfTtcclxuICBPUklHSU5BTF9HUkNfQVRUUklCVVRFUzogYW55OyAvLyBEb24ndCBjaGFuZ2UgdGhlIHZhbHVlIG9uY2UgaXQgaXMgYXNzaWduZWRcclxuICBkaWFsb2dGaWVsZHM6IEFycmF5PHN0cmluZz4gPSBbXHJcbiAgICAnUkMnLFxyXG4gICAgJ09XTkVSJyxcclxuICAgICdPVEhFUl9HUkNfT0JKRUNUUycsXHJcbiAgICAnUklTS19DQVRFR09SWScsXHJcbiAgICAnQVRUUklCVVRFUycsXHJcbiAgXTtcclxuICBzY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xyXG4gIGdyY1R5cGU6IDAgfCAxIHwgMiB8IDMgPSAwO1xyXG4gIGRpc2FibGVkSWRzOiBBcnJheTxudW1iZXI+ID0gW107XHJcbiAgb3BlbmVkUG9wdXA6IE9wZW5lZFBvcHVwWyd0eXBlJ10gPSAnJztcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGFkZGl0aW9uYWxPcHRpb246IGFueSA9IHtcclxuICAgIEFUVFJJQlVURVM6IGZhbHNlLFxyXG4gICAgTElOS19QUk9HUkFNOiBmYWxzZSxcclxuICAgIExJTktfUklTS19DQVRFR09SSUVTX1JJU0tTOiBmYWxzZSxcclxuICAgIE9USEVSX0dSQ19PQkpFQ1RTOiBmYWxzZSxcclxuICB9O1xyXG4gIGdyY0Zvcm06IGFueSA9IHtcclxuICAgIGdyY09iamVjdFR5cGU6IGZhbHNlLFxyXG4gICAgbGlua1Byb2dyYW06IGZhbHNlLFxyXG4gICAgbGlua1Jpc2s6IGZhbHNlLFxyXG4gICAgb3RoZXJHcmNPYmplY3RzOiBmYWxzZSxcclxuICB9O1xyXG4gIGdyY1BheWxvYWQhOiBBZGRHcmM7XHJcbiAgbGlzdE9iamVjdCE6IExpc3RPYmplY3Q7XHJcbiAgc2VsZWN0ZWRBdHRyaWJ1dGVzITogR1JDVHlwZTtcclxuICBzaG93U21pbGV5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWN0aW9uQnV0dG9uczogQnV0dG9uW10gPSBTTUlMRVlfQlVUVE9OUztcclxuICBncmNEYXRhV2l0aFR5cGVzOiBhbnkgPSB7XHJcbiAgICBhc3NldHM6IFtdLFxyXG4gICAgcHJvY2Vzc2VzOiBbXSxcclxuICAgIHZlbmRvcnM6IFtdLFxyXG4gICAgaW52ZW50b3J5OiBbXSxcclxuICB9O1xyXG4gIEdSQ1NlbGVjdGVkVGFiOiBudW1iZXIgPSAwO1xyXG4gIG90aGVyR1JDVGFiSW5kZXggPSBPVEhFUl9HUkNfVEFCX0lOREVYO1xyXG4gIGlzRm9ybVN1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdyY05hbWVWYWxpZGF0aW9uRXJyb3I6IHN0cmluZyA9ICcnO1xyXG4gIGlzRHVwbGljYXRlTmFtZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRldGFpbHNMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZENhdGVnb3JpZXM6IGFueVtdID0gW107XHJcbiAgc2VsZWN0ZWRSaXNrczogYW55W10gPSBbXTtcclxuICBhZGRlZEdSQzogYW55O1xyXG4gIG90aGVyR1JDU2VhcmNoOiBzdHJpbmcgPSAnJztcclxuICBncmNUYWJMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcG9wdWxhdGVPcHRpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIHBpY2tlckNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGNsb3NlV29ya2Zsb3c6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGRpc2Nvbm5lY3RSZWZyZXNoOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICByZXNldEZvcm06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9uczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG90aGVyR1JDU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG4gIGhpZGVNb3JlT3B0aW9uOiBhbnkgPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGdyY1NlcnZpY2U6IEdyY1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IFJlc3BvbnNpYmlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRVc2VySW5mbygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgY29uc3Qgcmlza1Blcm1pc3Npb24gPVxyXG4gICAgICAgIHJlcz8ucm9sZUFjdGlvbnNbXHJcbiAgICAgICAgICByZXM/LnJvbGVBY3Rpb25zPy5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGUubW9kdWxlTmFtZSA9PSAncmlzaycpXHJcbiAgICAgICAgXTtcclxuICAgICAgaWYgKCFyaXNrUGVybWlzc2lvbj8uaXNBY3RpdmUpIHtcclxuICAgICAgICB0aGlzLmhpZGVNb3JlT3B0aW9uLnB1c2goJ0xJTktfUklTS19DQVRFR09SSUVTX1JJU0tTJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5oaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMuZW1pdCh0aGlzLmhpZGVNb3JlT3B0aW9uKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzZXRHUkNGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JjUGF5bG9hZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ncmNTZXJ2aWNlLkdSQ19QQVlMT0FEKSk7XHJcbiAgICB0aGlzLmdyY1BheWxvYWQudHlwZSA9IHRoaXMuZ3JjVHlwZTtcclxuICAgIHRoaXMubGlzdE9iamVjdCA9IHRoaXMuZ3JjU2VydmljZS5MSVNUX09CSkVDVDtcclxuICAgIHRoaXMuX2luaXRpYXRlQVBJKCk7XHJcbiAgfVxyXG5cclxuICAvL1RPRE86IGltcGxlbWVudCB0aGlzXHJcbiAgcG9wdWxhdGVPcHRpb25hbEZpZWxkcygpIHtcclxuICAgIGNvbnN0IGFjdGl2YXRlZE9wdGlvbnMgPSBbXTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuYWRkaXRpb25hbE9wdGlvbikpIHtcclxuICAgICAgaWYgKHRoaXMuYWRkaXRpb25hbE9wdGlvbltrZXldID09PSB0cnVlKSB7XHJcbiAgICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKGtleSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoYWN0aXZhdGVkT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvL1RPRE86IGltcGxlbWVudCB0aGlzXHJcbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xyXG4gICAgc3dpdGNoIChldmVudD8uY29kZSkge1xyXG4gICAgICBjYXNlICdBVFRSSUJVVEVTJzpcclxuICAgICAgICB0aGlzLmdyY0Zvcm0uZ3JjT2JqZWN0VHlwZSA9IGV2ZW50Py5jaGVja2VkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdMSU5LX1BST0dSQU1fUkVTUE9OU0lCSUxJVElFUyc6XHJcbiAgICAgICAgdGhpcy5ncmNGb3JtLmxpbmtQcm9ncmFtID0gZXZlbnQ/LmNoZWNrZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0xJTktfUklTS19DQVRFR09SSUVTX1JJU0tTJzpcclxuICAgICAgICB0aGlzLmdyY0Zvcm0ubGlua1Jpc2sgPSBldmVudD8uY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnT1RIRVJfR1JDX09CSkVDVFMnOlxyXG4gICAgICAgIHRoaXMuZ3JjRm9ybS5vdGhlckdyY09iamVjdHMgPSBldmVudD8uY2hlY2tlZDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9UT0RPOiBpbXBsZW1lbnQgdGhpc1xyXG4gIG9uVGV4dENoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmdyY1BheWxvYWQubmFtZSA9IGV2ZW50LnRyaW0oKTtcclxuICAgIHRoaXMub3BlbmVkUG9wdXAgPSAnJztcclxuICAgIHRoaXMuZ3JjTmFtZVZhbGlkYXRpb25FcnJvciA9ICcnO1xyXG4gICAgdGhpcy5pc0R1cGxpY2F0ZU5hbWUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vVE9ETzogaW1wbGVtZW50IHRoaXNcclxuICBvblBvcHVwT3Blbih0eXBlOiBPcGVuZWRQb3B1cFsndHlwZSddKSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnT1dORVInOlxyXG4gICAgICBjYXNlICdSQyc6XHJcbiAgICAgICAgdGhpcy5vcGVuZWRQb3B1cCA9IHR5cGU7XHJcbiAgICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ09USEVSX0dSQ19PQkpFQ1RTJzpcclxuICAgICAgICB0aGlzLm9wZW5lZFBvcHVwID0gdHlwZTtcclxuICAgICAgICB0aGlzLmdldE90aGVyR1JDT2JqZWN0cyh7IHJjX2lkczogJycgfSk7XHJcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ1RhYkNvdW50KHsgcmNfaWRzOiAnJyB9KTtcclxuICAgICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnUklTS19DQVRFR09SWSc6XHJcbiAgICAgICAgdGhpcy5vcGVuZWRQb3B1cCA9IHR5cGU7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5wcmV2aWV3UGFuZWwubmV4dCh0cnVlKTtcclxuICAgICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2F2ZVNlbGVjdGVkTGlzdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmxpc3RPYmplY3QgPSBldmVudDtcclxuICAgIGlmICh0aGlzLm9wZW5lZFBvcHVwID09PSAnT1RIRVJfR1JDX09CSkVDVFMnKSB7XHJcbiAgICAgIHRoaXMuc2V0T3RoZXJHUkNUeXBlc0Zvcm1hdGUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0TGlzdFBheWxvYWQodGhpcy5vcGVuZWRQb3B1cCk7XHJcbiAgICB0aGlzLm9wZW5lZFBvcHVwID0gJyc7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnByZXZpZXdQYW5lbC5uZXh0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGdldEF0dHJpYnV0ZVNlbGVjdGlvbihldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgdGhpcy5vcGVuZWRQb3B1cCA9ICcnO1xyXG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub3BlbmVkUG9wdXAgPSAnJztcclxuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLnByZXZpZXdQYW5lbC5uZXh0KGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldExpc3RQYXlsb2FkKHR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKHR5cGUgPT09ICdPV05FUicpIHtcclxuICAgICAgdGhpcy5ncmNQYXlsb2FkLm93bmVycyA9IHRoaXMubGlzdE9iamVjdC5PV05FUi5zZWxlY3RlZERhdGEubWFwKFxyXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0ubWVtYmVyX2lkXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGUgPT09ICdSQycpIHtcclxuICAgICAgdGhpcy5ncmNQYXlsb2FkLnJjX2lkcyA9IHRoaXMubGlzdE9iamVjdC5SQy5zZWxlY3RlZERhdGEubWFwKFxyXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/Ll9pZFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGUgPT09ICdPVEhFUl9HUkNfT0JKRUNUUycpIHtcclxuICAgICAgdGhpcy5ncmNQYXlsb2FkLmxpbmtlZF9HUkNfaWRzID1cclxuICAgICAgICB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuc2VsZWN0ZWREYXRhLm1hcChcclxuICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0uX2lkXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlID09PSAnUklTS19DQVRFR09SWScpIHtcclxuICAgICAgdGhpcy5ncmNQYXlsb2FkLnJpc2tfY2F0ZWdvcnlfaWRzID0gdGhpcy5nZXRSaXNrQ2F0ZWdvcnlQYXlsb2FkKFxyXG4gICAgICAgIHRoaXMubGlzdE9iamVjdD8uUklTS19DQVRFR09SWT8uc2VsZWN0ZWREYXRhXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrT3V0c2lkZSgpIHtcclxuICAgIC8vdGhpcy5vcGVuZWRQb3B1cCA9ICcnO1xyXG4gIH1cclxuXHJcbiAgb25FZGl0KGV2ZW50OiBhbnksIHN1YlR5cGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5vcGVuZWRQb3B1cCA9IGV2ZW50O1xyXG4gICAgaWYgKGV2ZW50ID09PSAnT1RIRVJfR1JDX09CSkVDVFMnKSB7XHJcbiAgICAgIHRoaXMuR1JDU2VsZWN0ZWRUYWIgPSB0aGlzLm90aGVyR1JDVGFiSW5kZXhbc3ViVHlwZV0gPz8gMDtcclxuICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyB0eXBlOiB0aGlzLkdSQ1NlbGVjdGVkVGFiLCByY19pZHM6ICcnIH0pO1xyXG4gICAgICB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoeyByY19pZHM6ICcnIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuTElTVF9QT1BVUC5pbmNsdWRlcyhldmVudCkpIHtcclxuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XHJcbiAgICAgIC8vIHRoaXMuYXV0aFNlcnZpY2UucHJldmlld1BhbmVsLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQgPT09ICdSSVNLX0NBVEVHT1JZJykge1xyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLnByZXZpZXdQYW5lbC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SZW1vdmVEYXRhKFxyXG4gICAgZXZlbnQ6IGFueSxcclxuICAgIHR5cGU6ICdSQycgfCAnT1dORVInIHwgJ09USEVSX0dSQ19PQkpFQ1RTJyB8ICdSSVNLX0NBVEVHT1JZJ1xyXG4gICkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ1JDJzpcclxuICAgICAgY2FzZSAnT1dORVInOlxyXG4gICAgICAgIHRoaXMubGlzdE9iamVjdFt0eXBlXS5zZWxlY3RlZERhdGEuc3BsaWNlKGV2ZW50LmluZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnT1RIRVJfR1JDX09CSkVDVFMnOlxyXG4gICAgICAgIHRoaXMucmVtb3ZlT3RoZXJHUkNPYmplY3RzKGV2ZW50Py5kYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnUklTS19DQVRFR09SWSc6XHJcbiAgICAgICAgdGhpcy5kZWxldGVTZWxlY3RlZFJpc2soZXZlbnQuZGF0YT8uQ2F0ZWdvcnlJZHNbMF0sIGV2ZW50Py5kYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuc2V0TGlzdFBheWxvYWQodHlwZSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VBdHRyaWJ1dGVzVHlwZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmdyY1R5cGUgPSBldmVudDtcclxuICAgIHRoaXMuZ3JjUGF5bG9hZC50eXBlID0gZXZlbnQ7XHJcbiAgICB0aGlzLnNldERlZmF1bHRHUkNPYmplY3RUeXBlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0aWF0ZUFQSSgpIHtcclxuICAgIGlmICh0aGlzLk1PREUgPT09ICdFRElUJykge1xyXG4gICAgICB0aGlzLmdldEdSQ09iamVjdERldGFpbHModGhpcy5JRCk7XHJcbiAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9IFNVQ0NFU1NfTUVTU0FHRS5VUERBVEVfR1JDX09CSkVDVDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGV0YWlsc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLl9nZXRHUkNPYmplY3RUeXBlKCk7XHJcbiAgICAgIHRoaXMuX2dldE93bmVyTGlzdCgpO1xyXG4gICAgICB0aGlzLl9nZXRSQ0xpc3QoKTtcclxuICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyByY19pZHM6ICcnIH0pO1xyXG4gICAgICAvLyB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldE93bmVyTGlzdCgpIHtcclxuICAgIHRoaXMubGlzdE9iamVjdC5PV05FUi5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmdldEdSQ093bmVyTGlzdCgpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICh1c2VyTGlzdDogYW55KSA9PiB0aGlzLm1hcFVzZXJMaXN0KHVzZXJMaXN0KSxcclxuICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7fSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGZ1bmN0aW9uIGBtYXBVc2VyTGlzdGAgbWFwcyB0aGUgdXNlciBsaXN0IGRhdGEgYW5kIHBlcmZvcm1zIHNvbWUgYWRkaXRpb25hbCBvcGVyYXRpb25zIG9uIGVhY2hcclxuICAgKiB1c2VyIG9iamVjdC5cclxuICAgKiBAcGFyYW0ge2FueX0gdXNlckxpc3QgLSBUaGUgYHVzZXJMaXN0YCBwYXJhbWV0ZXIgaXMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBgZGF0YWAgcHJvcGVydHkuIFRoZVxyXG4gICAqIGBkYXRhYCBwcm9wZXJ0eSBpcyBhbiBhcnJheSBvZiB1c2VyIG9iamVjdHMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtYXBVc2VyTGlzdCh1c2VyTGlzdDogYW55KSB7XHJcbiAgICB0aGlzLmxpc3RPYmplY3RbJ09XTkVSJ11bJ2RhdGEnXSA9IHt9O1xyXG4gICAgdGhpcy5saXN0T2JqZWN0WydPV05FUiddLnNlbGVjdGVkRGF0YSA9IFtdO1xyXG4gICAgdGhpcy5kaXNhYmxlZElkcyA9IFtdO1xyXG4gICAgLy8gTWFwIHdpbGwgZ2V0IHJlbW92ZSBvbmNlIEFQSSBjaGFuZ2VcclxuICAgIHRoaXMubGlzdE9iamVjdFsnT1dORVInXVsnZGF0YSddWydhc3NpZ25lZXNMaXN0J10gPSB1c2VyTGlzdD8uZGF0YS5tYXAoXHJcbiAgICAgICh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgICB1c2VyLml0ZW1fbmFtZSA9IHVzZXIubWVtYmVyX25hbWU7XHJcbiAgICAgICAgdXNlci5lbXBsb3llZV9uYW1lID0gdXNlci5tZW1iZXJfbmFtZTtcclxuICAgICAgICB1c2VyLm15X21lbWJlcl9pZCA9IHVzZXIubWVtYmVyX2lkO1xyXG4gICAgICAgIHVzZXIuaXRlbV9pZCA9IHVzZXIubWVtYmVyX2lkO1xyXG4gICAgICAgIGlmIChbJ0FETUlOJywgJ0tFWV9BRE1JTiddLmluY2x1ZGVzKHVzZXIudXNlcl9yb2xlKSkge1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlZElkcy5wdXNoKHVzZXIubWVtYmVyX2lkKTtcclxuICAgICAgICAgIHRoaXMubGlzdE9iamVjdFsnT1dORVInXS5zZWxlY3RlZERhdGEucHVzaCh1c2VyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVzZXI7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5NT0RFID09PSAnRURJVCcpIHtcclxuICAgICAgdGhpcy5saXN0T2JqZWN0Lk9XTkVSLnNlbGVjdGVkRGF0YSA9IHRoaXMubGlzdE9iamVjdFsnT1dORVInXVsnZGF0YSddW1xyXG4gICAgICAgICdhc3NpZ25lZXNMaXN0J1xyXG4gICAgICBdLmZpbHRlcigoaXRlbTogYW55KSA9PiB0aGlzLmdyY1BheWxvYWQub3duZXJzLmluY2x1ZGVzKGl0ZW0/Lm1lbWJlcl9pZCkpO1xyXG4gICAgICB0aGlzLmxpc3RPYmplY3RbJ09XTkVSJ10uZGlzYWJsZWRJZHMgPSBbLi4ubmV3IFNldCh0aGlzLmRpc2FibGVkSWRzKV07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRlZmF1bHRTZWxlY3RlZFVzZXIoKTtcclxuICAgIH1cclxuICAgIHRoaXMubGlzdE9iamVjdC5PV05FUi5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuY2hlY2tJc0RhdGFMb2FkZWQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBmdW5jdGlvbiBgZGVmYXVsdFNlbGVjdGVkVXNlcigpYCBzZXRzIHRoZSBkZWZhdWx0IHNlbGVjdGVkIHVzZXIgYmFzZWQgb24gdGhlIGN1cnJlbnQgdXNlcidzIHJvbGVcclxuICAgKiBhbmQgYXNzaWducyBpdCB0byB0aGUgYE9XTkVSYCBsaXN0IG9iamVjdC5cclxuICAgKi9cclxuICBwcml2YXRlIGRlZmF1bHRTZWxlY3RlZFVzZXIoKSB7XHJcbiAgICBpZiAoIXRoaXMuYXV0aFNlcnZpY2UuaXNBZG1pbigpICYmICF0aGlzLmF1dGhTZXJ2aWNlLmlzS2V5QWRtaW4oKSkge1xyXG4gICAgICBjb25zdCBVU0VSID0gdGhpcy5saXN0T2JqZWN0WydPV05FUiddWydkYXRhJ11bJ2Fzc2lnbmVlc0xpc3QnXS5maW5kKFxyXG4gICAgICAgICh1c2VyOiBhbnkpID0+IHVzZXIubWVtYmVyX2lkID09PSB0aGlzLmF1dGhTZXJ2aWNlLmdldE1lbWJlcklkKClcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5saXN0T2JqZWN0WydPV05FUiddLnNlbGVjdGVkRGF0YS5wdXNoKFVTRVIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5saXN0T2JqZWN0WydPV05FUiddWydkaXNhYmxlZElkcyddID0gWy4uLnRoaXMuZGlzYWJsZWRJZHNdO1xyXG4gICAgdGhpcy5ncmNQYXlsb2FkLm93bmVycyA9IHRoaXMubGlzdE9iamVjdFsnT1dORVInXS5zZWxlY3RlZERhdGEubWFwKFxyXG4gICAgICAodXNlcjogYW55KSA9PiB1c2VyLm1lbWJlcl9pZFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldFJDTGlzdCgpIHtcclxuICAgIHRoaXMubGlzdE9iamVjdC5SQy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmdldFJlc3BvbnNpYmlsaXR5Q2VudGVyTGlzdCgpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdE9iamVjdFsnUkMnXVsnZGF0YSddID0gZGF0YTtcclxuICAgICAgdGhpcy5saXN0T2JqZWN0LlJDLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5NT0RFID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLmxpc3RPYmplY3QuUkMuc2VsZWN0ZWREYXRhID0gZGF0YS5maWx0ZXIoKGl0ZW06IGFueSkgPT5cclxuICAgICAgICAgIHRoaXMuZ3JjUGF5bG9hZC5yY19pZHMuaW5jbHVkZXMoaXRlbT8uX2lkKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGVja0lzRGF0YUxvYWRlZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRHUkNPYmplY3RUeXBlKCkge1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmdldE9iamVjdFR5cGUoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZGF0YTogR1JDVHlwZVtdKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy5zZXRMaW5rUmlza1RhYihkYXRhKTtcclxuICAgICAgICBjb25zdCBPQkpFQ1RfTEFCRUw6IGFueSA9IHtcclxuICAgICAgICAgIEFTU0VUUzogJ0Fzc2V0JyxcclxuICAgICAgICAgIFBST0NFU1NFUzogJ1Byb2Nlc3MnLFxyXG4gICAgICAgICAgVkVORE9SUzogJ1ZlbmRvcicsXHJcbiAgICAgICAgICBJTlZFTlRPUlk6ICdJbnZlbnRvcnknLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5PQkpFQ1RfVFlQRSA9IGRhdGEubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGl0ZW0udmFsdWUgPSBpbmRleDtcclxuICAgICAgICAgIGl0ZW0ubGFiZWwgPSBPQkpFQ1RfTEFCRUxbaXRlbT8ubGFiZWw/LnRvVXBwZXJDYXNlKCldID8/IGl0ZW0/LmxhYmVsO1xyXG4gICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuT1JJR0lOQUxfR1JDX0FUVFJJQlVURVMgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5PQkpFQ1RfVFlQRSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5NT0RFID09PSAnRURJVCcpIHtcclxuICAgICAgICAgIHRoaXMuT0JKRUNUX1RZUEVbdGhpcy5ncmNUeXBlXS5hdHRyaWJ1dGVzID1cclxuICAgICAgICAgICAgdGhpcy5ncmNQYXlsb2FkLmF0dHJpYnV0ZXM7XHJcblxyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLmdyY1NlcnZpY2UuY2hlY2tBdHRyaWJ1dGVzU2VsZWN0ZWQoXHJcbiAgICAgICAgICAgICAgdGhpcy5PQkpFQ1RfVFlQRVt0aGlzLmdyY1R5cGVdLmF0dHJpYnV0ZXNcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JjRm9ybS5ncmNPYmplY3RUeXBlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFUVFJJQlVURVMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0R1JDT2JqZWN0VHlwZSgpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tJc0RhdGFMb2FkZWQoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7fSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREZWZhdWx0R1JDT2JqZWN0VHlwZSgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGVzID1cclxuICAgICAgdGhpcy5PQkpFQ1RfVFlQRS5maW5kKChlbGU6IGFueSkgPT4gZWxlLnZhbHVlID09PSB0aGlzLmdyY1R5cGUpID8/XHJcbiAgICAgIHRoaXMuT0JKRUNUX1RZUEVbMF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrSXNEYXRhTG9hZGVkKCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPVxyXG4gICAgICB0aGlzLmxpc3RPYmplY3QuT1dORVIuaXNMb2FkaW5nIHx8XHJcbiAgICAgIHRoaXMubGlzdE9iamVjdC5SQy5pc0xvYWRpbmcgfHxcclxuICAgICAgdGhpcy5saXN0T2JqZWN0Lk9USEVSX0dSQ19PQkpFQ1RTLmlzTG9hZGluZyB8fFxyXG4gICAgICAodGhpcy5NT0RFID09PSAnRURJVCcgJiYgdGhpcy5kZXRhaWxzTG9hZGVyKTtcclxuICB9XHJcblxyXG4gIGdldE90aGVyR1JDT2JqZWN0cyhldmVudD86IGFueSkge1xyXG4gICAgaWYgKHRoaXMub3RoZXJHUkNTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5vdGhlckdSQ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50Py5zZWFyY2hTdHJpbmcgJiYgdGhpcy5vdGhlckdSQ1NlYXJjaCAhPT0gZXZlbnQ/LnNlYXJjaFN0cmluZykge1xyXG4gICAgICB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoZXZlbnQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vdGhlckdSQ1NlYXJjaCA9IGV2ZW50Py5zZWFyY2hTdHJpbmcgPz8gJyc7XHJcbiAgICB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIC8vIGV2ZW50WydyY19pZHMnXSA9IHRoaXMubGlzdE9iamVjdD8uUkM/LnNlbGVjdGVkRGF0YVxyXG4gICAgLy8gICA/Lm1hcCgocmM6IGFueSkgPT4gcmM/Ll9pZClcclxuICAgIC8vICAgLmpvaW4oJywnKTtcclxuICAgIHRoaXMub3RoZXJHUkNTdWJzY3JpcHRpb24gPSB0aGlzLmdyY1NlcnZpY2VcclxuICAgICAgLmdldEdSQ0xpc3QoZXZlbnQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubGlzdE9iamVjdC5PVEhFUl9HUkNfT0JKRUNUUy5kYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuTU9ERSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgICAvLyB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuc2VsZWN0ZWREYXRhID0gZGF0YS5maWx0ZXIoXHJcbiAgICAgICAgICAvLyAgIChpdGVtOiBhbnkpID0+IHRoaXMuZ3JjUGF5bG9hZC5saW5rZWRfR1JDX2lkcy5pbmNsdWRlcyhpdGVtPy5faWQpXHJcbiAgICAgICAgICAvLyApO1xyXG4gICAgICAgICAgaWYgKHRoaXMuZ3JjUGF5bG9hZC5saW5rZWRfR1JDX2lkcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JjRm9ybS5vdGhlckdyY09iamVjdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1RIRVJfR1JDX09CSkVDVFMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGVja0lzRGF0YUxvYWRlZCgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldE90aGVyR1JDVGFiQ291bnQoZXZlbnQ/OiBhbnkpIHtcclxuICAgIHRoaXMuZ3JjVGFiTG9hZGVyID0gdHJ1ZTtcclxuICAgIC8vIGV2ZW50WydyY19pZHMnXSA9IHRoaXMubGlzdE9iamVjdD8uUkM/LnNlbGVjdGVkRGF0YVxyXG4gICAgLy8gICA/Lm1hcCgocmM6IGFueSkgPT4gcmM/Ll9pZClcclxuICAgIC8vICAgLmpvaW4oJywnKTtcclxuICAgIHRoaXMuZ3JjU2VydmljZS5nZXRHUkNUYWJzQ291bnQoZXZlbnQpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JjVGFiTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMub3RoZXJHUkNDYXJkWzBdLmNvdW50ID0gZGF0YT8uYXNzZXRzX3R5cGVfY291bnQ7XHJcbiAgICAgIHRoaXMub3RoZXJHUkNDYXJkWzFdLmNvdW50ID0gZGF0YT8ucHJvY2Vzc2VzX3R5cGVfY291bnQ7XHJcbiAgICAgIHRoaXMub3RoZXJHUkNDYXJkWzJdLmNvdW50ID0gZGF0YT8udmVuZG9yc190eXBlX2NvdW50O1xyXG4gICAgICB0aGlzLm90aGVyR1JDQ2FyZFszXS5jb3VudCA9IGRhdGE/LmludmVudG9yeV90eXBlX2NvdW50O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRPdGhlckdSQ1RhYkluZGV4KGV2ZW50PzogYW55LCBkYXRhPzogYW55KSB7fVxyXG5cclxuICAvL1BvcHVsYXRlL0VkaXQgR1JDIE9iamVjdFxyXG5cclxuICBnZXRHUkNPYmplY3REZXRhaWxzKGdyY0lkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYXBpU2VydmljZS5nZXRHUkNPYmplY3REZXRhaWxzKGdyY0lkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vcGVuZWRQb3B1cCA9ICcnO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVQYXlsb2FkKGRhdGEpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlR1JDT2JqZWN0KGRhdGE/LmxpbmtlZEdyY0RldGFpbHMpO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsc0xvYWRlciA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLl9nZXRSQ0xpc3QoKTtcclxuICAgICAgICB0aGlzLl9nZXRPd25lckxpc3QoKTtcclxuICAgICAgICB0aGlzLl9nZXRHUkNPYmplY3RUeXBlKCk7XHJcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyByY19pZHM6ICcnIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvcicsIGVycm9yKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVHUkNPYmplY3QoZGF0YTogYW55KSB7XHJcbiAgICBpZiAoZGF0YT8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZ3JjRm9ybS5vdGhlckdyY09iamVjdHMgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1RIRVJfR1JDX09CSkVDVFMgPSB0cnVlO1xyXG4gICAgICBsZXQgR1JDT2JqZWN0OiBhbnkgPSB7XHJcbiAgICAgICAgYXNzZXRzOiBbXSxcclxuICAgICAgICBwcm9jZXNzZXM6IFtdLFxyXG4gICAgICAgIHZlbmRvcnM6IFtdLFxyXG4gICAgICAgIGludmVudG9yeTogW10sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMubGlzdE9iamVjdC5PVEhFUl9HUkNfT0JKRUNUUy5zZWxlY3RlZERhdGEgPSBbLi4ubmV3IFNldChkYXRhKV07XHJcbiAgICAgIGNvbnN0IEdSQ19UWVBFID0gR1JDX1RZUEVfQVJSQVk7XHJcbiAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgR1JDT2JqZWN0W0dSQ19UWVBFW2l0ZW0/LnR5cGUgPz8gMV1dLnB1c2goaXRlbSk7XHJcbiAgICAgICAgdGhpcy5vdGhlckdSQ0NhcmRbaXRlbT8udHlwZV0uc2VsZWN0ZWRDb3VudCArPSAxO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuZ3JjRGF0YVdpdGhUeXBlcyA9IEdSQ09iamVjdDtcclxuICAgICAgdGhpcy51cGRhdGVPdGhlckdSQ09iamVjdHNQYXlsb2FkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgcG9wdWxhdGVQYXlsb2FkKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5ncmNQYXlsb2FkLm5hbWUgPSBkYXRhPy5uYW1lO1xyXG4gICAgdGhpcy5ncmNQYXlsb2FkLnR5cGUgPSBkYXRhPy50eXBlO1xyXG4gICAgdGhpcy5ncmNQYXlsb2FkLm93bmVycyA9IGRhdGE/Lm93bmVycztcclxuICAgIHRoaXMuZ3JjUGF5bG9hZC5yY19pZHMgPSBkYXRhPy5yY19pZHM7XHJcbiAgICB0aGlzLmdyY1BheWxvYWQubGlua2VkX0dSQ19pZHMgPSBkYXRhPy5saW5rZWRfR1JDX2lkcztcclxuICAgIHRoaXMuZ3JjUGF5bG9hZC5yaXNrX2NhdGVnb3J5X2lkcyA9XHJcbiAgICAgIHRoaXMucG9wdWxhdGVMaW5rUmlzayhkYXRhPy5yaXNrX2NhdGVnb3J5X2lkcykgPz8gW107XHJcbiAgICB0aGlzLmdyY1BheWxvYWQuYXR0cmlidXRlcyA9IGRhdGE/LmF0dHJpYnV0ZXM7XHJcbiAgICB0aGlzLmdyY1BheWxvYWQuc3RhdGUgPSBkYXRhPy5zdGF0ZTtcclxuICAgIHRoaXMuZ3JjUGF5bG9hZC5kZXNjcmlwdGlvbiA9IGRhdGE/LmRlc2NyaXB0aW9uO1xyXG4gICAgdGhpcy5ncmNQYXlsb2FkLmZyZXF1ZW5jeSA9IGRhdGE/LmZyZXF1ZW5jeTtcclxuICAgIHRoaXMuZ3JjUGF5bG9hZC5wYXJlbnRfZ3JjX2lkcyA9IGRhdGE/LnBhcmVudF9ncmNfaWRzO1xyXG4gICAgdGhpcy5ncmNQYXlsb2FkLmVtYWlsX25vdGlmaWNhdGlvbl9tZW1iZXJfaWRzID1cclxuICAgICAgZGF0YT8uZW1haWxfbm90aWZpY2F0aW9uX21lbWJlcl9pZHM7XHJcbiAgICB0aGlzLmdyY1BheWxvYWQucHJvZ3JhbV9jYXRlZ29yeV9pZHMgPSBkYXRhPy5wcm9ncmFtX2NhdGVnb3J5X2lkcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlR1JDT2JqZWN0KCkge1xyXG4gICAgdGhpcy5pc0Zvcm1TdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuZ3JjRm9ybS5ncmNPYmplY3RUeXBlKSB7XHJcbiAgICAgIHRoaXMuZ3JjUGF5bG9hZC5hdHRyaWJ1dGVzID0gdGhpcy5zZWxlY3RlZEF0dHJpYnV0ZXMuYXR0cmlidXRlcztcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5ncmNTZXJ2aWNlLmNoZWNrVmFsaWRhdGlvbihcclxuICAgICAgICB0aGlzLmdyY1BheWxvYWQsXHJcbiAgICAgICAgdGhpcy5ncmNGb3JtLmdyY09iamVjdFR5cGVcclxuICAgICAgKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xyXG4gICAgICBpZiAodGhpcy5NT0RFID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUdSQ09iamVjdCgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBsZXQgUEFZTE9BRCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ncmNQYXlsb2FkKSk7XHJcbiAgICAgIFBBWUxPQUQub3duZXJzID0gdGhpcy5nZXRPd25lcnNFeGNlcHREZWZhdWx0KFBBWUxPQUQub3duZXJzKTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLmFkZEdSQ09iamVjdChQQVlMT0FEKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNldE1vcmVPcHRpb25zT25TdWJtaXQoKTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5hZGRlZEdSQyA9IGRhdGE7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvcicsIGVycm9yLCBlcnJvci5zdGF0dXMpO1xyXG4gICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA5IHx8IGVycm9yLnN0YXR1cyA9PT0gNDAzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNEdXBsaWNhdGVOYW1lID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZXRNb3JlT3B0aW9uc09uU3VibWl0KCk7XHJcbiAgICAgICAgICAgIHRoaXMubWFwVXNlckxpc3Qoe1xyXG4gICAgICAgICAgICAgIGRhdGE6IHRoaXMubGlzdE9iamVjdC5PV05FUi5kYXRhLmFzc2lnbmVlc0xpc3QsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmdyY05hbWVWYWxpZGF0aW9uRXJyb3IgPSBWQUxJREFUSU9OX01FU1NBR0UuZ3JjX2V4aXN0cztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0R1JDT2JqZWN0KCkge1xyXG4gICAgdGhpcy5NT0RFID0gJ0NSRUFURSc7XHJcbiAgICB0aGlzLnNtaWxleU1lc3NhZ2UgPSBTVUNDRVNTX01FU1NBR0UuQUREX0dSQ19PQkpFQ1Q7XHJcbiAgICB0aGlzLmdyY1BheWxvYWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZ3JjU2VydmljZS5HUkNfUEFZTE9BRCkpO1xyXG4gICAgdGhpcy5ncmNQYXlsb2FkLnR5cGUgPSB0aGlzLmdyY1R5cGU7XHJcbiAgICB0aGlzLmlzRm9ybVN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0R1cGxpY2F0ZU5hbWUgPSBmYWxzZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQodGhpcy5oaWRlTW9yZU9wdGlvbik7XHJcbiAgICB0aGlzLk9CSkVDVF9UWVBFID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLk9SSUdJTkFMX0dSQ19BVFRSSUJVVEVTKSk7XHJcbiAgICB0aGlzLm90aGVyR1JDQ2FyZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoT1RIRVJfR1JDX0NBUkQpKTtcclxuICAgIHRoaXMucmVzZXRPdGhlckdSQ0NhcmQoKTtcclxuICAgIHRoaXMuc2V0RGVmYXVsdEdSQ09iamVjdFR5cGUoKTtcclxuICAgIHRoaXMucmVzZXRHUkNEYXRhV2l0aFR5cGVzKCk7XHJcbiAgICB0aGlzLnJlc2V0TGlzdE9iamVjdFNlbGVjdGlvbigpO1xyXG4gICAgdGhpcy5tYXBVc2VyTGlzdCh7IGRhdGE6IHRoaXMubGlzdE9iamVjdC5PV05FUi5kYXRhLmFzc2lnbmVlc0xpc3QgfSk7XHJcbiAgfVxyXG5cclxuICByZXNldExpc3RPYmplY3RTZWxlY3Rpb24oKSB7XHJcbiAgICB0aGlzLmxpc3RPYmplY3QuT1dORVIuc2VsZWN0ZWREYXRhID0gW107XHJcbiAgICB0aGlzLmxpc3RPYmplY3QuUkMuc2VsZWN0ZWREYXRhID0gW107XHJcbiAgICB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuc2VsZWN0ZWREYXRhID0gW107XHJcbiAgICB0aGlzLmxpc3RPYmplY3QuUklTS19DQVRFR09SWS5zZWxlY3RlZERhdGEgPSBbXTtcclxuICB9XHJcblxyXG4gIHNtaWxleUFjdGlvbnMoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgaWYgKGV2ZW50ID09PSAnYWRkTW9yZScpIHtcclxuICAgICAgdGhpcy5yZXNldEdSQ0Zvcm0oKTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICd2aWV3Jykge1xyXG4gICAgICB0aGlzLnJlc2V0R1JDRm9ybSgpO1xyXG4gICAgICB0aGlzLnZpZXdHUkMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlU21pbGV5KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgIHRoaXMucmVzZXRHUkNGb3JtKCk7XHJcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogdGhpcy5hZGRlZEdSQywgY29uZmlybTogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICByZXNldEdSQ0Zvcm0oKSB7XHJcbiAgICB0aGlzLk1PREUgPSAnQ1JFQVRFJztcclxuICAgIHRoaXMucmVzZXRHUkNPYmplY3QoKTtcclxuICAgIHRoaXMuZ3JjRm9ybS5vdGhlckdyY09iamVjdHMgPSBmYWxzZTtcclxuICAgIHRoaXMuZ3JjRm9ybS5saW5rUmlzayA9IGZhbHNlO1xyXG4gICAgdGhpcy5ncmNGb3JtLmxpbmtQcm9ncmFtID0gZmFsc2U7XHJcbiAgICB0aGlzLmdyY0Zvcm0uZ3JjT2JqZWN0VHlwZSA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMucmVzZXRGb3JtLmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICB2aWV3R1JDKCkge1xyXG4gICAgbGV0IHVybDogc3RyaW5nO1xyXG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcclxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICB1cmwgPSAnaHR0cDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvIy9tYW5hZ2UtZ3JjLW9iamVjdHMnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdXJsID1cclxuICAgICAgICAnaHR0cHM6Ly8nICtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaG9zdCArXHJcbiAgICAgICAgJy9vcmdhbml6YXRpb24vIy9tYW5hZ2UtZ3JjLW9iamVjdHMnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLk1PREUgIT09ICdFRElUJykge1xyXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgIH1cclxuICAgIHRoaXMucmVzZXRHUkNGb3JtKCk7XHJcbiAgICB0aGlzLmNsb3NlU21pbGV5KCcnKTtcclxuICAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHsgZXZ0OiB0aGlzLmFkZGVkR1JDLCBjb25maXJtOiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIHNldE90aGVyR1JDVHlwZXNGb3JtYXRlKCkge1xyXG4gICAgY29uc3QgZ3JjVHlwZXMgPSBHUkNfVFlQRV9BUlJBWTtcclxuICAgIHRoaXMucmVzZXRHUkNEYXRhV2l0aFR5cGVzKCk7XHJcbiAgICB0aGlzLmxpc3RPYmplY3Q/Lk9USEVSX0dSQ19PQkpFQ1RTPy5zZWxlY3RlZERhdGE/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmdyY0RhdGFXaXRoVHlwZXNbZ3JjVHlwZXNbaXRlbT8udHlwZV1dPy5wdXNoKGl0ZW0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnVwZGF0ZU90aGVyR1JDT2JqZWN0c1BheWxvYWQoKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZU90aGVyR1JDT2JqZWN0cyhldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBncmNUeXBlcyA9IEdSQ19UWVBFX0FSUkFZO1xyXG4gICAgdGhpcy5saXN0T2JqZWN0Lk9USEVSX0dSQ19PQkpFQ1RTLnNlbGVjdGVkRGF0YSA9XHJcbiAgICAgIHRoaXMubGlzdE9iamVjdC5PVEhFUl9HUkNfT0JKRUNUUy5zZWxlY3RlZERhdGEuZmlsdGVyKFxyXG4gICAgICAgIChncmM6IGFueSkgPT4gZ3JjPy5faWQgIT09IGV2ZW50Py5faWRcclxuICAgICAgKTtcclxuICAgIHRoaXMuZmlsdGVyT3RoZXJHUkNEYXRhKGV2ZW50LCBncmNUeXBlc1tldmVudD8udHlwZV0pO1xyXG4gICAgdGhpcy5vdGhlckdSQ0NhcmRbMF0uc2VsZWN0ZWRDb3VudFxyXG4gICAgICA/ICh0aGlzLm90aGVyR1JDQ2FyZFtldmVudD8udHlwZV0uc2VsZWN0ZWRDb3VudCAtPSAxKVxyXG4gICAgICA6IDA7XHJcbiAgICB0aGlzLnVwZGF0ZU90aGVyR1JDT2JqZWN0c1BheWxvYWQoKTtcclxuICB9XHJcblxyXG4gIGZpbHRlck90aGVyR1JDRGF0YShldmVudDogYW55LCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZ3JjRGF0YVdpdGhUeXBlc1t0eXBlXSA9IHRoaXMuZ3JjRGF0YVdpdGhUeXBlc1t0eXBlXT8uZmlsdGVyKFxyXG4gICAgICAoZ3JjOiBhbnkpID0+IGdyYz8uX2lkICE9PSBldmVudD8uX2lkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRHUkNEYXRhV2l0aFR5cGVzKCkge1xyXG4gICAgdGhpcy5ncmNEYXRhV2l0aFR5cGVzID0ge1xyXG4gICAgICBhc3NldHM6IFtdLFxyXG4gICAgICBwcm9jZXNzZXM6IFtdLFxyXG4gICAgICB2ZW5kb3JzOiBbXSxcclxuICAgICAgaW52ZW50b3J5OiBbXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBnZXQgZ3JjVmFsaWRhdGlvbkNoZWNrKCkge1xyXG4gICAgaWYgKHRoaXMuaXNGb3JtU3VibWl0dGVkICYmICF0aGlzLmdyY1BheWxvYWQubmFtZSkge1xyXG4gICAgICB0aGlzLmdyY05hbWVWYWxpZGF0aW9uRXJyb3IgPSBWQUxJREFUSU9OX01FU1NBR0UuZ3JjT2JqZWN0TmFtZTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuaXNGb3JtU3VibWl0dGVkICYmICEodGhpcy5ncmNQYXlsb2FkLm5hbWUgfHwgdGhpcy5pc0R1cGxpY2F0ZU5hbWUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Umlza0NhdGVnb3J5UGF5bG9hZChzZWxlY3RlZERhdGE6IGFueSkge1xyXG4gICAgY29uc3Qgcmlza0NhdGVnb3J5UGF5bG9hZDogYW55ID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkUmlza3MgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzID0gW107XHJcbiAgICBzZWxlY3RlZERhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIHJpc2tDYXRlZ29yeVBheWxvYWQucHVzaCh7XHJcbiAgICAgICAgY2F0ZWdvcnlfaWQ6IFtpdGVtPy5jYXRlZ29yeT8uY2F0ZWdvcnlfaWQgPz8gW11dLFxyXG4gICAgICAgIHJpc2tfaWRzOiBpdGVtPy5yaXNrcz8ubWFwKChyaXNrOiBhbnkpID0+IHJpc2s/LlJpc2tJZCksXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUmlza3M/LnB1c2goLi4uaXRlbT8ucmlza3MpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcmllcy5wdXNoKGl0ZW0/LmNhdGVnb3J5KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJpc2tDYXRlZ29yeVBheWxvYWQ7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVHUkNPYmplY3QoKSB7XHJcbiAgICBsZXQgUEFZTE9BRCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ncmNQYXlsb2FkKSk7XHJcbiAgICBQQVlMT0FELm93bmVycyA9IHRoaXMuZ2V0T3duZXJzRXhjZXB0RGVmYXVsdChQQVlMT0FELm93bmVycyk7XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UudXBkYXRlR1JDT2JqZWN0KFBBWUxPQUQsIHRoaXMuSUQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0TW9yZU9wdGlvbnNPblN1Ym1pdCgpO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkZWRHUkMgPSBkYXRhO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yJywgZXJyb3IsIGVycm9yLnN0YXR1cyk7XHJcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA5KSB7XHJcbiAgICAgICAgICB0aGlzLmlzRHVwbGljYXRlTmFtZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNldE1vcmVPcHRpb25zT25TdWJtaXQoKTtcclxuICAgICAgICAgIHRoaXMuZ3JjTmFtZVZhbGlkYXRpb25FcnJvciA9IFZBTElEQVRJT05fTUVTU0FHRS5ncmNfZXhpc3RzO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB1cGRhdGVPdGhlckdSQ09iamVjdHNQYXlsb2FkKCkge1xyXG4gICAgdGhpcy5ncmNQYXlsb2FkLmxpbmtlZF9HUkNfaWRzID1cclxuICAgICAgdGhpcy5saXN0T2JqZWN0Lk9USEVSX0dSQ19PQkpFQ1RTLnNlbGVjdGVkRGF0YS5tYXAoXHJcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS5faWRcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVNlbGVjdGVkUmlzayhjYXRlZ29yeUlkOiBudW1iZXIsIHJpc2s6IGFueSkge1xyXG4gICAgY29uc3QgY2F0ZWdvcnlJbmRleCA9IHRoaXMuZmluZENoZWNrZWRDYXRlZ29yeUluZGV4KGNhdGVnb3J5SWQpO1xyXG4gICAgaWYgKGNhdGVnb3J5SW5kZXggIT09IC0xKSB7XHJcbiAgICAgIC8vIENhdGVnb3J5IGV4aXN0cywgdXBkYXRlIHJpc2sgdmFsdWVcclxuICAgICAgY29uc3Qgcmlza0luZGV4ID0gdGhpcy5saXN0T2JqZWN0Py5SSVNLX0NBVEVHT1JZPy5zZWxlY3RlZERhdGFbXHJcbiAgICAgICAgY2F0ZWdvcnlJbmRleFxyXG4gICAgICBdPy5yaXNrcz8uZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0/Ll9pZCA9PT0gcmlzaz8uX2lkKTtcclxuICAgICAgaWYgKHJpc2tJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLmxpc3RPYmplY3Q/LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YVtcclxuICAgICAgICAgIGNhdGVnb3J5SW5kZXhcclxuICAgICAgICBdPy5yaXNrcy5zcGxpY2Uocmlza0luZGV4LCAxKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMubGlzdE9iamVjdD8uUklTS19DQVRFR09SWT8uc2VsZWN0ZWREYXRhW2NhdGVnb3J5SW5kZXhdPy5yaXNrc1xyXG4gICAgICAgICAgPy5sZW5ndGggPT09IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgLy8gUmVtb3ZlIGNhdGVnb3J5IGlmIHNlbGVjdGVkTGlzdERhdGEgaXMgZW1wdHlcclxuICAgICAgICB0aGlzLmxpc3RPYmplY3Q/LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YS5zcGxpY2UoY2F0ZWdvcnlJbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZ3JjUGF5bG9hZC5yaXNrX2NhdGVnb3J5X2lkcyA9IHRoaXMuZ2V0Umlza0NhdGVnb3J5UGF5bG9hZChcclxuICAgICAgdGhpcy5saXN0T2JqZWN0Py5SSVNLX0NBVEVHT1JZPy5zZWxlY3RlZERhdGFcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBmaW5kQ2hlY2tlZENhdGVnb3J5SW5kZXgoY2F0ZWdvcnlJZDogbnVtYmVyIHwgbnVtYmVyW10pIHtcclxuICAgIGxldCBjYXRlZ29yeUluZGV4ID0gLTE7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjYXRlZ29yeUlkKSAmJiBjYXRlZ29yeUlkPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgLy8gSGFuZGxlIGVtcHR5IGNhdGVnb3J5SWQgYXJyYXkgY2FzZVxyXG4gICAgICBjb25zdCB1bmNhdGVnb3JpemVkSW5kZXggPVxyXG4gICAgICAgIHRoaXMubGlzdE9iamVjdD8uUklTS19DQVRFR09SWT8uc2VsZWN0ZWREYXRhLmZpbmRJbmRleChcclxuICAgICAgICAgIChjYXQ6IGFueSkgPT4gY2F0Py5jYXRlZ29yeT8uX2lkID09PSAndW5jYXRlZ29yaXplZCdcclxuICAgICAgICApO1xyXG4gICAgICBpZiAodW5jYXRlZ29yaXplZEluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIHJldHVybiB1bmNhdGVnb3JpemVkSW5kZXg7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNhdGVnb3J5SW5kZXggPSB0aGlzLmxpc3RPYmplY3Q/LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YS5maW5kSW5kZXgoXHJcbiAgICAgICAgKGNhdDogYW55KSA9PiBjYXQ/LmNhdGVnb3J5Py5jYXRlZ29yeV9pZCA9PT0gY2F0ZWdvcnlJZFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNhdGVnb3J5SW5kZXg7XHJcbiAgfVxyXG5cclxuICBzZXRMaW5rUmlza1RhYih0YWJEZXRhaWxzOiBhbnkpIHtcclxuICAgIHRoaXMub3RoZXJHUkNDYXJkID0gdGFiRGV0YWlscy5tYXAoKHRhYjogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgdGl0bGU6IHRhYj8ubGFiZWwsXHJcbiAgICAgICAgY291bnQ6IDAsXHJcbiAgICAgICAgc2VsZWN0ZWRDb3VudDogMCxcclxuICAgICAgICBrZXk6IHRhYj8ubGFiZWw/LnRvTG93ZXJDYXNlKCksXHJcbiAgICAgICAgdHlwZTogaW5kZXgsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ2V0T3RoZXJHUkNUYWJDb3VudCh7IHJjX2lkczogJycgfSk7XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZUxpbmtSaXNrKHNlbGVjdGVkRGF0YTogYW55KSB7XHJcbiAgICBsZXQgdXBkYXRlZERhdGEgPSBzZWxlY3RlZERhdGE/Lm1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChkYXRhPy5jYXRlZ29yeV9pZCAmJiBPYmplY3Q/LmtleXMoZGF0YT8uY2F0ZWdvcnlfaWQpPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4uZGF0YSxcclxuICAgICAgICAgIGNhdGVnb3J5OiBVTkNBVEVHT1JJWkVEX0xJTktfQ0FURUdPUlksXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmRhdGEsXHJcbiAgICAgICAgY2F0ZWdvcnk6IHtcclxuICAgICAgICAgIGNhdGVnb3J5X2lkOiBkYXRhPy5jYXRlZ29yeV9pZFswXSxcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICBpZiAodXBkYXRlZERhdGEubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZ3JjRm9ybS5saW5rUmlzayA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5MSU5LX1JJU0tfQ0FURUdPUklFU19SSVNLUyA9IHRydWU7XHJcbiAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5saXN0T2JqZWN0LlJJU0tfQ0FURUdPUlkuc2VsZWN0ZWREYXRhID0gdXBkYXRlZERhdGE7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRSaXNrQ2F0ZWdvcnlQYXlsb2FkKHVwZGF0ZWREYXRhKTtcclxuICB9XHJcblxyXG4gIGdldE93bmVyc0V4Y2VwdERlZmF1bHQodXNlcnM6IGFueSkge1xyXG4gICAgY29uc3QgdXNlcnNJZCA9IHVzZXJzLmZpbHRlcihcclxuICAgICAgKHVzZXI6IGFueSkgPT4gIXRoaXMuZGlzYWJsZWRJZHMuaW5jbHVkZXModXNlcilcclxuICAgICk7XHJcbiAgICByZXR1cm4gdXNlcnNJZCB8fCBbXTtcclxuICB9XHJcblxyXG4gIHNldE1vcmVPcHRpb25zT25TdWJtaXQoKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJlc2V0T3RoZXJHUkNDYXJkKCkge1xyXG4gICAgdGhpcy5vdGhlckdSQ0NhcmQuZm9yRWFjaCgodGFiOiBhbnkpID0+IHtcclxuICAgICAgdGFiLmNvdW50ID0gMDtcclxuICAgICAgdGFiLnNlbGVjdGVkQ291bnQgPSAwO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd1NtaWxleVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1ncmNcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJvcGVuZWRQb3B1cCAmJiBkaWFsb2dGaWVsZHM/LmluY2x1ZGVzKG9wZW5lZFBvcHVwKVwiXHJcbiAgICAgICpuZ0lmPVwiIWlzTG9hZGluZ1wiXHJcbiAgICA+XHJcbiAgICAgIDxsaWItdGV4dC1maWVsZC1pY29uXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm9wZW5lZFBvcHVwICYmIGRpYWxvZ0ZpZWxkcz8uaW5jbHVkZXMob3BlbmVkUG9wdXApXCJcclxuICAgICAgICBbY2RuTGlua109XCJDRE5fTElOSy5ncmNUeXBlXCJcclxuICAgICAgICBbaXNDaGVja2VkXT1cInRydWVcIlxyXG4gICAgICAgIGZpZWxkLWljb25zXHJcbiAgICAgID5cclxuICAgICAgPC9saWItdGV4dC1maWVsZC1pY29uPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxyXG4gICAgICAgICAgICBHUkMgT0JKRUNUIFRZUEU8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCI+XHJcbiAgICAgICAgICAgIDx0YWItc2VsZWN0b3JcclxuICAgICAgICAgICAgICBbc2VsZWN0ZWRJdGVtXT1cImdyY1BheWxvYWQudHlwZVwiXHJcbiAgICAgICAgICAgICAgW2Rpc3BsYXlBcnJheV09XCJPQkpFQ1RfVFlQRVwiXHJcbiAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImNoYW5nZUF0dHJpYnV0ZXNUeXBlKCRldmVudClcIlxyXG4gICAgICAgICAgICA+PC90YWItc2VsZWN0b3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gT2JqZWN0IG5hbWUgZmllbGQgLS0+XHJcbiAgICA8bGliLXRleHQtZmllbGRcclxuICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgIG9wZW5lZFBvcHVwICYmXHJcbiAgICAgICAgb3BlbmVkUG9wdXAgIT09IElOUFVUX1RZUEUubmFtZSAmJlxyXG4gICAgICAgIGRpYWxvZ0ZpZWxkcz8uaW5jbHVkZXMob3BlbmVkUG9wdXApXHJcbiAgICAgIFwiXHJcbiAgICAgIFtpc0VkaXRNb2RlXT1cImdyY1BheWxvYWQubmFtZSAmJiBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5uYW1lXCJcclxuICAgICAgW3RpdGxlVGV4dF09XCJBTExfVEVYVD8uZ3JjT2JqZWN0TmFtZVwiXHJcbiAgICAgIFtwbGFjZWhvbGRlclRleHRdPVwiQUxMX1RFWFQ/LmdyY09iamVjdFBsYWNlaG9sZGVyXCJcclxuICAgICAgWyh0ZXh0VmFsdWUpXT1cImdyY1BheWxvYWQubmFtZVwiXHJcbiAgICAgICh0ZXh0VmFsdWVDaGFuZ2UpPVwib25UZXh0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAoY2xpY2tPdXRzaWRlKT1cIm9uQ2xpY2tPdXRzaWRlKClcIlxyXG4gICAgICAob25DbGljayk9XCJvblBvcHVwT3BlbihJTlBVVF9UWVBFLm5hbWUpXCJcclxuICAgID5cclxuICAgICAgPGxpYi10ZXh0LWZpZWxkLWljb25cclxuICAgICAgICBbY2RuTGlua109XCJDRE5fTElOSy5ncmNPYmplY3ROYW1lXCJcclxuICAgICAgICBbaXNDaGVja2VkXT1cImdyY1BheWxvYWQubmFtZVwiXHJcbiAgICAgICAgZmllbGQtaWNvbnNcclxuICAgICAgPlxyXG4gICAgICA8L2xpYi10ZXh0LWZpZWxkLWljb24+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIiBpcy1yZXF1aXJlZD4qPC9zcGFuPlxyXG4gICAgICA8bGliLWVkaXQtbW9kZVxyXG4gICAgICAgICpuZ0lmPVwiZ3JjUGF5bG9hZC5uYW1lICYmIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFLm5hbWVcIlxyXG4gICAgICAgIFtzZWxlY3RlZERhdGFdPVwiW2dyY1BheWxvYWRdXCJcclxuICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxyXG4gICAgICAgIChpc09uRWRpdCk9XCJvbkVkaXQoSU5QVVRfVFlQRS5uYW1lKVwiXHJcbiAgICAgICAgZWRpdC1tb2RlXHJcbiAgICAgID48L2xpYi1lZGl0LW1vZGU+XHJcbiAgICAgIDxwXHJcbiAgICAgICAgKm5nSWY9XCJncmNWYWxpZGF0aW9uQ2hlY2sgfHwgaXNEdXBsaWNhdGVOYW1lXCJcclxuICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxyXG4gICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgZXJyb3ItbWVzc2FnZVxyXG4gICAgICA+XHJcbiAgICAgICAge3sgZ3JjTmFtZVZhbGlkYXRpb25FcnJvciB9fVxyXG4gICAgICA8L3A+XHJcbiAgICAgIDx2Y29tcGx5LWVkaXRvclxyXG4gICAgICAgIFtlZGl0b3JDb25maWddPVwiRURJVE9SX0NPTkZJR1wiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJncmNQYXlsb2FkLmRlc2NyaXB0aW9uXCJcclxuICAgICAgICByaWNoLXRleHQtZWRpdG9yXHJcbiAgICAgID48L3Zjb21wbHktZWRpdG9yPlxyXG4gICAgPC9saWItdGV4dC1maWVsZD5cclxuXHJcbiAgICA8IS0tIFNwZWNpZnkgT3duZXJzIC0tPlxyXG4gICAgPGxpYi10ZXh0LWZpZWxkXHJcbiAgICAgIFtkaXNhYmxlZF09XCJcclxuICAgICAgICBvcGVuZWRQb3B1cCAmJlxyXG4gICAgICAgIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFLm93bmVyICYmXHJcbiAgICAgICAgZGlhbG9nRmllbGRzPy5pbmNsdWRlcyhvcGVuZWRQb3B1cClcclxuICAgICAgXCJcclxuICAgICAgW2FjdGl2ZV09XCJvcGVuZWRQb3B1cCAmJiBvcGVuZWRQb3B1cCA9PSBJTlBVVF9UWVBFLm93bmVyXCJcclxuICAgICAgW2lzRWRpdE1vZGVdPVwiXHJcbiAgICAgICAgbGlzdE9iamVjdC5PV05FUj8uc2VsZWN0ZWREYXRhPy5sZW5ndGggJiZcclxuICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5vd25lclxyXG4gICAgICBcIlxyXG4gICAgICBbdGl0bGVUZXh0XT1cIkFMTF9URVhUPy5ncmNPd25lcnNUaXRsZVwiXHJcbiAgICAgIFtwbGFjZWhvbGRlclRleHRdPVwiQUxMX1RFWFQ/LmdyY093bmVyc1BsYWNlaG9sZGVyXCJcclxuICAgICAgW2lzUmVhZE9ubHldPVwidHJ1ZVwiXHJcbiAgICAgIChvbkNsaWNrKT1cIm9uUG9wdXBPcGVuKElOUFVUX1RZUEUub3duZXIpXCJcclxuICAgID5cclxuICAgICAgPGxpYi10ZXh0LWZpZWxkLWljb25cclxuICAgICAgICBbY2RuTGlua109XCJDRE5fTElOSy5ncmNPd25lcnNcIlxyXG4gICAgICAgIFtpc0NoZWNrZWRdPVwibGlzdE9iamVjdC5PV05FUj8uc2VsZWN0ZWREYXRhPy5sZW5ndGggPiAwXCJcclxuICAgICAgICBmaWVsZC1pY29uc1xyXG4gICAgICA+XHJcbiAgICAgIDwvbGliLXRleHQtZmllbGQtaWNvbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiIGlzLXJlcXVpcmVkPio8L3NwYW4+XHJcbiAgICAgIDxsaWItZWRpdC1tb2RlXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGxpc3RPYmplY3QuT1dORVI/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoICYmXHJcbiAgICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5vd25lclxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW25vblJlbW92YWJsZUlkc109XCJkaXNhYmxlZElkc1wiXHJcbiAgICAgICAgW2NvdW50Q29sb3JdPVwiJ2dyZWVuQmcnXCJcclxuICAgICAgICBbc2VsZWN0ZWREYXRhXT1cImxpc3RPYmplY3QuT1dORVI/LnNlbGVjdGVkRGF0YVwiXHJcbiAgICAgICAgW3R5cGVdPVwiJ2xpc3QnXCJcclxuICAgICAgICAoaXNPbkVkaXQpPVwib25FZGl0KElOUFVUX1RZUEUub3duZXIpXCJcclxuICAgICAgICAob25SZW1vdmVEYXRhKT1cIm9uUmVtb3ZlRGF0YSgkZXZlbnQsIElOUFVUX1RZUEUub3duZXIpXCJcclxuICAgICAgICBlZGl0LW1vZGVcclxuICAgICAgPjwvbGliLWVkaXQtbW9kZT5cclxuICAgIDwvbGliLXRleHQtZmllbGQ+XHJcblxyXG4gICAgPCEtLSBMaW5rIFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgKFJDKSAtLT5cclxuICAgIDxsaWItdGV4dC1maWVsZFxyXG4gICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgb3BlbmVkUG9wdXAgJiZcclxuICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5SQyAmJlxyXG4gICAgICAgIGRpYWxvZ0ZpZWxkcz8uaW5jbHVkZXMob3BlbmVkUG9wdXApXHJcbiAgICAgIFwiXHJcbiAgICAgIFthY3RpdmVdPVwib3BlbmVkUG9wdXAgJiYgb3BlbmVkUG9wdXAgPT0gSU5QVVRfVFlQRS5SQ1wiXHJcbiAgICAgIFtpc0VkaXRNb2RlXT1cIlxyXG4gICAgICAgIGxpc3RPYmplY3QuUkM/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoICYmIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFLlJDXHJcbiAgICAgIFwiXHJcbiAgICAgIFt0aXRsZVRleHRdPVwiQUxMX1RFWFQ/LmdyY1JDVGl0bGVcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJUZXh0XT1cIkFMTF9URVhUPy5ncmNSQ1BsYWNlaG9sZGVyXCJcclxuICAgICAgW2lzUmVhZE9ubHldPVwidHJ1ZVwiXHJcbiAgICAgIChvbkNsaWNrKT1cIm9uUG9wdXBPcGVuKElOUFVUX1RZUEUuUkMpXCJcclxuICAgID5cclxuICAgICAgPGxpYi10ZXh0LWZpZWxkLWljb25cclxuICAgICAgICBbY2RuTGlua109XCJDRE5fTElOSy5ncmNSQ1wiXHJcbiAgICAgICAgW2lzQ2hlY2tlZF09XCJsaXN0T2JqZWN0LlJDPy5zZWxlY3RlZERhdGE/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgIGZpZWxkLWljb25zXHJcbiAgICAgID5cclxuICAgICAgPC9saWItdGV4dC1maWVsZC1pY29uPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCIgaXMtcmVxdWlyZWQ+Kjwvc3Bhbj5cclxuICAgICAgPGxpYi1lZGl0LW1vZGVcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgbGlzdE9iamVjdC5SQz8uc2VsZWN0ZWREYXRhPy5sZW5ndGggJiYgb3BlbmVkUG9wdXAgIT09IElOUFVUX1RZUEUuUkNcclxuICAgICAgICBcIlxyXG4gICAgICAgIChvblJlbW92ZURhdGEpPVwib25SZW1vdmVEYXRhKCRldmVudCwgSU5QVVRfVFlQRS5SQylcIlxyXG4gICAgICAgIFtzZWxlY3RlZERhdGFdPVwibGlzdE9iamVjdC5SQz8uc2VsZWN0ZWREYXRhXCJcclxuICAgICAgICBbdHlwZV09XCInbGlzdCdcIlxyXG4gICAgICAgIChpc09uRWRpdCk9XCJvbkVkaXQoSU5QVVRfVFlQRS5SQylcIlxyXG4gICAgICAgIGVkaXQtbW9kZVxyXG4gICAgICA+PC9saWItZWRpdC1tb2RlPlxyXG4gICAgICA8cFxyXG4gICAgICAgICpuZ0lmPVwiaXNGb3JtU3VibWl0dGVkICYmICFsaXN0T2JqZWN0LlJDPy5zZWxlY3RlZERhdGE/Lmxlbmd0aFwiXHJcbiAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcclxuICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxyXG4gICAgICAgIGVycm9yLW1lc3NhZ2VcclxuICAgICAgPlxyXG4gICAgICAgIHt7IFZBTElEQVRJT05fTUVTU0FHRS5ncmNSQyB9fVxyXG4gICAgICA8L3A+XHJcbiAgICA8L2xpYi10ZXh0LWZpZWxkPlxyXG5cclxuICAgIDwhLS0gTGluayBSaXNrIENhdGVnb3JpZXMgYW5kIFJpc2sgLS0+XHJcbiAgICA8bGliLXRleHQtZmllbGRcclxuICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgIG9wZW5lZFBvcHVwICYmXHJcbiAgICAgICAgb3BlbmVkUG9wdXAgIT09IElOUFVUX1RZUEU/LnJpc2tDYXRlZ29yeSAmJlxyXG4gICAgICAgIGRpYWxvZ0ZpZWxkcz8uaW5jbHVkZXMob3BlbmVkUG9wdXApXHJcbiAgICAgIFwiXHJcbiAgICAgIFthY3RpdmVdPVwib3BlbmVkUG9wdXAgJiYgb3BlbmVkUG9wdXAgPT0gSU5QVVRfVFlQRT8ucmlza0NhdGVnb3J5XCJcclxuICAgICAgKm5nSWY9XCJncmNGb3JtPy5saW5rUmlza1wiXHJcbiAgICAgIFt0aXRsZVRleHRdPVwiQUxMX1RFWFQ/LmdyY1Jpc2tDYXRlZ29yeVRpdGxlXCJcclxuICAgICAgW3BsYWNlaG9sZGVyVGV4dF09XCJBTExfVEVYVD8uZ3JjUmlza0NhdGVnb3J5UGxhY2Vob2xkZXJcIlxyXG4gICAgICBbaXNSZWFkT25seV09XCJ0cnVlXCJcclxuICAgICAgKG9uQ2xpY2spPVwib25Qb3B1cE9wZW4oSU5QVVRfVFlQRS5yaXNrQ2F0ZWdvcnkpXCJcclxuICAgICAgW2lzRWRpdE1vZGVdPVwiXHJcbiAgICAgICAgbGlzdE9iamVjdD8uUklTS19DQVRFR09SWT8uc2VsZWN0ZWREYXRhPy5sZW5ndGggJiZcclxuICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRT8ucmlza0NhdGVnb3J5XHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxsaWItdGV4dC1maWVsZC1pY29uXHJcbiAgICAgICAgW2NkbkxpbmtdPVwiQ0ROX0xJTksubGlua0dSQ1wiXHJcbiAgICAgICAgW2lzQ2hlY2tlZF09XCJsaXN0T2JqZWN0LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgZmllbGQtaWNvbnNcclxuICAgICAgPlxyXG4gICAgICA8L2xpYi10ZXh0LWZpZWxkLWljb24+XHJcblxyXG4gICAgICA8bGliLWVkaXQtbW9kZVxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBsaXN0T2JqZWN0LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoICYmXHJcbiAgICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5SSVNLX0NBVEVHT1JZXHJcbiAgICAgICAgXCJcclxuICAgICAgICAob25SZW1vdmVEYXRhKT1cIm9uUmVtb3ZlRGF0YSgkZXZlbnQsIElOUFVUX1RZUEU/LnJpc2tDYXRlZ29yeSlcIlxyXG4gICAgICAgIFtzZWxlY3RlZERhdGFdPVwic2VsZWN0ZWRSaXNrc1wiXHJcbiAgICAgICAgW3R5cGVdPVwiJ2xpc3QnXCJcclxuICAgICAgICAoaXNPbkVkaXQpPVwib25FZGl0KElOUFVUX1RZUEUucmlza0NhdGVnb3J5LCBkYXRhPy5rZXkpXCJcclxuICAgICAgICBlZGl0LW1vZGVcclxuICAgICAgPlxyXG4gICAgICA8L2xpYi1lZGl0LW1vZGU+XHJcbiAgICA8L2xpYi10ZXh0LWZpZWxkPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIExpbmsgT3RoZXIgR1JDIE9iamVjdHMgLS0+XHJcbiAgPGxpYi10ZXh0LWZpZWxkXHJcbiAgICAqbmdJZj1cImdyY0Zvcm0/Lm90aGVyR3JjT2JqZWN0c1wiXHJcbiAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgIG9wZW5lZFBvcHVwICYmXHJcbiAgICAgIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFPy5vdGhlckdyY09iamVjdHMgJiZcclxuICAgICAgZGlhbG9nRmllbGRzPy5pbmNsdWRlcyhvcGVuZWRQb3B1cClcclxuICAgIFwiXHJcbiAgICBbYWN0aXZlXT1cIm9wZW5lZFBvcHVwICYmIG9wZW5lZFBvcHVwID09IElOUFVUX1RZUEU/Lm90aGVyR3JjT2JqZWN0c1wiXHJcbiAgICBbdGl0bGVUZXh0XT1cIkFMTF9URVhUPy5vdGhlckdSQ09iamVjdHNUaXRsZVwiXHJcbiAgICBbcGxhY2Vob2xkZXJUZXh0XT1cIkFMTF9URVhUPy5vdGhlckdSQ09iamVjdHNQbGFjZWhvbGRlclwiXHJcbiAgICBbaXNSZWFkT25seV09XCJ0cnVlXCJcclxuICAgIChvbkNsaWNrKT1cIm9uUG9wdXBPcGVuKElOUFVUX1RZUEUub3RoZXJHcmNPYmplY3RzKVwiXHJcbiAgICBbaXNFZGl0TW9kZV09XCJcclxuICAgICAgbGlzdE9iamVjdD8uT1RIRVJfR1JDX09CSkVDVFM/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoICYmXHJcbiAgICAgIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFPy5vdGhlckdyY09iamVjdHNcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGxpYi10ZXh0LWZpZWxkLWljb25cclxuICAgICAgW2NkbkxpbmtdPVwiQ0ROX0xJTksubGlua090aGVyc1wiXHJcbiAgICAgIFtpc0NoZWNrZWRdPVwibGlzdE9iamVjdD8uT1RIRVJfR1JDX09CSkVDVFM/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoID4gMFwiXHJcbiAgICAgIGZpZWxkLWljb25zXHJcbiAgICA+XHJcbiAgICA8L2xpYi10ZXh0LWZpZWxkLWljb24+XHJcblxyXG4gICAgPGxpYi1lZGl0LW1vZGVcclxuICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgR1JDX1RZUEVfQVJSQVlcIlxyXG4gICAgICAob25SZW1vdmVEYXRhKT1cIm9uUmVtb3ZlRGF0YSgkZXZlbnQsIElOUFVUX1RZUEU/Lm90aGVyR3JjT2JqZWN0cylcIlxyXG4gICAgICBbc2VsZWN0ZWREYXRhXT1cImdyY0RhdGFXaXRoVHlwZXNbZGF0YV1cIlxyXG4gICAgICBbdHlwZV09XCInbGlzdCdcIlxyXG4gICAgICBbaXNNdWx0aXBsZV09XCJ0cnVlXCJcclxuICAgICAgKGlzT25FZGl0KT1cIm9uRWRpdChJTlBVVF9UWVBFLm90aGVyR3JjT2JqZWN0cywgZGF0YSlcIlxyXG4gICAgICBlZGl0LW1vZGVcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwid29ya2Zsb3dMYXZlbCB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTQgdngtbXItMSB2eC10ZXh0LWNlbnRlclwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBkYXRhIHwgdGl0bGVjYXNlIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9saWItZWRpdC1tb2RlPlxyXG4gIDwvbGliLXRleHQtZmllbGQ+XHJcbiAgPGxpYi1hdHRyaWJ1dGVzXHJcbiAgICBbZGlzYWJsZWRdPVwib3BlbmVkUG9wdXAgJiYgZGlhbG9nRmllbGRzPy5pbmNsdWRlcyhvcGVuZWRQb3B1cClcIlxyXG4gICAgKm5nSWY9XCJzZWxlY3RlZEF0dHJpYnV0ZXM/LmF0dHJpYnV0ZXM/Lmxlbmd0aCAmJiB0aGlzLmdyY0Zvcm0uZ3JjT2JqZWN0VHlwZVwiXHJcbiAgICBbYXR0cmlidXRlc0luZm9dPVwic2VsZWN0ZWRBdHRyaWJ1dGVzXCJcclxuICAgIFtpc0Zvcm1TdWJtaXR0ZWRdPVwiaXNGb3JtU3VibWl0dGVkXCJcclxuICAgIChvbkNsaWNrKT1cImdldEF0dHJpYnV0ZVNlbGVjdGlvbigkZXZlbnQpXCJcclxuICA+PC9saWItYXR0cmlidXRlcz5cclxuICA8bGliLWxpc3QtcG9wdXBcclxuICAgIFtvcGVuZWRQb3B1cF09XCJvcGVuZWRQb3B1cFwiXHJcbiAgICBbbGlzdE9iamVjdF09XCJsaXN0T2JqZWN0XCJcclxuICAgIFt0YWJsZUNhcmRdPVwib3RoZXJHUkNDYXJkXCJcclxuICAgIFtvdGhlckdyY0NhcmRMb2FkZXJdPVwiZ3JjVGFiTG9hZGVyXCJcclxuICAgIFtHUkNTZWxlY3RlZFRhYl09XCJHUkNTZWxlY3RlZFRhYlwiXHJcbiAgICBbbW9kZV09XCJNT0RFXCJcclxuICAgIFtvbkVkaXRHUkNJZF09XCJJRFwiXHJcbiAgICAob25TYXZlU2VsZWN0ZWRMaXN0KT1cIm9uU2F2ZVNlbGVjdGVkTGlzdCgkZXZlbnQpXCJcclxuICAgIChnZXRPdGhlckdSQ09iamVjdHMpPVwiZ2V0T3RoZXJHUkNPYmplY3RzKCRldmVudClcIlxyXG4gID48L2xpYi1saXN0LXBvcHVwPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxyXG4gICpuZ0lmPVwic2hvd1NtaWxleVwiXHJcbiAgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiXHJcbiAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXHJcbiAgKGFjdGlvbik9XCJzbWlsZXlBY3Rpb25zKCRldmVudClcIlxyXG4gIChjbG9zZVNtaWxleSk9XCJjbG9zZVNtaWxleSgkZXZlbnQpXCJcclxuPjwvYXBwLXNtaWxleS1kaWFsb2ctaW5saW5lPlxyXG48YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJpc0xvYWRpbmdcIj48L2FwcC1sb2FkZXItaW5saW5lPlxyXG4iXX0=
|
|
@@ -5996,8 +5996,9 @@ class GrcObjectContainerComponent {
|
|
|
5996
5996
|
return riskCategoryPayload;
|
|
5997
5997
|
}
|
|
5998
5998
|
updateGRCObject() {
|
|
5999
|
-
|
|
6000
|
-
this.
|
|
5999
|
+
let PAYLOAD = JSON.parse(JSON.stringify(this.grcPayload));
|
|
6000
|
+
PAYLOAD.owners = this.getOwnersExceptDefault(PAYLOAD.owners);
|
|
6001
|
+
this.apiService.updateGRCObject(PAYLOAD, this.ID).subscribe({
|
|
6001
6002
|
next: (data) => {
|
|
6002
6003
|
this.showSmiley = true;
|
|
6003
6004
|
this.setMoreOptionsOnSubmit();
|