vcomply-workflow-engine 6.3.1 → 6.3.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/esm2022/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +5 -1
- package/fesm2022/vcomply-workflow-engine.mjs +4 -0
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/add-multiple-risk/add-multiple-risk.component.d.ts +1 -1
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/package.json +1 -1
package/esm2022/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs
CHANGED
|
@@ -426,6 +426,10 @@ export class GrcObjectContainerComponent {
|
|
|
426
426
|
this.selectedAttributes =
|
|
427
427
|
this.OBJECT_TYPE.find((ele) => ele.value === this.grcType) ??
|
|
428
428
|
this.OBJECT_TYPE[0];
|
|
429
|
+
if (this.selectedAttributes?.attributes?.length > 0) {
|
|
430
|
+
this.grcForm.grcObjectType = true;
|
|
431
|
+
this.additionalOption.ATTRIBUTES = true;
|
|
432
|
+
}
|
|
429
433
|
}
|
|
430
434
|
checkIsDataLoaded() {
|
|
431
435
|
this.isLoading =
|
|
@@ -879,4 +883,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
879
883
|
'hideElementsFromMoreOptions',
|
|
880
884
|
], inputs: ['grcType', 'MODE', 'ID'], template: "<ng-container *ngIf=\"!showSmiley\">\n <div class=\"workflow-grc\">\n <div\n class=\"form-group-row\"\n [class.disabled]=\"openedPopup && dialogFields?.includes(openedPopup)\"\n *ngIf=\"!isLoading\"\n >\n <lib-text-field-icon\n [disabled]=\"openedPopup && dialogFields?.includes(openedPopup)\"\n [cdnLink]=\"CDN_LINK.grcType\"\n [isChecked]=\"true\"\n field-icons\n >\n </lib-text-field-icon>\n <div class=\"right\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\">\n GRC OBJECT TYPE<span class=\"required\">*</span>\n </label>\n <div class=\"select\">\n <tab-selector\n [selectedItem]=\"grcPayload.type\"\n [displayArray]=\"OBJECT_TYPE\"\n (onValueChanged)=\"changeAttributesType($event)\"\n ></tab-selector>\n </div>\n </div>\n </div>\n </div>\n <!-- Object name field -->\n <lib-text-field\n [disabled]=\"\n openedPopup &&\n openedPopup !== INPUT_TYPE.name &&\n dialogFields?.includes(openedPopup)\n \"\n [isEditMode]=\"grcPayload.name && openedPopup !== INPUT_TYPE.name\"\n [titleText]=\"ALL_TEXT?.grcObjectName\"\n [placeholderText]=\"ALL_TEXT?.grcObjectPlaceholder\"\n [(textValue)]=\"grcPayload.name\"\n (textValueChange)=\"onTextChange($event)\"\n (clickOutside)=\"onClickOutside()\"\n (onClick)=\"onPopupOpen(INPUT_TYPE.name)\"\n >\n <lib-text-field-icon\n [cdnLink]=\"CDN_LINK.grcObjectName\"\n [isChecked]=\"grcPayload.name\"\n field-icons\n >\n </lib-text-field-icon>\n <span class=\"required\" is-required>*</span>\n <lib-edit-mode\n *ngIf=\"grcPayload.name && openedPopup !== INPUT_TYPE.name\"\n [selectedData]=\"[grcPayload]\"\n [type]=\"'text'\"\n (isOnEdit)=\"onEdit(INPUT_TYPE.name)\"\n edit-mode\n ></lib-edit-mode>\n <p\n *ngIf=\"grcValidationCheck || isDuplicateName\"\n [appScrollInView]=\"true\"\n class=\"error-message\"\n error-message\n >\n {{ grcNameValidationError }}\n </p>\n <vcomply-editor\n [editorConfig]=\"EDITOR_CONFIG\"\n [(ngModel)]=\"grcPayload.description\"\n rich-text-editor\n ></vcomply-editor>\n </lib-text-field>\n\n <!-- Specify Owners -->\n <lib-text-field\n [disabled]=\"\n openedPopup &&\n openedPopup !== INPUT_TYPE.owner &&\n dialogFields?.includes(openedPopup)\n \"\n [active]=\"openedPopup && openedPopup == INPUT_TYPE.owner\"\n [isEditMode]=\"\n listObject.OWNER?.selectedData?.length &&\n openedPopup !== INPUT_TYPE.owner\n \"\n [titleText]=\"ALL_TEXT?.grcOwnersTitle\"\n [placeholderText]=\"ALL_TEXT?.grcOwnersPlaceholder\"\n [isReadOnly]=\"true\"\n (onClick)=\"onPopupOpen(INPUT_TYPE.owner)\"\n >\n <lib-text-field-icon\n [cdnLink]=\"CDN_LINK.grcOwners\"\n [isChecked]=\"listObject.OWNER?.selectedData?.length > 0\"\n field-icons\n >\n </lib-text-field-icon>\n <span class=\"required\" is-required>*</span>\n <lib-edit-mode\n *ngIf=\"\n listObject.OWNER?.selectedData?.length &&\n openedPopup !== INPUT_TYPE.owner\n \"\n [nonRemovableIds]=\"disabledIds\"\n [countColor]=\"'greenBg'\"\n [selectedData]=\"listObject.OWNER?.selectedData\"\n [type]=\"'list'\"\n (isOnEdit)=\"onEdit(INPUT_TYPE.owner)\"\n (onRemoveData)=\"onRemoveData($event, INPUT_TYPE.owner)\"\n edit-mode\n ></lib-edit-mode>\n </lib-text-field>\n\n <!-- Link Responsibility Centers (RC) -->\n <lib-text-field\n [disabled]=\"\n openedPopup &&\n openedPopup !== INPUT_TYPE.RC &&\n dialogFields?.includes(openedPopup)\n \"\n [active]=\"openedPopup && openedPopup == INPUT_TYPE.RC\"\n [isEditMode]=\"\n listObject.RC?.selectedData?.length && openedPopup !== INPUT_TYPE.RC\n \"\n [titleText]=\"ALL_TEXT?.grcRCTitle\"\n [placeholderText]=\"ALL_TEXT?.grcRCPlaceholder\"\n [isReadOnly]=\"true\"\n (onClick)=\"onPopupOpen(INPUT_TYPE.RC)\"\n >\n <lib-text-field-icon\n [cdnLink]=\"CDN_LINK.grcRC\"\n [isChecked]=\"listObject.RC?.selectedData?.length > 0\"\n field-icons\n >\n </lib-text-field-icon>\n <span class=\"required\" is-required>*</span>\n <lib-edit-mode\n *ngIf=\"\n listObject.RC?.selectedData?.length && openedPopup !== INPUT_TYPE.RC\n \"\n (onRemoveData)=\"onRemoveData($event, INPUT_TYPE.RC)\"\n [selectedData]=\"listObject.RC?.selectedData\"\n [type]=\"'list'\"\n (isOnEdit)=\"onEdit(INPUT_TYPE.RC)\"\n edit-mode\n ></lib-edit-mode>\n <p\n *ngIf=\"isFormSubmitted && !listObject.RC?.selectedData?.length\"\n [appScrollInView]=\"true\"\n class=\"error-message\"\n error-message\n >\n {{ VALIDATION_MESSAGE.grcRC }}\n </p>\n </lib-text-field>\n\n <!-- Link Program and Responsibility -->\n <lib-text-field\n [disabled]=\"\n openedPopup &&\n openedPopup !== INPUT_TYPE?.programResponsibility &&\n dialogFields?.includes(openedPopup)\n \"\n [active]=\"openedPopup && openedPopup == INPUT_TYPE?.programResponsibility\"\n *ngIf=\"grcForm?.linkProgram\"\n [titleText]=\"ALL_TEXT?.grcProgramResponsibilityTitle\"\n [placeholderText]=\"ALL_TEXT?.grcProgramResponsibilityPlaceholder\"\n [isReadOnly]=\"true\"\n (onClick)=\"onPopupOpen(INPUT_TYPE.programResponsibility)\"\n [isEditMode]=\"\n listObject?.PROGRAM_RESPONSIBILITY?.selectedData?.length &&\n openedPopup !== INPUT_TYPE?.programResponsibility\n \"\n >\n <lib-text-field-icon\n [cdnLink]=\"CDN_LINK.linkOthers\"\n [isChecked]=\"\n listObject.PROGRAM_RESPONSIBILITY?.selectedData?.length > 0\n \"\n field-icons\n >\n </lib-text-field-icon>\n\n <lib-edit-mode\n *ngIf=\"\n listObject.PROGRAM_RESPONSIBILITY?.selectedData?.length &&\n openedPopup !== INPUT_TYPE?.PROGRAM_RESPONSIBILITY\n \"\n (onRemoveData)=\"onRemoveData($event, INPUT_TYPE?.programResponsibility)\"\n [selectedData]=\"\n selectedResponsibility | uniqueResponsibilities : 'entireObject'\n \"\n [nameDisplayKey]=\"'ReportName'\"\n [type]=\"'list'\"\n (isOnEdit)=\"onEdit(INPUT_TYPE.programResponsibility)\"\n edit-mode\n >\n </lib-edit-mode>\n </lib-text-field>\n\n <!-- Link Risk Categories and Risk -->\n <lib-text-field\n [disabled]=\"\n openedPopup &&\n openedPopup !== INPUT_TYPE?.riskCategory &&\n dialogFields?.includes(openedPopup)\n \"\n [active]=\"openedPopup && openedPopup == INPUT_TYPE?.riskCategory\"\n *ngIf=\"grcForm?.linkRisk\"\n [titleText]=\"ALL_TEXT?.grcRiskCategoryTitle\"\n [placeholderText]=\"ALL_TEXT?.grcRiskCategoryPlaceholder\"\n [isReadOnly]=\"true\"\n (onClick)=\"onPopupOpen(INPUT_TYPE.riskCategory)\"\n [isEditMode]=\"\n listObject?.RISK_CATEGORY?.selectedData?.length &&\n openedPopup !== INPUT_TYPE?.riskCategory\n \"\n >\n <lib-text-field-icon\n [cdnLink]=\"CDN_LINK.linkGRC\"\n [isChecked]=\"listObject.RISK_CATEGORY?.selectedData?.length > 0\"\n field-icons\n >\n </lib-text-field-icon>\n\n <lib-edit-mode\n *ngIf=\"\n listObject.RISK_CATEGORY?.selectedData?.length &&\n openedPopup !== INPUT_TYPE.RISK_CATEGORY\n \"\n (onRemoveData)=\"onRemoveData($event, INPUT_TYPE?.riskCategory)\"\n [selectedData]=\"selectedRisks\"\n [type]=\"'list'\"\n (isOnEdit)=\"onEdit(INPUT_TYPE.riskCategory, data?.key)\"\n edit-mode\n >\n </lib-edit-mode>\n </lib-text-field>\n </div>\n\n <!-- Link Other GRC Objects -->\n <lib-text-field\n *ngIf=\"grcForm?.otherGrcObjects\"\n [disabled]=\"\n openedPopup &&\n openedPopup !== INPUT_TYPE?.otherGrcObjects &&\n dialogFields?.includes(openedPopup)\n \"\n [active]=\"openedPopup && openedPopup == INPUT_TYPE?.otherGrcObjects\"\n [titleText]=\"ALL_TEXT?.otherGRCObjectsTitle\"\n [placeholderText]=\"ALL_TEXT?.otherGRCObjectsPlaceholder\"\n [isReadOnly]=\"true\"\n (onClick)=\"onPopupOpen(INPUT_TYPE.otherGrcObjects)\"\n [isEditMode]=\"\n listObject?.OTHER_GRC_OBJECTS?.selectedData?.length &&\n openedPopup !== INPUT_TYPE?.otherGrcObjects\n \"\n >\n <lib-text-field-icon\n [cdnLink]=\"CDN_LINK.linkOthers\"\n [isChecked]=\"listObject?.OTHER_GRC_OBJECTS?.selectedData?.length > 0\"\n field-icons\n >\n </lib-text-field-icon>\n\n <lib-edit-mode\n *ngFor=\"let data of GRC_TYPE_ARRAY\"\n (onRemoveData)=\"onRemoveData($event, INPUT_TYPE?.otherGrcObjects)\"\n [selectedData]=\"grcDataWithTypes[data]\"\n [type]=\"'list'\"\n [isMultiple]=\"true\"\n (isOnEdit)=\"onEdit(INPUT_TYPE.otherGrcObjects, data)\"\n edit-mode\n >\n <div\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\n >\n {{ data | titlecase }}\n </div>\n </lib-edit-mode>\n </lib-text-field>\n <lib-attributes\n [disabled]=\"openedPopup && dialogFields?.includes(openedPopup)\"\n *ngIf=\"selectedAttributes?.attributes?.length\"\n [attributesInfo]=\"selectedAttributes\"\n [isFormSubmitted]=\"isFormSubmitted\"\n (onClick)=\"getAttributeSelection($event)\"\n ></lib-attributes>\n <lib-list-popup\n [openedPopup]=\"openedPopup\"\n [listObject]=\"listObject\"\n [tableCard]=\"otherGRCCard\"\n [otherGrcCardLoader]=\"grcTabLoader\"\n [GRCSelectedTab]=\"GRCSelectedTab\"\n [mode]=\"MODE\"\n [onEditGRCId]=\"ID\"\n (onSaveSelectedList)=\"onSaveSelectedList($event)\"\n (getOtherGRCObjects)=\"getOtherGRCObjects($event)\"\n ></lib-list-popup>\n</ng-container>\n<app-smiley-dialog-inline\n *ngIf=\"showSmiley\"\n [message]=\"smileyMessage\"\n [actionButtons]=\"actionButtons\"\n (action)=\"smileyActions($event)\"\n (closeSmiley)=\"closeSmiley($event)\"\n></app-smiley-dialog-inline>\n<app-loader-inline *ngIf=\"isLoading\"></app-loader-inline>\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 .chipName.full-width{max-width:25rem}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#fff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#fff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#fff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group ::ng-deep vcomply-editor{margin-top:8px;display:block;pointer-events:auto!important;z-index:1}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group ::ng-deep 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 ::ng-deep vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group ::ng-deep 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 ::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 .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group ::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 .vx-form-group ::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 .vx-form-group ::ng-deep vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group ::ng-deep vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#fff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item .info.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:212px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#fff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#fff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}::ng-deep dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}::ng-deep dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}::ng-deep dp-date-picker input:focus{outline:none}::ng-deep dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep dp-date-picker .dp-popup dp-day-calendar,::ng-deep dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep dp-date-picker .dp-popup dp-day-calendar button,::ng-deep dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}::ng-deep dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:#0000004d}::ng-deep .cdk-overlay-container{z-index:2147483002!important}::ng-deep .dp-popup{z-index:999;display:flex!important;align-items:center;justify-content:center;width:100vw;height:100vh;background:#0000004d!important;box-shadow:unset!important}::ng-deep .dp-popup dp-day-calendar{width:412px!important;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep .dp-popup dp-day-calendar,::ng-deep .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep .dp-popup dp-day-calendar button,::ng-deep .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep .dp-popup dp-day-calendar .dp-weekdays,::ng-deep .dp-popup dp-month-calendar .dp-weekdays,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}::ng-deep .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#fff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0% 1%,#747576 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#fff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0% 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0% 1%,#34aa44 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0% 1%,#1e5dd3 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0% 1%,#f6882f 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0% 1%,#7aa6f7 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}.wf-tooltip{pointer-events:none;position:absolute;max-width:300px;font-size:12px;text-align:left;color:#fff;padding:8px 12px;background:#000;border-radius:2px;z-index:-222;top:0;opacity:0;white-space:break-spaces;word-break:break-word}.wf-tooltip *{color:#fff!important}.wf-tooltip:empty{display:none!important}.wf-tooltip.white{box-shadow:0 2px 8px #1c5bd159;color:#747576;background:#fff;text-align:left}.wf-tooltip.white b{color:#747576!important}.wf-tooltip.animate-top{animation:animate-top .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-right{animation:animate-right .3s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-bottom{animation:animate-bottom .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-left{animation:animate-left .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-left.white:after{border-color:transparent transparent transparent #f1f1f1}.wf-tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #000000}.wf-tooltip-right.white:after{border-color:transparent #f1f1f1 transparent transparent}.wf-tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent #000000 transparent transparent}.wf-tooltip-bottom-right:after{bottom:100%;left:100%;margin-left:-20px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-right.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-bottom-left:after{bottom:100%;left:0;margin-left:10px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-left.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-top-left:after{top:100%;left:0;margin-left:10px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-left.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-top-right:after{top:100%;left:100%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-right.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip:after{content:\"\";position:absolute;border-style:solid}.wf-tooltip span.within{font-size:80%;display:block;width:100%}.wf-tooltip .small{display:block;font-size:10px}.wf-tooltip .within-box{background:#f1f1f1;border-radius:2px;color:#042e7d!important;font-size:9px;font-weight:500;text-transform:uppercase;padding:0 2px;margin-right:2px}.wf-tooltip-show{pointer-events:none;opacity:1;z-index:2147483001}\n"] }]
|
|
881
885
|
}], ctorParameters: function () { return [{ type: i1.GrcService }, { type: i2.ResponsibilityService }, { type: i3.AuthService }, { type: i4.UiKitService }, { type: i5.ComplianceCommonService }, { type: i6.OrganizationCommonService }, { type: i7.IframeService }, { type: i0.ChangeDetectorRef }]; } });
|
|
882
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JjLW9iamVjdC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvZ3JjLW9iamVjdC9ncmMtb2JqZWN0LWNvbnRhaW5lci9ncmMtb2JqZWN0LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy9ncmMtb2JqZWN0L2dyYy1vYmplY3QtY29udGFpbmVyL2dyYy1vYmplY3QtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxHQUliLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFVeEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRy9ELE9BQU8sRUFDTCxjQUFjLEVBQ2QsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixjQUFjLEVBQ2QsMkJBQTJCLEdBQzVCLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQjNFLE1BQU0sT0FBTywyQkFBMkI7SUFrRnRDLFlBQ1UsVUFBc0IsRUFDdEIsVUFBaUMsRUFDakMsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsdUJBQWdELEVBQ2hELHlCQUFvRCxFQUNwRCxhQUE0QixFQUM1QixpQkFBb0M7UUFQcEMsZUFBVSxHQUFWLFVB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O3dCQUNmLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLDZCQUE2QjtxQkFDOUIsVUFDTyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGSUVMRF9URVhUIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NvbnN0YW50cy9maWVsZC10ZXh0LmNvbnN0YW50JztcbmltcG9ydCB7IExJTktTIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NvbnN0YW50cy9jZG4tbGluay5jb25zdGFudCc7XG5pbXBvcnQgeyBWQUxJREFUSU9OX01FU1NBR0UgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzL3ZhbGlkYXRpb24tbWVzc2FnZS5jb25zdGFudCc7XG5pbXBvcnQge1xuICBBZGRHcmMsXG4gIEF0dHJpYnV0ZXMsXG4gIEJ1dHRvbixcbiAgR1JDVHlwZSxcbiAgSW5wdXRUeXBlLFxuICBMaXN0T2JqZWN0LFxuICBPcGVuZWRQb3B1cCxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvYWRkLWdyYyc7XG5pbXBvcnQgeyBHcmNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2dyYy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgR1JDX1RZUEVfQVJSQVksXG4gIE9USEVSX0dSQ19DQVJELFxuICBPVEhFUl9HUkNfVEFCX0lOREVYLFxuICBTTUlMRVlfQlVUVE9OUyxcbiAgVU5DQVRFR09SSVpFRF9MSU5LX0NBVEVHT1JZLFxufSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzL2dyY09iamVjdC5jb25zdGFudCc7XG5pbXBvcnQgeyBTVUNDRVNTX01FU1NBR0UgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzL21lc3NhZ2UuY29udHN0YW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVWlLaXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvdWkta2l0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcGxpYW5jZUNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9jb21tb24td29ya2Zsb3ctc2VydmljZXMvY29tcGxpYW5jZS1jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBPcmdhbml6YXRpb25Db21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvY29tbW9uLXdvcmtmbG93LXNlcnZpY2VzL29yZ2FuaXphdGlvbi1jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZnJhbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaWZyYW1lLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZ3JjLW9iamVjdC1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JjLW9iamVjdC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmMtb2JqZWN0LWNvbnRhaW5lci5jb21wb25lbnQubGVzcycsICcuLi8uLi8uLi9mb3Jtcy5sZXNzJ10sXG4gIG91dHB1dHM6IFtcbiAgICAncG9wdWxhdGVPcHRpb24nLFxuICAgICdwaWNrZXJDaGFuZ2VkJyxcbiAgICAnY2xvc2VXb3JrZmxvdycsXG4gICAgJ2Rpc2Nvbm5lY3RSZWZyZXNoJyxcbiAgICAncmVzZXRGb3JtJyxcbiAgICAnaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zJyxcbiAgXSxcbiAgaW5wdXRzOiBbJ2dyY1R5cGUnLCAnTU9ERScsICdJRCddLFxufSlcbmV4cG9ydCBjbGFzcyBHcmNPYmplY3RDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIE1PREU6ICdDUkVBVEUnIHwgJ0VESVQnID0gJ0NSRUFURSc7XG4gIElEOiBzdHJpbmcgPSAnJztcbiAgQUxMX1RFWFQgPSBGSUVMRF9URVhUO1xuICBDRE5fTElOSyA9IExJTktTO1xuICBWQUxJREFUSU9OX01FU1NBR0UgPSBWQUxJREFUSU9OX01FU1NBR0U7XG4gIEdSQ19UWVBFX0FSUkFZID0gR1JDX1RZUEVfQVJSQVk7XG4gIEVESVRPUl9DT05GSUcgPSBHcmNTZXJ2aWNlLkVESVRPUl9DT05GSUc7XG4gIG90aGVyR1JDQ2FyZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoT1RIRVJfR1JDX0NBUkQpKTtcbiAgT0JKRUNUX1RZUEUhOiBHUkNUeXBlW107XG4gIExJU1RfUE9QVVA6IEFycmF5PHN0cmluZz4gPSBbJ1JDJ107XG4gIHNtaWxleU1lc3NhZ2U6IHN0cmluZyA9IFNVQ0NFU1NfTUVTU0FHRS5BRERfR1JDX09CSkVDVDtcbiAgSU5QVVRfVFlQRTogSW5wdXRUeXBlID0ge1xuICAgIG5hbWU6ICdOQU1FJyxcbiAgICBvd25lcjogJ09XTkVSJyxcbiAgICBSQzogJ1JDJyxcbiAgICByaXNrQ2F0ZWdvcnk6ICdSSVNLX0NBVEVHT1JZJyxcbiAgICBvdGhlckdyY09iamVjdHM6ICdPVEhFUl9HUkNfT0JKRUNUUycsXG4gICAgcHJvZ3JhbVJlc3BvbnNpYmlsaXR5OiAnUFJPR1JBTV9SRVNQT05TSUJJTElUWScsXG4gIH07XG4gIE9SSUdJTkFMX0dSQ19BVFRSSUJVVEVTOiBhbnk7IC8vIERvbid0IGNoYW5nZSB0aGUgdmFsdWUgb25jZSBpdCBpcyBhc3NpZ25lZFxuICBkaWFsb2dGaWVsZHM6IEFycmF5PHN0cmluZz4gPSBbXG4gICAgJ1JDJyxcbiAgICAnT1dORVInLFxuICAgICdPVEhFUl9HUkNfT0JKRUNUUycsXG4gICAgJ1JJU0tfQ0FURUdPUlknLFxuICAgICdBVFRSSUJVVEVTJyxcbiAgICAnUFJPR1JBTV9SRVNQT05TSUJJTElUWScsXG4gIF07XG4gIHNjcm9sbFRvQm90dG9tID0gZmFsc2U7XG4gIGdyY1R5cGU6IDAgfCAxIHwgMiB8IDMgPSAwO1xuICBkaXNhYmxlZElkczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuICBvcGVuZWRQb3B1cDogT3BlbmVkUG9wdXBbJ3R5cGUnXSA9ICcnO1xuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICBhZGRpdGlvbmFsT3B0aW9uOiBhbnkgPSB7XG4gICAgQVRUUklCVVRFUzogZmFsc2UsXG4gICAgTElOS19QUk9HUkFNOiBmYWxzZSxcbiAgICBMSU5LX1JJU0tfQ0FURUdPUklFU19SSVNLUzogZmFsc2UsXG4gICAgT1RIRVJfR1JDX09CSkVDVFM6IGZhbHNlLFxuICB9O1xuICBncmNGb3JtOiBhbnkgPSB7XG4gICAgZ3JjT2JqZWN0VHlwZTogZmFsc2UsXG4gICAgbGlua1Byb2dyYW06IGZhbHNlLFxuICAgIGxpbmtSaXNrOiBmYWxzZSxcbiAgICBvdGhlckdyY09iamVjdHM6IGZhbHNlLFxuICB9O1xuICBncmNQYXlsb2FkITogQWRkR3JjO1xuICBsaXN0T2JqZWN0ITogTGlzdE9iamVjdDtcbiAgc2VsZWN0ZWRBdHRyaWJ1dGVzITogR1JDVHlwZTtcbiAgc2hvd1NtaWxleTogYm9vbGVhbiA9IGZhbHNlO1xuICBhY3Rpb25CdXR0b25zOiBCdXR0b25bXSA9IFNNSUxFWV9CVVRUT05TO1xuICBncmNEYXRhV2l0aFR5cGVzOiBhbnkgPSB7XG4gICAgYXNzZXRzOiBbXSxcbiAgICBwcm9jZXNzZXM6IFtdLFxuICAgIHZlbmRvcnM6IFtdLFxuICAgIGludmVudG9yeTogW10sXG4gIH07XG4gIEdSQ1NlbGVjdGVkVGFiOiBudW1iZXIgPSAwO1xuICBvdGhlckdSQ1RhYkluZGV4ID0gT1RIRVJfR1JDX1RBQl9JTkRFWDtcbiAgaXNGb3JtU3VibWl0dGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGdyY05hbWVWYWxpZGF0aW9uRXJyb3I6IHN0cmluZyA9ICcnO1xuICBpc0R1cGxpY2F0ZU5hbWU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGV0YWlsc0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBzZWxlY3RlZENhdGVnb3JpZXM6IGFueVtdID0gW107XG4gIHNlbGVjdGVkUmlza3M6IGFueVtdID0gW107XG4gIGFkZGVkR1JDOiBhbnk7XG4gIG90aGVyR1JDU2VhcmNoOiBzdHJpbmcgPSAnJztcbiAgZ3JjVGFiTG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkUHJvZ3JhbTogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eTogYW55W10gPSBbXTtcbiAgc3VibWl0TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcG9wdWxhdGVPcHRpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwaWNrZXJDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgY2xvc2VXb3JrZmxvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGRpc2Nvbm5lY3RSZWZyZXNoOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcmVzZXRGb3JtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBvdGhlckdSQ1N1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgaGlkZU1vcmVPcHRpb246IGFueSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZ3JjU2VydmljZTogR3JjU2VydmljZSxcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IFJlc3BvbnNpYmlsaXR5U2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIHVpS2l0U2VydmljZTogVWlLaXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29tcGxpYW5jZUNvbW1vblNlcnZpY2U6IENvbXBsaWFuY2VDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgb3JnYW5pemF0aW9uQ29tbW9uU2VydmljZTogT3JnYW5pemF0aW9uQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIGlmcmFtZVNlcnZpY2U6IElmcmFtZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0R1JDRm9ybSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5ncmNQYXlsb2FkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmdyY1NlcnZpY2UuR1JDX1BBWUxPQUQpKTtcbiAgICB0aGlzLmdyY1BheWxvYWQudHlwZSA9IHRoaXMuZ3JjVHlwZTtcbiAgICB0aGlzLmxpc3RPYmplY3QgPSB0aGlzLmdyY1NlcnZpY2UuTElTVF9PQkpFQ1Q7XG4gICAgdGhpcy5faW5pdGlhdGVBUEkoKTtcbiAgICB0aGlzLmdldFN1YnNjcmlwdGlvbkRldGFpbHMoKTtcbiAgfVxuXG4gIGdldFN1YnNjcmlwdGlvbkRldGFpbHMoKSB7XG4gICAgdGhpcy5vcmdhbml6YXRpb25Db21tb25TZXJ2aWNlPy5nZXRTdWJzY3JpcHRpb25EZXRhaWxzSW5mbygpPy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmICghcmVzWzBdPy5yaXNrX2ZsYWcpIHtcbiAgICAgICAgICB0aGlzLmhpZGVNb3JlT3B0aW9uLnB1c2goJ0xJTktfUklTS19DQVRFR09SSUVTX1JJU0tTJyk7XG4gICAgICAgICAgdGhpcy5oaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMuZW1pdCh0aGlzLmhpZGVNb3JlT3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcG9wdWxhdGVPcHRpb25hbEZpZWxkcygpIHtcbiAgICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5hZGRpdGlvbmFsT3B0aW9uKSkge1xuICAgICAgaWYgKHRoaXMuYWRkaXRpb25hbE9wdGlvbltrZXldID09PSB0cnVlKSB7XG4gICAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChhY3RpdmF0ZWRPcHRpb25zKTtcbiAgfVxuXG4gIC8vVE9ETzogaW1wbGVtZW50IHRoaXNcbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xuICAgIHN3aXRjaCAoZXZlbnQ/LmNvZGUpIHtcbiAgICAgIGNhc2UgJ0FUVFJJQlVURVMnOlxuICAgICAgICB0aGlzLmdyY0Zvcm0uZ3JjT2JqZWN0VHlwZSA9IGV2ZW50Py5jaGVja2VkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0xJTktfUFJPR1JBTSc6XG4gICAgICAgIHRoaXMuZ3JjRm9ybS5saW5rUHJvZ3JhbSA9IGV2ZW50Py5jaGVja2VkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0xJTktfUklTS19DQVRFR09SSUVTX1JJU0tTJzpcbiAgICAgICAgdGhpcy5ncmNGb3JtLmxpbmtSaXNrID0gZXZlbnQ/LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnT1RIRVJfR1JDX09CSkVDVFMnOlxuICAgICAgICB0aGlzLmdyY0Zvcm0ub3RoZXJHcmNPYmplY3RzID0gZXZlbnQ/LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gdHJ1ZTtcbiAgfVxuXG4gIC8vVE9ETzogaW1wbGVtZW50IHRoaXNcbiAgb25UZXh0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmdyY1BheWxvYWQubmFtZSA9IGV2ZW50LnRyaW0oKTtcbiAgICB0aGlzLm9wZW5lZFBvcHVwID0gJyc7XG4gICAgdGhpcy5ncmNOYW1lVmFsaWRhdGlvbkVycm9yID0gJyc7XG4gICAgdGhpcy5pc0R1cGxpY2F0ZU5hbWUgPSBmYWxzZTtcbiAgfVxuXG4gIC8vVE9ETzogaW1wbGVtZW50IHRoaXNcbiAgb25Qb3B1cE9wZW4odHlwZTogT3BlbmVkUG9wdXBbJ3R5cGUnXSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnT1dORVInOlxuICAgICAgY2FzZSAnUkMnOlxuICAgICAgICB0aGlzLm9wZW5lZFBvcHVwID0gdHlwZTtcbiAgICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnT1RIRVJfR1JDX09CSkVDVFMnOlxuICAgICAgICB0aGlzLm9wZW5lZFBvcHVwID0gdHlwZTtcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyByY19pZHM6ICcnIH0pO1xuICAgICAgICB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoeyByY19pZHM6ICcnIH0pO1xuICAgICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdSSVNLX0NBVEVHT1JZJzpcbiAgICAgICAgdGhpcy5vcGVuZWRQb3B1cCA9IHR5cGU7XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UucHJldmlld1BhbmVsLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1BST0dSQU1fUkVTUE9OU0lCSUxJVFknOlxuICAgICAgICB0aGlzLm9wZW5lZFBvcHVwID0gdHlwZTtcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5wcmV2aWV3UGFuZWwubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG4gIH1cblxuICBvblNhdmVTZWxlY3RlZExpc3QoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubGlzdE9iamVjdCA9IGV2ZW50O1xuICAgIGlmICh0aGlzLm9wZW5lZFBvcHVwID09PSAnT1RIRVJfR1JDX09CSkVDVFMnKSB7XG4gICAgICB0aGlzLnNldE90aGVyR1JDVHlwZXNGb3JtYXRlKCk7XG4gICAgfVxuICAgIHRoaXMuc2V0TGlzdFBheWxvYWQodGhpcy5vcGVuZWRQb3B1cCk7XG4gICAgdGhpcy5vcGVuZWRQb3B1cCA9ICcnO1xuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnByZXZpZXdQYW5lbC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIGdldEF0dHJpYnV0ZVNlbGVjdGlvbihldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLm9wZW5lZFBvcHVwID0gJyc7XG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuZWRQb3B1cCA9ICcnO1xuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xuICAgICAgdGhpcy5hdXRoU2VydmljZS5wcmV2aWV3UGFuZWwubmV4dChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0TGlzdFBheWxvYWQodHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGUgPT09ICdPV05FUicpIHtcbiAgICAgIHRoaXMuZ3JjUGF5bG9hZC5vd25lcnMgPSB0aGlzLmxpc3RPYmplY3QuT1dORVIuc2VsZWN0ZWREYXRhLm1hcChcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS5tZW1iZXJfaWRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdSQycpIHtcbiAgICAgIGxldCBwcmV2aW91c1JDSWRzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmdyY1BheWxvYWQucmNfaWRzKSk7XG4gICAgICB0aGlzLmdyY1BheWxvYWQucmNfaWRzID0gdGhpcy5saXN0T2JqZWN0LlJDLnNlbGVjdGVkRGF0YS5tYXAoXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/Ll9pZFxuICAgICAgKTtcbiAgICAgIGlmIChcbiAgICAgICAgIXByZXZpb3VzUkNJZHMuZXZlcnkoKGlkOiBhbnkpID0+IHRoaXMuZ3JjUGF5bG9hZC5yY19pZHMuaW5jbHVkZXMoaWQpKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMucmVzZXREYXRhT25SQ0NoYW5nZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ09USEVSX0dSQ19PQkpFQ1RTJykge1xuICAgICAgdGhpcy5ncmNQYXlsb2FkLmxpbmtlZF9HUkNfaWRzID1cbiAgICAgICAgdGhpcy5saXN0T2JqZWN0Lk9USEVSX0dSQ19PQkpFQ1RTLnNlbGVjdGVkRGF0YS5tYXAoXG4gICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS5faWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdSSVNLX0NBVEVHT1JZJykge1xuICAgICAgdGhpcy5ncmNQYXlsb2FkLnJpc2tfY2F0ZWdvcnlfaWRzID0gdGhpcy5nZXRSaXNrQ2F0ZWdvcnlQYXlsb2FkKFxuICAgICAgICB0aGlzLmxpc3RPYmplY3Q/LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdQUk9HUkFNX1JFU1BPTlNJQklMSVRZJykge1xuICAgICAgdGhpcy5ncmNQYXlsb2FkLnByb2dyYW1fY2F0ZWdvcnlfaWRzID1cbiAgICAgICAgdGhpcy5nZXRQcm9ncmFtUmVzcG9uc2liaWxpdHlQYXlsb2FkKFxuICAgICAgICAgIHRoaXMubGlzdE9iamVjdD8uUFJPR1JBTV9SRVNQT05TSUJJTElUWT8uc2VsZWN0ZWREYXRhXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgb25DbGlja091dHNpZGUoKSB7XG4gICAgLy90aGlzLm9wZW5lZFBvcHVwID0gJyc7XG4gIH1cblxuICBvbkVkaXQoZXZlbnQ6IGFueSwgc3ViVHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5vcGVuZWRQb3B1cCA9IGV2ZW50O1xuICAgIGlmIChldmVudCA9PT0gJ09USEVSX0dSQ19PQkpFQ1RTJykge1xuICAgICAgdGhpcy5HUkNTZWxlY3RlZFRhYiA9IHRoaXMub3RoZXJHUkNUYWJJbmRleFtzdWJUeXBlXSA/PyAwO1xuICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyB0eXBlOiB0aGlzLkdSQ1NlbGVjdGVkVGFiLCByY19pZHM6ICcnIH0pO1xuICAgICAgdGhpcy5nZXRPdGhlckdSQ1RhYkNvdW50KHsgcmNfaWRzOiAnJyB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuTElTVF9QT1BVUC5pbmNsdWRlcyhldmVudCkpIHtcbiAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xuICAgICAgLy8gdGhpcy5hdXRoU2VydmljZS5wcmV2aWV3UGFuZWwubmV4dCh0cnVlKTtcbiAgICB9XG4gICAgaWYgKGV2ZW50ID09PSAnUklTS19DQVRFR09SWScgfHwgZXZlbnQgPT09ICdQUk9HUkFNX1JFU1BPTlNJQklMSVRZJykge1xuICAgICAgdGhpcy5hdXRoU2VydmljZS5wcmV2aWV3UGFuZWwubmV4dCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBvblJlbW92ZURhdGEoXG4gICAgZXZlbnQ6IGFueSxcbiAgICB0eXBlOlxuICAgICAgfCAnUkMnXG4gICAgICB8ICdPV05FUidcbiAgICAgIHwgJ09USEVSX0dSQ19PQkpFQ1RTJ1xuICAgICAgfCAnUklTS19DQVRFR09SWSdcbiAgICAgIHwgJ1BST0dSQU1fUkVTUE9OU0lCSUxJVFknXG4gICkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnUkMnOlxuICAgICAgICB0aGlzLmxpc3RPYmplY3RbdHlwZV0uc2VsZWN0ZWREYXRhLnNwbGljZShldmVudC5pbmRleCwgMSk7XG4gICAgICAgIHRoaXMucmVzZXREYXRhT25SQ0NoYW5nZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ09XTkVSJzpcbiAgICAgICAgdGhpcy5saXN0T2JqZWN0W3R5cGVdLnNlbGVjdGVkRGF0YS5zcGxpY2UoZXZlbnQuaW5kZXgsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ09USEVSX0dSQ19PQkpFQ1RTJzpcbiAgICAgICAgdGhpcy5yZW1vdmVPdGhlckdSQ09iamVjdHMoZXZlbnQ/LmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1JJU0tfQ0FURUdPUlknOlxuICAgICAgICB0aGlzLmRlbGV0ZVNlbGVjdGVkUmlzayhldmVudC5kYXRhPy5DYXRlZ29yeUlkc1swXSwgZXZlbnQ/LmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1BST0dSQU1fUkVTUE9OU0lCSUxJVFknOlxuICAgICAgICB0aGlzLmRlbGV0ZVNlbGVjdGVkUmVzcG9uc2liaWxpdHkoZXZlbnQ/LmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5zZXRMaXN0UGF5bG9hZCh0eXBlKTtcbiAgfVxuXG4gIGNoYW5nZUF0dHJpYnV0ZXNUeXBlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmdyY1R5cGUgPSBldmVudDtcbiAgICB0aGlzLmdyY1BheWxvYWQudHlwZSA9IGV2ZW50O1xuICAgIHRoaXMuc2V0RGVmYXVsdEdSQ09iamVjdFR5cGUoKTtcblxuICAgIC8vIFNldCBncmNGb3JtLmdyY09iamVjdFR5cGUgYmFzZWQgb24gd2hldGhlciBhdHRyaWJ1dGVzIGFyZSBhdmFpbGFibGVcbiAgICBpZiAodGhpcy5zZWxlY3RlZEF0dHJpYnV0ZXM/LmF0dHJpYnV0ZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZ3JjRm9ybS5ncmNPYmplY3RUeXBlID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BVFRSSUJVVEVTID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ncmNGb3JtLmdyY09iamVjdFR5cGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BVFRSSUJVVEVTID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gTWV0aG9kIHRvIGV4cGxpY2l0bHkgdXBkYXRlIHRoZSB0YWIgc2VsZWN0b3IgaW4gZWRpdCBtb2RlXG4gIHVwZGF0ZVRhYlNlbGVjdG9yKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuTU9ERSA9PT0gJ0VESVQnICYmXG4gICAgICB0aGlzLmdyY1BheWxvYWQudHlwZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLk9CSkVDVF9UWVBFICYmXG4gICAgICB0aGlzLk9CSkVDVF9UWVBFLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMuZ3JjVHlwZSA9IHRoaXMuZ3JjUGF5bG9hZC50eXBlO1xuICAgICAgdGhpcy5zZXREZWZhdWx0R1JDT2JqZWN0VHlwZSgpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdGlhdGVBUEkoKSB7XG4gICAgaWYgKHRoaXMuTU9ERSA9PT0gJ0VESVQnKSB7XG4gICAgICB0aGlzLmdldEdSQ09iamVjdERldGFpbHModGhpcy5JRCk7XG4gICAgICB0aGlzLnNtaWxleU1lc3NhZ2UgPSBTVUNDRVNTX01FU1NBR0UuVVBEQVRFX0dSQ19PQkpFQ1Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGV0YWlsc0xvYWRlciA9IGZhbHNlO1xuICAgICAgdGhpcy5fZ2V0R1JDT2JqZWN0VHlwZSgpO1xuICAgICAgdGhpcy5fZ2V0T3duZXJMaXN0KCk7XG4gICAgICB0aGlzLl9nZXRSQ0xpc3QoKTtcbiAgICAgIHRoaXMuZ2V0T3RoZXJHUkNPYmplY3RzKHsgcmNfaWRzOiAnJyB9KTtcbiAgICAgIC8vIHRoaXMuZ2V0T3RoZXJHUkNUYWJDb3VudCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldE93bmVyTGlzdCgpIHtcbiAgICB0aGlzLmxpc3RPYmplY3QuT1dORVIuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmFwaVNlcnZpY2UuZ2V0R1JDT3duZXJMaXN0KCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICh1c2VyTGlzdDogYW55KSA9PiB0aGlzLm1hcFVzZXJMaXN0KHVzZXJMaXN0KSxcbiAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge30sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIGBtYXBVc2VyTGlzdGAgbWFwcyB0aGUgdXNlciBsaXN0IGRhdGEgYW5kIHBlcmZvcm1zIHNvbWUgYWRkaXRpb25hbCBvcGVyYXRpb25zIG9uIGVhY2hcbiAgICogdXNlciBvYmplY3QuXG4gICAqIEBwYXJhbSB7YW55fSB1c2VyTGlzdCAtIFRoZSBgdXNlckxpc3RgIHBhcmFtZXRlciBpcyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIGBkYXRhYCBwcm9wZXJ0eS4gVGhlXG4gICAqIGBkYXRhYCBwcm9wZXJ0eSBpcyBhbiBhcnJheSBvZiB1c2VyIG9iamVjdHMuXG4gICAqL1xuICBwcml2YXRlIG1hcFVzZXJMaXN0KHVzZXJMaXN0OiBhbnkpIHtcbiAgICB0aGlzLmxpc3RPYmplY3RbJ09XTkVSJ11bJ2RhdGEnXSA9IHt9O1xuICAgIHRoaXMubGlzdE9iamVjdFsnT1dORVInXS5zZWxlY3RlZERhdGEgPSBbXTtcbiAgICB0aGlzLmRpc2FibGVkSWRzID0gW107XG4gICAgLy8gTWFwIHdpbGwgZ2V0IHJlbW92ZSBvbmNlIEFQSSBjaGFuZ2VcbiAgICB0aGlzLmxpc3RPYmplY3RbJ09XTkVSJ11bJ2RhdGEnXVsnYXNzaWduZWVzTGlzdCddID0gdXNlckxpc3Q/LmRhdGEubWFwKFxuICAgICAgKHVzZXI6IGFueSkgPT4ge1xuICAgICAgICB1c2VyLml0ZW1fbmFtZSA9IHVzZXIubWVtYmVyX25hbWU7XG4gICAgICAgIHVzZXIuZW1wbG95ZWVfbmFtZSA9IHVzZXIubWVtYmVyX25hbWU7XG4gICAgICAgIHVzZXIubXlfbWVtYmVyX2lkID0gdXNlci5tZW1iZXJfaWQ7XG4gICAgICAgIHVzZXIuaXRlbV9pZCA9IHVzZXIubWVtYmVyX2lkO1xuICAgICAgICBpZiAoWydBRE1JTicsICdLRVlfQURNSU4nXS5pbmNsdWRlcyh1c2VyLnVzZXJfcm9sZSkpIHtcbiAgICAgICAgICB0aGlzLmRpc2FibGVkSWRzLnB1c2godXNlci5tZW1iZXJfaWQpO1xuICAgICAgICAgIHRoaXMubGlzdE9iamVjdFsnT1dORVInXS5zZWxlY3RlZERhdGEucHVzaCh1c2VyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXNlcjtcbiAgICAgIH1cbiAgICApO1xuICAgIGlmICh0aGlzLk1PREUgPT09ICdFRElUJykge1xuICAgICAgdGhpcy5saXN0T2JqZWN0Lk9XTkVSLnNlbGVjdGVkRGF0YSA9IHRoaXMubGlzdE9iamVjdFsnT1dORVInXVsnZGF0YSddW1xuICAgICAgICAnYXNzaWduZWVzTGlzdCdcbiAgICAgIF0uZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgbWVtYmVySWQgPSBpdGVtPy5tZW1iZXJfaWQ7XG4gICAgICAgIGNvbnN0IG1lbWJlcklkQXNOdW1iZXIgPVxuICAgICAgICAgIHR5cGVvZiBtZW1iZXJJZCA9PT0gJ3N0cmluZycgPyBOdW1iZXIobWVtYmVySWQpIDogbWVtYmVySWQ7XG4gICAgICAgIHJldHVybiB0aGlzLmdyY1BheWxvYWQub3duZXJzLmluY2x1ZGVzKG1lbWJlcklkQXNOdW1iZXIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmxpc3RPYmplY3RbJ09XTkVSJ10uZGlzYWJsZWRJZHMgPSBBcnJheS5mcm9tKFxuICAgICAgICBuZXcgU2V0KHRoaXMuZGlzYWJsZWRJZHMpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlZmF1bHRTZWxlY3RlZFVzZXIoKTtcbiAgICB9XG4gICAgdGhpcy5saXN0T2JqZWN0Lk9XTkVSLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuY2hlY2tJc0RhdGFMb2FkZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gYGRlZmF1bHRTZWxlY3RlZFVzZXIoKWAgc2V0cyB0aGUgZGVmYXVsdCBzZWxlY3RlZCB1c2VyIGJhc2VkIG9uIHRoZSBjdXJyZW50IHVzZXIncyByb2xlXG4gICAqIGFuZCBhc3NpZ25zIGl0IHRvIHRoZSBgT1dORVJgIGxpc3Qgb2JqZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSBkZWZhdWx0U2VsZWN0ZWRVc2VyKCkge1xuICAgIGlmICghdGhpcy5hdXRoU2VydmljZS5pc0FkbWluKCkgJiYgIXRoaXMuYXV0aFNlcnZpY2UuaXNLZXlBZG1pbigpKSB7XG4gICAgICBjb25zdCBVU0VSID0gdGhpcy5saXN0T2JqZWN0WydPV05FUiddWydkYXRhJ11bJ2Fzc2lnbmVlc0xpc3QnXS5maW5kKFxuICAgICAgICAodXNlcjogYW55KSA9PiB1c2VyLm1lbWJlcl9pZCA9PT0gdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpXG4gICAgICApO1xuICAgICAgdGhpcy5saXN0T2JqZWN0WydPV05FUiddLnNlbGVjdGVkRGF0YS5wdXNoKFVTRVIpO1xuICAgIH1cbiAgICB0aGlzLmxpc3RPYmplY3RbJ09XTkVSJ11bJ2Rpc2FibGVkSWRzJ10gPSBbLi4udGhpcy5kaXNhYmxlZElkc107XG4gICAgdGhpcy5ncmNQYXlsb2FkLm93bmVycyA9IHRoaXMubGlzdE9iamVjdFsnT1dORVInXS5zZWxlY3RlZERhdGEubWFwKFxuICAgICAgKHVzZXI6IGFueSkgPT4gdXNlci5tZW1iZXJfaWRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UkNMaXN0KCkge1xuICAgIHRoaXMubGlzdE9iamVjdC5SQy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuY29tcGxpYW5jZUNvbW1vblNlcnZpY2U/LmdldFJjTGlzdEluZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5saXN0T2JqZWN0WydSQyddWydkYXRhJ10gPSBkYXRhO1xuICAgICAgICB0aGlzLmxpc3RPYmplY3QuUkMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLk1PREUgPT09ICdFRElUJykge1xuICAgICAgICAgIHRoaXMubGlzdE9iamVjdC5SQy5zZWxlY3RlZERhdGEgPSBkYXRhPy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgIHRoaXMuZ3JjUGF5bG9hZD8ucmNfaWRzPy5pbmNsdWRlcyhpdGVtPy5faWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoZWNrSXNEYXRhTG9hZGVkKCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0R1JDT2JqZWN0VHlwZSgpIHtcbiAgICB0aGlzLmFwaVNlcnZpY2UuZ2V0T2JqZWN0VHlwZSgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogR1JDVHlwZVtdKSA9PiB7XG4gICAgICAgIC8vIHRoaXMuc2V0TGlua1Jpc2tUYWIoZGF0YSk7XG4gICAgICAgIGNvbnN0IE9CSkVDVF9MQUJFTDogYW55ID0ge1xuICAgICAgICAgIEFTU0VUUzogJ0Fzc2V0JyxcbiAgICAgICAgICBQUk9DRVNTRVM6ICdQcm9jZXNzJyxcbiAgICAgICAgICBWRU5ET1JTOiAnVmVuZG9yJyxcbiAgICAgICAgICBJTlZFTlRPUlk6ICdJbnZlbnRvcnknLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLk9CSkVDVF9UWVBFID0gZGF0YS5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgIGl0ZW0udmFsdWUgPSBpbmRleDtcbiAgICAgICAgICBpdGVtLmxhYmVsID0gT0JKRUNUX0xBQkVMW2l0ZW0/LmxhYmVsPy50b1VwcGVyQ2FzZSgpXSA/PyBpdGVtPy5sYWJlbDtcbiAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5PUklHSU5BTF9HUkNfQVRUUklCVVRFUyA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5PQkpFQ1RfVFlQRSlcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGhpcy5NT0RFID09PSAnRURJVCcpIHtcbiAgICAgICAgICB0aGlzLk9CSkVDVF9UWVBFW3RoaXMuZ3JjVHlwZV0uYXR0cmlidXRlcyA9XG4gICAgICAgICAgICB0aGlzLmdyY1BheWxvYWQuYXR0cmlidXRlcztcblxuICAgICAgICAgIC8vIEFsd2F5cyBzZXQgZ3JjT2JqZWN0VHlwZSB0byB0cnVlIGlmIHRoZXJlIGFyZSBhdHRyaWJ1dGVzIGF2YWlsYWJsZVxuICAgICAgICAgIGlmICh0aGlzLk9CSkVDVF9UWVBFW3RoaXMuZ3JjVHlwZV0uYXR0cmlidXRlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncmNGb3JtLmdyY09iamVjdFR5cGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFUVFJJQlVURVMgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEdSQ09iamVjdFR5cGUoKTtcbiAgICAgICAgdGhpcy5jaGVja0lzRGF0YUxvYWRlZCgpO1xuXG4gICAgICAgIC8vIEZvcmNlIGNoYW5nZSBkZXRlY3Rpb24gZm9yIHRhYi1zZWxlY3RvciBjb21wb25lbnQgaW4gZWRpdCBtb2RlXG4gICAgICAgIGlmICh0aGlzLk1PREUgPT09ICdFRElUJykge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVUYWJTZWxlY3RvcigpO1xuICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHt9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREZWZhdWx0R1JDT2JqZWN0VHlwZSgpIHtcbiAgICB0aGlzLnNlbGVjdGVkQXR0cmlidXRlcyA9XG4gICAgICB0aGlzLk9CSkVDVF9UWVBFLmZpbmQoKGVsZTogYW55KSA9PiBlbGUudmFsdWUgPT09IHRoaXMuZ3JjVHlwZSkgPz9cbiAgICAgIHRoaXMuT0JKRUNUX1RZUEVbMF07XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSXNEYXRhTG9hZGVkKCkge1xuICAgIHRoaXMuaXNMb2FkaW5nID1cbiAgICAgIHRoaXMubGlzdE9iamVjdC5PV05FUi5pc0xvYWRpbmcgfHxcbiAgICAgIHRoaXMubGlzdE9iamVjdC5SQy5pc0xvYWRpbmcgfHxcbiAgICAgIHRoaXMubGlzdE9iamVjdC5PVEhFUl9HUkNfT0JKRUNUUy5pc0xvYWRpbmcgfHxcbiAgICAgICh0aGlzLk1PREUgPT09ICdFRElUJyAmJiB0aGlzLmRldGFpbHNMb2FkZXIpO1xuICB9XG5cbiAgZ2V0T3RoZXJHUkNPYmplY3RzKGV2ZW50PzogYW55KSB7XG4gICAgaWYgKHRoaXMub3RoZXJHUkNTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMub3RoZXJHUkNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKGV2ZW50Py5zZWFyY2hTdHJpbmcgJiYgdGhpcy5vdGhlckdSQ1NlYXJjaCAhPT0gZXZlbnQ/LnNlYXJjaFN0cmluZykge1xuICAgICAgdGhpcy5nZXRPdGhlckdSQ1RhYkNvdW50KGV2ZW50KTtcbiAgICB9XG4gICAgdGhpcy5vdGhlckdSQ1NlYXJjaCA9IGV2ZW50Py5zZWFyY2hTdHJpbmcgPz8gJyc7XG4gICAgdGhpcy5saXN0T2JqZWN0Lk9USEVSX0dSQ19PQkpFQ1RTLmlzTG9hZGluZyA9IHRydWU7XG4gICAgLy8gZXZlbnRbJ3JjX2lkcyddID0gdGhpcy5saXN0T2JqZWN0Py5SQz8uc2VsZWN0ZWREYXRhXG4gICAgLy8gICA/Lm1hcCgocmM6IGFueSkgPT4gcmM/Ll9pZClcbiAgICAvLyAgIC5qb2luKCcsJyk7XG4gICAgdGhpcy5vdGhlckdSQ1N1YnNjcmlwdGlvbiA9IHRoaXMuZ3JjU2VydmljZVxuICAgICAgLmdldEdSQ0xpc3QoZXZlbnQpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5saXN0T2JqZWN0Lk9USEVSX0dSQ19PQkpFQ1RTLmRhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLk1PREUgPT09ICdFRElUJykge1xuICAgICAgICAgIC8vIHRoaXMubGlzdE9iamVjdC5PVEhFUl9HUkNfT0JKRUNUUy5zZWxlY3RlZERhdGEgPSBkYXRhLmZpbHRlcihcbiAgICAgICAgICAvLyAgIChpdGVtOiBhbnkpID0+IHRoaXMuZ3JjUGF5bG9hZC5saW5rZWRfR1JDX2lkcy5pbmNsdWRlcyhpdGVtPy5faWQpXG4gICAgICAgICAgLy8gKTtcbiAgICAgICAgICBpZiAodGhpcy5ncmNQYXlsb2FkLmxpbmtlZF9HUkNfaWRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JjRm9ybS5vdGhlckdyY09iamVjdHMgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9USEVSX0dSQ19PQkpFQ1RTID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoZWNrSXNEYXRhTG9hZGVkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGdldE90aGVyR1JDVGFiQ291bnQoZXZlbnQ/OiBhbnkpIHtcbiAgICB0aGlzLmdyY1RhYkxvYWRlciA9IHRydWU7XG4gICAgLy8gZXZlbnRbJ3JjX2lkcyddID0gdGhpcy5saXN0T2JqZWN0Py5SQz8uc2VsZWN0ZWREYXRhXG4gICAgLy8gICA/Lm1hcCgocmM6IGFueSkgPT4gcmM/Ll9pZClcbiAgICAvLyAgIC5qb2luKCcsJyk7XG4gICAgdGhpcy5ncmNTZXJ2aWNlLmdldEdSQ1RhYnNDb3VudChldmVudCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZ3JjVGFiTG9hZGVyID0gZmFsc2U7XG4gICAgICB0aGlzLm90aGVyR1JDQ2FyZFswXS5jb3VudCA9IGRhdGE/LmFzc2V0c190eXBlX2NvdW50O1xuICAgICAgdGhpcy5vdGhlckdSQ0NhcmRbMV0uY291bnQgPSBkYXRhPy5wcm9jZXNzZXNfdHlwZV9jb3VudDtcbiAgICAgIHRoaXMub3RoZXJHUkNDYXJkWzJdLmNvdW50ID0gZGF0YT8udmVuZG9yc190eXBlX2NvdW50O1xuICAgICAgdGhpcy5vdGhlckdSQ0NhcmRbM10uY291bnQgPSBkYXRhPy5pbnZlbnRvcnlfdHlwZV9jb3VudDtcbiAgICB9KTtcbiAgfVxuXG4gIGdldE90aGVyR1JDVGFiSW5kZXgoZXZlbnQ/OiBhbnksIGRhdGE/OiBhbnkpIHt9XG5cbiAgLy9Qb3B1bGF0ZS9FZGl0IEdSQyBPYmplY3RcblxuICBnZXRHUkNPYmplY3REZXRhaWxzKGdyY0lkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFwaVNlcnZpY2UuZ2V0R1JDT2JqZWN0RGV0YWlscyhncmNJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuZWRQb3B1cCA9ICcnO1xuICAgICAgICB0aGlzLnBvcHVsYXRlUGF5bG9hZChkYXRhKTtcbiAgICAgICAgdGhpcy5ncmNUeXBlID0gZGF0YT8udHlwZTsgLy8gU2V0IGdyY1R5cGUgYmVmb3JlIGNhbGxpbmcgX2dldEdSQ09iamVjdFR5cGVcbiAgICAgICAgdGhpcy5jcmVhdGVHUkNPYmplY3QoZGF0YT8ubGlua2VkR3JjRGV0YWlscyk7XG4gICAgICAgIHRoaXMuZGV0YWlsc0xvYWRlciA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuX2dldFJDTGlzdCgpO1xuICAgICAgICB0aGlzLl9nZXRPd25lckxpc3QoKTtcbiAgICAgICAgdGhpcy5fZ2V0R1JDT2JqZWN0VHlwZSgpO1xuICAgICAgICB0aGlzLmdldE90aGVyR1JDT2JqZWN0cyh7IHJjX2lkczogJycgfSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yJywgZXJyb3IpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlR1JDT2JqZWN0KGRhdGE6IGFueSkge1xuICAgIGlmIChkYXRhPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZ3JjRm9ybS5vdGhlckdyY09iamVjdHMgPSB0cnVlO1xuICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9USEVSX0dSQ19PQkpFQ1RTID0gdHJ1ZTtcbiAgICAgIGxldCBHUkNPYmplY3Q6IGFueSA9IHtcbiAgICAgICAgYXNzZXRzOiBbXSxcbiAgICAgICAgcHJvY2Vzc2VzOiBbXSxcbiAgICAgICAgdmVuZG9yczogW10sXG4gICAgICAgIGludmVudG9yeTogW10sXG4gICAgICB9O1xuICAgICAgdGhpcy5saXN0T2JqZWN0Lk9USEVSX0dSQ19PQkpFQ1RTLnNlbGVjdGVkRGF0YSA9IEFycmF5LmZyb20oXG4gICAgICAgIG5ldyBTZXQoZGF0YSlcbiAgICAgICk7XG4gICAgICBjb25zdCBHUkNfVFlQRSA9IEdSQ19UWVBFX0FSUkFZO1xuICAgICAgZGF0YS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgR1JDT2JqZWN0W0dSQ19UWVBFW2l0ZW0/LnR5cGUgPz8gMV1dLnB1c2goaXRlbSk7XG4gICAgICAgIHRoaXMub3RoZXJHUkNDYXJkW2l0ZW0/LnR5cGVdLnNlbGVjdGVkQ291bnQgKz0gMTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmdyY0RhdGFXaXRoVHlwZXMgPSBHUkNPYmplY3Q7XG4gICAgICB0aGlzLnVwZGF0ZU90aGVyR1JDT2JqZWN0c1BheWxvYWQoKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBwb3B1bGF0ZVBheWxvYWQoZGF0YTogYW55KSB7XG4gICAgdGhpcy5ncmNQYXlsb2FkLm5hbWUgPSBkYXRhPy5uYW1lO1xuICAgIHRoaXMuZ3JjUGF5bG9hZC50eXBlID0gZGF0YT8udHlwZTtcbiAgICB0aGlzLmdyY1BheWxvYWQub3duZXJzID0gZGF0YT8ub3duZXJzO1xuICAgIHRoaXMuZ3JjUGF5bG9hZC5yY19pZHMgPSBkYXRhPy5yY19pZHM7XG4gICAgdGhpcy5ncmNQYXlsb2FkLmxpbmtlZF9HUkNfaWRzID0gZGF0YT8ubGlua2VkX0dSQ19pZHM7XG4gICAgdGhpcy5ncmNQYXlsb2FkLnJpc2tfY2F0ZWdvcnlfaWRzID1cbiAgICAgIHRoaXMucG9wdWxhdGVMaW5rUmlzayhkYXRhPy5yaXNrX2NhdGVnb3J5X2lkcykgPz8gW107XG4gICAgdGhpcy5ncmNQYXlsb2FkLnByb2dyYW1fY2F0ZWdvcnlfaWRzID0gZGF0YT8ucHJvZ3JhbV9jYXRlZ29yeV9pZHM/Lmxlbmd0aFxuICAgICAgPyB0aGlzLnBvcHVsYXRlTGlua1Jlc3BvbnNpYmlsaXR5KGRhdGE/LnByb2dyYW1fY2F0ZWdvcnlfaWRzKVxuICAgICAgOiBbXTtcbiAgICB0aGlzLmdyY1BheWxvYWQuYXR0cmlidXRlcyA9IGRhdGE/LmF0dHJpYnV0ZXM7XG4gICAgdGhpcy5ncmNQYXlsb2FkLnN0YXRlID0gZGF0YT8uc3RhdGU7XG4gICAgdGhpcy5ncmNQYXlsb2FkLmRlc2NyaXB0aW9uID0gZGF0YT8uZGVzY3JpcHRpb247XG4gICAgdGhpcy5ncmNQYXlsb2FkLmZyZXF1ZW5jeSA9IGRhdGE/LmZyZXF1ZW5jeTtcbiAgICB0aGlzLmdyY1BheWxvYWQucGFyZW50X2dyY19pZHMgPSBkYXRhPy5wYXJlbnRfZ3JjX2lkcztcbiAgICB0aGlzLmdyY1BheWxvYWQuZW1haWxfbm90aWZpY2F0aW9uX21lbWJlcl9pZHMgPVxuICAgICAgZGF0YT8uZW1haWxfbm90aWZpY2F0aW9uX21lbWJlcl9pZHM7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUdSQ09iamVjdCgpIHtcbiAgICB0aGlzLmlzRm9ybVN1Ym1pdHRlZCA9IHRydWU7XG4gICAgaWYgKHRoaXMuZ3JjRm9ybS5ncmNPYmplY3RUeXBlKSB7XG4gICAgICB0aGlzLmdyY1BheWxvYWQuYXR0cmlidXRlcyA9IHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGVzLmF0dHJpYnV0ZXM7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMuZ3JjU2VydmljZS5jaGVja1ZhbGlkYXRpb24oXG4gICAgICAgIHRoaXMuZ3JjUGF5bG9hZCxcbiAgICAgICAgdGhpcy5ncmNGb3JtLmdyY09iamVjdFR5cGVcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3VibWl0TG9hZGVyID0gdHJ1ZTtcbiAgICAgIGlmICh0aGlzLk1PREUgPT09ICdFRElUJykge1xuICAgICAgICB0aGlzLnVwZGF0ZUdSQ09iamVjdCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgUEFZTE9BRCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ncmNQYXlsb2FkKSk7XG4gICAgICBQQVlMT0FELm93bmVycyA9IHRoaXMuZ2V0T3duZXJzRXhjZXB0RGVmYXVsdChQQVlMT0FELm93bmVycyk7XG4gICAgICB0aGlzLmFwaVNlcnZpY2UuYWRkR1JDT2JqZWN0KFBBWUxPQUQpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2V0TW9yZU9wdGlvbnNPblN1Ym1pdCgpO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xuICAgICAgICAgIHRoaXMuYWRkZWRHUkMgPSBkYXRhO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yJywgZXJyb3IsIGVycm9yLnN0YXR1cyk7XG4gICAgICAgICAgdGhpcy5zdWJtaXRMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDkgfHwgZXJyb3Iuc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgICAgIHRoaXMuaXNEdXBsaWNhdGVOYW1lID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2V0TW9yZU9wdGlvbnNPblN1Ym1pdCgpO1xuICAgICAgICAgICAgdGhpcy5tYXBVc2VyTGlzdCh7XG4gICAgICAgICAgICAgIGRhdGE6IHRoaXMubGlzdE9iamVjdC5PV05FUi5kYXRhLmFzc2lnbmVlc0xpc3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZ3JjTmFtZVZhbGlkYXRpb25FcnJvciA9IFZBTElEQVRJT05fTUVTU0FHRS5ncmNfZXhpc3RzO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcmVzZXRHUkNPYmplY3QoKSB7XG4gICAgdGhpcy5NT0RFID0gJ0NSRUFURSc7XG4gICAgdGhpcy5zbWlsZXlNZXNzYWdlID0gU1VDQ0VTU19NRVNTQUdFLkFERF9HUkNfT0JKRUNUO1xuICAgIHRoaXMuZ3JjUGF5bG9hZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ncmNTZXJ2aWNlLkdSQ19QQVlMT0FEKSk7XG4gICAgdGhpcy5ncmNQYXlsb2FkLnR5cGUgPSB0aGlzLmdyY1R5cGU7XG4gICAgdGhpcy5pc0Zvcm1TdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzRHVwbGljYXRlTmFtZSA9IGZhbHNlO1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcbiAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZU1vcmVPcHRpb24pO1xuICAgIHRoaXMuT0JKRUNUX1RZUEUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuT1JJR0lOQUxfR1JDX0FUVFJJQlVURVMpKTtcbiAgICB0aGlzLm90aGVyR1JDQ2FyZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoT1RIRVJfR1JDX0NBUkQpKTtcbiAgICB0aGlzLnJlc2V0T3RoZXJHUkNDYXJkKCk7XG4gICAgdGhpcy5zZXREZWZhdWx0R1JDT2JqZWN0VHlwZSgpO1xuICAgIHRoaXMucmVzZXRHUkNEYXRhV2l0aFR5cGVzKCk7XG4gICAgdGhpcy5yZXNldExpc3RPYmplY3RTZWxlY3Rpb24oKTtcbiAgICB0aGlzLm1hcFVzZXJMaXN0KHsgZGF0YTogdGhpcy5saXN0T2JqZWN0Lk9XTkVSLmRhdGEuYXNzaWduZWVzTGlzdCB9KTtcbiAgfVxuXG4gIHJlc2V0TGlzdE9iamVjdFNlbGVjdGlvbigpIHtcbiAgICB0aGlzLmxpc3RPYmplY3QuT1dORVIuc2VsZWN0ZWREYXRhID0gW107XG4gICAgdGhpcy5saXN0T2JqZWN0LlJDLnNlbGVjdGVkRGF0YSA9IFtdO1xuICAgIHRoaXMubGlzdE9iamVjdC5PVEhFUl9HUkNfT0JKRUNUUy5zZWxlY3RlZERhdGEgPSBbXTtcbiAgICB0aGlzLmxpc3RPYmplY3QuUklTS19DQVRFR09SWS5zZWxlY3RlZERhdGEgPSBbXTtcbiAgICB0aGlzLmxpc3RPYmplY3QuUFJPR1JBTV9SRVNQT05TSUJJTElUWS5zZWxlY3RlZERhdGEgPSBbXTtcbiAgfVxuXG4gIHNtaWxleUFjdGlvbnMoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgaWYgKGV2ZW50ID09PSAnYWRkTW9yZScpIHtcbiAgICAgIHRoaXMucmVzZXRHUkNGb3JtKCk7XG4gICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ3ZpZXcnKSB7XG4gICAgICB0aGlzLnJlc2V0R1JDRm9ybSgpO1xuICAgICAgdGhpcy52aWV3R1JDKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VTbWlsZXkoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xuICAgIHRoaXMucmVzZXRHUkNGb3JtKCk7XG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6IHRoaXMuYWRkZWRHUkMsIGNvbmZpcm06IGZhbHNlIH0pO1xuICB9XG5cbiAgcmVzZXRHUkNGb3JtKCkge1xuICAgIHRoaXMuTU9ERSA9ICdDUkVBVEUnO1xuICAgIHRoaXMucmVzZXRHUkNPYmplY3QoKTtcbiAgICB0aGlzLmdyY0Zvcm0ub3RoZXJHcmNPYmplY3RzID0gZmFsc2U7XG4gICAgdGhpcy5ncmNGb3JtLmxpbmtSaXNrID0gZmFsc2U7XG4gICAgdGhpcy5ncmNGb3JtLmxpbmtQcm9ncmFtID0gZmFsc2U7XG4gICAgdGhpcy5ncmNGb3JtLmdyY09iamVjdFR5cGUgPSBmYWxzZTtcblxuICAgIHRoaXMucmVzZXRGb3JtLmVtaXQodHJ1ZSk7XG4gIH1cblxuICB2aWV3R1JDKCkge1xuICAgIGxldCB1cmw6IHN0cmluZztcbiAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xuICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnLyMvbWFuYWdlLWdyYy1vYmplY3RzJztcbiAgICB9IGVsc2Uge1xuICAgICAgdXJsID1cbiAgICAgICAgJ2h0dHBzOi8vJyArXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICtcbiAgICAgICAgJy9vcmdhbml6YXRpb24vIy9tYW5hZ2UtZ3JjLW9iamVjdHMnO1xuICAgIH1cblxuICAgIHRoaXMuaWZyYW1lU2VydmljZS5yZWRpcmVjdElmSW5JZnJhbWUodXJsLCB0aGlzLk1PREUgIT09ICdFRElUJyk7XG5cbiAgICB0aGlzLnJlc2V0R1JDRm9ybSgpO1xuICAgIHRoaXMuY2xvc2VTbWlsZXkoJycpO1xuICAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHsgZXZ0OiB0aGlzLmFkZGVkR1JDLCBjb25maXJtOiBmYWxzZSB9KTtcbiAgfVxuXG4gIHNldE90aGVyR1JDVHlwZXNGb3JtYXRlKCkge1xuICAgIGNvbnN0IGdyY1R5cGVzID0gR1JDX1RZUEVfQVJSQVk7XG4gICAgdGhpcy5yZXNldEdSQ0RhdGFXaXRoVHlwZXMoKTtcbiAgICB0aGlzLmxpc3RPYmplY3Q/Lk9USEVSX0dSQ19PQkpFQ1RTPy5zZWxlY3RlZERhdGE/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgdGhpcy5ncmNEYXRhV2l0aFR5cGVzW2dyY1R5cGVzW2l0ZW0/LnR5cGVdXT8ucHVzaChpdGVtKTtcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZU90aGVyR1JDT2JqZWN0c1BheWxvYWQoKTtcbiAgfVxuXG4gIHJlbW92ZU90aGVyR1JDT2JqZWN0cyhldmVudDogYW55KSB7XG4gICAgY29uc3QgZ3JjVHlwZXMgPSBHUkNfVFlQRV9BUlJBWTtcbiAgICB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuc2VsZWN0ZWREYXRhID1cbiAgICAgIHRoaXMubGlzdE9iamVjdC5PVEhFUl9HUkNfT0JKRUNUUy5zZWxlY3RlZERhdGEuZmlsdGVyKFxuICAgICAgICAoZ3JjOiBhbnkpID0+IGdyYz8uX2lkICE9PSBldmVudD8uX2lkXG4gICAgICApO1xuICAgIHRoaXMuZmlsdGVyT3RoZXJHUkNEYXRhKGV2ZW50LCBncmNUeXBlc1tldmVudD8udHlwZV0pO1xuICAgIHRoaXMub3RoZXJHUkNDYXJkWzBdLnNlbGVjdGVkQ291bnRcbiAgICAgID8gKHRoaXMub3RoZXJHUkNDYXJkW2V2ZW50Py50eXBlXS5zZWxlY3RlZENvdW50IC09IDEpXG4gICAgICA6IDA7XG4gICAgdGhpcy51cGRhdGVPdGhlckdSQ09iamVjdHNQYXlsb2FkKCk7XG4gIH1cblxuICBmaWx0ZXJPdGhlckdSQ0RhdGEoZXZlbnQ6IGFueSwgdHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5ncmNEYXRhV2l0aFR5cGVzW3R5cGVdID0gdGhpcy5ncmNEYXRhV2l0aFR5cGVzW3R5cGVdPy5maWx0ZXIoXG4gICAgICAoZ3JjOiBhbnkpID0+IGdyYz8uX2lkICE9PSBldmVudD8uX2lkXG4gICAgKTtcbiAgfVxuXG4gIHJlc2V0R1JDRGF0YVdpdGhUeXBlcygpIHtcbiAgICB0aGlzLmdyY0RhdGFXaXRoVHlwZXMgPSB7XG4gICAgICBhc3NldHM6IFtdLFxuICAgICAgcHJvY2Vzc2VzOiBbXSxcbiAgICAgIHZlbmRvcnM6IFtdLFxuICAgICAgaW52ZW50b3J5OiBbXSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGdyY1ZhbGlkYXRpb25DaGVjaygpIHtcbiAgICBpZiAodGhpcy5pc0Zvcm1TdWJtaXR0ZWQgJiYgIXRoaXMuZ3JjUGF5bG9hZC5uYW1lKSB7XG4gICAgICB0aGlzLmdyY05hbWVWYWxpZGF0aW9uRXJyb3IgPSBWQUxJREFUSU9OX01FU1NBR0UuZ3JjT2JqZWN0TmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaXNGb3JtU3VibWl0dGVkICYmICEodGhpcy5ncmNQYXlsb2FkLm5hbWUgfHwgdGhpcy5pc0R1cGxpY2F0ZU5hbWUpXG4gICAgKTtcbiAgfVxuXG4gIGdldFJpc2tDYXRlZ29yeVBheWxvYWQoc2VsZWN0ZWREYXRhOiBhbnkpIHtcbiAgICBjb25zdCByaXNrQ2F0ZWdvcnlQYXlsb2FkOiBhbnkgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUmlza3MgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IFtdO1xuICAgIHNlbGVjdGVkRGF0YS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIHJpc2tDYXRlZ29yeVBheWxvYWQucHVzaCh7XG4gICAgICAgIGNhdGVnb3J5X2lkOiBbaXRlbT8uY2F0ZWdvcnk/LmNhdGVnb3J5X2lkID8/IFtdXSxcbiAgICAgICAgcmlza19pZHM6IGl0ZW0/LnJpc2tzPy5tYXAoKHJpc2s6IGFueSkgPT4gcmlzaz8uUmlza0lkKSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZWxlY3RlZFJpc2tzPy5wdXNoKC4uLml0ZW0/LnJpc2tzKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzLnB1c2goaXRlbT8uY2F0ZWdvcnkpO1xuICAgIH0pO1xuICAgIHJldHVybiByaXNrQ2F0ZWdvcnlQYXlsb2FkO1xuICB9XG5cbiAgZ2V0UHJvZ3JhbVJlc3BvbnNpYmlsaXR5UGF5bG9hZChzZWxlY3RlZERhdGE6IGFueSkge1xuICAgIGNvbnN0IHJpc2tSZXNwb25zaWJpbGl0eVBheWxvYWQ6IGFueSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtID0gW107XG4gICAgc2VsZWN0ZWREYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgY29uc3QgcGFyZW50SWQgPSBpdGVtPy5wcm9ncmFtPy5wcm9ncmFtSWQ7XG4gICAgICByaXNrUmVzcG9uc2liaWxpdHlQYXlsb2FkLnB1c2goe1xuICAgICAgICBwYXJlbnRJZDogcGFyZW50SWQsXG4gICAgICAgIGNhdGVnb3J5X2lkOiBpdGVtPy5jYXRlZ29yeSA/IFsuLi5pdGVtLmNhdGVnb3J5XSA6IFtdLFxuICAgICAgICByZXNwb25zaWJpbGl0eV9pZHM6IGl0ZW0/LnJlc3BvbnNpYmlsaXR5Py5tYXAoXG4gICAgICAgICAgKHJlc3A6IGFueSkgPT4gcmVzcD8uUmVwb3J0SWRcbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Py5wdXNoKC4uLml0ZW0/LnJlc3BvbnNpYmlsaXR5KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtLnB1c2goaXRlbT8ucHJvZ3JhbSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJpc2tSZXNwb25zaWJpbGl0eVBheWxvYWQ7XG4gIH1cblxuICB1cGRhdGVHUkNPYmplY3QoKSB7XG4gICAgbGV0IFBBWUxPQUQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZ3JjUGF5bG9hZCkpO1xuICAgIFBBWUxPQUQub3duZXJzID0gdGhpcy5nZXRPd25lcnNFeGNlcHREZWZhdWx0KFBBWUxPQUQub3duZXJzKTtcbiAgICB0aGlzLmFwaVNlcnZpY2UudXBkYXRlR1JDT2JqZWN0KFBBWUxPQUQsIHRoaXMuSUQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0TW9yZU9wdGlvbnNPblN1Ym1pdCgpO1xuICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hZGRlZEdSQyA9IGRhdGE7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yJywgZXJyb3IsIGVycm9yLnN0YXR1cyk7XG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwOSkge1xuICAgICAgICAgIHRoaXMuaXNEdXBsaWNhdGVOYW1lID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnNldE1vcmVPcHRpb25zT25TdWJtaXQoKTtcbiAgICAgICAgICB0aGlzLmdyY05hbWVWYWxpZGF0aW9uRXJyb3IgPSBWQUxJREFUSU9OX01FU1NBR0UuZ3JjX2V4aXN0cztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICB1cGRhdGVPdGhlckdSQ09iamVjdHNQYXlsb2FkKCkge1xuICAgIHRoaXMuZ3JjUGF5bG9hZC5saW5rZWRfR1JDX2lkcyA9XG4gICAgICB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuc2VsZWN0ZWREYXRhLm1hcChcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS5faWRcbiAgICAgICk7XG4gIH1cblxuICBkZWxldGVTZWxlY3RlZFJpc2soY2F0ZWdvcnlJZDogbnVtYmVyLCByaXNrOiBhbnkpIHtcbiAgICBjb25zdCBjYXRlZ29yeUluZGV4ID0gdGhpcy5maW5kQ2hlY2tlZENhdGVnb3J5SW5kZXgoY2F0ZWdvcnlJZCk7XG4gICAgaWYgKGNhdGVnb3J5SW5kZXggIT09IC0xKSB7XG4gICAgICAvLyBDYXRlZ29yeSBleGlzdHMsIHVwZGF0ZSByaXNrIHZhbHVlXG4gICAgICBjb25zdCByaXNrSW5kZXggPSB0aGlzLmxpc3RPYmplY3Q/LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YVtcbiAgICAgICAgY2F0ZWdvcnlJbmRleFxuICAgICAgXT8ucmlza3M/LmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtPy5faWQgPT09IHJpc2s/Ll9pZCk7XG4gICAgICBpZiAocmlza0luZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLmxpc3RPYmplY3Q/LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YVtcbiAgICAgICAgICBjYXRlZ29yeUluZGV4XG4gICAgICAgIF0/LnJpc2tzLnNwbGljZShyaXNrSW5kZXgsIDEpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMubGlzdE9iamVjdD8uUklTS19DQVRFR09SWT8uc2VsZWN0ZWREYXRhW2NhdGVnb3J5SW5kZXhdPy5yaXNrc1xuICAgICAgICAgID8ubGVuZ3RoID09PSAwXG4gICAgICApIHtcbiAgICAgICAgLy8gUmVtb3ZlIGNhdGVnb3J5IGlmIHNlbGVjdGVkTGlzdERhdGEgaXMgZW1wdHlcbiAgICAgICAgdGhpcy5saXN0T2JqZWN0Py5SSVNLX0NBVEVHT1JZPy5zZWxlY3RlZERhdGEuc3BsaWNlKGNhdGVnb3J5SW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmdyY1BheWxvYWQucmlza19jYXRlZ29yeV9pZHMgPSB0aGlzLmdldFJpc2tDYXRlZ29yeVBheWxvYWQoXG4gICAgICB0aGlzLmxpc3RPYmplY3Q/LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YVxuICAgICk7XG4gIH1cblxuICBkZWxldGVTZWxlY3RlZFJlc3BvbnNpYmlsaXR5KHJlc3BvbnNpYmlsaXR5OiBhbnkpIHtcbiAgICB0aGlzLmxpc3RPYmplY3QuUFJPR1JBTV9SRVNQT05TSUJJTElUWS5zZWxlY3RlZERhdGEgPVxuICAgICAgdGhpcy5saXN0T2JqZWN0Py5QUk9HUkFNX1JFU1BPTlNJQklMSVRZPy5zZWxlY3RlZERhdGE/Lm1hcChcbiAgICAgICAgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBmaWx0ZXJlZFJlc3BvbnNpYmlsaXR5ID0gZGF0YT8ucmVzcG9uc2liaWxpdHk/LmZpbHRlcihcbiAgICAgICAgICAgIChyZXNwOiBhbnkpID0+IHJlc3A/Ll9pZCAhPT0gcmVzcG9uc2liaWxpdHk/Ll9pZFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eTogZmlsdGVyZWRSZXNwb25zaWJpbGl0eSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBBcnJheS5mcm9tKFxuICAgICAgICAgICAgICBuZXcgU2V0KFxuICAgICAgICAgICAgICAgIGZpbHRlcmVkUmVzcG9uc2liaWxpdHlcbiAgICAgICAgICAgICAgICAgIC5tYXAoKG9iajogYW55KSA9PiBkYXRhPy5jYXRlZ29yeSlcbiAgICAgICAgICAgICAgICAgID8uZmxhdCgpIHx8IFtdXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIHRoaXMubGlzdE9iamVjdC5QUk9HUkFNX1JFU1BPTlNJQklMSVRZLnNlbGVjdGVkRGF0YSA9XG4gICAgICB0aGlzLmxpc3RPYmplY3Q/LlBST0dSQU1fUkVTUE9OU0lCSUxJVFk/LnNlbGVjdGVkRGF0YS5maWx0ZXIoXG4gICAgICAgIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gZGF0YT8ucmVzcG9uc2liaWxpdHk/Lmxlbmd0aCA+IDA7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgdGhpcy5ncmNQYXlsb2FkLnByb2dyYW1fY2F0ZWdvcnlfaWRzID0gdGhpcy5nZXRQcm9ncmFtUmVzcG9uc2liaWxpdHlQYXlsb2FkKFxuICAgICAgdGhpcy5saXN0T2JqZWN0Py5QUk9HUkFNX1JFU1BPTlNJQklMSVRZPy5zZWxlY3RlZERhdGFcbiAgICApO1xuICB9XG5cbiAgZmluZENoZWNrZWRDYXRlZ29yeUluZGV4KGNhdGVnb3J5SWQ6IG51bWJlciB8IG51bWJlcltdKSB7XG4gICAgbGV0IGNhdGVnb3J5SW5kZXggPSAtMTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjYXRlZ29yeUlkKSAmJiBjYXRlZ29yeUlkPy5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIEhhbmRsZSBlbXB0eSBjYXRlZ29yeUlkIGFycmF5IGNhc2VcbiAgICAgIGNvbnN0IHVuY2F0ZWdvcml6ZWRJbmRleCA9XG4gICAgICAgIHRoaXMubGlzdE9iamVjdD8uUklTS19DQVRFR09SWT8uc2VsZWN0ZWREYXRhLmZpbmRJbmRleChcbiAgICAgICAgICAoY2F0OiBhbnkpID0+IGNhdD8uY2F0ZWdvcnk/Ll9pZCA9PT0gJ3VuY2F0ZWdvcml6ZWQnXG4gICAgICAgICk7XG4gICAgICBpZiAodW5jYXRlZ29yaXplZEluZGV4ICE9PSAtMSkge1xuICAgICAgICByZXR1cm4gdW5jYXRlZ29yaXplZEluZGV4O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjYXRlZ29yeUluZGV4ID0gdGhpcy5saXN0T2JqZWN0Py5SSVNLX0NBVEVHT1JZPy5zZWxlY3RlZERhdGEuZmluZEluZGV4KFxuICAgICAgICAoY2F0OiBhbnkpID0+IGNhdD8uY2F0ZWdvcnk/LmNhdGVnb3J5X2lkID09PSBjYXRlZ29yeUlkXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gY2F0ZWdvcnlJbmRleDtcbiAgfVxuXG4gIHNldExpbmtSaXNrVGFiKHRhYkRldGFpbHM6IGFueSkge1xuICAgIHRoaXMub3RoZXJHUkNDYXJkID0gdGFiRGV0YWlscy5tYXAoKHRhYjogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdGFiPy5sYWJlbCxcbiAgICAgICAgY291bnQ6IDAsXG4gICAgICAgIHNlbGVjdGVkQ291bnQ6IDAsXG4gICAgICAgIGtleTogdGFiPy5sYWJlbD8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgdHlwZTogaW5kZXgsXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHRoaXMuZ2V0T3RoZXJHUkNUYWJDb3VudCh7IHJjX2lkczogJycgfSk7XG4gIH1cblxuICBwb3B1bGF0ZUxpbmtSaXNrKHNlbGVjdGVkRGF0YTogYW55KSB7XG4gICAgbGV0IHVwZGF0ZWREYXRhID0gc2VsZWN0ZWREYXRhPy5tYXAoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgaWYgKGRhdGE/LmNhdGVnb3J5X2lkICYmIE9iamVjdD8ua2V5cyhkYXRhPy5jYXRlZ29yeV9pZCk/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgY2F0ZWdvcnk6IFVOQ0FURUdPUklaRURfTElOS19DQVRFR09SWSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIGNhdGVnb3J5OiB7XG4gICAgICAgICAgY2F0ZWdvcnlfaWQ6IGRhdGE/LmNhdGVnb3J5X2lkWzBdLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgICBpZiAodXBkYXRlZERhdGEubGVuZ3RoKSB7XG4gICAgICB0aGlzLmdyY0Zvcm0ubGlua1Jpc2sgPSB0cnVlO1xuICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkxJTktfUklTS19DQVRFR09SSUVTX1JJU0tTID0gdHJ1ZTtcbiAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgIH1cbiAgICB0aGlzLmxpc3RPYmplY3QuUklTS19DQVRFR09SWS5zZWxlY3RlZERhdGEgPSB1cGRhdGVkRGF0YTtcbiAgICByZXR1cm4gdGhpcy5nZXRSaXNrQ2F0ZWdvcnlQYXlsb2FkKHVwZGF0ZWREYXRhKTtcbiAgfVxuXG4gIHBvcHVsYXRlTGlua1Jlc3BvbnNpYmlsaXR5KHNlbGVjdGVkRGF0YTogYW55KSB7XG4gICAgbGV0IHVwZGF0ZWREYXRhID0gc2VsZWN0ZWREYXRhPy5tYXAoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJvZ3JhbToge1xuICAgICAgICAgIHByb2dyYW1JZDogZGF0YT8ucGFyZW50SWQsXG4gICAgICAgIH0sXG4gICAgICAgIGNhdGVnb3J5OiBbZGF0YT8ucGFyZW50SWRdLmNvbmNhdC5hcHBseShcbiAgICAgICAgICBbXSxcbiAgICAgICAgICBPYmplY3QudmFsdWVzKGRhdGE/LmNhdGVnb3J5X2lkKVxuICAgICAgICApLFxuICAgICAgICByZXNwb25zaWJpbGl0eTogZGF0YT8ucmVzcG9uc2liaWxpdHlfaWRzIHx8IFtdLFxuICAgICAgfTtcbiAgICB9KTtcbiAgICBpZiAodXBkYXRlZERhdGEubGVuZ3RoKSB7XG4gICAgICB0aGlzLmdyY0Zvcm0ubGlua1Byb2dyYW0gPSB0cnVlO1xuICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkxJTktfUFJPR1JBTSA9IHRydWU7XG4gICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICB9XG4gICAgdGhpcy5saXN0T2JqZWN0LlBST0dSQU1fUkVTUE9OU0lCSUxJVFkuc2VsZWN0ZWREYXRhID0gdXBkYXRlZERhdGE7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UHJvZ3JhbVJlc3BvbnNpYmlsaXR5UGF5bG9hZCh1cGRhdGVkRGF0YSk7XG4gIH1cblxuICBnZXRPd25lcnNFeGNlcHREZWZhdWx0KHVzZXJzOiBhbnkpIHtcbiAgICBjb25zdCB1c2Vyc0lkID0gdXNlcnMuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT4gIXRoaXMuZGlzYWJsZWRJZHMuaW5jbHVkZXModXNlcilcbiAgICApO1xuICAgIHJldHVybiB1c2Vyc0lkIHx8IFtdO1xuICB9XG5cbiAgc2V0TW9yZU9wdGlvbnNPblN1Ym1pdCgpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgdGhpcy5zdWJtaXRMb2FkZXIgPSBmYWxzZTtcbiAgfVxuXG4gIHJlc2V0T3RoZXJHUkNDYXJkKCkge1xuICAgIHRoaXMub3RoZXJHUkNDYXJkLmZvckVhY2goKHRhYjogYW55KSA9PiB7XG4gICAgICB0YWIuY291bnQgPSAwO1xuICAgICAgdGFiLnNlbGVjdGVkQ291bnQgPSAwO1xuICAgIH0pO1xuICB9XG5cbiAgcmVzZXREYXRhT25SQ0NoYW5nZSgpIHtcbiAgICB0aGlzLmxpc3RPYmplY3QuUFJPR1JBTV9SRVNQT05TSUJJTElUWS5zZWxlY3RlZERhdGEgPSBbXTtcbiAgICB0aGlzLmxpc3RPYmplY3QuUklTS19DQVRFR09SWS5zZWxlY3RlZERhdGEgPSBbXTtcbiAgICBpZiAodGhpcy5saXN0T2JqZWN0LlJDLnNlbGVjdGVkRGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMucmVzZXRNb3JlT3B0aW9uc09uUkNDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICByZXNldE1vcmVPcHRpb25zT25SQ0NoYW5nZSgpIHtcbiAgICB0aGlzLmdyY0Zvcm0ubGlua1Byb2dyYW0gPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uTElOS19QUk9HUkFNID0gZmFsc2U7XG4gICAgdGhpcy5ncmNGb3JtLmxpbmtSaXNrID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkxJTktfUklTS19DQVRFR09SSUVTX1JJU0tTID0gZmFsc2U7XG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd1NtaWxleVwiPlxuICA8ZGl2IGNsYXNzPVwid29ya2Zsb3ctZ3JjXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwib3BlbmVkUG9wdXAgJiYgZGlhbG9nRmllbGRzPy5pbmNsdWRlcyhvcGVuZWRQb3B1cClcIlxuICAgICAgKm5nSWY9XCIhaXNMb2FkaW5nXCJcbiAgICA+XG4gICAgICA8bGliLXRleHQtZmllbGQtaWNvblxuICAgICAgICBbZGlzYWJsZWRdPVwib3BlbmVkUG9wdXAgJiYgZGlhbG9nRmllbGRzPy5pbmNsdWRlcyhvcGVuZWRQb3B1cClcIlxuICAgICAgICBbY2RuTGlua109XCJDRE5fTElOSy5ncmNUeXBlXCJcbiAgICAgICAgW2lzQ2hlY2tlZF09XCJ0cnVlXCJcbiAgICAgICAgZmllbGQtaWNvbnNcbiAgICAgID5cbiAgICAgIDwvbGliLXRleHQtZmllbGQtaWNvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5cbiAgICAgICAgICAgIEdSQyBPQkpFQ1QgVFlQRTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiPlxuICAgICAgICAgICAgPHRhYi1zZWxlY3RvclxuICAgICAgICAgICAgICBbc2VsZWN0ZWRJdGVtXT1cImdyY1BheWxvYWQudHlwZVwiXG4gICAgICAgICAgICAgIFtkaXNwbGF5QXJyYXldPVwiT0JKRUNUX1RZUEVcIlxuICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiY2hhbmdlQXR0cmlidXRlc1R5cGUoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC90YWItc2VsZWN0b3I+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBPYmplY3QgbmFtZSBmaWVsZCAtLT5cbiAgICA8bGliLXRleHQtZmllbGRcbiAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgb3BlbmVkUG9wdXAgJiZcbiAgICAgICAgb3BlbmVkUG9wdXAgIT09IElOUFVUX1RZUEUubmFtZSAmJlxuICAgICAgICBkaWFsb2dGaWVsZHM/LmluY2x1ZGVzKG9wZW5lZFBvcHVwKVxuICAgICAgXCJcbiAgICAgIFtpc0VkaXRNb2RlXT1cImdyY1BheWxvYWQubmFtZSAmJiBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5uYW1lXCJcbiAgICAgIFt0aXRsZVRleHRdPVwiQUxMX1RFWFQ/LmdyY09iamVjdE5hbWVcIlxuICAgICAgW3BsYWNlaG9sZGVyVGV4dF09XCJBTExfVEVYVD8uZ3JjT2JqZWN0UGxhY2Vob2xkZXJcIlxuICAgICAgWyh0ZXh0VmFsdWUpXT1cImdyY1BheWxvYWQubmFtZVwiXG4gICAgICAodGV4dFZhbHVlQ2hhbmdlKT1cIm9uVGV4dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChjbGlja091dHNpZGUpPVwib25DbGlja091dHNpZGUoKVwiXG4gICAgICAob25DbGljayk9XCJvblBvcHVwT3BlbihJTlBVVF9UWVBFLm5hbWUpXCJcbiAgICA+XG4gICAgICA8bGliLXRleHQtZmllbGQtaWNvblxuICAgICAgICBbY2RuTGlua109XCJDRE5fTElOSy5ncmNPYmplY3ROYW1lXCJcbiAgICAgICAgW2lzQ2hlY2tlZF09XCJncmNQYXlsb2FkLm5hbWVcIlxuICAgICAgICBmaWVsZC1pY29uc1xuICAgICAgPlxuICAgICAgPC9saWItdGV4dC1maWVsZC1pY29uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiIGlzLXJlcXVpcmVkPio8L3NwYW4+XG4gICAgICA8bGliLWVkaXQtbW9kZVxuICAgICAgICAqbmdJZj1cImdyY1BheWxvYWQubmFtZSAmJiBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5uYW1lXCJcbiAgICAgICAgW3NlbGVjdGVkRGF0YV09XCJbZ3JjUGF5bG9hZF1cIlxuICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAoaXNPbkVkaXQpPVwib25FZGl0KElOUFVUX1RZUEUubmFtZSlcIlxuICAgICAgICBlZGl0LW1vZGVcbiAgICAgID48L2xpYi1lZGl0LW1vZGU+XG4gICAgICA8cFxuICAgICAgICAqbmdJZj1cImdyY1ZhbGlkYXRpb25DaGVjayB8fCBpc0R1cGxpY2F0ZU5hbWVcIlxuICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxuICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICBlcnJvci1tZXNzYWdlXG4gICAgICA+XG4gICAgICAgIHt7IGdyY05hbWVWYWxpZGF0aW9uRXJyb3IgfX1cbiAgICAgIDwvcD5cbiAgICAgIDx2Y29tcGx5LWVkaXRvclxuICAgICAgICBbZWRpdG9yQ29uZmlnXT1cIkVESVRPUl9DT05GSUdcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImdyY1BheWxvYWQuZGVzY3JpcHRpb25cIlxuICAgICAgICByaWNoLXRleHQtZWRpdG9yXG4gICAgICA+PC92Y29tcGx5LWVkaXRvcj5cbiAgICA8L2xpYi10ZXh0LWZpZWxkPlxuXG4gICAgPCEtLSBTcGVjaWZ5IE93bmVycyAtLT5cbiAgICA8bGliLXRleHQtZmllbGRcbiAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgb3BlbmVkUG9wdXAgJiZcbiAgICAgICAgb3BlbmVkUG9wdXAgIT09IElOUFVUX1RZUEUub3duZXIgJiZcbiAgICAgICAgZGlhbG9nRmllbGRzPy5pbmNsdWRlcyhvcGVuZWRQb3B1cClcbiAgICAgIFwiXG4gICAgICBbYWN0aXZlXT1cIm9wZW5lZFBvcHVwICYmIG9wZW5lZFBvcHVwID09IElOUFVUX1RZUEUub3duZXJcIlxuICAgICAgW2lzRWRpdE1vZGVdPVwiXG4gICAgICAgIGxpc3RPYmplY3QuT1dORVI/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoICYmXG4gICAgICAgIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFLm93bmVyXG4gICAgICBcIlxuICAgICAgW3RpdGxlVGV4dF09XCJBTExfVEVYVD8uZ3JjT3duZXJzVGl0bGVcIlxuICAgICAgW3BsYWNlaG9sZGVyVGV4dF09XCJBTExfVEVYVD8uZ3JjT3duZXJzUGxhY2Vob2xkZXJcIlxuICAgICAgW2lzUmVhZE9ubHldPVwidHJ1ZVwiXG4gICAgICAob25DbGljayk9XCJvblBvcHVwT3BlbihJTlBVVF9UWVBFLm93bmVyKVwiXG4gICAgPlxuICAgICAgPGxpYi10ZXh0LWZpZWxkLWljb25cbiAgICAgICAgW2NkbkxpbmtdPVwiQ0ROX0xJTksuZ3JjT3duZXJzXCJcbiAgICAgICAgW2lzQ2hlY2tlZF09XCJsaXN0T2JqZWN0Lk9XTkVSPy5zZWxlY3RlZERhdGE/Lmxlbmd0aCA+IDBcIlxuICAgICAgICBmaWVsZC1pY29uc1xuICAgICAgPlxuICAgICAgPC9saWItdGV4dC1maWVsZC1pY29uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiIGlzLXJlcXVpcmVkPio8L3NwYW4+XG4gICAgICA8bGliLWVkaXQtbW9kZVxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGxpc3RPYmplY3QuT1dORVI/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoICYmXG4gICAgICAgICAgb3BlbmVkUG9wdXAgIT09IElOUFVUX1RZUEUub3duZXJcbiAgICAgICAgXCJcbiAgICAgICAgW25vblJlbW92YWJsZUlkc109XCJkaXNhYmxlZElkc1wiXG4gICAgICAgIFtjb3VudENvbG9yXT1cIidncmVlbkJnJ1wiXG4gICAgICAgIFtzZWxlY3RlZERhdGFdPVwibGlzdE9iamVjdC5PV05FUj8uc2VsZWN0ZWREYXRhXCJcbiAgICAgICAgW3R5cGVdPVwiJ2xpc3QnXCJcbiAgICAgICAgKGlzT25FZGl0KT1cIm9uRWRpdChJTlBVVF9UWVBFLm93bmVyKVwiXG4gICAgICAgIChvblJlbW92ZURhdGEpPVwib25SZW1vdmVEYXRhKCRldmVudCwgSU5QVVRfVFlQRS5vd25lcilcIlxuICAgICAgICBlZGl0LW1vZGVcbiAgICAgID48L2xpYi1lZGl0LW1vZGU+XG4gICAgPC9saWItdGV4dC1maWVsZD5cblxuICAgIDwhLS0gTGluayBSZXNwb25zaWJpbGl0eSBDZW50ZXJzIChSQykgLS0+XG4gICAgPGxpYi10ZXh0LWZpZWxkXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIG9wZW5lZFBvcHVwICYmXG4gICAgICAgIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFLlJDICYmXG4gICAgICAgIGRpYWxvZ0ZpZWxkcz8uaW5jbHVkZXMob3BlbmVkUG9wdXApXG4gICAgICBcIlxuICAgICAgW2FjdGl2ZV09XCJvcGVuZWRQb3B1cCAmJiBvcGVuZWRQb3B1cCA9PSBJTlBVVF9UWVBFLlJDXCJcbiAgICAgIFtpc0VkaXRNb2RlXT1cIlxuICAgICAgICBsaXN0T2JqZWN0LlJDPy5zZWxlY3RlZERhdGE/Lmxlbmd0aCAmJiBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5SQ1xuICAgICAgXCJcbiAgICAgIFt0aXRsZVRleHRdPVwiQUxMX1RFWFQ/LmdyY1JDVGl0bGVcIlxuICAgICAgW3BsYWNlaG9sZGVyVGV4dF09XCJBTExfVEVYVD8uZ3JjUkNQbGFjZWhvbGRlclwiXG4gICAgICBbaXNSZWFkT25seV09XCJ0cnVlXCJcbiAgICAgIChvbkNsaWNrKT1cIm9uUG9wdXBPcGVuKElOUFVUX1RZUEUuUkMpXCJcbiAgICA+XG4gICAgICA8bGliLXRleHQtZmllbGQtaWNvblxuICAgICAgICBbY2RuTGlua109XCJDRE5fTElOSy5ncmNSQ1wiXG4gICAgICAgIFtpc0NoZWNrZWRdPVwibGlzdE9iamVjdC5SQz8uc2VsZWN0ZWREYXRhPy5sZW5ndGggPiAwXCJcbiAgICAgICAgZmllbGQtaWNvbnNcbiAgICAgID5cbiAgICAgIDwvbGliLXRleHQtZmllbGQtaWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIiBpcy1yZXF1aXJlZD4qPC9zcGFuPlxuICAgICAgPGxpYi1lZGl0LW1vZGVcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBsaXN0T2JqZWN0LlJDPy5zZWxlY3RlZERhdGE/Lmxlbmd0aCAmJiBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5SQ1xuICAgICAgICBcIlxuICAgICAgICAob25SZW1vdmVEYXRhKT1cIm9uUmVtb3ZlRGF0YSgkZXZlbnQsIElOUFVUX1RZUEUuUkMpXCJcbiAgICAgICAgW3NlbGVjdGVkRGF0YV09XCJsaXN0T2JqZWN0LlJDPy5zZWxlY3RlZERhdGFcIlxuICAgICAgICBbdHlwZV09XCInbGlzdCdcIlxuICAgICAgICAoaXNPbkVkaXQpPVwib25FZGl0KElOUFVUX1RZUEUuUkMpXCJcbiAgICAgICAgZWRpdC1tb2RlXG4gICAgICA+PC9saWItZWRpdC1tb2RlPlxuICAgICAgPHBcbiAgICAgICAgKm5nSWY9XCJpc0Zvcm1TdWJtaXR0ZWQgJiYgIWxpc3RPYmplY3QuUkM/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoXCJcbiAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcbiAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgICAgICAgZXJyb3ItbWVzc2FnZVxuICAgICAgPlxuICAgICAgICB7eyBWQUxJREFUSU9OX01FU1NBR0UuZ3JjUkMgfX1cbiAgICAgIDwvcD5cbiAgICA8L2xpYi10ZXh0LWZpZWxkPlxuXG4gICAgPCEtLSBMaW5rIFByb2dyYW0gYW5kIFJlc3BvbnNpYmlsaXR5IC0tPlxuICAgIDxsaWItdGV4dC1maWVsZFxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBvcGVuZWRQb3B1cCAmJlxuICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRT8ucHJvZ3JhbVJlc3BvbnNpYmlsaXR5ICYmXG4gICAgICAgIGRpYWxvZ0ZpZWxkcz8uaW5jbHVkZXMob3BlbmVkUG9wdXApXG4gICAgICBcIlxuICAgICAgW2FjdGl2ZV09XCJvcGVuZWRQb3B1cCAmJiBvcGVuZWRQb3B1cCA9PSBJTlBVVF9UWVBFPy5wcm9ncmFtUmVzcG9uc2liaWxpdHlcIlxuICAgICAgKm5nSWY9XCJncmNGb3JtPy5saW5rUHJvZ3JhbVwiXG4gICAgICBbdGl0bGVUZXh0XT1cIkFMTF9URVhUPy5ncmNQcm9ncmFtUmVzcG9uc2liaWxpdHlUaXRsZVwiXG4gICAgICBbcGxhY2Vob2xkZXJUZXh0XT1cIkFMTF9URVhUPy5ncmNQcm9ncmFtUmVzcG9uc2liaWxpdHlQbGFjZWhvbGRlclwiXG4gICAgICBbaXNSZWFkT25seV09XCJ0cnVlXCJcbiAgICAgIChvbkNsaWNrKT1cIm9uUG9wdXBPcGVuKElOUFVUX1RZUEUucHJvZ3JhbVJlc3BvbnNpYmlsaXR5KVwiXG4gICAgICBbaXNFZGl0TW9kZV09XCJcbiAgICAgICAgbGlzdE9iamVjdD8uUFJPR1JBTV9SRVNQT05TSUJJTElUWT8uc2VsZWN0ZWREYXRhPy5sZW5ndGggJiZcbiAgICAgICAgb3BlbmVkUG9wdXAgIT09IElOUFVUX1RZUEU/LnByb2dyYW1SZXNwb25zaWJpbGl0eVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8bGliLXRleHQtZmllbGQtaWNvblxuICAgICAgICBbY2RuTGlua109XCJDRE5fTElOSy5saW5rT3RoZXJzXCJcbiAgICAgICAgW2lzQ2hlY2tlZF09XCJcbiAgICAgICAgICBsaXN0T2JqZWN0LlBST0dSQU1fUkVTUE9OU0lCSUxJVFk/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoID4gMFxuICAgICAgICBcIlxuICAgICAgICBmaWVsZC1pY29uc1xuICAgICAgPlxuICAgICAgPC9saWItdGV4dC1maWVsZC1pY29uPlxuXG4gICAgICA8bGliLWVkaXQtbW9kZVxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGxpc3RPYmplY3QuUFJPR1JBTV9SRVNQT05TSUJJTElUWT8uc2VsZWN0ZWREYXRhPy5sZW5ndGggJiZcbiAgICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRT8uUFJPR1JBTV9SRVNQT05TSUJJTElUWVxuICAgICAgICBcIlxuICAgICAgICAob25SZW1vdmVEYXRhKT1cIm9uUmVtb3ZlRGF0YSgkZXZlbnQsIElOUFVUX1RZUEU/LnByb2dyYW1SZXNwb25zaWJpbGl0eSlcIlxuICAgICAgICBbc2VsZWN0ZWREYXRhXT1cIlxuICAgICAgICAgIHNlbGVjdGVkUmVzcG9uc2liaWxpdHkgfCB1bmlxdWVSZXNwb25zaWJpbGl0aWVzIDogJ2VudGlyZU9iamVjdCdcbiAgICAgICAgXCJcbiAgICAgICAgW25hbWVEaXNwbGF5S2V5XT1cIidSZXBvcnROYW1lJ1wiXG4gICAgICAgIFt0eXBlXT1cIidsaXN0J1wiXG4gICAgICAgIChpc09uRWRpdCk9XCJvbkVkaXQoSU5QVVRfVFlQRS5wcm9ncmFtUmVzcG9uc2liaWxpdHkpXCJcbiAgICAgICAgZWRpdC1tb2RlXG4gICAgICA+XG4gICAgICA8L2xpYi1lZGl0LW1vZGU+XG4gICAgPC9saWItdGV4dC1maWVsZD5cblxuICAgIDwhLS0gTGluayBSaXNrIENhdGVnb3JpZXMgYW5kIFJpc2sgLS0+XG4gICAgPGxpYi10ZXh0LWZpZWxkXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIG9wZW5lZFBvcHVwICYmXG4gICAgICAgIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFPy5yaXNrQ2F0ZWdvcnkgJiZcbiAgICAgICAgZGlhbG9nRmllbGRzPy5pbmNsdWRlcyhvcGVuZWRQb3B1cClcbiAgICAgIFwiXG4gICAgICBbYWN0aXZlXT1cIm9wZW5lZFBvcHVwICYmIG9wZW5lZFBvcHVwID09IElOUFVUX1RZUEU/LnJpc2tDYXRlZ29yeVwiXG4gICAgICAqbmdJZj1cImdyY0Zvcm0/LmxpbmtSaXNrXCJcbiAgICAgIFt0aXRsZVRleHRdPVwiQUxMX1RFWFQ/LmdyY1Jpc2tDYXRlZ29yeVRpdGxlXCJcbiAgICAgIFtwbGFjZWhvbGRlclRleHRdPVwiQUxMX1RFWFQ/LmdyY1Jpc2tDYXRlZ29yeVBsYWNlaG9sZGVyXCJcbiAgICAgIFtpc1JlYWRPbmx5XT1cInRydWVcIlxuICAgICAgKG9uQ2xpY2spPVwib25Qb3B1cE9wZW4oSU5QVVRfVFlQRS5yaXNrQ2F0ZWdvcnkpXCJcbiAgICAgIFtpc0VkaXRNb2RlXT1cIlxuICAgICAgICBsaXN0T2JqZWN0Py5SSVNLX0NBVEVHT1JZPy5zZWxlY3RlZERhdGE/Lmxlbmd0aCAmJlxuICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRT8ucmlza0NhdGVnb3J5XG4gICAgICBcIlxuICAgID5cbiAgICAgIDxsaWItdGV4dC1maWVsZC1pY29uXG4gICAgICAgIFtjZG5MaW5rXT1cIkNETl9MSU5LLmxpbmtHUkNcIlxuICAgICAgICBbaXNDaGVja2VkXT1cImxpc3RPYmplY3QuUklTS19DQVRFR09SWT8uc2VsZWN0ZWREYXRhPy5sZW5ndGggPiAwXCJcbiAgICAgICAgZmllbGQtaWNvbnNcbiAgICAgID5cbiAgICAgIDwvbGliLXRleHQtZmllbGQtaWNvbj5cblxuICAgICAgPGxpYi1lZGl0LW1vZGVcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBsaXN0T2JqZWN0LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoICYmXG4gICAgICAgICAgb3BlbmVkUG9wdXAgIT09IElOUFVUX1RZUEUuUklTS19DQVRFR09SWVxuICAgICAgICBcIlxuICAgICAgICAob25SZW1vdmVEYXRhKT1cIm9uUmVtb3ZlRGF0YSgkZXZlbnQsIElOUFVUX1RZUEU/LnJpc2tDYXRlZ29yeSlcIlxuICAgICAgICBbc2VsZWN0ZWREYXRhXT1cInNlbGVjdGVkUmlza3NcIlxuICAgICAgICBbdHlwZV09XCInbGlzdCdcIlxuICAgICAgICAoaXNPbkVkaXQpPVwib25FZGl0KElOUFVUX1RZUEUucmlza0NhdGVnb3J5LCBkYXRhPy5rZXkpXCJcbiAgICAgICAgZWRpdC1tb2RlXG4gICAgICA+XG4gICAgICA8L2xpYi1lZGl0LW1vZGU+XG4gICAgPC9saWItdGV4dC1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPCEtLSBMaW5rIE90aGVyIEdSQyBPYmplY3RzIC0tPlxuICA8bGliLXRleHQtZmllbGRcbiAgICAqbmdJZj1cImdyY0Zvcm0/Lm90aGVyR3JjT2JqZWN0c1wiXG4gICAgW2Rpc2FibGVkXT1cIlxuICAgICAgb3BlbmVkUG9wdXAgJiZcbiAgICAgIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFPy5vdGhlckdyY09iamVjdHMgJiZcbiAgICAgIGRpYWxvZ0ZpZWxkcz8uaW5jbHVkZXMob3BlbmVkUG9wdXApXG4gICAgXCJcbiAgICBbYWN0aXZlXT1cIm9wZW5lZFBvcHVwICYmIG9wZW5lZFBvcHVwID09IElOUFVUX1RZUEU/Lm90aGVyR3JjT2JqZWN0c1wiXG4gICAgW3RpdGxlVGV4dF09XCJBTExfVEVYVD8ub3RoZXJHUkNPYmplY3RzVGl0bGVcIlxuICAgIFtwbGFjZWhvbGRlclRleHRdPVwiQUxMX1RFWFQ/Lm90aGVyR1JDT2JqZWN0c1BsYWNlaG9sZGVyXCJcbiAgICBbaXNSZWFkT25seV09XCJ0cnVlXCJcbiAgICAob25DbGljayk9XCJvblBvcHVwT3BlbihJTlBVVF9UWVBFLm90aGVyR3JjT2JqZWN0cylcIlxuICAgIFtpc0VkaXRNb2RlXT1cIlxuICAgICAgbGlzdE9iamVjdD8uT1RIRVJfR1JDX09CSkVDVFM/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoICYmXG4gICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRT8ub3RoZXJHcmNPYmplY3RzXG4gICAgXCJcbiAgPlxuICAgIDxsaWItdGV4dC1maWVsZC1pY29uXG4gICAgICBbY2RuTGlua109XCJDRE5fTElOSy5saW5rT3RoZXJzXCJcbiAgICAgIFtpc0NoZWNrZWRdPVwibGlzdE9iamVjdD8uT1RIRVJfR1JDX09CSkVDVFM/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoID4gMFwiXG4gICAgICBmaWVsZC1pY29uc1xuICAgID5cbiAgICA8L2xpYi10ZXh0LWZpZWxkLWljb24+XG5cbiAgICA8bGliLWVkaXQtbW9kZVxuICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgR1JDX1RZUEVfQVJSQVlcIlxuICAgICAgKG9uUmVtb3ZlRGF0YSk9XCJvblJlbW92ZURhdGEoJGV2ZW50LCBJTlBVVF9UWVBFPy5vdGhlckdyY09iamVjdHMpXCJcbiAgICAgIFtzZWxlY3RlZERhdGFdPVwiZ3JjRGF0YVdpdGhUeXBlc1tkYXRhXVwiXG4gICAgICBbdHlwZV09XCInbGlzdCdcIlxuICAgICAgW2lzTXVsdGlwbGVdPVwidHJ1ZVwiXG4gICAgICAoaXNPbkVkaXQpPVwib25FZGl0KElOUFVUX1RZUEUub3RoZXJHcmNPYmplY3RzLCBkYXRhKVwiXG4gICAgICBlZGl0LW1vZGVcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwid29ya2Zsb3dMYXZlbCB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTQgdngtbXItMSB2eC10ZXh0LWNlbnRlclwiXG4gICAgICA+XG4gICAgICAgIHt7IGRhdGEgfCB0aXRsZWNhc2UgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvbGliLWVkaXQtbW9kZT5cbiAgPC9saWItdGV4dC1maWVsZD5cbiAgPGxpYi1hdHRyaWJ1dGVzXG4gICAgW2Rpc2FibGVkXT1cIm9wZW5lZFBvcHVwICYmIGRpYWxvZ0ZpZWxkcz8uaW5jbHVkZXMob3BlbmVkUG9wdXApXCJcbiAgICAqbmdJZj1cInNlbGVjdGVkQXR0cmlidXRlcz8uYXR0cmlidXRlcz8ubGVuZ3RoXCJcbiAgICBbYXR0cmlidXRlc0luZm9dPVwic2VsZWN0ZWRBdHRyaWJ1dGVzXCJcbiAgICBbaXNGb3JtU3VibWl0dGVkXT1cImlzRm9ybVN1Ym1pdHRlZFwiXG4gICAgKG9uQ2xpY2spPVwiZ2V0QXR0cmlidXRlU2VsZWN0aW9uKCRldmVudClcIlxuICA+PC9saWItYXR0cmlidXRlcz5cbiAgPGxpYi1saXN0LXBvcHVwXG4gICAgW29wZW5lZFBvcHVwXT1cIm9wZW5lZFBvcHVwXCJcbiAgICBbbGlzdE9iamVjdF09XCJsaXN0T2JqZWN0XCJcbiAgICBbdGFibGVDYXJkXT1cIm90aGVyR1JDQ2FyZFwiXG4gICAgW290aGVyR3JjQ2FyZExvYWRlcl09XCJncmNUYWJMb2FkZXJcIlxuICAgIFtHUkNTZWxlY3RlZFRhYl09XCJHUkNTZWxlY3RlZFRhYlwiXG4gICAgW21vZGVdPVwiTU9ERVwiXG4gICAgW29uRWRpdEdSQ0lkXT1cIklEXCJcbiAgICAob25TYXZlU2VsZWN0ZWRMaXN0KT1cIm9uU2F2ZVNlbGVjdGVkTGlzdCgkZXZlbnQpXCJcbiAgICAoZ2V0T3RoZXJHUkNPYmplY3RzKT1cImdldE90aGVyR1JDT2JqZWN0cygkZXZlbnQpXCJcbiAgPjwvbGliLWxpc3QtcG9wdXA+XG48L25nLWNvbnRhaW5lcj5cbjxhcHAtc21pbGV5LWRpYWxvZy1pbmxpbmVcbiAgKm5nSWY9XCJzaG93U21pbGV5XCJcbiAgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiXG4gIFthY3Rpb25CdXR0b25zXT1cImFjdGlvbkJ1dHRvbnNcIlxuICAoYWN0aW9uKT1cInNtaWxleUFjdGlvbnMoJGV2ZW50KVwiXG4gIChjbG9zZVNtaWxleSk9XCJjbG9zZVNtaWxleSgkZXZlbnQpXCJcbj48L2FwcC1zbWlsZXktZGlhbG9nLWlubGluZT5cbjxhcHAtbG9hZGVyLWlubGluZSAqbmdJZj1cImlzTG9hZGluZ1wiPjwvYXBwLWxvYWRlci1pbmxpbmU+XG4iXX0=
|
|
886
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JjLW9iamVjdC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvZ3JjLW9iamVjdC9ncmMtb2JqZWN0LWNvbnRhaW5lci9ncmMtb2JqZWN0LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy9ncmMtb2JqZWN0L2dyYy1vYmplY3QtY29udGFpbmVyL2dyYy1vYmplY3QtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxHQUliLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFVeEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRy9ELE9BQU8sRUFDTCxjQUFjLEVBQ2QsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixjQUFjLEVBQ2QsMkJBQTJCLEdBQzVCLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQjNFLE1BQU0sT0FBTywyQkFBMkI7SUFrRnRDLFlBQ1UsVUFBc0IsRUFDdEIsVUFBaUMsRUFDakMsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsdUJBQWdELEVBQ2hELHlCQUFvRCxFQUNwRCxhQUE0QixFQUM1QixpQkFBb0M7UUFQcEMsZUFBVSxHQUFWLFVB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QUM7UUFDekQsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQzsrR0FyK0JVLDJCQUEyQjttR0FBM0IsMkJBQTJCLG1XQ2xEeEMsdXpVQW1UQTs7NEZEalFhLDJCQUEyQjtrQkFkdkMsU0FBUzsrQkFDRSwwQkFBMEIsV0FHM0I7d0JBQ1AsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLDZCQUE2QjtxQkFDOUIsVUFDTyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGSUVMRF9URVhUIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NvbnN0YW50cy9maWVsZC10ZXh0LmNvbnN0YW50JztcbmltcG9ydCB7IExJTktTIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NvbnN0YW50cy9jZG4tbGluay5jb25zdGFudCc7XG5pbXBvcnQgeyBWQUxJREFUSU9OX01FU1NBR0UgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzL3ZhbGlkYXRpb24tbWVzc2FnZS5jb25zdGFudCc7XG5pbXBvcnQge1xuICBBZGRHcmMsXG4gIEF0dHJpYnV0ZXMsXG4gIEJ1dHRvbixcbiAgR1JDVHlwZSxcbiAgSW5wdXRUeXBlLFxuICBMaXN0T2JqZWN0LFxuICBPcGVuZWRQb3B1cCxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvYWRkLWdyYyc7XG5pbXBvcnQgeyBHcmNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2dyYy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgR1JDX1RZUEVfQVJSQVksXG4gIE9USEVSX0dSQ19DQVJELFxuICBPVEhFUl9HUkNfVEFCX0lOREVYLFxuICBTTUlMRVlfQlVUVE9OUyxcbiAgVU5DQVRFR09SSVpFRF9MSU5LX0NBVEVHT1JZLFxufSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzL2dyY09iamVjdC5jb25zdGFudCc7XG5pbXBvcnQgeyBTVUNDRVNTX01FU1NBR0UgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzL21lc3NhZ2UuY29udHN0YW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVWlLaXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvdWkta2l0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcGxpYW5jZUNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9jb21tb24td29ya2Zsb3ctc2VydmljZXMvY29tcGxpYW5jZS1jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBPcmdhbml6YXRpb25Db21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvY29tbW9uLXdvcmtmbG93LXNlcnZpY2VzL29yZ2FuaXphdGlvbi1jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZnJhbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaWZyYW1lLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZ3JjLW9iamVjdC1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JjLW9iamVjdC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmMtb2JqZWN0LWNvbnRhaW5lci5jb21wb25lbnQubGVzcycsICcuLi8uLi8uLi9mb3Jtcy5sZXNzJ10sXG4gIG91dHB1dHM6IFtcbiAgICAncG9wdWxhdGVPcHRpb24nLFxuICAgICdwaWNrZXJDaGFuZ2VkJyxcbiAgICAnY2xvc2VXb3JrZmxvdycsXG4gICAgJ2Rpc2Nvbm5lY3RSZWZyZXNoJyxcbiAgICAncmVzZXRGb3JtJyxcbiAgICAnaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zJyxcbiAgXSxcbiAgaW5wdXRzOiBbJ2dyY1R5cGUnLCAnTU9ERScsICdJRCddLFxufSlcbmV4cG9ydCBjbGFzcyBHcmNPYmplY3RDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIE1PREU6ICdDUkVBVEUnIHwgJ0VESVQnID0gJ0NSRUFURSc7XG4gIElEOiBzdHJpbmcgPSAnJztcbiAgQUxMX1RFWFQgPSBGSUVMRF9URVhUO1xuICBDRE5fTElOSyA9IExJTktTO1xuICBWQUxJREFUSU9OX01FU1NBR0UgPSBWQUxJREFUSU9OX01FU1NBR0U7XG4gIEdSQ19UWVBFX0FSUkFZID0gR1JDX1RZUEVfQVJSQVk7XG4gIEVESVRPUl9DT05GSUcgPSBHcmNTZXJ2aWNlLkVESVRPUl9DT05GSUc7XG4gIG90aGVyR1JDQ2FyZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoT1RIRVJfR1JDX0NBUkQpKTtcbiAgT0JKRUNUX1RZUEUhOiBHUkNUeXBlW107XG4gIExJU1RfUE9QVVA6IEFycmF5PHN0cmluZz4gPSBbJ1JDJ107XG4gIHNtaWxleU1lc3NhZ2U6IHN0cmluZyA9IFNVQ0NFU1NfTUVTU0FHRS5BRERfR1JDX09CSkVDVDtcbiAgSU5QVVRfVFlQRTogSW5wdXRUeXBlID0ge1xuICAgIG5hbWU6ICdOQU1FJyxcbiAgICBvd25lcjogJ09XTkVSJyxcbiAgICBSQzogJ1JDJyxcbiAgICByaXNrQ2F0ZWdvcnk6ICdSSVNLX0NBVEVHT1JZJyxcbiAgICBvdGhlckdyY09iamVjdHM6ICdPVEhFUl9HUkNfT0JKRUNUUycsXG4gICAgcHJvZ3JhbVJlc3BvbnNpYmlsaXR5OiAnUFJPR1JBTV9SRVNQT05TSUJJTElUWScsXG4gIH07XG4gIE9SSUdJTkFMX0dSQ19BVFRSSUJVVEVTOiBhbnk7IC8vIERvbid0IGNoYW5nZSB0aGUgdmFsdWUgb25jZSBpdCBpcyBhc3NpZ25lZFxuICBkaWFsb2dGaWVsZHM6IEFycmF5PHN0cmluZz4gPSBbXG4gICAgJ1JDJyxcbiAgICAnT1dORVInLFxuICAgICdPVEhFUl9HUkNfT0JKRUNUUycsXG4gICAgJ1JJU0tfQ0FURUdPUlknLFxuICAgICdBVFRSSUJVVEVTJyxcbiAgICAnUFJPR1JBTV9SRVNQT05TSUJJTElUWScsXG4gIF07XG4gIHNjcm9sbFRvQm90dG9tID0gZmFsc2U7XG4gIGdyY1R5cGU6IDAgfCAxIHwgMiB8IDMgPSAwO1xuICBkaXNhYmxlZElkczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuICBvcGVuZWRQb3B1cDogT3BlbmVkUG9wdXBbJ3R5cGUnXSA9ICcnO1xuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICBhZGRpdGlvbmFsT3B0aW9uOiBhbnkgPSB7XG4gICAgQVRUUklCVVRFUzogZmFsc2UsXG4gICAgTElOS19QUk9HUkFNOiBmYWxzZSxcbiAgICBMSU5LX1JJU0tfQ0FURUdPUklFU19SSVNLUzogZmFsc2UsXG4gICAgT1RIRVJfR1JDX09CSkVDVFM6IGZhbHNlLFxuICB9O1xuICBncmNGb3JtOiBhbnkgPSB7XG4gICAgZ3JjT2JqZWN0VHlwZTogZmFsc2UsXG4gICAgbGlua1Byb2dyYW06IGZhbHNlLFxuICAgIGxpbmtSaXNrOiBmYWxzZSxcbiAgICBvdGhlckdyY09iamVjdHM6IGZhbHNlLFxuICB9O1xuICBncmNQYXlsb2FkITogQWRkR3JjO1xuICBsaXN0T2JqZWN0ITogTGlzdE9iamVjdDtcbiAgc2VsZWN0ZWRBdHRyaWJ1dGVzITogR1JDVHlwZTtcbiAgc2hvd1NtaWxleTogYm9vbGVhbiA9IGZhbHNlO1xuICBhY3Rpb25CdXR0b25zOiBCdXR0b25bXSA9IFNNSUxFWV9CVVRUT05TO1xuICBncmNEYXRhV2l0aFR5cGVzOiBhbnkgPSB7XG4gICAgYXNzZXRzOiBbXSxcbiAgICBwcm9jZXNzZXM6IFtdLFxuICAgIHZlbmRvcnM6IFtdLFxuICAgIGludmVudG9yeTogW10sXG4gIH07XG4gIEdSQ1NlbGVjdGVkVGFiOiBudW1iZXIgPSAwO1xuICBvdGhlckdSQ1RhYkluZGV4ID0gT1RIRVJfR1JDX1RBQl9JTkRFWDtcbiAgaXNGb3JtU3VibWl0dGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGdyY05hbWVWYWxpZGF0aW9uRXJyb3I6IHN0cmluZyA9ICcnO1xuICBpc0R1cGxpY2F0ZU5hbWU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGV0YWlsc0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBzZWxlY3RlZENhdGVnb3JpZXM6IGFueVtdID0gW107XG4gIHNlbGVjdGVkUmlza3M6IGFueVtdID0gW107XG4gIGFkZGVkR1JDOiBhbnk7XG4gIG90aGVyR1JDU2VhcmNoOiBzdHJpbmcgPSAnJztcbiAgZ3JjVGFiTG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkUHJvZ3JhbTogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eTogYW55W10gPSBbXTtcbiAgc3VibWl0TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcG9wdWxhdGVPcHRpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwaWNrZXJDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgY2xvc2VXb3JrZmxvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGRpc2Nvbm5lY3RSZWZyZXNoOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcmVzZXRGb3JtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBvdGhlckdSQ1N1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgaGlkZU1vcmVPcHRpb246IGFueSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZ3JjU2VydmljZTogR3JjU2VydmljZSxcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IFJlc3BvbnNpYmlsaXR5U2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIHVpS2l0U2VydmljZTogVWlLaXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29tcGxpYW5jZUNvbW1vblNlcnZpY2U6IENvbXBsaWFuY2VDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgb3JnYW5pemF0aW9uQ29tbW9uU2VydmljZTogT3JnYW5pemF0aW9uQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIGlmcmFtZVNlcnZpY2U6IElmcmFtZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0R1JDRm9ybSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5ncmNQYXlsb2FkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmdyY1NlcnZpY2UuR1JDX1BBWUxPQUQpKTtcbiAgICB0aGlzLmdyY1BheWxvYWQudHlwZSA9IHRoaXMuZ3JjVHlwZTtcbiAgICB0aGlzLmxpc3RPYmplY3QgPSB0aGlzLmdyY1NlcnZpY2UuTElTVF9PQkpFQ1Q7XG4gICAgdGhpcy5faW5pdGlhdGVBUEkoKTtcbiAgICB0aGlzLmdldFN1YnNjcmlwdGlvbkRldGFpbHMoKTtcbiAgfVxuXG4gIGdldFN1YnNjcmlwdGlvbkRldGFpbHMoKSB7XG4gICAgdGhpcy5vcmdhbml6YXRpb25Db21tb25TZXJ2aWNlPy5nZXRTdWJzY3JpcHRpb25EZXRhaWxzSW5mbygpPy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmICghcmVzWzBdPy5yaXNrX2ZsYWcpIHtcbiAgICAgICAgICB0aGlzLmhpZGVNb3JlT3B0aW9uLnB1c2goJ0xJTktfUklTS19DQVRFR09SSUVTX1JJU0tTJyk7XG4gICAgICAgICAgdGhpcy5oaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMuZW1pdCh0aGlzLmhpZGVNb3JlT3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcG9wdWxhdGVPcHRpb25hbEZpZWxkcygpIHtcbiAgICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5hZGRpdGlvbmFsT3B0aW9uKSkge1xuICAgICAgaWYgKHRoaXMuYWRkaXRpb25hbE9wdGlvbltrZXldID09PSB0cnVlKSB7XG4gICAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChhY3RpdmF0ZWRPcHRpb25zKTtcbiAgfVxuXG4gIC8vVE9ETzogaW1wbGVtZW50IHRoaXNcbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xuICAgIHN3aXRjaCAoZXZlbnQ/LmNvZGUpIHtcbiAgICAgIGNhc2UgJ0FUVFJJQlVURVMnOlxuICAgICAgICB0aGlzLmdyY0Zvcm0uZ3JjT2JqZWN0VHlwZSA9IGV2ZW50Py5jaGVja2VkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0xJTktfUFJPR1JBTSc6XG4gICAgICAgIHRoaXMuZ3JjRm9ybS5saW5rUHJvZ3JhbSA9IGV2ZW50Py5jaGVja2VkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0xJTktfUklTS19DQVRFR09SSUVTX1JJU0tTJzpcbiAgICAgICAgdGhpcy5ncmNGb3JtLmxpbmtSaXNrID0gZXZlbnQ/LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnT1RIRVJfR1JDX09CSkVDVFMnOlxuICAgICAgICB0aGlzLmdyY0Zvcm0ub3RoZXJHcmNPYmplY3RzID0gZXZlbnQ/LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gdHJ1ZTtcbiAgfVxuXG4gIC8vVE9ETzogaW1wbGVtZW50IHRoaXNcbiAgb25UZXh0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmdyY1BheWxvYWQubmFtZSA9IGV2ZW50LnRyaW0oKTtcbiAgICB0aGlzLm9wZW5lZFBvcHVwID0gJyc7XG4gICAgdGhpcy5ncmNOYW1lVmFsaWRhdGlvbkVycm9yID0gJyc7XG4gICAgdGhpcy5pc0R1cGxpY2F0ZU5hbWUgPSBmYWxzZTtcbiAgfVxuXG4gIC8vVE9ETzogaW1wbGVtZW50IHRoaXNcbiAgb25Qb3B1cE9wZW4odHlwZTogT3BlbmVkUG9wdXBbJ3R5cGUnXSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnT1dORVInOlxuICAgICAgY2FzZSAnUkMnOlxuICAgICAgICB0aGlzLm9wZW5lZFBvcHVwID0gdHlwZTtcbiAgICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnT1RIRVJfR1JDX09CSkVDVFMnOlxuICAgICAgICB0aGlzLm9wZW5lZFBvcHVwID0gdHlwZTtcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyByY19pZHM6ICcnIH0pO1xuICAgICAgICB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoeyByY19pZHM6ICcnIH0pO1xuICAgICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdSSVNLX0NBVEVHT1JZJzpcbiAgICAgICAgdGhpcy5vcGVuZWRQb3B1cCA9IHR5cGU7XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UucHJldmlld1BhbmVsLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1BST0dSQU1fUkVTUE9OU0lCSUxJVFknOlxuICAgICAgICB0aGlzLm9wZW5lZFBvcHVwID0gdHlwZTtcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5wcmV2aWV3UGFuZWwubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG4gIH1cblxuICBvblNhdmVTZWxlY3RlZExpc3QoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubGlzdE9iamVjdCA9IGV2ZW50O1xuICAgIGlmICh0aGlzLm9wZW5lZFBvcHVwID09PSAnT1RIRVJfR1JDX09CSkVDVFMnKSB7XG4gICAgICB0aGlzLnNldE90aGVyR1JDVHlwZXNGb3JtYXRlKCk7XG4gICAgfVxuICAgIHRoaXMuc2V0TGlzdFBheWxvYWQodGhpcy5vcGVuZWRQb3B1cCk7XG4gICAgdGhpcy5vcGVuZWRQb3B1cCA9ICcnO1xuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnByZXZpZXdQYW5lbC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIGdldEF0dHJpYnV0ZVNlbGVjdGlvbihldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLm9wZW5lZFBvcHVwID0gJyc7XG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuZWRQb3B1cCA9ICcnO1xuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xuICAgICAgdGhpcy5hdXRoU2VydmljZS5wcmV2aWV3UGFuZWwubmV4dChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0TGlzdFBheWxvYWQodHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGUgPT09ICdPV05FUicpIHtcbiAgICAgIHRoaXMuZ3JjUGF5bG9hZC5vd25lcnMgPSB0aGlzLmxpc3RPYmplY3QuT1dORVIuc2VsZWN0ZWREYXRhLm1hcChcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS5tZW1iZXJfaWRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdSQycpIHtcbiAgICAgIGxldCBwcmV2aW91c1JDSWRzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmdyY1BheWxvYWQucmNfaWRzKSk7XG4gICAgICB0aGlzLmdyY1BheWxvYWQucmNfaWRzID0gdGhpcy5saXN0T2JqZWN0LlJDLnNlbGVjdGVkRGF0YS5tYXAoXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/Ll9pZFxuICAgICAgKTtcbiAgICAgIGlmIChcbiAgICAgICAgIXByZXZpb3VzUkNJZHMuZXZlcnkoKGlkOiBhbnkpID0+IHRoaXMuZ3JjUGF5bG9hZC5yY19pZHMuaW5jbHVkZXMoaWQpKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMucmVzZXREYXRhT25SQ0NoYW5nZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ09USEVSX0dSQ19PQkpFQ1RTJykge1xuICAgICAgdGhpcy5ncmNQYXlsb2FkLmxpbmtlZF9HUkNfaWRzID1cbiAgICAgICAgdGhpcy5saXN0T2JqZWN0Lk9USEVSX0dSQ19PQkpFQ1RTLnNlbGVjdGVkRGF0YS5tYXAoXG4gICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS5faWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdSSVNLX0NBVEVHT1JZJykge1xuICAgICAgdGhpcy5ncmNQYXlsb2FkLnJpc2tfY2F0ZWdvcnlfaWRzID0gdGhpcy5nZXRSaXNrQ2F0ZWdvcnlQYXlsb2FkKFxuICAgICAgICB0aGlzLmxpc3RPYmplY3Q/LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdQUk9HUkFNX1JFU1BPTlNJQklMSVRZJykge1xuICAgICAgdGhpcy5ncmNQYXlsb2FkLnByb2dyYW1fY2F0ZWdvcnlfaWRzID1cbiAgICAgICAgdGhpcy5nZXRQcm9ncmFtUmVzcG9uc2liaWxpdHlQYXlsb2FkKFxuICAgICAgICAgIHRoaXMubGlzdE9iamVjdD8uUFJPR1JBTV9SRVNQT05TSUJJTElUWT8uc2VsZWN0ZWREYXRhXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgb25DbGlja091dHNpZGUoKSB7XG4gICAgLy90aGlzLm9wZW5lZFBvcHVwID0gJyc7XG4gIH1cblxuICBvbkVkaXQoZXZlbnQ6IGFueSwgc3ViVHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5vcGVuZWRQb3B1cCA9IGV2ZW50O1xuICAgIGlmIChldmVudCA9PT0gJ09USEVSX0dSQ19PQkpFQ1RTJykge1xuICAgICAgdGhpcy5HUkNTZWxlY3RlZFRhYiA9IHRoaXMub3RoZXJHUkNUYWJJbmRleFtzdWJUeXBlXSA/PyAwO1xuICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyB0eXBlOiB0aGlzLkdSQ1NlbGVjdGVkVGFiLCByY19pZHM6ICcnIH0pO1xuICAgICAgdGhpcy5nZXRPdGhlckdSQ1RhYkNvdW50KHsgcmNfaWRzOiAnJyB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuTElTVF9QT1BVUC5pbmNsdWRlcyhldmVudCkpIHtcbiAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xuICAgICAgLy8gdGhpcy5hdXRoU2VydmljZS5wcmV2aWV3UGFuZWwubmV4dCh0cnVlKTtcbiAgICB9XG4gICAgaWYgKGV2ZW50ID09PSAnUklTS19DQVRFR09SWScgfHwgZXZlbnQgPT09ICdQUk9HUkFNX1JFU1BPTlNJQklMSVRZJykge1xuICAgICAgdGhpcy5hdXRoU2VydmljZS5wcmV2aWV3UGFuZWwubmV4dCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBvblJlbW92ZURhdGEoXG4gICAgZXZlbnQ6IGFueSxcbiAgICB0eXBlOlxuICAgICAgfCAnUkMnXG4gICAgICB8ICdPV05FUidcbiAgICAgIHwgJ09USEVSX0dSQ19PQkpFQ1RTJ1xuICAgICAgfCAnUklTS19DQVRFR09SWSdcbiAgICAgIHwgJ1BST0dSQU1fUkVTUE9OU0lCSUxJVFknXG4gICkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnUkMnOlxuICAgICAgICB0aGlzLmxpc3RPYmplY3RbdHlwZV0uc2VsZWN0ZWREYXRhLnNwbGljZShldmVudC5pbmRleCwgMSk7XG4gICAgICAgIHRoaXMucmVzZXREYXRhT25SQ0NoYW5nZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ09XTkVSJzpcbiAgICAgICAgdGhpcy5saXN0T2JqZWN0W3R5cGVdLnNlbGVjdGVkRGF0YS5zcGxpY2UoZXZlbnQuaW5kZXgsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ09USEVSX0dSQ19PQkpFQ1RTJzpcbiAgICAgICAgdGhpcy5yZW1vdmVPdGhlckdSQ09iamVjdHMoZXZlbnQ/LmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1JJU0tfQ0FURUdPUlknOlxuICAgICAgICB0aGlzLmRlbGV0ZVNlbGVjdGVkUmlzayhldmVudC5kYXRhPy5DYXRlZ29yeUlkc1swXSwgZXZlbnQ/LmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1BST0dSQU1fUkVTUE9OU0lCSUxJVFknOlxuICAgICAgICB0aGlzLmRlbGV0ZVNlbGVjdGVkUmVzcG9uc2liaWxpdHkoZXZlbnQ/LmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5zZXRMaXN0UGF5bG9hZCh0eXBlKTtcbiAgfVxuXG4gIGNoYW5nZUF0dHJpYnV0ZXNUeXBlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmdyY1R5cGUgPSBldmVudDtcbiAgICB0aGlzLmdyY1BheWxvYWQudHlwZSA9IGV2ZW50O1xuICAgIHRoaXMuc2V0RGVmYXVsdEdSQ09iamVjdFR5cGUoKTtcblxuICAgIC8vIFNldCBncmNGb3JtLmdyY09iamVjdFR5cGUgYmFzZWQgb24gd2hldGhlciBhdHRyaWJ1dGVzIGFyZSBhdmFpbGFibGVcbiAgICBpZiAodGhpcy5zZWxlY3RlZEF0dHJpYnV0ZXM/LmF0dHJpYnV0ZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZ3JjRm9ybS5ncmNPYmplY3RUeXBlID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BVFRSSUJVVEVTID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ncmNGb3JtLmdyY09iamVjdFR5cGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BVFRSSUJVVEVTID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gTWV0aG9kIHRvIGV4cGxpY2l0bHkgdXBkYXRlIHRoZSB0YWIgc2VsZWN0b3IgaW4gZWRpdCBtb2RlXG4gIHVwZGF0ZVRhYlNlbGVjdG9yKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuTU9ERSA9PT0gJ0VESVQnICYmXG4gICAgICB0aGlzLmdyY1BheWxvYWQudHlwZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLk9CSkVDVF9UWVBFICYmXG4gICAgICB0aGlzLk9CSkVDVF9UWVBFLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMuZ3JjVHlwZSA9IHRoaXMuZ3JjUGF5bG9hZC50eXBlO1xuICAgICAgdGhpcy5zZXREZWZhdWx0R1JDT2JqZWN0VHlwZSgpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdGlhdGVBUEkoKSB7XG4gICAgaWYgKHRoaXMuTU9ERSA9PT0gJ0VESVQnKSB7XG4gICAgICB0aGlzLmdldEdSQ09iamVjdERldGFpbHModGhpcy5JRCk7XG4gICAgICB0aGlzLnNtaWxleU1lc3NhZ2UgPSBTVUNDRVNTX01FU1NBR0UuVVBEQVRFX0dSQ19PQkpFQ1Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGV0YWlsc0xvYWRlciA9IGZhbHNlO1xuICAgICAgdGhpcy5fZ2V0R1JDT2JqZWN0VHlwZSgpO1xuICAgICAgdGhpcy5fZ2V0T3duZXJMaXN0KCk7XG4gICAgICB0aGlzLl9nZXRSQ0xpc3QoKTtcbiAgICAgIHRoaXMuZ2V0T3RoZXJHUkNPYmplY3RzKHsgcmNfaWRzOiAnJyB9KTtcbiAgICAgIC8vIHRoaXMuZ2V0T3RoZXJHUkNUYWJDb3VudCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldE93bmVyTGlzdCgpIHtcbiAgICB0aGlzLmxpc3RPYmplY3QuT1dORVIuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmFwaVNlcnZpY2UuZ2V0R1JDT3duZXJMaXN0KCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICh1c2VyTGlzdDogYW55KSA9PiB0aGlzLm1hcFVzZXJMaXN0KHVzZXJMaXN0KSxcbiAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge30sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIGBtYXBVc2VyTGlzdGAgbWFwcyB0aGUgdXNlciBsaXN0IGRhdGEgYW5kIHBlcmZvcm1zIHNvbWUgYWRkaXRpb25hbCBvcGVyYXRpb25zIG9uIGVhY2hcbiAgICogdXNlciBvYmplY3QuXG4gICAqIEBwYXJhbSB7YW55fSB1c2VyTGlzdCAtIFRoZSBgdXNlckxpc3RgIHBhcmFtZXRlciBpcyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIGBkYXRhYCBwcm9wZXJ0eS4gVGhlXG4gICAqIGBkYXRhYCBwcm9wZXJ0eSBpcyBhbiBhcnJheSBvZiB1c2VyIG9iamVjdHMuXG4gICAqL1xuICBwcml2YXRlIG1hcFVzZXJMaXN0KHVzZXJMaXN0OiBhbnkpIHtcbiAgICB0aGlzLmxpc3RPYmplY3RbJ09XTkVSJ11bJ2RhdGEnXSA9IHt9O1xuICAgIHRoaXMubGlzdE9iamVjdFsnT1dORVInXS5zZWxlY3RlZERhdGEgPSBbXTtcbiAgICB0aGlzLmRpc2FibGVkSWRzID0gW107XG4gICAgLy8gTWFwIHdpbGwgZ2V0IHJlbW92ZSBvbmNlIEFQSSBjaGFuZ2VcbiAgICB0aGlzLmxpc3RPYmplY3RbJ09XTkVSJ11bJ2RhdGEnXVsnYXNzaWduZWVzTGlzdCddID0gdXNlckxpc3Q/LmRhdGEubWFwKFxuICAgICAgKHVzZXI6IGFueSkgPT4ge1xuICAgICAgICB1c2VyLml0ZW1fbmFtZSA9IHVzZXIubWVtYmVyX25hbWU7XG4gICAgICAgIHVzZXIuZW1wbG95ZWVfbmFtZSA9IHVzZXIubWVtYmVyX25hbWU7XG4gICAgICAgIHVzZXIubXlfbWVtYmVyX2lkID0gdXNlci5tZW1iZXJfaWQ7XG4gICAgICAgIHVzZXIuaXRlbV9pZCA9IHVzZXIubWVtYmVyX2lkO1xuICAgICAgICBpZiAoWydBRE1JTicsICdLRVlfQURNSU4nXS5pbmNsdWRlcyh1c2VyLnVzZXJfcm9sZSkpIHtcbiAgICAgICAgICB0aGlzLmRpc2FibGVkSWRzLnB1c2godXNlci5tZW1iZXJfaWQpO1xuICAgICAgICAgIHRoaXMubGlzdE9iamVjdFsnT1dORVInXS5zZWxlY3RlZERhdGEucHVzaCh1c2VyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXNlcjtcbiAgICAgIH1cbiAgICApO1xuICAgIGlmICh0aGlzLk1PREUgPT09ICdFRElUJykge1xuICAgICAgdGhpcy5saXN0T2JqZWN0Lk9XTkVSLnNlbGVjdGVkRGF0YSA9IHRoaXMubGlzdE9iamVjdFsnT1dORVInXVsnZGF0YSddW1xuICAgICAgICAnYXNzaWduZWVzTGlzdCdcbiAgICAgIF0uZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgbWVtYmVySWQgPSBpdGVtPy5tZW1iZXJfaWQ7XG4gICAgICAgIGNvbnN0IG1lbWJlcklkQXNOdW1iZXIgPVxuICAgICAgICAgIHR5cGVvZiBtZW1iZXJJZCA9PT0gJ3N0cmluZycgPyBOdW1iZXIobWVtYmVySWQpIDogbWVtYmVySWQ7XG4gICAgICAgIHJldHVybiB0aGlzLmdyY1BheWxvYWQub3duZXJzLmluY2x1ZGVzKG1lbWJlcklkQXNOdW1iZXIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmxpc3RPYmplY3RbJ09XTkVSJ10uZGlzYWJsZWRJZHMgPSBBcnJheS5mcm9tKFxuICAgICAgICBuZXcgU2V0KHRoaXMuZGlzYWJsZWRJZHMpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlZmF1bHRTZWxlY3RlZFVzZXIoKTtcbiAgICB9XG4gICAgdGhpcy5saXN0T2JqZWN0Lk9XTkVSLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuY2hlY2tJc0RhdGFMb2FkZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gYGRlZmF1bHRTZWxlY3RlZFVzZXIoKWAgc2V0cyB0aGUgZGVmYXVsdCBzZWxlY3RlZCB1c2VyIGJhc2VkIG9uIHRoZSBjdXJyZW50IHVzZXIncyByb2xlXG4gICAqIGFuZCBhc3NpZ25zIGl0IHRvIHRoZSBgT1dORVJgIGxpc3Qgb2JqZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSBkZWZhdWx0U2VsZWN0ZWRVc2VyKCkge1xuICAgIGlmICghdGhpcy5hdXRoU2VydmljZS5pc0FkbWluKCkgJiYgIXRoaXMuYXV0aFNlcnZpY2UuaXNLZXlBZG1pbigpKSB7XG4gICAgICBjb25zdCBVU0VSID0gdGhpcy5saXN0T2JqZWN0WydPV05FUiddWydkYXRhJ11bJ2Fzc2lnbmVlc0xpc3QnXS5maW5kKFxuICAgICAgICAodXNlcjogYW55KSA9PiB1c2VyLm1lbWJlcl9pZCA9PT0gdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpXG4gICAgICApO1xuICAgICAgdGhpcy5saXN0T2JqZWN0WydPV05FUiddLnNlbGVjdGVkRGF0YS5wdXNoKFVTRVIpO1xuICAgIH1cbiAgICB0aGlzLmxpc3RPYmplY3RbJ09XTkVSJ11bJ2Rpc2FibGVkSWRzJ10gPSBbLi4udGhpcy5kaXNhYmxlZElkc107XG4gICAgdGhpcy5ncmNQYXlsb2FkLm93bmVycyA9IHRoaXMubGlzdE9iamVjdFsnT1dORVInXS5zZWxlY3RlZERhdGEubWFwKFxuICAgICAgKHVzZXI6IGFueSkgPT4gdXNlci5tZW1iZXJfaWRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UkNMaXN0KCkge1xuICAgIHRoaXMubGlzdE9iamVjdC5SQy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuY29tcGxpYW5jZUNvbW1vblNlcnZpY2U/LmdldFJjTGlzdEluZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5saXN0T2JqZWN0WydSQyddWydkYXRhJ10gPSBkYXRhO1xuICAgICAgICB0aGlzLmxpc3RPYmplY3QuUkMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLk1PREUgPT09ICdFRElUJykge1xuICAgICAgICAgIHRoaXMubGlzdE9iamVjdC5SQy5zZWxlY3RlZERhdGEgPSBkYXRhPy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgIHRoaXMuZ3JjUGF5bG9hZD8ucmNfaWRzPy5pbmNsdWRlcyhpdGVtPy5faWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoZWNrSXNEYXRhTG9hZGVkKCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0R1JDT2JqZWN0VHlwZSgpIHtcbiAgICB0aGlzLmFwaVNlcnZpY2UuZ2V0T2JqZWN0VHlwZSgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogR1JDVHlwZVtdKSA9PiB7XG4gICAgICAgIC8vIHRoaXMuc2V0TGlua1Jpc2tUYWIoZGF0YSk7XG4gICAgICAgIGNvbnN0IE9CSkVDVF9MQUJFTDogYW55ID0ge1xuICAgICAgICAgIEFTU0VUUzogJ0Fzc2V0JyxcbiAgICAgICAgICBQUk9DRVNTRVM6ICdQcm9jZXNzJyxcbiAgICAgICAgICBWRU5ET1JTOiAnVmVuZG9yJyxcbiAgICAgICAgICBJTlZFTlRPUlk6ICdJbnZlbnRvcnknLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLk9CSkVDVF9UWVBFID0gZGF0YS5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgIGl0ZW0udmFsdWUgPSBpbmRleDtcbiAgICAgICAgICBpdGVtLmxhYmVsID0gT0JKRUNUX0xBQkVMW2l0ZW0/LmxhYmVsPy50b1VwcGVyQ2FzZSgpXSA/PyBpdGVtPy5sYWJlbDtcbiAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5PUklHSU5BTF9HUkNfQVRUUklCVVRFUyA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5PQkpFQ1RfVFlQRSlcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGhpcy5NT0RFID09PSAnRURJVCcpIHtcbiAgICAgICAgICB0aGlzLk9CSkVDVF9UWVBFW3RoaXMuZ3JjVHlwZV0uYXR0cmlidXRlcyA9XG4gICAgICAgICAgICB0aGlzLmdyY1BheWxvYWQuYXR0cmlidXRlcztcblxuICAgICAgICAgIC8vIEFsd2F5cyBzZXQgZ3JjT2JqZWN0VHlwZSB0byB0cnVlIGlmIHRoZXJlIGFyZSBhdHRyaWJ1dGVzIGF2YWlsYWJsZVxuICAgICAgICAgIGlmICh0aGlzLk9CSkVDVF9UWVBFW3RoaXMuZ3JjVHlwZV0uYXR0cmlidXRlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncmNGb3JtLmdyY09iamVjdFR5cGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFUVFJJQlVURVMgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEdSQ09iamVjdFR5cGUoKTtcbiAgICAgICAgdGhpcy5jaGVja0lzRGF0YUxvYWRlZCgpO1xuXG4gICAgICAgIC8vIEZvcmNlIGNoYW5nZSBkZXRlY3Rpb24gZm9yIHRhYi1zZWxlY3RvciBjb21wb25lbnQgaW4gZWRpdCBtb2RlXG4gICAgICAgIGlmICh0aGlzLk1PREUgPT09ICdFRElUJykge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVUYWJTZWxlY3RvcigpO1xuICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHt9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREZWZhdWx0R1JDT2JqZWN0VHlwZSgpIHtcbiAgICB0aGlzLnNlbGVjdGVkQXR0cmlidXRlcyA9XG4gICAgICB0aGlzLk9CSkVDVF9UWVBFLmZpbmQoKGVsZTogYW55KSA9PiBlbGUudmFsdWUgPT09IHRoaXMuZ3JjVHlwZSkgPz9cbiAgICAgIHRoaXMuT0JKRUNUX1RZUEVbMF07XG4gICAgICBpZih0aGlzLnNlbGVjdGVkQXR0cmlidXRlcz8uYXR0cmlidXRlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmdyY0Zvcm0uZ3JjT2JqZWN0VHlwZSA9IHRydWU7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BVFRSSUJVVEVTID0gdHJ1ZTtcbiAgICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJc0RhdGFMb2FkZWQoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPVxuICAgICAgdGhpcy5saXN0T2JqZWN0Lk9XTkVSLmlzTG9hZGluZyB8fFxuICAgICAgdGhpcy5saXN0T2JqZWN0LlJDLmlzTG9hZGluZyB8fFxuICAgICAgdGhpcy5saXN0T2JqZWN0Lk9USEVSX0dSQ19PQkpFQ1RTLmlzTG9hZGluZyB8fFxuICAgICAgKHRoaXMuTU9ERSA9PT0gJ0VESVQnICYmIHRoaXMuZGV0YWlsc0xvYWRlcik7XG4gIH1cblxuICBnZXRPdGhlckdSQ09iamVjdHMoZXZlbnQ/OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vdGhlckdSQ1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5vdGhlckdSQ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAoZXZlbnQ/LnNlYXJjaFN0cmluZyAmJiB0aGlzLm90aGVyR1JDU2VhcmNoICE9PSBldmVudD8uc2VhcmNoU3RyaW5nKSB7XG4gICAgICB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoZXZlbnQpO1xuICAgIH1cbiAgICB0aGlzLm90aGVyR1JDU2VhcmNoID0gZXZlbnQ/LnNlYXJjaFN0cmluZyA/PyAnJztcbiAgICB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAvLyBldmVudFsncmNfaWRzJ10gPSB0aGlzLmxpc3RPYmplY3Q/LlJDPy5zZWxlY3RlZERhdGFcbiAgICAvLyAgID8ubWFwKChyYzogYW55KSA9PiByYz8uX2lkKVxuICAgIC8vICAgLmpvaW4oJywnKTtcbiAgICB0aGlzLm90aGVyR1JDU3Vic2NyaXB0aW9uID0gdGhpcy5ncmNTZXJ2aWNlXG4gICAgICAuZ2V0R1JDTGlzdChldmVudClcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuZGF0YSA9IGRhdGE7XG4gICAgICAgIHRoaXMubGlzdE9iamVjdC5PVEhFUl9HUkNfT0JKRUNUUy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuTU9ERSA9PT0gJ0VESVQnKSB7XG4gICAgICAgICAgLy8gdGhpcy5saXN0T2JqZWN0Lk9USEVSX0dSQ19PQkpFQ1RTLnNlbGVjdGVkRGF0YSA9IGRhdGEuZmlsdGVyKFxuICAgICAgICAgIC8vICAgKGl0ZW06IGFueSkgPT4gdGhpcy5ncmNQYXlsb2FkLmxpbmtlZF9HUkNfaWRzLmluY2x1ZGVzKGl0ZW0/Ll9pZClcbiAgICAgICAgICAvLyApO1xuICAgICAgICAgIGlmICh0aGlzLmdyY1BheWxvYWQubGlua2VkX0dSQ19pZHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5ncmNGb3JtLm90aGVyR3JjT2JqZWN0cyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1RIRVJfR1JDX09CSkVDVFMgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hlY2tJc0RhdGFMb2FkZWQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0T3RoZXJHUkNUYWJDb3VudChldmVudD86IGFueSkge1xuICAgIHRoaXMuZ3JjVGFiTG9hZGVyID0gdHJ1ZTtcbiAgICAvLyBldmVudFsncmNfaWRzJ10gPSB0aGlzLmxpc3RPYmplY3Q/LlJDPy5zZWxlY3RlZERhdGFcbiAgICAvLyAgID8ubWFwKChyYzogYW55KSA9PiByYz8uX2lkKVxuICAgIC8vICAgLmpvaW4oJywnKTtcbiAgICB0aGlzLmdyY1NlcnZpY2UuZ2V0R1JDVGFic0NvdW50KGV2ZW50KS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgdGhpcy5ncmNUYWJMb2FkZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMub3RoZXJHUkNDYXJkWzBdLmNvdW50ID0gZGF0YT8uYXNzZXRzX3R5cGVfY291bnQ7XG4gICAgICB0aGlzLm90aGVyR1JDQ2FyZFsxXS5jb3VudCA9IGRhdGE/LnByb2Nlc3Nlc190eXBlX2NvdW50O1xuICAgICAgdGhpcy5vdGhlckdSQ0NhcmRbMl0uY291bnQgPSBkYXRhPy52ZW5kb3JzX3R5cGVfY291bnQ7XG4gICAgICB0aGlzLm90aGVyR1JDQ2FyZFszXS5jb3VudCA9IGRhdGE/LmludmVudG9yeV90eXBlX2NvdW50O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0T3RoZXJHUkNUYWJJbmRleChldmVudD86IGFueSwgZGF0YT86IGFueSkge31cblxuICAvL1BvcHVsYXRlL0VkaXQgR1JDIE9iamVjdFxuXG4gIGdldEdSQ09iamVjdERldGFpbHMoZ3JjSWQ6IHN0cmluZykge1xuICAgIHRoaXMuYXBpU2VydmljZS5nZXRHUkNPYmplY3REZXRhaWxzKGdyY0lkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm9wZW5lZFBvcHVwID0gJyc7XG4gICAgICAgIHRoaXMucG9wdWxhdGVQYXlsb2FkKGRhdGEpO1xuICAgICAgICB0aGlzLmdyY1R5cGUgPSBkYXRhPy50eXBlOyAvLyBTZXQgZ3JjVHlwZSBiZWZvcmUgY2FsbGluZyBfZ2V0R1JDT2JqZWN0VHlwZVxuICAgICAgICB0aGlzLmNyZWF0ZUdSQ09iamVjdChkYXRhPy5saW5rZWRHcmNEZXRhaWxzKTtcbiAgICAgICAgdGhpcy5kZXRhaWxzTG9hZGVyID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5fZ2V0UkNMaXN0KCk7XG4gICAgICAgIHRoaXMuX2dldE93bmVyTGlzdCgpO1xuICAgICAgICB0aGlzLl9nZXRHUkNPYmplY3RUeXBlKCk7XG4gICAgICAgIHRoaXMuZ2V0T3RoZXJHUkNPYmplY3RzKHsgcmNfaWRzOiAnJyB9KTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3InLCBlcnJvcik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVHUkNPYmplY3QoZGF0YTogYW55KSB7XG4gICAgaWYgKGRhdGE/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5ncmNGb3JtLm90aGVyR3JjT2JqZWN0cyA9IHRydWU7XG4gICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1RIRVJfR1JDX09CSkVDVFMgPSB0cnVlO1xuICAgICAgbGV0IEdSQ09iamVjdDogYW55ID0ge1xuICAgICAgICBhc3NldHM6IFtdLFxuICAgICAgICBwcm9jZXNzZXM6IFtdLFxuICAgICAgICB2ZW5kb3JzOiBbXSxcbiAgICAgICAgaW52ZW50b3J5OiBbXSxcbiAgICAgIH07XG4gICAgICB0aGlzLmxpc3RPYmplY3QuT1RIRVJfR1JDX09CSkVDVFMuc2VsZWN0ZWREYXRhID0gQXJyYXkuZnJvbShcbiAgICAgICAgbmV3IFNldChkYXRhKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IEdSQ19UWVBFID0gR1JDX1RZUEVfQVJSQVk7XG4gICAgICBkYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBHUkNPYmplY3RbR1JDX1RZUEVbaXRlbT8udHlwZSA/PyAxXV0ucHVzaChpdGVtKTtcbiAgICAgICAgdGhpcy5vdGhlckdSQ0NhcmRbaXRlbT8udHlwZV0uc2VsZWN0ZWRDb3VudCArPSAxO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuZ3JjRGF0YVdpdGhUeXBlcyA9IEdSQ09iamVjdDtcbiAgICAgIHRoaXMudXBkYXRlT3RoZXJHUkNPYmplY3RzUGF5bG9hZCgpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIHBvcHVsYXRlUGF5bG9hZChkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmdyY1BheWxvYWQubmFtZSA9IGRhdGE/Lm5hbWU7XG4gICAgdGhpcy5ncmNQYXlsb2FkLnR5cGUgPSBkYXRhPy50eXBlO1xuICAgIHRoaXMuZ3JjUGF5bG9hZC5vd25lcnMgPSBkYXRhPy5vd25lcnM7XG4gICAgdGhpcy5ncmNQYXlsb2FkLnJjX2lkcyA9IGRhdGE/LnJjX2lkcztcbiAgICB0aGlzLmdyY1BheWxvYWQubGlua2VkX0dSQ19pZHMgPSBkYXRhPy5saW5rZWRfR1JDX2lkcztcbiAgICB0aGlzLmdyY1BheWxvYWQucmlza19jYXRlZ29yeV9pZHMgPVxuICAgICAgdGhpcy5wb3B1bGF0ZUxpbmtSaXNrKGRhdGE/LnJpc2tfY2F0ZWdvcnlfaWRzKSA/PyBbXTtcbiAgICB0aGlzLmdyY1BheWxvYWQucHJvZ3JhbV9jYXRlZ29yeV9pZHMgPSBkYXRhPy5wcm9ncmFtX2NhdGVnb3J5X2lkcz8ubGVuZ3RoXG4gICAgICA/IHRoaXMucG9wdWxhdGVMaW5rUmVzcG9uc2liaWxpdHkoZGF0YT8ucHJvZ3JhbV9jYXRlZ29yeV9pZHMpXG4gICAgICA6IFtdO1xuICAgIHRoaXMuZ3JjUGF5bG9hZC5hdHRyaWJ1dGVzID0gZGF0YT8uYXR0cmlidXRlcztcbiAgICB0aGlzLmdyY1BheWxvYWQuc3RhdGUgPSBkYXRhPy5zdGF0ZTtcbiAgICB0aGlzLmdyY1BheWxvYWQuZGVzY3JpcHRpb24gPSBkYXRhPy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLmdyY1BheWxvYWQuZnJlcXVlbmN5ID0gZGF0YT8uZnJlcXVlbmN5O1xuICAgIHRoaXMuZ3JjUGF5bG9hZC5wYXJlbnRfZ3JjX2lkcyA9IGRhdGE/LnBhcmVudF9ncmNfaWRzO1xuICAgIHRoaXMuZ3JjUGF5bG9hZC5lbWFpbF9ub3RpZmljYXRpb25fbWVtYmVyX2lkcyA9XG4gICAgICBkYXRhPy5lbWFpbF9ub3RpZmljYXRpb25fbWVtYmVyX2lkcztcbiAgfVxuXG4gIHB1YmxpYyBzYXZlR1JDT2JqZWN0KCkge1xuICAgIHRoaXMuaXNGb3JtU3VibWl0dGVkID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5ncmNGb3JtLmdyY09iamVjdFR5cGUpIHtcbiAgICAgIHRoaXMuZ3JjUGF5bG9hZC5hdHRyaWJ1dGVzID0gdGhpcy5zZWxlY3RlZEF0dHJpYnV0ZXMuYXR0cmlidXRlcztcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdGhpcy5ncmNTZXJ2aWNlLmNoZWNrVmFsaWRhdGlvbihcbiAgICAgICAgdGhpcy5ncmNQYXlsb2FkLFxuICAgICAgICB0aGlzLmdyY0Zvcm0uZ3JjT2JqZWN0VHlwZVxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xuICAgICAgdGhpcy5zdWJtaXRMb2FkZXIgPSB0cnVlO1xuICAgICAgaWYgKHRoaXMuTU9ERSA9PT0gJ0VESVQnKSB7XG4gICAgICAgIHRoaXMudXBkYXRlR1JDT2JqZWN0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCBQQVlMT0FEID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmdyY1BheWxvYWQpKTtcbiAgICAgIFBBWUxPQUQub3duZXJzID0gdGhpcy5nZXRPd25lcnNFeGNlcHREZWZhdWx0KFBBWUxPQUQub3duZXJzKTtcbiAgICAgIHRoaXMuYXBpU2VydmljZS5hZGRHUkNPYmplY3QoUEFZTE9BRCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5zZXRNb3JlT3B0aW9uc09uU3VibWl0KCk7XG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XG4gICAgICAgICAgdGhpcy5hZGRlZEdSQyA9IGRhdGE7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3InLCBlcnJvciwgZXJyb3Iuc3RhdHVzKTtcbiAgICAgICAgICB0aGlzLnN1Ym1pdExvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwOSB8fCBlcnJvci5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgICAgdGhpcy5pc0R1cGxpY2F0ZU5hbWUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zZXRNb3JlT3B0aW9uc09uU3VibWl0KCk7XG4gICAgICAgICAgICB0aGlzLm1hcFVzZXJMaXN0KHtcbiAgICAgICAgICAgICAgZGF0YTogdGhpcy5saXN0T2JqZWN0Lk9XTkVSLmRhdGEuYXNzaWduZWVzTGlzdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5ncmNOYW1lVmFsaWRhdGlvbkVycm9yID0gVkFMSURBVElPTl9NRVNTQUdFLmdyY19leGlzdHM7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICByZXNldEdSQ09iamVjdCgpIHtcbiAgICB0aGlzLk1PREUgPSAnQ1JFQVRFJztcbiAgICB0aGlzLnNtaWxleU1lc3NhZ2UgPSBTVUNDRVNTX01FU1NBR0UuQUREX0dSQ19PQkpFQ1Q7XG4gICAgdGhpcy5ncmNQYXlsb2FkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmdyY1NlcnZpY2UuR1JDX1BBWUxPQUQpKTtcbiAgICB0aGlzLmdyY1BheWxvYWQudHlwZSA9IHRoaXMuZ3JjVHlwZTtcbiAgICB0aGlzLmlzRm9ybVN1Ym1pdHRlZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNEdXBsaWNhdGVOYW1lID0gZmFsc2U7XG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xuICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQodGhpcy5oaWRlTW9yZU9wdGlvbik7XG4gICAgdGhpcy5PQkpFQ1RfVFlQRSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5PUklHSU5BTF9HUkNfQVRUUklCVVRFUykpO1xuICAgIHRoaXMub3RoZXJHUkNDYXJkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShPVEhFUl9HUkNfQ0FSRCkpO1xuICAgIHRoaXMucmVzZXRPdGhlckdSQ0NhcmQoKTtcbiAgICB0aGlzLnNldERlZmF1bHRHUkNPYmplY3RUeXBlKCk7XG4gICAgdGhpcy5yZXNldEdSQ0RhdGFXaXRoVHlwZXMoKTtcbiAgICB0aGlzLnJlc2V0TGlzdE9iamVjdFNlbGVjdGlvbigpO1xuICAgIHRoaXMubWFwVXNlckxpc3QoeyBkYXRhOiB0aGlzLmxpc3RPYmplY3QuT1dORVIuZGF0YS5hc3NpZ25lZXNMaXN0IH0pO1xuICB9XG5cbiAgcmVzZXRMaXN0T2JqZWN0U2VsZWN0aW9uKCkge1xuICAgIHRoaXMubGlzdE9iamVjdC5PV05FUi5zZWxlY3RlZERhdGEgPSBbXTtcbiAgICB0aGlzLmxpc3RPYmplY3QuUkMuc2VsZWN0ZWREYXRhID0gW107XG4gICAgdGhpcy5saXN0T2JqZWN0Lk9USEVSX0dSQ19PQkpFQ1RTLnNlbGVjdGVkRGF0YSA9IFtdO1xuICAgIHRoaXMubGlzdE9iamVjdC5SSVNLX0NBVEVHT1JZLnNlbGVjdGVkRGF0YSA9IFtdO1xuICAgIHRoaXMubGlzdE9iamVjdC5QUk9HUkFNX1JFU1BPTlNJQklMSVRZLnNlbGVjdGVkRGF0YSA9IFtdO1xuICB9XG5cbiAgc21pbGV5QWN0aW9ucyhldmVudDogYW55KSB7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICBpZiAoZXZlbnQgPT09ICdhZGRNb3JlJykge1xuICAgICAgdGhpcy5yZXNldEdSQ0Zvcm0oKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAndmlldycpIHtcbiAgICAgIHRoaXMucmVzZXRHUkNGb3JtKCk7XG4gICAgICB0aGlzLnZpZXdHUkMoKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZVNtaWxleShldmVudDogYW55KSB7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XG4gICAgdGhpcy5yZXNldEdSQ0Zvcm0oKTtcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogdGhpcy5hZGRlZEdSQywgY29uZmlybTogZmFsc2UgfSk7XG4gIH1cblxuICByZXNldEdSQ0Zvcm0oKSB7XG4gICAgdGhpcy5NT0RFID0gJ0NSRUFURSc7XG4gICAgdGhpcy5yZXNldEdSQ09iamVjdCgpO1xuICAgIHRoaXMuZ3JjRm9ybS5vdGhlckdyY09iamVjdHMgPSBmYWxzZTtcbiAgICB0aGlzLmdyY0Zvcm0ubGlua1Jpc2sgPSBmYWxzZTtcbiAgICB0aGlzLmdyY0Zvcm0ubGlua1Byb2dyYW0gPSBmYWxzZTtcbiAgICB0aGlzLmdyY0Zvcm0uZ3JjT2JqZWN0VHlwZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5yZXNldEZvcm0uZW1pdCh0cnVlKTtcbiAgfVxuXG4gIHZpZXdHUkMoKSB7XG4gICAgbGV0IHVybDogc3RyaW5nO1xuICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XG4gICAgICB1cmwgPSAnaHR0cDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvIy9tYW5hZ2UtZ3JjLW9iamVjdHMnO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwgPVxuICAgICAgICAnaHR0cHM6Ly8nICtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhvc3QgK1xuICAgICAgICAnL29yZ2FuaXphdGlvbi8jL21hbmFnZS1ncmMtb2JqZWN0cyc7XG4gICAgfVxuXG4gICAgdGhpcy5pZnJhbWVTZXJ2aWNlLnJlZGlyZWN0SWZJbklmcmFtZSh1cmwsIHRoaXMuTU9ERSAhPT0gJ0VESVQnKTtcblxuICAgIHRoaXMucmVzZXRHUkNGb3JtKCk7XG4gICAgdGhpcy5jbG9zZVNtaWxleSgnJyk7XG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6IHRoaXMuYWRkZWRHUkMsIGNvbmZpcm06IGZhbHNlIH0pO1xuICB9XG5cbiAgc2V0T3RoZXJHUkNUeXBlc0Zvcm1hdGUoKSB7XG4gICAgY29uc3QgZ3JjVHlwZXMgPSBHUkNfVFlQRV9BUlJBWTtcbiAgICB0aGlzLnJlc2V0R1JDRGF0YVdpdGhUeXBlcygpO1xuICAgIHRoaXMubGlzdE9iamVjdD8uT1RIRVJfR1JDX09CSkVDVFM/LnNlbGVjdGVkRGF0YT8uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICB0aGlzLmdyY0RhdGFXaXRoVHlwZXNbZ3JjVHlwZXNbaXRlbT8udHlwZV1dPy5wdXNoKGl0ZW0pO1xuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlT3RoZXJHUkNPYmplY3RzUGF5bG9hZCgpO1xuICB9XG5cbiAgcmVtb3ZlT3RoZXJHUkNPYmplY3RzKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBncmNUeXBlcyA9IEdSQ19UWVBFX0FSUkFZO1xuICAgIHRoaXMubGlzdE9iamVjdC5PVEhFUl9HUkNfT0JKRUNUUy5zZWxlY3RlZERhdGEgPVxuICAgICAgdGhpcy5saXN0T2JqZWN0Lk9USEVSX0dSQ19PQkpFQ1RTLnNlbGVjdGVkRGF0YS5maWx0ZXIoXG4gICAgICAgIChncmM6IGFueSkgPT4gZ3JjPy5faWQgIT09IGV2ZW50Py5faWRcbiAgICAgICk7XG4gICAgdGhpcy5maWx0ZXJPdGhlckdSQ0RhdGEoZXZlbnQsIGdyY1R5cGVzW2V2ZW50Py50eXBlXSk7XG4gICAgdGhpcy5vdGhlckdSQ0NhcmRbMF0uc2VsZWN0ZWRDb3VudFxuICAgICAgPyAodGhpcy5vdGhlckdSQ0NhcmRbZXZlbnQ/LnR5cGVdLnNlbGVjdGVkQ291bnQgLT0gMSlcbiAgICAgIDogMDtcbiAgICB0aGlzLnVwZGF0ZU90aGVyR1JDT2JqZWN0c1BheWxvYWQoKTtcbiAgfVxuXG4gIGZpbHRlck90aGVyR1JDRGF0YShldmVudDogYW55LCB0eXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmdyY0RhdGFXaXRoVHlwZXNbdHlwZV0gPSB0aGlzLmdyY0RhdGFXaXRoVHlwZXNbdHlwZV0/LmZpbHRlcihcbiAgICAgIChncmM6IGFueSkgPT4gZ3JjPy5faWQgIT09IGV2ZW50Py5faWRcbiAgICApO1xuICB9XG5cbiAgcmVzZXRHUkNEYXRhV2l0aFR5cGVzKCkge1xuICAgIHRoaXMuZ3JjRGF0YVdpdGhUeXBlcyA9IHtcbiAgICAgIGFzc2V0czogW10sXG4gICAgICBwcm9jZXNzZXM6IFtdLFxuICAgICAgdmVuZG9yczogW10sXG4gICAgICBpbnZlbnRvcnk6IFtdLFxuICAgIH07XG4gIH1cblxuICBnZXQgZ3JjVmFsaWRhdGlvbkNoZWNrKCkge1xuICAgIGlmICh0aGlzLmlzRm9ybVN1Ym1pdHRlZCAmJiAhdGhpcy5ncmNQYXlsb2FkLm5hbWUpIHtcbiAgICAgIHRoaXMuZ3JjTmFtZVZhbGlkYXRpb25FcnJvciA9IFZBTElEQVRJT05fTUVTU0FHRS5ncmNPYmplY3ROYW1lO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc0Zvcm1TdWJtaXR0ZWQgJiYgISh0aGlzLmdyY1BheWxvYWQubmFtZSB8fCB0aGlzLmlzRHVwbGljYXRlTmFtZSlcbiAgICApO1xuICB9XG5cbiAgZ2V0Umlza0NhdGVnb3J5UGF5bG9hZChzZWxlY3RlZERhdGE6IGFueSkge1xuICAgIGNvbnN0IHJpc2tDYXRlZ29yeVBheWxvYWQ6IGFueSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRSaXNrcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzID0gW107XG4gICAgc2VsZWN0ZWREYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgcmlza0NhdGVnb3J5UGF5bG9hZC5wdXNoKHtcbiAgICAgICAgY2F0ZWdvcnlfaWQ6IFtpdGVtPy5jYXRlZ29yeT8uY2F0ZWdvcnlfaWQgPz8gW11dLFxuICAgICAgICByaXNrX2lkczogaXRlbT8ucmlza3M/Lm1hcCgocmlzazogYW55KSA9PiByaXNrPy5SaXNrSWQpLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnNlbGVjdGVkUmlza3M/LnB1c2goLi4uaXRlbT8ucmlza3MpO1xuICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3JpZXMucHVzaChpdGVtPy5jYXRlZ29yeSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJpc2tDYXRlZ29yeVBheWxvYWQ7XG4gIH1cblxuICBnZXRQcm9ncmFtUmVzcG9uc2liaWxpdHlQYXlsb2FkKHNlbGVjdGVkRGF0YTogYW55KSB7XG4gICAgY29uc3Qgcmlza1Jlc3BvbnNpYmlsaXR5UGF5bG9hZDogYW55ID0gW107XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5ID0gW107XG4gICAgdGhpcy5zZWxlY3RlZFByb2dyYW0gPSBbXTtcbiAgICBzZWxlY3RlZERhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICBjb25zdCBwYXJlbnRJZCA9IGl0ZW0/LnByb2dyYW0/LnByb2dyYW1JZDtcbiAgICAgIHJpc2tSZXNwb25zaWJpbGl0eVBheWxvYWQucHVzaCh7XG4gICAgICAgIHBhcmVudElkOiBwYXJlbnRJZCxcbiAgICAgICAgY2F0ZWdvcnlfaWQ6IGl0ZW0/LmNhdGVnb3J5ID8gWy4uLml0ZW0uY2F0ZWdvcnldIDogW10sXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5X2lkczogaXRlbT8ucmVzcG9uc2liaWxpdHk/Lm1hcChcbiAgICAgICAgICAocmVzcDogYW55KSA9PiByZXNwPy5SZXBvcnRJZFxuICAgICAgICApLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHk/LnB1c2goLi4uaXRlbT8ucmVzcG9uc2liaWxpdHkpO1xuICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0ucHVzaChpdGVtPy5wcm9ncmFtKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmlza1Jlc3BvbnNpYmlsaXR5UGF5bG9hZDtcbiAgfVxuXG4gIHVwZGF0ZUdSQ09iamVjdCgpIHtcbiAgICBsZXQgUEFZTE9BRCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ncmNQYXlsb2FkKSk7XG4gICAgUEFZTE9BRC5vd25lcnMgPSB0aGlzLmdldE93bmVyc0V4Y2VwdERlZmF1bHQoUEFZTE9BRC5vd25lcnMpO1xuICAgIHRoaXMuYXBpU2VydmljZS51cGRhdGVHUkNPYmplY3QoUEFZTE9BRCwgdGhpcy5JRCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXRNb3JlT3B0aW9uc09uU3VibWl0KCk7XG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xuICAgICAgICB0aGlzLmFkZGVkR1JDID0gZGF0YTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3InLCBlcnJvciwgZXJyb3Iuc3RhdHVzKTtcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA5KSB7XG4gICAgICAgICAgdGhpcy5pc0R1cGxpY2F0ZU5hbWUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2V0TW9yZU9wdGlvbnNPblN1Ym1pdCgpO1xuICAgICAgICAgIHRoaXMuZ3JjTmFtZVZhbGlkYXRpb25FcnJvciA9IFZBTElEQVRJT05fTUVTU0FHRS5ncmNfZXhpc3RzO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIHVwZGF0ZU90aGVyR1JDT2JqZWN0c1BheWxvYWQoKSB7XG4gICAgdGhpcy5ncmNQYXlsb2FkLmxpbmtlZF9HUkNfaWRzID1cbiAgICAgIHRoaXMubGlzdE9iamVjdC5PVEhFUl9HUkNfT0JKRUNUUy5zZWxlY3RlZERhdGEubWFwKFxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLl9pZFxuICAgICAgKTtcbiAgfVxuXG4gIGRlbGV0ZVNlbGVjdGVkUmlzayhjYXRlZ29yeUlkOiBudW1iZXIsIHJpc2s6IGFueSkge1xuICAgIGNvbnN0IGNhdGVnb3J5SW5kZXggPSB0aGlzLmZpbmRDaGVja2VkQ2F0ZWdvcnlJbmRleChjYXRlZ29yeUlkKTtcbiAgICBpZiAoY2F0ZWdvcnlJbmRleCAhPT0gLTEpIHtcbiAgICAgIC8vIENhdGVnb3J5IGV4aXN0cywgdXBkYXRlIHJpc2sgdmFsdWVcbiAgICAgIGNvbnN0IHJpc2tJbmRleCA9IHRoaXMubGlzdE9iamVjdD8uUklTS19DQVRFR09SWT8uc2VsZWN0ZWREYXRhW1xuICAgICAgICBjYXRlZ29yeUluZGV4XG4gICAgICBdPy5yaXNrcz8uZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0/Ll9pZCA9PT0gcmlzaz8uX2lkKTtcbiAgICAgIGlmIChyaXNrSW5kZXggIT09IC0xKSB7XG4gICAgICAgIHRoaXMubGlzdE9iamVjdD8uUklTS19DQVRFR09SWT8uc2VsZWN0ZWREYXRhW1xuICAgICAgICAgIGNhdGVnb3J5SW5kZXhcbiAgICAgICAgXT8ucmlza3Muc3BsaWNlKHJpc2tJbmRleCwgMSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5saXN0T2JqZWN0Py5SSVNLX0NBVEVHT1JZPy5zZWxlY3RlZERhdGFbY2F0ZWdvcnlJbmRleF0/LnJpc2tzXG4gICAgICAgICAgPy5sZW5ndGggPT09IDBcbiAgICAgICkge1xuICAgICAgICAvLyBSZW1vdmUgY2F0ZWdvcnkgaWYgc2VsZWN0ZWRMaXN0RGF0YSBpcyBlbXB0eVxuICAgICAgICB0aGlzLmxpc3RPYmplY3Q/LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YS5zcGxpY2UoY2F0ZWdvcnlJbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZ3JjUGF5bG9hZC5yaXNrX2NhdGVnb3J5X2lkcyA9IHRoaXMuZ2V0Umlza0NhdGVnb3J5UGF5bG9hZChcbiAgICAgIHRoaXMubGlzdE9iamVjdD8uUklTS19DQVRFR09SWT8uc2VsZWN0ZWREYXRhXG4gICAgKTtcbiAgfVxuXG4gIGRlbGV0ZVNlbGVjdGVkUmVzcG9uc2liaWxpdHkocmVzcG9uc2liaWxpdHk6IGFueSkge1xuICAgIHRoaXMubGlzdE9iamVjdC5QUk9HUkFNX1JFU1BPTlNJQklMSVRZLnNlbGVjdGVkRGF0YSA9XG4gICAgICB0aGlzLmxpc3RPYmplY3Q/LlBST0dSQU1fUkVTUE9OU0lCSUxJVFk/LnNlbGVjdGVkRGF0YT8ubWFwKFxuICAgICAgICAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgbGV0IGZpbHRlcmVkUmVzcG9uc2liaWxpdHkgPSBkYXRhPy5yZXNwb25zaWJpbGl0eT8uZmlsdGVyKFxuICAgICAgICAgICAgKHJlc3A6IGFueSkgPT4gcmVzcD8uX2lkICE9PSByZXNwb25zaWJpbGl0eT8uX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5OiBmaWx0ZXJlZFJlc3BvbnNpYmlsaXR5LFxuICAgICAgICAgICAgY2F0ZWdvcnk6IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgIG5ldyBTZXQoXG4gICAgICAgICAgICAgICAgZmlsdGVyZWRSZXNwb25zaWJpbGl0eVxuICAgICAgICAgICAgICAgICAgLm1hcCgob2JqOiBhbnkpID0+IGRhdGE/LmNhdGVnb3J5KVxuICAgICAgICAgICAgICAgICAgPy5mbGF0KCkgfHwgW11cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgdGhpcy5saXN0T2JqZWN0LlBST0dSQU1fUkVTUE9OU0lCSUxJVFkuc2VsZWN0ZWREYXRhID1cbiAgICAgIHRoaXMubGlzdE9iamVjdD8uUFJPR1JBTV9SRVNQT05TSUJJTElUWT8uc2VsZWN0ZWREYXRhLmZpbHRlcihcbiAgICAgICAgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBkYXRhPy5yZXNwb25zaWJpbGl0eT8ubGVuZ3RoID4gMDtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB0aGlzLmdyY1BheWxvYWQucHJvZ3JhbV9jYXRlZ29yeV9pZHMgPSB0aGlzLmdldFByb2dyYW1SZXNwb25zaWJpbGl0eVBheWxvYWQoXG4gICAgICB0aGlzLmxpc3RPYmplY3Q/LlBST0dSQU1fUkVTUE9OU0lCSUxJVFk/LnNlbGVjdGVkRGF0YVxuICAgICk7XG4gIH1cblxuICBmaW5kQ2hlY2tlZENhdGVnb3J5SW5kZXgoY2F0ZWdvcnlJZDogbnVtYmVyIHwgbnVtYmVyW10pIHtcbiAgICBsZXQgY2F0ZWdvcnlJbmRleCA9IC0xO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNhdGVnb3J5SWQpICYmIGNhdGVnb3J5SWQ/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gSGFuZGxlIGVtcHR5IGNhdGVnb3J5SWQgYXJyYXkgY2FzZVxuICAgICAgY29uc3QgdW5jYXRlZ29yaXplZEluZGV4ID1cbiAgICAgICAgdGhpcy5saXN0T2JqZWN0Py5SSVNLX0NBVEVHT1JZPy5zZWxlY3RlZERhdGEuZmluZEluZGV4KFxuICAgICAgICAgIChjYXQ6IGFueSkgPT4gY2F0Py5jYXRlZ29yeT8uX2lkID09PSAndW5jYXRlZ29yaXplZCdcbiAgICAgICAgKTtcbiAgICAgIGlmICh1bmNhdGVnb3JpemVkSW5kZXggIT09IC0xKSB7XG4gICAgICAgIHJldHVybiB1bmNhdGVnb3JpemVkSW5kZXg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhdGVnb3J5SW5kZXggPSB0aGlzLmxpc3RPYmplY3Q/LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YS5maW5kSW5kZXgoXG4gICAgICAgIChjYXQ6IGFueSkgPT4gY2F0Py5jYXRlZ29yeT8uY2F0ZWdvcnlfaWQgPT09IGNhdGVnb3J5SWRcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBjYXRlZ29yeUluZGV4O1xuICB9XG5cbiAgc2V0TGlua1Jpc2tUYWIodGFiRGV0YWlsczogYW55KSB7XG4gICAgdGhpcy5vdGhlckdSQ0NhcmQgPSB0YWJEZXRhaWxzLm1hcCgodGFiOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0YWI/LmxhYmVsLFxuICAgICAgICBjb3VudDogMCxcbiAgICAgICAgc2VsZWN0ZWRDb3VudDogMCxcbiAgICAgICAga2V5OiB0YWI/LmxhYmVsPy50b0xvd2VyQ2FzZSgpLFxuICAgICAgICB0eXBlOiBpbmRleCxcbiAgICAgIH07XG4gICAgfSk7XG4gICAgdGhpcy5nZXRPdGhlckdSQ1RhYkNvdW50KHsgcmNfaWRzOiAnJyB9KTtcbiAgfVxuXG4gIHBvcHVsYXRlTGlua1Jpc2soc2VsZWN0ZWREYXRhOiBhbnkpIHtcbiAgICBsZXQgdXBkYXRlZERhdGEgPSBzZWxlY3RlZERhdGE/Lm1hcCgoZGF0YTogYW55KSA9PiB7XG4gICAgICBpZiAoZGF0YT8uY2F0ZWdvcnlfaWQgJiYgT2JqZWN0Py5rZXlzKGRhdGE/LmNhdGVnb3J5X2lkKT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICBjYXRlZ29yeTogVU5DQVRFR09SSVpFRF9MSU5LX0NBVEVHT1JZLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgY2F0ZWdvcnk6IHtcbiAgICAgICAgICBjYXRlZ29yeV9pZDogZGF0YT8uY2F0ZWdvcnlfaWRbMF0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0pO1xuICAgIGlmICh1cGRhdGVkRGF0YS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZ3JjRm9ybS5saW5rUmlzayA9IHRydWU7XG4gICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uTElOS19SSVNLX0NBVEVHT1JJRVNfUklTS1MgPSB0cnVlO1xuICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgfVxuICAgIHRoaXMubGlzdE9iamVjdC5SSVNLX0NBVEVHT1JZLnNlbGVjdGVkRGF0YSA9IHVwZGF0ZWREYXRhO1xuICAgIHJldHVybiB0aGlzLmdldFJpc2tDYXRlZ29yeVBheWxvYWQodXBkYXRlZERhdGEpO1xuICB9XG5cbiAgcG9wdWxhdGVMaW5rUmVzcG9uc2liaWxpdHkoc2VsZWN0ZWREYXRhOiBhbnkpIHtcbiAgICBsZXQgdXBkYXRlZERhdGEgPSBzZWxlY3RlZERhdGE/Lm1hcCgoZGF0YTogYW55KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcm9ncmFtOiB7XG4gICAgICAgICAgcHJvZ3JhbUlkOiBkYXRhPy5wYXJlbnRJZCxcbiAgICAgICAgfSxcbiAgICAgICAgY2F0ZWdvcnk6IFtkYXRhPy5wYXJlbnRJZF0uY29uY2F0LmFwcGx5KFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIE9iamVjdC52YWx1ZXMoZGF0YT8uY2F0ZWdvcnlfaWQpXG4gICAgICAgICksXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5OiBkYXRhPy5yZXNwb25zaWJpbGl0eV9pZHMgfHwgW10sXG4gICAgICB9O1xuICAgIH0pO1xuICAgIGlmICh1cGRhdGVkRGF0YS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZ3JjRm9ybS5saW5rUHJvZ3JhbSA9IHRydWU7XG4gICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uTElOS19QUk9HUkFNID0gdHJ1ZTtcbiAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgIH1cbiAgICB0aGlzLmxpc3RPYmplY3QuUFJPR1JBTV9SRVNQT05TSUJJTElUWS5zZWxlY3RlZERhdGEgPSB1cGRhdGVkRGF0YTtcbiAgICByZXR1cm4gdGhpcy5nZXRQcm9ncmFtUmVzcG9uc2liaWxpdHlQYXlsb2FkKHVwZGF0ZWREYXRhKTtcbiAgfVxuXG4gIGdldE93bmVyc0V4Y2VwdERlZmF1bHQodXNlcnM6IGFueSkge1xuICAgIGNvbnN0IHVzZXJzSWQgPSB1c2Vycy5maWx0ZXIoXG4gICAgICAodXNlcjogYW55KSA9PiAhdGhpcy5kaXNhYmxlZElkcy5pbmNsdWRlcyh1c2VyKVxuICAgICk7XG4gICAgcmV0dXJuIHVzZXJzSWQgfHwgW107XG4gIH1cblxuICBzZXRNb3JlT3B0aW9uc09uU3VibWl0KCkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICB0aGlzLnN1Ym1pdExvYWRlciA9IGZhbHNlO1xuICB9XG5cbiAgcmVzZXRPdGhlckdSQ0NhcmQoKSB7XG4gICAgdGhpcy5vdGhlckdSQ0NhcmQuZm9yRWFjaCgodGFiOiBhbnkpID0+IHtcbiAgICAgIHRhYi5jb3VudCA9IDA7XG4gICAgICB0YWIuc2VsZWN0ZWRDb3VudCA9IDA7XG4gICAgfSk7XG4gIH1cblxuICByZXNldERhdGFPblJDQ2hhbmdlKCkge1xuICAgIHRoaXMubGlzdE9iamVjdC5QUk9HUkFNX1JFU1BPTlNJQklMSVRZLnNlbGVjdGVkRGF0YSA9IFtdO1xuICAgIHRoaXMubGlzdE9iamVjdC5SSVNLX0NBVEVHT1JZLnNlbGVjdGVkRGF0YSA9IFtdO1xuICAgIGlmICh0aGlzLmxpc3RPYmplY3QuUkMuc2VsZWN0ZWREYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5yZXNldE1vcmVPcHRpb25zT25SQ0NoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0TW9yZU9wdGlvbnNPblJDQ2hhbmdlKCkge1xuICAgIHRoaXMuZ3JjRm9ybS5saW5rUHJvZ3JhbSA9IGZhbHNlO1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5MSU5LX1BST0dSQU0gPSBmYWxzZTtcbiAgICB0aGlzLmdyY0Zvcm0ubGlua1Jpc2sgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uTElOS19SSVNLX0NBVEVHT1JJRVNfUklTS1MgPSBmYWxzZTtcbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93U21pbGV5XCI+XG4gIDxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1ncmNcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJvcGVuZWRQb3B1cCAmJiBkaWFsb2dGaWVsZHM/LmluY2x1ZGVzKG9wZW5lZFBvcHVwKVwiXG4gICAgICAqbmdJZj1cIiFpc0xvYWRpbmdcIlxuICAgID5cbiAgICAgIDxsaWItdGV4dC1maWVsZC1pY29uXG4gICAgICAgIFtkaXNhYmxlZF09XCJvcGVuZWRQb3B1cCAmJiBkaWFsb2dGaWVsZHM/LmluY2x1ZGVzKG9wZW5lZFBvcHVwKVwiXG4gICAgICAgIFtjZG5MaW5rXT1cIkNETl9MSU5LLmdyY1R5cGVcIlxuICAgICAgICBbaXNDaGVja2VkXT1cInRydWVcIlxuICAgICAgICBmaWVsZC1pY29uc1xuICAgICAgPlxuICAgICAgPC9saWItdGV4dC1maWVsZC1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxuICAgICAgICAgICAgR1JDIE9CSkVDVCBUWVBFPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCI+XG4gICAgICAgICAgICA8dGFiLXNlbGVjdG9yXG4gICAgICAgICAgICAgIFtzZWxlY3RlZEl0ZW1dPVwiZ3JjUGF5bG9hZC50eXBlXCJcbiAgICAgICAgICAgICAgW2Rpc3BsYXlBcnJheV09XCJPQkpFQ1RfVFlQRVwiXG4gICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJjaGFuZ2VBdHRyaWJ1dGVzVHlwZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L3RhYi1zZWxlY3Rvcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIE9iamVjdCBuYW1lIGZpZWxkIC0tPlxuICAgIDxsaWItdGV4dC1maWVsZFxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBvcGVuZWRQb3B1cCAmJlxuICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5uYW1lICYmXG4gICAgICAgIGRpYWxvZ0ZpZWxkcz8uaW5jbHVkZXMob3BlbmVkUG9wdXApXG4gICAgICBcIlxuICAgICAgW2lzRWRpdE1vZGVdPVwiZ3JjUGF5bG9hZC5uYW1lICYmIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFLm5hbWVcIlxuICAgICAgW3RpdGxlVGV4dF09XCJBTExfVEVYVD8uZ3JjT2JqZWN0TmFtZVwiXG4gICAgICBbcGxhY2Vob2xkZXJUZXh0XT1cIkFMTF9URVhUPy5ncmNPYmplY3RQbGFjZWhvbGRlclwiXG4gICAgICBbKHRleHRWYWx1ZSldPVwiZ3JjUGF5bG9hZC5uYW1lXCJcbiAgICAgICh0ZXh0VmFsdWVDaGFuZ2UpPVwib25UZXh0Q2hhbmdlKCRldmVudClcIlxuICAgICAgKGNsaWNrT3V0c2lkZSk9XCJvbkNsaWNrT3V0c2lkZSgpXCJcbiAgICAgIChvbkNsaWNrKT1cIm9uUG9wdXBPcGVuKElOUFVUX1RZUEUubmFtZSlcIlxuICAgID5cbiAgICAgIDxsaWItdGV4dC1maWVsZC1pY29uXG4gICAgICAgIFtjZG5MaW5rXT1cIkNETl9MSU5LLmdyY09iamVjdE5hbWVcIlxuICAgICAgICBbaXNDaGVja2VkXT1cImdyY1BheWxvYWQubmFtZVwiXG4gICAgICAgIGZpZWxkLWljb25zXG4gICAgICA+XG4gICAgICA8L2xpYi10ZXh0LWZpZWxkLWljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCIgaXMtcmVxdWlyZWQ+Kjwvc3Bhbj5cbiAgICAgIDxsaWItZWRpdC1tb2RlXG4gICAgICAgICpuZ0lmPVwiZ3JjUGF5bG9hZC5uYW1lICYmIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFLm5hbWVcIlxuICAgICAgICBbc2VsZWN0ZWREYXRhXT1cIltncmNQYXlsb2FkXVwiXG4gICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgIChpc09uRWRpdCk9XCJvbkVkaXQoSU5QVVRfVFlQRS5uYW1lKVwiXG4gICAgICAgIGVkaXQtbW9kZVxuICAgICAgPjwvbGliLWVkaXQtbW9kZT5cbiAgICAgIDxwXG4gICAgICAgICpuZ0lmPVwiZ3JjVmFsaWRhdGlvbkNoZWNrIHx8IGlzRHVwbGljYXRlTmFtZVwiXG4gICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXG4gICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgIGVycm9yLW1lc3NhZ2VcbiAgICAgID5cbiAgICAgICAge3sgZ3JjTmFtZVZhbGlkYXRpb25FcnJvciB9fVxuICAgICAgPC9wPlxuICAgICAgPHZjb21wbHktZWRpdG9yXG4gICAgICAgIFtlZGl0b3JDb25maWddPVwiRURJVE9SX0NPTkZJR1wiXG4gICAgICAgIFsobmdNb2RlbCldPVwiZ3JjUGF5bG9hZC5kZXNjcmlwdGlvblwiXG4gICAgICAgIHJpY2gtdGV4dC1lZGl0b3JcbiAgICAgID48L3Zjb21wbHktZWRpdG9yPlxuICAgIDwvbGliLXRleHQtZmllbGQ+XG5cbiAgICA8IS0tIFNwZWNpZnkgT3duZXJzIC0tPlxuICAgIDxsaWItdGV4dC1maWVsZFxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBvcGVuZWRQb3B1cCAmJlxuICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5vd25lciAmJlxuICAgICAgICBkaWFsb2dGaWVsZHM/LmluY2x1ZGVzKG9wZW5lZFBvcHVwKVxuICAgICAgXCJcbiAgICAgIFthY3RpdmVdPVwib3BlbmVkUG9wdXAgJiYgb3BlbmVkUG9wdXAgPT0gSU5QVVRfVFlQRS5vd25lclwiXG4gICAgICBbaXNFZGl0TW9kZV09XCJcbiAgICAgICAgbGlzdE9iamVjdC5PV05FUj8uc2VsZWN0ZWREYXRhPy5sZW5ndGggJiZcbiAgICAgICAgb3BlbmVkUG9wdXAgIT09IElOUFVUX1RZUEUub3duZXJcbiAgICAgIFwiXG4gICAgICBbdGl0bGVUZXh0XT1cIkFMTF9URVhUPy5ncmNPd25lcnNUaXRsZVwiXG4gICAgICBbcGxhY2Vob2xkZXJUZXh0XT1cIkFMTF9URVhUPy5ncmNPd25lcnNQbGFjZWhvbGRlclwiXG4gICAgICBbaXNSZWFkT25seV09XCJ0cnVlXCJcbiAgICAgIChvbkNsaWNrKT1cIm9uUG9wdXBPcGVuKElOUFVUX1RZUEUub3duZXIpXCJcbiAgICA+XG4gICAgICA8bGliLXRleHQtZmllbGQtaWNvblxuICAgICAgICBbY2RuTGlua109XCJDRE5fTElOSy5ncmNPd25lcnNcIlxuICAgICAgICBbaXNDaGVja2VkXT1cImxpc3RPYmplY3QuT1dORVI/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoID4gMFwiXG4gICAgICAgIGZpZWxkLWljb25zXG4gICAgICA+XG4gICAgICA8L2xpYi10ZXh0LWZpZWxkLWljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCIgaXMtcmVxdWlyZWQ+Kjwvc3Bhbj5cbiAgICAgIDxsaWItZWRpdC1tb2RlXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgbGlzdE9iamVjdC5PV05FUj8uc2VsZWN0ZWREYXRhPy5sZW5ndGggJiZcbiAgICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5vd25lclxuICAgICAgICBcIlxuICAgICAgICBbbm9uUmVtb3ZhYmxlSWRzXT1cImRpc2FibGVkSWRzXCJcbiAgICAgICAgW2NvdW50Q29sb3JdPVwiJ2dyZWVuQmcnXCJcbiAgICAgICAgW3NlbGVjdGVkRGF0YV09XCJsaXN0T2JqZWN0Lk9XTkVSPy5zZWxlY3RlZERhdGFcIlxuICAgICAgICBbdHlwZV09XCInbGlzdCdcIlxuICAgICAgICAoaXNPbkVkaXQpPVwib25FZGl0KElOUFVUX1RZUEUub3duZXIpXCJcbiAgICAgICAgKG9uUmVtb3ZlRGF0YSk9XCJvblJlbW92ZURhdGEoJGV2ZW50LCBJTlBVVF9UWVBFLm93bmVyKVwiXG4gICAgICAgIGVkaXQtbW9kZVxuICAgICAgPjwvbGliLWVkaXQtbW9kZT5cbiAgICA8L2xpYi10ZXh0LWZpZWxkPlxuXG4gICAgPCEtLSBMaW5rIFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgKFJDKSAtLT5cbiAgICA8bGliLXRleHQtZmllbGRcbiAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgb3BlbmVkUG9wdXAgJiZcbiAgICAgICAgb3BlbmVkUG9wdXAgIT09IElOUFVUX1RZUEUuUkMgJiZcbiAgICAgICAgZGlhbG9nRmllbGRzPy5pbmNsdWRlcyhvcGVuZWRQb3B1cClcbiAgICAgIFwiXG4gICAgICBbYWN0aXZlXT1cIm9wZW5lZFBvcHVwICYmIG9wZW5lZFBvcHVwID09IElOUFVUX1RZUEUuUkNcIlxuICAgICAgW2lzRWRpdE1vZGVdPVwiXG4gICAgICAgIGxpc3RPYmplY3QuUkM/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoICYmIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFLlJDXG4gICAgICBcIlxuICAgICAgW3RpdGxlVGV4dF09XCJBTExfVEVYVD8uZ3JjUkNUaXRsZVwiXG4gICAgICBbcGxhY2Vob2xkZXJUZXh0XT1cIkFMTF9URVhUPy5ncmNSQ1BsYWNlaG9sZGVyXCJcbiAgICAgIFtpc1JlYWRPbmx5XT1cInRydWVcIlxuICAgICAgKG9uQ2xpY2spPVwib25Qb3B1cE9wZW4oSU5QVVRfVFlQRS5SQylcIlxuICAgID5cbiAgICAgIDxsaWItdGV4dC1maWVsZC1pY29uXG4gICAgICAgIFtjZG5MaW5rXT1cIkNETl9MSU5LLmdyY1JDXCJcbiAgICAgICAgW2lzQ2hlY2tlZF09XCJsaXN0T2JqZWN0LlJDPy5zZWxlY3RlZERhdGE/Lmxlbmd0aCA+IDBcIlxuICAgICAgICBmaWVsZC1pY29uc1xuICAgICAgPlxuICAgICAgPC9saWItdGV4dC1maWVsZC1pY29uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiIGlzLXJlcXVpcmVkPio8L3NwYW4+XG4gICAgICA8bGliLWVkaXQtbW9kZVxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGxpc3RPYmplY3QuUkM/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoICYmIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFLlJDXG4gICAgICAgIFwiXG4gICAgICAgIChvblJlbW92ZURhdGEpPVwib25SZW1vdmVEYXRhKCRldmVudCwgSU5QVVRfVFlQRS5SQylcIlxuICAgICAgICBbc2VsZWN0ZWREYXRhXT1cImxpc3RPYmplY3QuUkM/LnNlbGVjdGVkRGF0YVwiXG4gICAgICAgIFt0eXBlXT1cIidsaXN0J1wiXG4gICAgICAgIChpc09uRWRpdCk9XCJvbkVkaXQoSU5QVVRfVFlQRS5SQylcIlxuICAgICAgICBlZGl0LW1vZGVcbiAgICAgID48L2xpYi1lZGl0LW1vZGU+XG4gICAgICA8cFxuICAgICAgICAqbmdJZj1cImlzRm9ybVN1Ym1pdHRlZCAmJiAhbGlzdE9iamVjdC5SQz8uc2VsZWN0ZWREYXRhPy5sZW5ndGhcIlxuICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxuICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICBlcnJvci1tZXNzYWdlXG4gICAgICA+XG4gICAgICAgIHt7IFZBTElEQVRJT05fTUVTU0FHRS5ncmNSQyB9fVxuICAgICAgPC9wPlxuICAgIDwvbGliLXRleHQtZmllbGQ+XG5cbiAgICA8IS0tIExpbmsgUHJvZ3JhbSBhbmQgUmVzcG9uc2liaWxpdHkgLS0+XG4gICAgPGxpYi10ZXh0LWZpZWxkXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIG9wZW5lZFBvcHVwICYmXG4gICAgICAgIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFPy5wcm9ncmFtUmVzcG9uc2liaWxpdHkgJiZcbiAgICAgICAgZGlhbG9nRmllbGRzPy5pbmNsdWRlcyhvcGVuZWRQb3B1cClcbiAgICAgIFwiXG4gICAgICBbYWN0aXZlXT1cIm9wZW5lZFBvcHVwICYmIG9wZW5lZFBvcHVwID09IElOUFVUX1RZUEU/LnByb2dyYW1SZXNwb25zaWJpbGl0eVwiXG4gICAgICAqbmdJZj1cImdyY0Zvcm0/LmxpbmtQcm9ncmFtXCJcbiAgICAgIFt0aXRsZVRleHRdPVwiQUxMX1RFWFQ/LmdyY1Byb2dyYW1SZXNwb25zaWJpbGl0eVRpdGxlXCJcbiAgICAgIFtwbGFjZWhvbGRlclRleHRdPVwiQUxMX1RFWFQ/LmdyY1Byb2dyYW1SZXNwb25zaWJpbGl0eVBsYWNlaG9sZGVyXCJcbiAgICAgIFtpc1JlYWRPbmx5XT1cInRydWVcIlxuICAgICAgKG9uQ2xpY2spPVwib25Qb3B1cE9wZW4oSU5QVVRfVFlQRS5wcm9ncmFtUmVzcG9uc2liaWxpdHkpXCJcbiAgICAgIFtpc0VkaXRNb2RlXT1cIlxuICAgICAgICBsaXN0T2JqZWN0Py5QUk9HUkFNX1JFU1BPTlNJQklMSVRZPy5zZWxlY3RlZERhdGE/Lmxlbmd0aCAmJlxuICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRT8ucHJvZ3JhbVJlc3BvbnNpYmlsaXR5XG4gICAgICBcIlxuICAgID5cbiAgICAgIDxsaWItdGV4dC1maWVsZC1pY29uXG4gICAgICAgIFtjZG5MaW5rXT1cIkNETl9MSU5LLmxpbmtPdGhlcnNcIlxuICAgICAgICBbaXNDaGVja2VkXT1cIlxuICAgICAgICAgIGxpc3RPYmplY3QuUFJPR1JBTV9SRVNQT05TSUJJTElUWT8uc2VsZWN0ZWREYXRhPy5sZW5ndGggPiAwXG4gICAgICAgIFwiXG4gICAgICAgIGZpZWxkLWljb25zXG4gICAgICA+XG4gICAgICA8L2xpYi10ZXh0LWZpZWxkLWljb24+XG5cbiAgICAgIDxsaWItZWRpdC1tb2RlXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgbGlzdE9iamVjdC5QUk9HUkFNX1JFU1BPTlNJQklMSVRZPy5zZWxlY3RlZERhdGE/Lmxlbmd0aCAmJlxuICAgICAgICAgIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFPy5QUk9HUkFNX1JFU1BPTlNJQklMSVRZXG4gICAgICAgIFwiXG4gICAgICAgIChvblJlbW92ZURhdGEpPVwib25SZW1vdmVEYXRhKCRldmVudCwgSU5QVVRfVFlQRT8ucHJvZ3JhbVJlc3BvbnNpYmlsaXR5KVwiXG4gICAgICAgIFtzZWxlY3RlZERhdGFdPVwiXG4gICAgICAgICAgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eSB8IHVuaXF1ZVJlc3BvbnNpYmlsaXRpZXMgOiAnZW50aXJlT2JqZWN0J1xuICAgICAgICBcIlxuICAgICAgICBbbmFtZURpc3BsYXlLZXldPVwiJ1JlcG9ydE5hbWUnXCJcbiAgICAgICAgW3R5cGVdPVwiJ2xpc3QnXCJcbiAgICAgICAgKGlzT25FZGl0KT1cIm9uRWRpdChJTlBVVF9UWVBFLnByb2dyYW1SZXNwb25zaWJpbGl0eSlcIlxuICAgICAgICBlZGl0LW1vZGVcbiAgICAgID5cbiAgICAgIDwvbGliLWVkaXQtbW9kZT5cbiAgICA8L2xpYi10ZXh0LWZpZWxkPlxuXG4gICAgPCEtLSBMaW5rIFJpc2sgQ2F0ZWdvcmllcyBhbmQgUmlzayAtLT5cbiAgICA8bGliLXRleHQtZmllbGRcbiAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgb3BlbmVkUG9wdXAgJiZcbiAgICAgICAgb3BlbmVkUG9wdXAgIT09IElOUFVUX1RZUEU/LnJpc2tDYXRlZ29yeSAmJlxuICAgICAgICBkaWFsb2dGaWVsZHM/LmluY2x1ZGVzKG9wZW5lZFBvcHVwKVxuICAgICAgXCJcbiAgICAgIFthY3RpdmVdPVwib3BlbmVkUG9wdXAgJiYgb3BlbmVkUG9wdXAgPT0gSU5QVVRfVFlQRT8ucmlza0NhdGVnb3J5XCJcbiAgICAgICpuZ0lmPVwiZ3JjRm9ybT8ubGlua1Jpc2tcIlxuICAgICAgW3RpdGxlVGV4dF09XCJBTExfVEVYVD8uZ3JjUmlza0NhdGVnb3J5VGl0bGVcIlxuICAgICAgW3BsYWNlaG9sZGVyVGV4dF09XCJBTExfVEVYVD8uZ3JjUmlza0NhdGVnb3J5UGxhY2Vob2xkZXJcIlxuICAgICAgW2lzUmVhZE9ubHldPVwidHJ1ZVwiXG4gICAgICAob25DbGljayk9XCJvblBvcHVwT3BlbihJTlBVVF9UWVBFLnJpc2tDYXRlZ29yeSlcIlxuICAgICAgW2lzRWRpdE1vZGVdPVwiXG4gICAgICAgIGxpc3RPYmplY3Q/LlJJU0tfQ0FURUdPUlk/LnNlbGVjdGVkRGF0YT8ubGVuZ3RoICYmXG4gICAgICAgIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFPy5yaXNrQ2F0ZWdvcnlcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGxpYi10ZXh0LWZpZWxkLWljb25cbiAgICAgICAgW2NkbkxpbmtdPVwiQ0ROX0xJTksubGlua0dSQ1wiXG4gICAgICAgIFtpc0NoZWNrZWRdPVwibGlzdE9iamVjdC5SSVNLX0NBVEVHT1JZPy5zZWxlY3RlZERhdGE/Lmxlbmd0aCA+IDBcIlxuICAgICAgICBmaWVsZC1pY29uc1xuICAgICAgPlxuICAgICAgPC9saWItdGV4dC1maWVsZC1pY29uPlxuXG4gICAgICA8bGliLWVkaXQtbW9kZVxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGxpc3RPYmplY3QuUklTS19DQVRFR09SWT8uc2VsZWN0ZWREYXRhPy5sZW5ndGggJiZcbiAgICAgICAgICBvcGVuZWRQb3B1cCAhPT0gSU5QVVRfVFlQRS5SSVNLX0NBVEVHT1JZXG4gICAgICAgIFwiXG4gICAgICAgIChvblJlbW92ZURhdGEpPVwib25SZW1vdmVEYXRhKCRldmVudCwgSU5QVVRfVFlQRT8ucmlza0NhdGVnb3J5KVwiXG4gICAgICAgIFtzZWxlY3RlZERhdGFdPVwic2VsZWN0ZWRSaXNrc1wiXG4gICAgICAgIFt0eXBlXT1cIidsaXN0J1wiXG4gICAgICAgIChpc09uRWRpdCk9XCJvbkVkaXQoSU5QVVRfVFlQRS5yaXNrQ2F0ZWdvcnksIGRhdGE/LmtleSlcIlxuICAgICAgICBlZGl0LW1vZGVcbiAgICAgID5cbiAgICAgIDwvbGliLWVkaXQtbW9kZT5cbiAgICA8L2xpYi10ZXh0LWZpZWxkPlxuICA8L2Rpdj5cblxuICA8IS0tIExpbmsgT3RoZXIgR1JDIE9iamVjdHMgLS0+XG4gIDxsaWItdGV4dC1maWVsZFxuICAgICpuZ0lmPVwiZ3JjRm9ybT8ub3RoZXJHcmNPYmplY3RzXCJcbiAgICBbZGlzYWJsZWRdPVwiXG4gICAgICBvcGVuZWRQb3B1cCAmJlxuICAgICAgb3BlbmVkUG9wdXAgIT09IElOUFVUX1RZUEU/Lm90aGVyR3JjT2JqZWN0cyAmJlxuICAgICAgZGlhbG9nRmllbGRzPy5pbmNsdWRlcyhvcGVuZWRQb3B1cClcbiAgICBcIlxuICAgIFthY3RpdmVdPVwib3BlbmVkUG9wdXAgJiYgb3BlbmVkUG9wdXAgPT0gSU5QVVRfVFlQRT8ub3RoZXJHcmNPYmplY3RzXCJcbiAgICBbdGl0bGVUZXh0XT1cIkFMTF9URVhUPy5vdGhlckdSQ09iamVjdHNUaXRsZVwiXG4gICAgW3BsYWNlaG9sZGVyVGV4dF09XCJBTExfVEVYVD8ub3RoZXJHUkNPYmplY3RzUGxhY2Vob2xkZXJcIlxuICAgIFtpc1JlYWRPbmx5XT1cInRydWVcIlxuICAgIChvbkNsaWNrKT1cIm9uUG9wdXBPcGVuKElOUFVUX1RZUEUub3RoZXJHcmNPYmplY3RzKVwiXG4gICAgW2lzRWRpdE1vZGVdPVwiXG4gICAgICBsaXN0T2JqZWN0Py5PVEhFUl9HUkNfT0JKRUNUUz8uc2VsZWN0ZWREYXRhPy5sZW5ndGggJiZcbiAgICAgIG9wZW5lZFBvcHVwICE9PSBJTlBVVF9UWVBFPy5vdGhlckdyY09iamVjdHNcbiAgICBcIlxuICA+XG4gICAgPGxpYi10ZXh0LWZpZWxkLWljb25cbiAgICAgIFtjZG5MaW5rXT1cIkNETl9MSU5LLmxpbmtPdGhlcnNcIlxuICAgICAgW2lzQ2hlY2tlZF09XCJsaXN0T2JqZWN0Py5PVEhFUl9HUkNfT0JKRUNUUz8uc2VsZWN0ZWREYXRhPy5sZW5ndGggPiAwXCJcbiAgICAgIGZpZWxkLWljb25zXG4gICAgPlxuICAgIDwvbGliLXRleHQtZmllbGQtaWNvbj5cblxuICAgIDxsaWItZWRpdC1tb2RlXG4gICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBHUkNfVFlQRV9BUlJBWVwiXG4gICAgICAob25SZW1vdmVEYXRhKT1cIm9uUmVtb3ZlRGF0YSgkZXZlbnQsIElOUFVUX1RZUEU/Lm90aGVyR3JjT2JqZWN0cylcIlxuICAgICAgW3NlbGVjdGVkRGF0YV09XCJncmNEYXRhV2l0aFR5cGVzW2RhdGFdXCJcbiAgICAgIFt0eXBlXT1cIidsaXN0J1wiXG4gICAgICBbaXNNdWx0aXBsZV09XCJ0cnVlXCJcbiAgICAgIChpc09uRWRpdCk9XCJvbkVkaXQoSU5QVVRfVFlQRS5vdGhlckdyY09iamVjdHMsIGRhdGEpXCJcbiAgICAgIGVkaXQtbW9kZVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ3b3JrZmxvd0xhdmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wbC0xIHZ4LXByLTEgdngtbGgtNCB2eC1tci0xIHZ4LXRleHQtY2VudGVyXCJcbiAgICAgID5cbiAgICAgICAge3sgZGF0YSB8IHRpdGxlY2FzZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9saWItZWRpdC1tb2RlPlxuICA8L2xpYi10ZXh0LWZpZWxkPlxuICA8bGliLWF0dHJpYnV0ZXNcbiAgICBbZGlzYWJsZWRdPVwib3BlbmVkUG9wdXAgJiYgZGlhbG9nRmllbGRzPy5pbmNsdWRlcyhvcGVuZWRQb3B1cClcIlxuICAgICpuZ0lmPVwic2VsZWN0ZWRBdHRyaWJ1dGVzPy5hdHRyaWJ1dGVzPy5sZW5ndGhcIlxuICAgIFthdHRyaWJ1dGVzSW5mb109XCJzZWxlY3RlZEF0dHJpYnV0ZXNcIlxuICAgIFtpc0Zvcm1TdWJtaXR0ZWRdPVwiaXNGb3JtU3VibWl0dGVkXCJcbiAgICAob25DbGljayk9XCJnZXRBdHRyaWJ1dGVTZWxlY3Rpb24oJGV2ZW50KVwiXG4gID48L2xpYi1hdHRyaWJ1dGVzPlxuICA8bGliLWxpc3QtcG9wdXBcbiAgICBbb3BlbmVkUG9wdXBdPVwib3BlbmVkUG9wdXBcIlxuICAgIFtsaXN0T2JqZWN0XT1cImxpc3RPYmplY3RcIlxuICAgIFt0YWJsZUNhcmRdPVwib3RoZXJHUkNDYXJkXCJcbiAgICBbb3RoZXJHcmNDYXJkTG9hZGVyXT1cImdyY1RhYkxvYWRlclwiXG4gICAgW0dSQ1NlbGVjdGVkVGFiXT1cIkdSQ1NlbGVjdGVkVGFiXCJcbiAgICBbbW9kZV09XCJNT0RFXCJcbiAgICBbb25FZGl0R1JDSWRdPVwiSURcIlxuICAgIChvblNhdmVTZWxlY3RlZExpc3QpPVwib25TYXZlU2VsZWN0ZWRMaXN0KCRldmVudClcIlxuICAgIChnZXRPdGhlckdSQ09iamVjdHMpPVwiZ2V0T3RoZXJHUkNPYmplY3RzKCRldmVudClcIlxuICA+PC9saWItbGlzdC1wb3B1cD5cbjwvbmctY29udGFpbmVyPlxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxuICAqbmdJZj1cInNob3dTbWlsZXlcIlxuICBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCJcbiAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXG4gIChhY3Rpb24pPVwic21pbGV5QWN0aW9ucygkZXZlbnQpXCJcbiAgKGNsb3NlU21pbGV5KT1cImNsb3NlU21pbGV5KCRldmVudClcIlxuPjwvYXBwLXNtaWxleS1kaWFsb2ctaW5saW5lPlxuPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwiaXNMb2FkaW5nXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cbiJdfQ==
|