atr-components 0.2.103 → 0.2.105
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/atr-components.module.d.ts +4 -7
- package/atr-public-api.d.ts +6 -0
- package/core/base/atr-common.d.ts +7 -2
- package/core/directive/hq-spin.directive.d.ts +4 -3
- package/core/pipe/china-num.pipe.d.ts +7 -0
- package/core/pipe/count.pipe.d.ts +7 -0
- package/core/pipe/is-empty.pipe.d.ts +1 -1
- package/core/pipe/oss.pipe.d.ts +7 -0
- package/core/pipe/ossStatic.pipe.d.ts +7 -0
- package/core/pipe/pipe-module.module.d.ts +8 -2
- package/core/pipe/remove-html.pipe.d.ts +10 -0
- package/core/pipe/safe-url.pipe.d.ts +10 -0
- package/core/services/upload-oss.service.d.ts +3 -1
- package/core/utils/ToolsUtil.d.ts +4 -0
- package/esm2020/atr-components.module.mjs +5 -10
- package/esm2020/atr-public-api.mjs +7 -4
- package/esm2020/core/base/atr-common.mjs +5 -1
- package/esm2020/core/directive/hq-spin.directive.mjs +16 -4
- package/esm2020/core/pipe/china-num.pipe.mjs +36 -0
- package/esm2020/core/pipe/count.pipe.mjs +34 -0
- package/esm2020/core/pipe/is-empty.pipe.mjs +5 -2
- package/esm2020/core/pipe/oss.pipe.mjs +17 -0
- package/esm2020/core/pipe/ossStatic.pipe.mjs +17 -0
- package/esm2020/core/pipe/pipe-module.module.mjs +12 -3
- package/esm2020/core/pipe/remove-html.pipe.mjs +21 -0
- package/esm2020/core/pipe/safe-url.pipe.mjs +20 -0
- package/esm2020/core/services/upload-oss.service.mjs +47 -1
- package/esm2020/core/utils/ToolsUtil.mjs +31 -1
- package/esm2020/lib/shared/atr-shared.module.mjs +10 -4
- package/esm2020/lib/shared/quill-editor/quill-editor.component.mjs +86 -1
- package/esm2020/lib/shared/table/table-form-item/table-form-item.component.mjs +3 -3
- package/esm2020/lib/shared/table/table.component.mjs +8 -1
- package/fesm2015/atr-components.mjs +461 -146
- package/fesm2015/atr-components.mjs.map +1 -1
- package/fesm2020/atr-components.mjs +461 -146
- package/fesm2020/atr-components.mjs.map +1 -1
- package/lib/shared/atr-shared.module.d.ts +15 -12
- package/lib/shared/quill-editor/quill-editor.component.d.ts +8 -0
- package/package.json +1 -1
|
@@ -507,6 +507,13 @@ export class AtrTableComponent {
|
|
|
507
507
|
params[begin] = formatDate(this.atrForm.value[key][0], formate, this.locale);
|
|
508
508
|
params[end] = formatDate(this.atrForm.value[key][1], formate, this.locale);
|
|
509
509
|
}
|
|
510
|
+
else if (this.getHederType(key) == "dayRange") {
|
|
511
|
+
let begin = key + "Begin";
|
|
512
|
+
let end = key + "End";
|
|
513
|
+
let formate = 'yyyy-MM-dd 00:00:00';
|
|
514
|
+
params[begin] = formatDate(this.atrForm.value[key][0], formate, this.locale);
|
|
515
|
+
params[end] = formatDate(this.atrForm.value[key][1], formate, this.locale);
|
|
516
|
+
}
|
|
510
517
|
else if (this.getHederType(key) == "sdate") {
|
|
511
518
|
params[key] = formatDate(this.atrForm.value[key], 'yyyy-MM-dd 00:00:00', this.locale);
|
|
512
519
|
}
|
|
@@ -699,4 +706,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
699
706
|
type: ViewChild,
|
|
700
707
|
args: ['tableContent', { static: true }]
|
|
701
708
|
}] } });
|
|
702
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsS0FBSyxFQUVMLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFDVCxNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF5QixXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFjLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxvQkFBb0IsRUFBMEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEVBQUMsZ0JBQWdCLEVBQXdELE1BQU0sK0JBQStCLENBQUM7QUFDdEgsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPeEQsTUFBTSxPQUFPLGlCQUFpQjtJQW9DNUIsWUFBb0IsRUFBZSxFQUFVLFFBQWtCLEVBQTZCLE1BQWMsRUFBVSxFQUFxQjtRQUFySCxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUE2QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7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U0FBUztzQkFBbEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUVvQyxZQUFZO3NCQUF0RCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG4gIFZpZXdDaGlsZCxcclxuICBFbGVtZW50UmVmLFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgTE9DQUxFX0lELFxyXG4gIEluamVjdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7Zm9ybWF0RGF0ZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5fSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2RyYWctZHJvcFwiO1xyXG5pbXBvcnQge056Q29udGV4dE1lbnVTZXJ2aWNlLCBOekRyb3Bkb3duTWVudUNvbXBvbmVudH0gZnJvbSAnbmctem9ycm8tYW50ZC9kcm9wZG93bic7XHJcbmltcG9ydCB7YXRyX3N0YXRpY19kYXRhcywgQXRyUXVlcnlIZWFkZXIsIEF0clF1ZXlyT3B0LCBqc29uLCBUYWJsZSwgVGFibGVBY3Rpb259IGZyb20gXCIuLi8uLi8uLi9jb3JlL2Jhc2UvYXRyLWNvbW1vblwiO1xyXG5pbXBvcnQge0RpY3RTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9kaWN0L2RpY3Quc2VydmljZVwiO1xyXG5pbXBvcnQge0h0dHBTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9odHRwLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtUb29sc1V0aWx9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3V0aWxzL1Rvb2xzVXRpbFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhdHItdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50Lmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXRyVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGF0ckZvcm06IEZvcm1Hcm91cCB8IGFueTtcclxuICBpc0NvbGxhcHNlID0gdHJ1ZTtcclxuICBkaWN0czogYW55ID0ge307XHJcbiAgcGFnZUluZGV4ID0gMTtcclxuXHJcbiAgcGFnZVNpemUgPSAxMDtcclxuICB0b3RhbCA9IDE7XHJcbiAgQElucHV0KCkgbG9hZGluZyA9IHRydWU7XHJcbiAgQElucHV0KCkgYWxsb3dEcmFnID0gZmFsc2U7Ly/lhYHorrjmi5bmi73mjaLkvY1cclxuICB0YWJsZURhdGFzOiBhbnkgPSBbXTtcclxuICBzY3JvbGxTaXplOiBhbnkgPSB7eDogXCJcIiwgeTogXCJcIn1cclxuICAvL+ihqOagvGNoZWNrYm94IOmFjee9rlxyXG4gIGlzQWxsRGlzcGxheURhdGFDaGVja2VkOiBib29sZWFuID0gZmFsc2VcclxuICBpc0luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICBudW1iZXJPZkNoZWNrZWQgPSAwO1xyXG4gIG1hcE9mQ2hlY2tlZElkOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xyXG4gIGN1ckNoZWNrZWQ6IG51bWJlciA9IC0xO1xyXG4gIGltYWdlUHJlZml4ID0gYXRyX3N0YXRpY19kYXRhcy5PU1NfVVJMO1xyXG4gIGRlZmF1bHRQYXJhbXMgPSB7fTtcclxuXHJcbiAgaXNBbGxMb2FkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc29ydE1hcDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gIHJvd1NwYW5NYXA6IGFueSA9IHt9Oy8va2V5Onvlvrfnp5HniaflnLo6e251bToxfX1cclxuICBoZWFkZXJEZWZhdWx0VmFsOiBhbnkgPSB7fVxyXG5cclxuICBASW5wdXQoKSBxdWVyeU9wdHM6IEF0clF1ZXlyT3B0IHwgYW55O1xyXG4gIEBJbnB1dCgpIHNob3dQYWdpbmF0aW9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgQE91dHB1dCgpIHRhYmxlQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZUFjdGlvbj4oKTtcclxuICBAT3V0cHV0KCkgcXVlcnlCYWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZUFjdGlvbj4oKTtcclxuICBAT3V0cHV0KCkgaGVhZGVyQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZUFjdGlvbj4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgndGFibGVDb250ZW50Jywge3N0YXRpYzogdHJ1ZX0pIHRhYmxlQ29udGVudDogRWxlbWVudFJlZiB8IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSBsb2NhbGU6IHN0cmluZywgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICB9XHJcblxyXG4gIGlzU2hvd0NvbG9yKGRhdGE6IGFueSkge1xyXG4gICAgaWYgKHRoaXMucXVlcnlPcHRzLmNvbG9yICYmIHRoaXMucXVlcnlPcHRzLmNvbG9yLm9wZXJhdG9yICYmIHRoaXMuaXNTaG93QnRuKGRhdGEsIHRoaXMucXVlcnlPcHRzLmNvbG9yLm9wZXJhdG9yKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5xdWVyeU9wdHMuY29sb3IuY29sb3I7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJydcclxuICB9XHJcblxyXG4gIGRiY2xpY2tEYXRhKGRhdGE6IGFueSwgcm93Tm86IG51bWJlcikge1xyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6ICdkYmNsaWNrRGF0YScsXHJcbiAgICAgIGNvZGU6ICdkYmNsaWNrRGF0YScsXHJcbiAgICAgIHR5cGU6IFwicm93XCJcclxuICAgIH07XHJcbiAgICBhY3Rpb24uZGF0YSA9IGRhdGE7XHJcbiAgICBhY3Rpb24uZmlyc3REYXRhID0gZGF0YTtcclxuICAgIHRoaXMudGFibGVBY3Rpb24uZW1pdChhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgZG9BY3Rpb25CeVJvdzIoZTogYW55KSB7XHJcbiAgICBsZXQge2RhdGEsIGNvZGUsIGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleH0gPSBlXHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikge1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBhY3Rpb246IFRhYmxlQWN0aW9uID0ge1xyXG4gICAgICBuYW1lOiBjb2RlLFxyXG4gICAgICBjb2RlOiBjb2RlLFxyXG4gICAgICB0eXBlOiBcInJvd1wiXHJcbiAgICB9O1xyXG4gICAgYWN0aW9uLmRhdGEgPSBkYXRhO1xyXG4gICAgYWN0aW9uLmZpcnN0RGF0YSA9IGRhdGE7XHJcbiAgICBhY3Rpb24ubnVtYmVyT2ZDaGVja2VkID0gaW5kZXg7XHJcbiAgICB0aGlzLnRhYmxlQWN0aW9uLmVtaXQoYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGh0dHBTZXJ2aWNlKCk6IEh0dHBTZXJ2aWNlIHtcclxuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChIdHRwU2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBuekNvbnRleHRNZW51U2VydmljZSgpOiBOekNvbnRleHRNZW51U2VydmljZSB7XHJcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoTnpDb250ZXh0TWVudVNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgc2V0VGFibGVMb2FkZGluZyhsb2FkZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gbG9hZGRpbmc7XHJcbiAgfVxyXG5cclxuICBvblJlc2l6ZSh3aWR0aDogYW55LCBjb2w6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5xdWVyeU9wdHMudGFibGVzID0gdGhpcy5xdWVyeU9wdHMudGFibGVzLm1hcCgoZTogYW55KSA9PiAoZS5uYW1lID09PSBjb2wgPyB7Li4uZSwgd2lkdGg6IGAke3dpZHRofXB4YH0gOiBlKSk7XHJcbiAgICBsZXQgeCA9IDA7XHJcbiAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMucXVlcnlPcHRzLnRhYmxlcykge1xyXG5cclxuICAgICAgaWYgKGl0ZW0uaXNTaG93ICYmIGl0ZW0ud2lkdGgpIHtcclxuICAgICAgICB4ICs9IFRvb2xzVXRpbC5waXhlbFRvTnVtKGl0ZW0ud2lkdGgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoeCA+IDIyKSB7XHJcbiAgICAgIHggPSB4IC0gMjI7XHJcbiAgICAgIHRoaXMuc2Nyb2xsU2l6ZS54ID0geCArIFwicHhcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRW5hYmxlKG9wZXJhdG9yOiBzdHJpbmcpIHtcclxuICAgIGxldCBpc0VuYWJsZSA9IHRydWU7XHJcbiAgICBpZiAoIW9wZXJhdG9yIHx8IG9wZXJhdG9yID09IHVuZGVmaW5lZCB8fCBvcGVyYXRvciA9PSBcIlwiKVxyXG4gICAgICBpc0VuYWJsZSA9IGZhbHNlO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBvcCA9IG9wZXJhdG9yLnNwbGl0KFwifFwiKTtcclxuICAgICAgaWYgKG9wLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICBsZXQga2V5ID0gb3BbMF07XHJcbiAgICAgICAgaWYgKCFrZXkpIHtcclxuICAgICAgICAgIGlzRW5hYmxlID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlzRW5hYmxlID0gIXRoaXMuY29tcGFyZSh0aGlzLm51bWJlck9mQ2hlY2tlZCwgb3BbMV0sIG9wWzJdKVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlXHJcbiAgICAgICAgaXNFbmFibGUgPSBmYWxzZVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpc0VuYWJsZVxyXG4gIH1cclxuXHJcbiAgaXNTaG93QnRuKGRhdGE6IGFueSwgb3BlcmF0b3I6IHN0cmluZywgYWN0aW9uPzogVGFibGVBY3Rpb24pOiBib29sZWFuIHtcclxuICAgIGxldCBpc1Nob3cgPSBmYWxzZTtcclxuICAgIGlmICghb3BlcmF0b3IgfHwgb3BlcmF0b3IgPT0gbnVsbCB8fCBvcGVyYXRvciA9PSBcIlwiKSB7XHJcbiAgICAgIGlzU2hvdyA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKG9wZXJhdG9yLmluZGV4T2YoJyYmJykgPiAwKSB7XHJcbiAgICAgIC8vIGF8ZXF8YiAmJmN8ZXF8ZFxyXG4gICAgICBjb25zdCBvcHMgPSBvcGVyYXRvci5zcGxpdCgnJiYnKTtcclxuICAgICAgaWYgKG9wcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaXNTaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgaWYgKCF0aGlzLmNoZWNrSXNTaG93QmFzZShvcHNbaV0uc3BsaXQoJ3wnKSwgZGF0YSkpIHtcclxuICAgICAgICAgICAgaXNTaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChvcGVyYXRvci5pbmRleE9mKCd8fCcpID4gMCkge1xyXG4gICAgICAvLyBhfGVxfGJ8fGN8ZXF8ZFxyXG4gICAgICBjb25zdCBvcHMgPSBvcGVyYXRvci5zcGxpdCgnJiYnKTtcclxuICAgICAgaWYgKG9wcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlzU2hvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tJc1Nob3dCYXNlKG9wc1tpXS5zcGxpdCgnfCcpLCBkYXRhKSkge1xyXG4gICAgICAgICAgICBpc1Nob3cgPSB0cnVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBvcCA9IG9wZXJhdG9yLnNwbGl0KFwifFwiKTtcclxuICAgICAgaXNTaG93ID0gdGhpcy5jaGVja0lzU2hvd0Jhc2Uob3AsIGRhdGEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzU2hvdztcclxuICB9XHJcblxyXG4gIGNoZWNrSXNTaG93QmFzZShvcDogYW55LCBkYXRhOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1Nob3cgPSBmYWxzZTtcclxuICAgIGlmIChvcC5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IGRhdGFbb3BbMF1dO1xyXG4gICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgaXNTaG93ID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaXNTaG93ID0gdGhpcy5jb21wYXJlKHZhbHVlLCBvcFsxXSwgb3BbMl0pXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZVxyXG4gICAgICBpc1Nob3cgPSBmYWxzZVxyXG5cclxuICAgIHJldHVybiBpc1Nob3c7XHJcbiAgfVxyXG5cclxuICBjb21wYXJlKHZhbHVlOiBhbnksIG9wZXJhdG9yOiBhbnksIHRhcmdldDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaXNSaWdodCA9IGZhbHNlO1xyXG4gICAgc3dpdGNoIChvcGVyYXRvcikge1xyXG4gICAgICBjYXNlICdlcScgOlxyXG4gICAgICAgIGlmICh2YWx1ZSA9PSB0YXJnZXQpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZ2gnIDpcclxuICAgICAgICBpZiAodmFsdWUgPj0gdGFyZ2V0KSB7XHJcbiAgICAgICAgICBpc1JpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ25vdEVtcHR5JzpcclxuICAgICAgICBpc1JpZ2h0ID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICBpc1JpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2VtcHR5JzpcclxuICAgICAgICBpc1JpZ2h0ID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgaXNSaWdodCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0IDpcclxuICAgICAgICBpc1JpZ2h0ID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNSaWdodDtcclxuICB9XHJcblxyXG4gIHB1c2hUYWJsZURhdGFzKHRhYmxlRGF0YXM6IGFueSkge1xyXG4gICAgdGhpcy50YWJsZURhdGFzID0gdGhpcy50YWJsZURhdGFzLmNvbmNhdCh0YWJsZURhdGFzKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZURhdGFzKGtleTogYW55LCB2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnRhYmxlRGF0YXMuZm9yRWFjaCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpdGVtW2tleV0gPT09IHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGFzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBkb0FjdGlvbihjb2RlOiBhbnkpIHtcclxuICAgIGxldCBhY3Rpb246IFRhYmxlQWN0aW9uID0ge1xyXG4gICAgICBuYW1lOiBjb2RlLFxyXG4gICAgICBjb2RlOiBjb2RlLFxyXG4gICAgICB0eXBlOiBcInJvd3NcIlxyXG4gICAgfTtcclxuICAgIGxldCBzZWxlY3REYXRhczogYW55ID0gW107XHJcbiAgICBpZiAodGhpcy50YWJsZURhdGFzICYmIHRoaXMudGFibGVEYXRhcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5tYXBPZkNoZWNrZWRJZFtpdGVtLmlkXSlcclxuICAgICAgICAgIHNlbGVjdERhdGFzLnB1c2goaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgYWN0aW9uLmRhdGFzID0gc2VsZWN0RGF0YXM7XHJcbiAgICBpZiAoc2VsZWN0RGF0YXMgJiYgc2VsZWN0RGF0YXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBhY3Rpb24uZmlyc3REYXRhID0gc2VsZWN0RGF0YXNbMF07XHJcbiAgICB9XHJcbiAgICBhY3Rpb24ubnVtYmVyT2ZDaGVja2VkID0gc2VsZWN0RGF0YXMubGVuZ3RoO1xyXG4gICAgdGhpcy50YWJsZUFjdGlvbi5lbWl0KGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICBkb0FjdGlvbkJ5Um93KGRhdGE6IGFueSwgY29kZTogYW55LCBldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGlmIChldmVudC5zdG9wUHJvcGFnYXRpb24pIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcclxuICAgIH1cclxuICAgIGxldCBhY3Rpb246IFRhYmxlQWN0aW9uID0ge1xyXG4gICAgICBuYW1lOiBjb2RlLFxyXG4gICAgICBjb2RlOiBjb2RlLFxyXG4gICAgICB0eXBlOiBcInJvd1wiXHJcbiAgICB9O1xyXG4gICAgYWN0aW9uLmRhdGEgPSBkYXRhO1xyXG4gICAgYWN0aW9uLmZpcnN0RGF0YSA9IGRhdGE7XHJcbiAgICBhY3Rpb24ubnVtYmVyT2ZDaGVja2VkID0gMTtcclxuICAgIHRoaXMudGFibGVBY3Rpb24uZW1pdChhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQ2hlY2tJbmZvKCk6IGFueVtdIHtcclxuICAgIGxldCBpZHM6IGFueSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5tYXBPZkNoZWNrZWRJZCkpIHtcclxuICAgICAgaWYgKHRoaXMubWFwT2ZDaGVja2VkSWQuaGFzT3duUHJvcGVydHkoa2V5KSAmJiB0aGlzLm1hcE9mQ2hlY2tlZElkW2tleV0pIHtcclxuICAgICAgICBpZHMucHVzaChrZXkpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBpZHM7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxDaGVja0RhdGFzKCk6IGFueVtdIHtcclxuICAgIGxldCBzZWxlY3REYXRhczogYW55ID0gW11cclxuICAgIHRoaXMudGFibGVEYXRhcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMubWFwT2ZDaGVja2VkSWRbaXRlbS5pZF0pXHJcbiAgICAgICAgc2VsZWN0RGF0YXMucHVzaChpdGVtKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHNlbGVjdERhdGFzO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tBbGwodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMudGFibGVEYXRhcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+ICh0aGlzLm1hcE9mQ2hlY2tlZElkW2l0ZW0uaWRdID0gdmFsdWUpKTtcclxuICAgIHRoaXMucmVmcmVzaFN0YXR1cygpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaFN0YXR1cygpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNBbGxEaXNwbGF5RGF0YUNoZWNrZWQgPSB0aGlzLnRhYmxlRGF0YXNcclxuICAgICAgLmV2ZXJ5KChpdGVtOiBhbnkpID0+IHRoaXMubWFwT2ZDaGVja2VkSWRbaXRlbS5pZF0pO1xyXG4gICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPVxyXG4gICAgICB0aGlzLnRhYmxlRGF0YXMuc29tZSgoaXRlbTogYW55KSA9PiB0aGlzLm1hcE9mQ2hlY2tlZElkW2l0ZW0uaWRdKSAmJlxyXG4gICAgICAhdGhpcy5pc0FsbERpc3BsYXlEYXRhQ2hlY2tlZDtcclxuICAgIHRoaXMubnVtYmVyT2ZDaGVja2VkID0gdGhpcy50YWJsZURhdGFzLmZpbHRlcigoaXRlbTogYW55KSA9PiB0aGlzLm1hcE9mQ2hlY2tlZElkW2l0ZW0uaWRdKS5sZW5ndGg7XHJcbiAgICB0aGlzLnRhYmxlQWN0aW9uLmVtaXQoe1xyXG4gICAgICBjb2RlOiAncmVmcmVzaFN0YXR1cycsIG5hbWU6ICdzZWxlY3QnLFxyXG4gICAgICB0eXBlOiBcInJvd1wiLCBkYXRhOiB0aGlzLmdldEFsbENoZWNrRGF0YXMoKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHNlbGVjdFJvdyhkYXRhOiBhbnksIHJvd05vOiBudW1iZXIpIHtcclxuICAgIC8vIHRoaXMudGFibGVEYXRhcy5mb3JFYWNoKGl0ZW0gPT4gKHRoaXMubWFwT2ZDaGVja2VkSWRbZGF0YS5pZF0gPSB2YWx1ZSkpO1xyXG4gICAgdGhpcy5jdXJDaGVja2VkID0gcm93Tm87XHJcbiAgICBpZiAoIXRoaXMucXVlcnlPcHRzLmNoZWNrQm94Py5pc0ZvcmJpZCkge1xyXG4gICAgICBpZiAodGhpcy5xdWVyeU9wdHMuY2hlY2tCb3g/LmlzU2hvd0NoZWNrYm94KSB7XHJcbiAgICAgICAgdGhpcy5tYXBPZkNoZWNrZWRJZFtkYXRhLmlkXSA9ICF0aGlzLm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWFwT2ZDaGVja2VkSWQgPSB7fTtcclxuICAgICAgICB0aGlzLm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6ICdzZWxlY3QnLFxyXG4gICAgICBjb2RlOiAnc2VsZWN0JyxcclxuICAgICAgdHlwZTogXCJyb3dcIlxyXG4gICAgfTtcclxuICAgIGFjdGlvbi5kYXRhID0gZGF0YTtcclxuICAgIGFjdGlvbi5maXJzdERhdGEgPSBkYXRhO1xyXG4gICAgYWN0aW9uLm51bWJlck9mQ2hlY2tlZCA9IDE7XHJcbiAgICB0aGlzLnRhYmxlQWN0aW9uLmVtaXQoYWN0aW9uKTtcclxuICAgIHRoaXMucmVmcmVzaFN0YXR1cygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmF0ckZvcm0gPSB0aGlzLmZiLmdyb3VwKHt9KTtcclxuICAgIGxldCB4ID0gdGhpcy50YWJsZUNvbnRlbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAtIDIyXHJcbiAgICBsZXQgeSA9IHRoaXMudGFibGVDb250ZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gMjAwXHJcbiAgICB0aGlzLnNjcm9sbFNpemUueCA9ICh4ID4gMCA/IHggOiAxMDApICsgXCJweFwiO1xyXG4gICAgdGhpcy5zY3JvbGxTaXplLnkgPSAoeSA+IDAgPyB5IDogMTAwKSArIFwicHhcIjtcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuc2Nyb2xsU2l6ZSlcclxuICAgIHRoaXMuaW5pdEhlYWRlcigpO1xyXG4gICAgaWYgKHRoaXMucXVlcnlPcHRzICYmIHRoaXMucXVlcnlPcHRzLnRhYmxlcykge1xyXG4gICAgICBmb3IgKGxldCB0YWJsZSBvZiB0aGlzLnF1ZXJ5T3B0cy50YWJsZXMpIHtcclxuICAgICAgICBpZiAodGFibGUuc29ydEtleSkge1xyXG4gICAgICAgICAgdGFibGUuc29ydGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zb3J0TWFwW3RhYmxlLnNvcnRLZXldID0gbnVsbDtcclxuICAgICAgICB9IGVsc2VcclxuICAgICAgICAgIHRhYmxlLnNvcnRhYmxlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLnF1ZXJ5T3B0cyAmJiB0aGlzLnF1ZXJ5T3B0cy5kZWZhdWx0UGFyYW1zKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdFBhcmFtcyA9IHRoaXMucXVlcnlPcHRzLmRlZmF1bHRQYXJhbXNcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5xdWVyeU9wdHMuaXNBdXRvUXVlcnkpIHtcclxuICAgICAgdGhpcy5xdWVyeSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIC8vIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdEhlYWRlcigpIHtcclxuICAgIHRoaXMuaGVhZGVyRGVmYXVsdFZhbCA9IHt9O1xyXG4gICAgaWYgKHRoaXMucXVlcnlPcHRzICYmIHRoaXMucXVlcnlPcHRzLmhlYWRlcnMgJiYgdGhpcy5xdWVyeU9wdHMuaGVhZGVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucXVlcnlPcHRzLmhlYWRlcnMuZm9yRWFjaCgoaXRlbTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgICAgICBpdGVtLnNwYW4gPSBpdGVtLnNwYW4gfHwgODtcclxuICAgICAgICBpZiAoIVRvb2xzVXRpbC5pc051bGwoaXRlbS5kZWZhdWx0VmFsKSkge1xyXG4gICAgICAgICAgdGhpcy5oZWFkZXJEZWZhdWx0VmFsW2l0ZW0ua2V5XSA9IGl0ZW0uZGVmYXVsdFZhbFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS5pc1Nob3cgIT0gZmFsc2UpIHtcclxuICAgICAgICAgIGl0ZW0uaXNTaG93ID0gaSA8IHRoaXMucXVlcnlPcHRzLnNob3dOdW1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hdHJGb3JtLmFkZENvbnRyb2woaXRlbS5rZXksIG5ldyBGb3JtQ29udHJvbCgpKTtcclxuICAgICAgICBsZXQgdHlwZSA9IGl0ZW0udHlwZTtcclxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgXCJzZWxlY3RcIjpcclxuICAgICAgICAgICAgdGhpcy5nZXREaWN0VmFsdWUoaXRlbS5kaWN0Q29kZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcInRyZWVTZWxlY3RcIjpcclxuICAgICAgICAgIGNhc2UgXCJjYXNjYWRlclwiOlxyXG4gICAgICAgICAgY2FzZSBcInNlbGVjdEN1c1wiOlxyXG4gICAgICAgICAgICBpZiAoaXRlbS5zZWxlY3RVcmwgJiYgaXRlbS5zZWxlY3RVcmwudXJsKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXREaWNMaXN0KGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREaWNMaXN0KGl0ZW06IGFueSkge1xyXG4gICAgaWYgKCFpdGVtLnNlbGVjdFVybCB8fCAhaXRlbS5zZWxlY3RVcmwudXJsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBrZXlzID0gaXRlbS5zZWxlY3RVcmwuY29udmVydC5zcGxpdCgnLCcpO1xyXG4gICAgdGhpcy5odHRwU2VydmljZS5wb3N0KGl0ZW0uc2VsZWN0VXJsLnVybCwge30sIFRvb2xzVXRpbC5nZXRIdHRwT3B0aW9ucygpKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgaWYgKGl0ZW0udHlwZSA9PSAndHJlZVNlbGVjdCcpIHtcclxuICAgICAgICBpdGVtLnRyZWVMaXN0ID0gcmVzLmRhdGEuZmlsdGVyKChjaGlsZDogYW55KSA9PiB7XHJcbiAgICAgICAgICBrZXlzLmZvckVhY2goKHY6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgdnMgPSB2LnNwbGl0KFwifFwiKTtcclxuICAgICAgICAgICAgY2hpbGRbdnNbMF1dID0gY2hpbGRbdnNbMV1dO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICAvLyBjaGlsZC5rZXkgPSBjaGlsZC5pZDtcclxuICAgICAgICAgIC8vIGNoaWxkLnRpdGxlID0gY2hpbGQucmVhbE5hbWU7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PSAnc2VsZWN0Q3VzJykge1xyXG4gICAgICAgIGl0ZW0uZGljdExpc3QgPSByZXMuZGF0YS5maWx0ZXIoKGNoaWxkOiBhbnkpID0+IHtcclxuICAgICAgICAgIGtleXMuZm9yRWFjaCgodjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCB2cyA9IHYuc3BsaXQoXCJ8XCIpO1xyXG4gICAgICAgICAgICBjaGlsZFt2c1swXV0gPSBjaGlsZFt2c1sxXV07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8vIGNoaWxkLnZhbHVlID0gY2hpbGQuaWQ7XHJcbiAgICAgICAgICAvLyBjaGlsZC5sYWJlbCA9IGNoaWxkLm5hbWU7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zY3JvbGxTaXplLnkgPSB0aGlzLnRhYmxlQ29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtIDEwMCArIFwicHhcIjtcclxuICAgICAgbGV0IHdpZHRoID0gMDtcclxuICAgICAgaWYgKHRoaXMucXVlcnlPcHRzICYmIHRoaXMucXVlcnlPcHRzLnRhYmxlcykge1xyXG4gICAgICAgIGZvciAobGV0IHRhYmxlIG9mIHRoaXMucXVlcnlPcHRzLnRhYmxlcykge1xyXG4gICAgICAgICAgaWYgKHRhYmxlLmlzU2hvdyAmJiB0YWJsZS53aWR0aCkge1xyXG5cclxuICAgICAgICAgICAgd2lkdGggKz0gVG9vbHNVdGlsLnBpeGVsVG9OdW0odGFibGUud2lkdGgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBsZXQgdyA9IHRoaXMudGFibGVDb250ZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSAyMjtcclxuICAgICAgaWYgKHdpZHRoID4gdylcclxuICAgICAgICB0aGlzLnNjcm9sbFNpemUueCA9IHdpZHRoICsgXCJweFwiO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5zY3JvbGxTaXplLnggPSB0aGlzLnRhYmxlQ29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC0gMjIgKyBcInB4XCI7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnNjcm9sbFNpemUpO1xyXG4gICAgICB0aGlzLmlzQWxsTG9hZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgNTAwKVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBzb3J0KHNvcnROYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuc29ydE1hcCkge1xyXG4gICAgICB0aGlzLnNvcnRNYXBba2V5XSA9IGtleSA9PT0gc29ydE5hbWUgPyB2YWx1ZSA6IG51bGw7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnNlYXJjaCh0aGlzLmxpc3RPZlNlYXJjaE5hbWUsIHRoaXMubGlzdE9mU2VhcmNoQWRkcmVzcyk7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNvcnRNYXApXHJcbiAgICB0aGlzLnF1ZXJ5KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgZGljdFNlcnZpY2UoKTogRGljdFNlcnZpY2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KERpY3RTZXJ2aWNlKVxyXG4gIH1cclxuXHJcbiAgZ2V0RGljdFZhbHVlKGNvZGU6IHN0cmluZykge1xyXG4gICAgY29uc29sZS5sb2coXCJwcHBwXCIpO1xyXG4gICAgdGhpcy5kaWN0U2VydmljZS5nZXREaWN0Qnljb2RlKGNvZGUpLnN1YnNjcmliZShcclxuICAgICAgcmVzdWx0ID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdCAhPSBudWxsKVxyXG4gICAgICAgICAgdGhpcy5kaWN0c1tjb2RlXSA9IHJlc3VsdC5kaWN0cztcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmRpY3RzKVxyXG5cclxuICAgICAgfSxcclxuICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuZGljdHNbY29kZV0gPSBbXTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ29sbGFwc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzQ29sbGFwc2UgPSAhdGhpcy5pc0NvbGxhcHNlO1xyXG4gICAgLy8gdGhpcy5xdWVyeU9wdHMuaGVhZGVycy5mb3JFYWNoKChjOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgIC8vICAgYy5pc1Nob3cgPSB0aGlzLmlzQ29sbGFwc2UgPyBpbmRleCA8IHRoaXMucXVlcnlPcHRzLnNob3dOdW0gOiB0cnVlO1xyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICByZXNldEZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLmF0ckZvcm0ucmVzZXQoKTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuaGVhZGVyRGVmYXVsdFZhbCkge1xyXG4gICAgICB0aGlzLmF0ckZvcm0uZ2V0KGtleSk/LnNldFZhbHVlKHRoaXMuaGVhZGVyRGVmYXVsdFZhbFtrZXldKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdENoYW5nZSh2YWx1ZTogYW55LCBpdGVtOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKHZhbHVlKTtcclxuICAgIGxldCBhY3Rpb246IFRhYmxlQWN0aW9uID0ge1xyXG4gICAgICBuYW1lOiBpdGVtLmxhYmVsLFxyXG4gICAgICBjb2RlOiBpdGVtLmtleSxcclxuICAgICAgZGF0YTogaXRlbSxcclxuICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuaGVhZGVyQWN0aW9uLmVtaXQoYWN0aW9uKVxyXG5cclxuICB9XHJcblxyXG4gIGNsaWNrSWNvbih2YWx1ZTogYW55LCBpdGVtOiBBdHJRdWVyeUhlYWRlciwgJGV2ZW50OiBhbnkpIHtcclxuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGNvbnNvbGUubG9nKHZhbHVlLCBpdGVtKTtcclxuICAgIGxldCBhY3Rpb246IFRhYmxlQWN0aW9uID0ge1xyXG4gICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgIGNvZGU6IGl0ZW0uaWNvbj8uY29kZSA/IGl0ZW0uaWNvbj8uY29kZSA6IFwiXCIsXHJcbiAgICAgIGRhdGE6IGl0ZW0sXHJcbiAgICAgIHZhbHVlOiB2YWx1ZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmhlYWRlckFjdGlvbi5lbWl0KGFjdGlvbilcclxuICB9XHJcblxyXG4gIGdldFF1ZXJ5UGFyYW1zKHJlc2V0OiBib29sZWFuKToganNvbiB7XHJcbiAgICBpZiAocmVzZXQpIHtcclxuICAgICAgdGhpcy5wYWdlSW5kZXggPSAxO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2codGhpcy5wYWdlSW5kZXgpO1xyXG4gICAgbGV0IHBhcmFtczogYW55ID0ge1xyXG4gICAgICBwYWdlOiB0aGlzLnBhZ2VJbmRleCxcclxuICAgICAgbGltaXQ6IHRoaXMucGFnZVNpemUsXHJcbiAgICAgIHNvcnQ6IHRoaXMuZ2V0U29ydEluZm8oKVxyXG4gICAgfTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuYXRyRm9ybS52YWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5hdHJGb3JtLnZhbHVlW2tleV0gJiYgdGhpcy5hdHJGb3JtLnZhbHVlW2tleV0gIT0gbnVsbCAmJiB0aGlzLmF0ckZvcm0udmFsdWVba2V5XSAhPSBcIlwiKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0SGVkZXJUeXBlKGtleSkgPT0gXCJkYXRlUmFuZ2VcIikge1xyXG4gICAgICAgICAgbGV0IGJlZ2luID0ga2V5ICsgXCJCZWdpblwiO1xyXG4gICAgICAgICAgbGV0IGVuZCA9IGtleSArIFwiRW5kXCI7XHJcbiAgICAgICAgICBsZXQgZm9ybWF0ZSA9ICd5eXl5LU1NLWRkIDAwOjAwOjAwJ1xyXG4gICAgICAgICAgbGV0IG56U2hvd1RpbWUgPSB0aGlzLmdldEhlZGVyVHlwZShrZXksICduelNob3dUaW1lJylcclxuICAgICAgICAgIGlmIChuelNob3dUaW1lKSB7XHJcbiAgICAgICAgICAgIGZvcm1hdGUgPSAneXl5eS1NTS1kZCBISDptbTpzcydcclxuICAgICAgICAgICAgaWYgKG56U2hvd1RpbWUubnpGb3JtYXQpIHtcclxuICAgICAgICAgICAgICBmb3JtYXRlID0gJ3l5eXktTU0tZGQgJyArIG56U2hvd1RpbWUubnpGb3JtYXQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHBhcmFtc1tiZWdpbl0gPSBmb3JtYXREYXRlKCh0aGlzLmF0ckZvcm0udmFsdWVba2V5XVswXSBhcyBEYXRlKSwgZm9ybWF0ZSwgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgICAgcGFyYW1zW2VuZF0gPSBmb3JtYXREYXRlKCh0aGlzLmF0ckZvcm0udmFsdWVba2V5XVsxXSBhcyBEYXRlKSwgZm9ybWF0ZSwgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXRIZWRlclR5cGUoa2V5KSA9PSBcInNkYXRlXCIpIHtcclxuICAgICAgICAgIHBhcmFtc1trZXldID0gZm9ybWF0RGF0ZSgodGhpcy5hdHJGb3JtLnZhbHVlW2tleV0gYXMgRGF0ZSksICd5eXl5LU1NLWRkIDAwOjAwOjAwJywgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXRIZWRlclR5cGUoa2V5KSA9PSBcInRyZWVTZWxlY3RcIikge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5hdHJGb3JtLnZhbHVlW2tleV07XHJcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHBhcmFtc1trZXldID0gdGhpcy5hdHJGb3JtLnZhbHVlW2tleV07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBwYXJhbXNba2V5XSA9IHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldLmpvaW4oKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0SGVkZXJUeXBlKGtleSkgPT0gXCJjYXNjYWRlclwiKSB7XHJcbiAgICAgICAgICBwYXJhbXNba2V5XSA9IHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldLmpvaW4oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcGFyYW1zW2tleV0gPSB0aGlzLmF0ckZvcm0udmFsdWVba2V5XTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcGFyYW1zID0gT2JqZWN0LmFzc2lnbihwYXJhbXMsIHRoaXMuZGVmYXVsdFBhcmFtcyk7XHJcbiAgICBjb25zb2xlLmxvZyhwYXJhbXMpXHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG5cclxuICB9XHJcblxyXG4gIGdldEhlZGVyVHlwZShjdXNLZXk6IHN0cmluZywgdHlwZUtleT86IHN0cmluZykge1xyXG4gICAgbGV0IHR5cGUgPSBudWxsO1xyXG4gICAgZm9yIChsZXQgaGVhZGVyIG9mIHRoaXMucXVlcnlPcHRzLmhlYWRlcnMpIHtcclxuICAgICAgaWYgKGN1c0tleSA9PSBoZWFkZXIua2V5KSB7XHJcbiAgICAgICAgdHlwZSA9IGhlYWRlclt0eXBlS2V5IHx8ICd0eXBlJ107XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0eXBlO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdFBhcmFtcyhwYXJhbXM6IGFueSwgcmVzZXQ6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICB0aGlzLmRlZmF1bHRQYXJhbXMgPSBwYXJhbXM7XHJcbiAgICB0aGlzLnF1ZXJ5KHJlc2V0KTtcclxuICB9XHJcblxyXG4gIGdldFNvcnRJbmZvKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgb3JkZXJieTogYW55ID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLnNvcnRNYXApIHtcclxuICAgICAgaWYgKHRoaXMuc29ydE1hcFtrZXldID09ICdhc2NlbmQnKSB7XHJcbiAgICAgICAgb3JkZXJieS5wdXNoKGtleSArIFwifFwiICsgXCJhc2NcIilcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNvcnRNYXBba2V5XSA9PSAnZGVzY2VuZCcpIHtcclxuICAgICAgICBvcmRlcmJ5LnB1c2goa2V5ICsgXCJ8XCIgKyBcImRlc2NcIilcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IG9yZGVyID0gXCJcIjtcclxuICAgIGlmIChvcmRlcmJ5Lmxlbmd0aCA8IDEgJiYgdGhpcy5xdWVyeU9wdHMuc29ydCkge1xyXG4gICAgICBvcmRlciA9IHRoaXMucXVlcnlPcHRzLnNvcnRcclxuICAgIH0gZWxzZVxyXG4gICAgICBvcmRlciA9IG9yZGVyYnkuam9pbihcIixcIik7XHJcbiAgICByZXR1cm4gb3JkZXI7XHJcbiAgfVxyXG5cclxuICBxdWVyeShyZXNldDogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5nZXRRdWVyeVBhcmFtcyhyZXNldCk7XHJcbiAgICBpZiAodGhpcy5xdWVyeU9wdHMudXJsKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QodGhpcy5xdWVyeU9wdHMudXJsLCBwYXJhbXMsIFRvb2xzVXRpbC5nZXRIdHRwT3B0aW9ucygpKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgcmVzdWx0ID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGxldCBhY3Rpb246IGFueSA9IHt9O1xyXG4gICAgICAgICAgICBhY3Rpb25bXCJyZXN1bHRcIl0gPSByZXN1bHQ7XHJcbiAgICAgICAgICAgIGFjdGlvbltcInBhcmFtc1wiXSA9IHBhcmFtcztcclxuICAgICAgICAgICAgdGhpcy5xdWVyeUJhY2suZW1pdChhY3Rpb24pO1xyXG4gICAgICAgICAgICB0aGlzLnRvdGFsID0gcmVzdWx0Py5wYWdlPy50b3RhbFJlc3VsdDtcclxuICAgICAgICAgICAgdGhpcy50YWJsZURhdGFzID0gcmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Um93U3BhbigpO1xyXG4gICAgICAgICAgICB0aGlzLm1hcE9mQ2hlY2tlZElkID0ge307XHJcbiAgICAgICAgICAgIHRoaXMuY3VyQ2hlY2tlZCA9IC0xO1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hTdGF0dXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5xdWVyeUJhY2suZW1pdCh7bmFtZTogJycsIGNvZGU6ICdxdWVyeScsIGRhdGE6IHBhcmFtc30pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb250ZXh0TWVudSgkZXZlbnQ6IGFueSwgbWVudTogTnpEcm9wZG93bk1lbnVDb21wb25lbnQpIHtcclxuICAgIGNvbnNvbGUubG9nKCRldmVudClcclxuICAgIHRoaXMubnpDb250ZXh0TWVudVNlcnZpY2UuY3JlYXRlKCRldmVudCwgbWVudSk7XHJcbiAgfVxyXG5cclxuICBsb2codmFsdWU6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyh2YWx1ZSk7XHJcbiAgICBmb3IgKGxldCB0YWJsZSBvZiB0aGlzLnF1ZXJ5T3B0cy50YWJsZXMpIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZTtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB2YWx1ZSkge1xyXG4gICAgICAgIGlmIChpdGVtID09IHRhYmxlLmtleSkge1xyXG4gICAgICAgICAgdGFibGUuaXNTaG93ID0gdHJ1ZTtcclxuICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghZmxhZylcclxuICAgICAgICB0YWJsZS5pc1Nob3cgPSBmYWxzZTtcclxuXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnF1ZXJ5T3B0cy50YWJsZXMpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tTaG93VGQoaXRlbTogVGFibGUsIGluZGV4OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICghaXRlbS5pc1Nob3cpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0uaXNSb3dTcGFuKSB7XHJcbiAgICAgIC8vIOWQiOW5tuihjCzov5Tlm57lgLzkuI7kuIrkuIDooYznm7jlkIzliJnpmpDol4/ov5nkuIDooYw7XHJcbiAgICAgIGlmIChpbmRleCA9PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qga2V5ID0gaXRlbS5rZXkgPyBpdGVtLmtleSA6IFwiXCI7XHJcbiAgICAgIGNvbnN0IGN1ciA9IHRoaXMudGFibGVEYXRhc1tpbmRleF1ba2V5XTtcclxuICAgICAgY29uc3QgcHJlID0gdGhpcy50YWJsZURhdGFzW2luZGV4IC0gMV1ba2V5XTtcclxuXHJcbiAgICAgIHJldHVybiAhKGN1ciA9PSBwcmUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGl0ZW0uaXNTaG93O1xyXG4gIH1cclxuXHJcbiAgY2hlY2tSb3dTcGFuKGl0ZW06IFRhYmxlLCBkYXRhOiBhbnkpIHtcclxuICAgIGlmIChpdGVtLmlzUm93U3Bhbikge1xyXG4gICAgICByZXR1cm4gdGhpcy5yb3dTcGFuTWFwW2l0ZW0ua2V5ID8gaXRlbS5rZXkgOiBcIlwiXVtkYXRhW2l0ZW0ua2V5ID8gaXRlbS5rZXkgOiBcIlwiXV0ubnVtXHJcbiAgICB9XHJcbiAgICByZXR1cm4gMTtcclxuICB9XHJcblxyXG4gIGdldFJvd1NwYW4oKSB7XHJcbiAgICBsZXQgaXNSb3dTcGFuID0gZmFsc2U7XHJcbiAgICB0aGlzLnF1ZXJ5T3B0cy50YWJsZXMuZm9yRWFjaChcclxuICAgICAgKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmlzUm93U3Bhbikge1xyXG4gICAgICAgICAgaXNSb3dTcGFuID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucm93U3Bhbk1hcFtpdGVtLmtleV0gPSB7fTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICBpZiAoIWlzUm93U3Bhbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucm93U3Bhbk1hcCk7XHJcbiAgICB0aGlzLnRhYmxlRGF0YXMuZm9yRWFjaChcclxuICAgICAgKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGtleXMuZm9yRWFjaChcclxuICAgICAgICAgIGtleSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbVtrZXldO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMucm93U3Bhbk1hcFtrZXldW3ZhbHVlXSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucm93U3Bhbk1hcFtrZXldW3ZhbHVlXSA9IHtcclxuICAgICAgICAgICAgICAgIG51bTogMVxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3dTcGFuTWFwW2tleV1bdmFsdWVdLm51bSArPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KTogdm9pZCB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy50YWJsZURhdGFzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6ICdkcmFnJyxcclxuICAgICAgY29kZTogJ2RyYWcnLFxyXG4gICAgICB0eXBlOiBcInJvd3NcIlxyXG4gICAgfTtcclxuICAgIGFjdGlvbi5kYXRhcyA9IHRoaXMudGFibGVEYXRhcztcclxuICAgIGlmICh0aGlzLnRhYmxlRGF0YXMgJiYgdGhpcy50YWJsZURhdGFzLmxlbmd0aCA+IDApIHtcclxuICAgICAgYWN0aW9uLmZpcnN0RGF0YSA9IHRoaXMudGFibGVEYXRhc1swXTtcclxuICAgIH1cclxuICAgIGFjdGlvbi5udW1iZXJPZkNoZWNrZWQgPSAxO1xyXG4gICAgdGhpcy50YWJsZUFjdGlvbi5lbWl0KGFjdGlvbik7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8Zm9ybSBuei1mb3JtIFtmb3JtR3JvdXBdPVwiYXRyRm9ybVwiIGNsYXNzPVwiYW50LWFkdmFuY2VkLXNlYXJjaC1mb3JtXCJcclxuICAgICAgKm5nSWY9XCJxdWVyeU9wdHMuaGVhZGVycy5sZW5ndGggPjAgfHwgcXVlcnlPcHRzLmFjdGlvbnMubGVuZ3RoID4wXCI+XHJcbiAgPGRpdiBuei1yb3cgW256R3V0dGVyXT1cIjI0XCI+XHJcbiAgICA8ZGl2IG56LWNvbCBbaGlkZGVuXT1cIiFoZWFkZXIuaXNTaG93IHx8ICFpc0NvbGxhcHNlXCIgKm5nRm9yPVwibGV0IGhlYWRlciBvZiBxdWVyeU9wdHMuaGVhZGVyc1wiXHJcbiAgICAgICAgIFtuelNwYW5dPVwiaGVhZGVyLnNwYW5cIj5cclxuICAgICAgPGFwcC10YWJsZS1mb3JtLWl0ZW1cclxuICAgICAgICBbaGVhZGVyXT1cImhlYWRlclwiXHJcbiAgICAgICAgW25nTW9kZWxdPVwiaGVhZGVyLmRlZmF1bHRWYWxcIlxyXG4gICAgICAgIFtkaWN0TGlzdF09XCJkaWN0c1toZWFkZXIuZGljdENvZGVdXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImhlYWRlci5rZXlcIlxyXG4gICAgICAgIChoZWFkZXJBY3Rpb24pPVwiaGVhZGVyQWN0aW9uLmVtaXQoJGV2ZW50KVwiPjwvYXBwLXRhYmxlLWZvcm0taXRlbT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgbnotcm93IG56VHlwZT1cImZsZXhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYXJlYVwiIG56LWNvbCBbbnpTcGFuXT1cIjE2XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBxdWVyeU9wdHMuYWN0aW9uc1wiPlxyXG4gICAgICAgIDxhdHItbG9jYWwtdXBsb2FkICpuZ0lmPVwiYWN0aW9uLmdUeXBlID09ICd1cGxvYWQnXCIgW2NvZGVdPVwiYWN0aW9uLmNvZGVcIiBbdXJsXT1cImFjdGlvbi51cmxcIiBbbmFtZV09XCJhY3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpdGhvdXRSb2xlXT1cImFjdGlvbi53aXRob3V0Um9sZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCIgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPjwvYXRyLWxvY2FsLXVwbG9hZD5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFjdGlvbi5nVHlwZVwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gW256VHlwZV09XCIncHJpbWFyeSdcIiBuelNpemU9XCJzbWFsbFwiIChjbGljayk9XCJkb0FjdGlvbihhY3Rpb24uY29kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAqYXRyUm9sZT1cImFjdGlvbi53aXRob3V0Um9sZSA/IG51bGw6YWN0aW9uLmNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNFbmFibGUoYWN0aW9uLm9wZXJhdG9yKVwiPnt7YWN0aW9uLm5hbWV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBuei1jb2wgW256U3Bhbl09XCI4XCIgY2xhc3M9XCJzZWFyY2gtYXJlYVwiICpuZ0lmPVwicXVlcnlPcHRzLmhlYWRlcnMubGVuZ3RoID4wICYmICFxdWVyeU9wdHMuaXNIaWRlUXVlcnlcIj5cclxuICAgICAgPGJ1dHRvbiBuei1idXR0b24gbnpTaXplPVwic21hbGxcIiBbbnpUeXBlXT1cIidwcmltYXJ5J1wiIChjbGljayk9XCJxdWVyeSh0cnVlKVwiPuafpeivojwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG56LWJ1dHRvbiBuelNpemU9XCJzbWFsbFwiIChjbGljayk9XCJyZXNldEZvcm0oKVwiPumHjee9rjwvYnV0dG9uPlxyXG4gICAgICA8YSBjbGFzcz1cImNvbGxhcHNlXCIgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIiAqbmdJZj1cInF1ZXJ5T3B0cy5oZWFkZXJzLmxlbmd0aCA+IDAgXCI+XHJcbiAgICAgICB7e2lzQ29sbGFwc2UgPyAn5pS26LW3Jzon5bGV5byAJ319XHJcbiAgICAgICAgPGkgbnotaWNvbiBbbnpUeXBlXT1cImlzQ29sbGFwc2UgPyAndXAnIDogJ2Rvd24nXCI+PC9pPlxyXG4gICAgICA8L2E+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwidGl0bGVcIiBjbGFzcz1cInRpdGxlXCI+e3t0aXRsZX19PC9kaXY+XHJcbjwvZm9ybT5cclxuPGRpdiBjbGFzcz1cInNlYXJjaC1yZXN1bHQtbGlzdFwiICN0YWJsZUNvbnRlbnQ+XHJcbiAgPG56LXRhYmxlICpuZ0lmPVwiaXNBbGxMb2FkXCIgI2Jhc2ljVGFibGUgY2xhc3M9XCJtYWluLXRhYmxlXCJcclxuICAgICAgICAgICAgW256U2Nyb2xsXT1cInNjcm9sbFNpemVcIlxyXG4gICAgICAgICAgICBuelNpemU9XCJtaWRkbGVcIlxyXG4gICAgICAgICAgICBuekJvcmRlcmVkXHJcbiAgICAgICAgICAgIFtuelNob3dQYWdpbmF0aW9uXT1cInNob3dQYWdpbmF0aW9uXCJcclxuICAgICAgICAgICAgbnpTaG93U2l6ZUNoYW5nZXJcclxuICAgICAgICAgICAgW256RnJvbnRQYWdpbmF0aW9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW256TG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgW256VG90YWxdPVwidG90YWxcIlxyXG4gICAgICAgICAgICBbKG56UGFnZUluZGV4KV09XCJwYWdlSW5kZXhcIlxyXG4gICAgICAgICAgICBbKG56UGFnZVNpemUpXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgW256RGF0YV09XCJ0YWJsZURhdGFzXCJcclxuICAgICAgICAgICAgKG56UGFnZUluZGV4Q2hhbmdlKT1cInF1ZXJ5KClcIlxyXG4gICAgICAgICAgICAobnpQYWdlU2l6ZUNoYW5nZSk9XCJxdWVyeSh0cnVlKVwiXHJcbiAgICAgICAgICAgIFtuelNob3dUb3RhbF09XCJ0b3RhbFRlbXBsYXRlXCJcclxuICA+XHJcbiAgICA8dGhlYWQ+XHJcbiAgICA8dHIgKGNvbnRleHRtZW51KT1cImNvbnRleHRNZW51KCRldmVudCxtZW51KVwiIGNsYXNzPVwiaGVhZGVyLXRyXCI+XHJcblxyXG4gICAgICA8dGggKm5nSWY9XCJxdWVyeU9wdHMuY2hlY2tCb3g/LmlzU2hvd0NoZWNrYm94XCJcclxuICAgICAgICAgIFtuekxlZnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImxlZnQtemluZGV4LWhlYWRlclwiXHJcbiAgICAgICAgICBuelNob3dDaGVja2JveFxyXG4gICAgICAgICAgc3R5bGU9XCJ6LWluZGV4OiA5MCFpbXBvcnRhbnQ7XCJcclxuICAgICAgICAgIG56V2lkdGg9XCIzMHB4XCJcclxuICAgICAgICAgIG56QWxpZ249XCJjZW50ZXJcIlxyXG4gICAgICAgICAgWyhuekNoZWNrZWQpXT1cImlzQWxsRGlzcGxheURhdGFDaGVja2VkXCJcclxuICAgICAgICAgIFtuekluZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlXCJcclxuICAgICAgICAgIChuekNoZWNrZWRDaGFuZ2UpPVwiY2hlY2tBbGwoJGV2ZW50KVwiXHJcbiAgICAgID48L3RoPlxyXG4gICAgICA8dGggW256TGVmdF09XCJ0cnVlXCIgY2xhc3M9XCJsZWZ0LXppbmRleC1oZWFkZXJcIiAqbmdJZj1cInF1ZXJ5T3B0cy5pc0luZGV4XCIgbnpXaWR0aD1cIjMwcHhcIiBuekFsaWduPVwiY2VudGVyXCI+IzwvdGg+XHJcbiAgICAgIDx0aCBbbnpMZWZ0XT1cInRydWVcIiBjbGFzcz1cImxlZnQtemluZGV4LWhlYWRlclwiICpuZ0lmPVwicXVlcnlPcHRzLmNoZWNrQm94Py5pc1JhZGlvXCIgbnpXaWR0aD1cIjMwcHhcIlxyXG4gICAgICAgICAgbnpBbGlnbj1cImNlbnRlclwiPiNcclxuICAgICAgPC90aD5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVyeU9wdHMudGFibGVzOyBcIj5cclxuICAgICAgICA8dGggKm5nSWY9XCJpdGVtLmlzU2hvdyBcIlxyXG4gICAgICAgICAgICBbbnpTaG93U29ydF09aXRlbS5zb3J0YWJsZVxyXG4gICAgICAgICAgICBuei1yZXNpemFibGVcclxuICAgICAgICAgICAgbnpQcmV2aWV3XHJcbiAgICAgICAgICAgIG56Qm91bmRzPVwid2luZG93XCJcclxuICAgICAgICAgICAgWyhuelNvcnRPcmRlcildPVwic29ydE1hcFtpdGVtLnNvcnRLZXldXCJcclxuICAgICAgICAgICAgKG56U29ydE9yZGVyQ2hhbmdlKT1cInNvcnQoaXRlbS5zb3J0S2V5LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgW256V2lkdGhdPVwiaXRlbS53aWR0aFwiXHJcbiAgICAgICAgICAgIFtuek1heFdpZHRoXT1cIjI1NlwiXHJcbiAgICAgICAgICAgIFtuek1pbldpZHRoXT1cIjYwXCJcclxuICAgICAgICAgICAgW256UmlnaHRdPVwiaXRlbS5pc1JpZ2h0ID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgW256TGVmdF09XCJpdGVtLmlzTGVmdCA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbGVmdC16aW5kZXgtaGVhZGVyJzppdGVtLmlzTGVmdCA/IHRydWUgOiBmYWxzZX1cIlxyXG4gICAgICAgICAgICAobnpSZXNpemVFbmQpPVwib25SZXNpemUoJGV2ZW50LCBpdGVtLm5hbWUpXCI+XHJcbiAgICAgICAgICB7e2l0ZW0ubmFtZX19PCEtLSB7d2lkdGh9OiB7IHdpZHRoOiBudW1iZXIgfSwgY29sOiBzdHJpbmctLT5cclxuICAgICAgICAgIDxuei1yZXNpemUtaGFuZGxlIG56RGlyZWN0aW9uPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZS10cmlnZ2VyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L256LXJlc2l6ZS1oYW5kbGU+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3RyPlxyXG4gICAgPC90aGVhZD5cclxuXHJcblxyXG4gICAgPHRib2R5ICpuZ0lmPVwiIWFsbG93RHJhZ1wiPlxyXG4gICAgPHRyICpuZ0Zvcj1cImxldCBkYXRhIG9mIGJhc2ljVGFibGUuZGF0YTtpbmRleCBhcyBpXCIgY2xhc3M9XCJ0LXRyXCIgKGNsaWNrKT1cInNlbGVjdFJvdyhkYXRhLGkpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7J2NvbG9yJzppc1Nob3dDb2xvcihkYXRhKX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQnOiBpID09IGN1ckNoZWNrZWR9XCIgKGRibGNsaWNrKT1cImRiY2xpY2tEYXRhKGRhdGEsaSlcIj5cclxuICAgICAgPHRkIFtuekxlZnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImxlZnQtemluZGV4XCJcclxuICAgICAgICAgICpuZ0lmPVwicXVlcnlPcHRzLmNoZWNrQm94Py5pc1Nob3dDaGVja2JveFwiXHJcbiAgICAgICAgICBuelNob3dDaGVja2JveFxyXG4gICAgICAgICAgWyhuekNoZWNrZWQpXT1cIm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdXCJcclxuICAgICAgICAgIChuekNoZWNrZWRDaGFuZ2UpPVwicmVmcmVzaFN0YXR1cygpXCJcclxuICAgICAgPjwvdGQ+XHJcbiAgICAgIDx0ZCBbbnpMZWZ0XT1cInRydWVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsZWZ0LXppbmRleFwiXHJcbiAgICAgICAgICAqbmdJZj1cInF1ZXJ5T3B0cy5jaGVja0JveD8uaXNSYWRpb1wiIG56U2hvd0NoZWNrYm94IChuekNoZWNrZWRDaGFuZ2UpPVwic2VsZWN0Um93KGRhdGEsaSlcIlxyXG4gICAgICAgICAgWyhuekNoZWNrZWQpXT1cIm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdXCI+PC90ZD5cclxuICAgICAgPHRkIFtuekxlZnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAqbmdJZj1cInF1ZXJ5T3B0cy5pc0luZGV4XCIgbnpBbGlnbj1cImNlbnRlclwiIHN0eWxlPVwicGFkZGluZzoxMnB4IDA7XCIgbnpCcmVha1dvcmQ+e3tpICsgMX19PC90ZD5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlcnlPcHRzLnRhYmxlcztcIj5cclxuXHJcbiAgICAgICAgPHRkIFtuekxlZnRdPVwiaXRlbS5pc0xlZnQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2xlZnQtemluZGV4JzppdGVtLmlzTGVmdCA/IHRydWUgOiBmYWxzZX1cIlxyXG4gICAgICAgICAgICBbbnpSaWdodF09XCJpdGVtLmlzUmlnaHQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBuekJyZWFrV29yZFxyXG4gICAgICAgICAgICBbcm93U3Bhbl09XCJjaGVja1Jvd1NwYW4oaXRlbSxkYXRhKVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiY2hlY2tTaG93VGQoaXRlbSxpKSBcIj5cclxuICAgICAgICAgIDxhcHAtdGFibGUtdGQgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaV09XCJpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRvQWN0aW9uQnlSb3dBY3Rpb24pPVwiZG9BY3Rpb25CeVJvdzIoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9hcHAtdGFibGUtdGQ+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3RyPlxyXG4gICAgPC90Ym9keT5cclxuICAgIDx0Ym9keSAqbmdJZj1cImFsbG93RHJhZ1wiIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XHJcbiAgICA8dHIgY2RrRHJhZyAqbmdGb3I9XCJsZXQgZGF0YSBvZiBiYXNpY1RhYmxlLmRhdGE7aW5kZXggYXMgaVwiIGNsYXNzPVwidC10clwiIChjbGljayk9XCJzZWxlY3RSb3coZGF0YSxpKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IGkgPT0gY3VyQ2hlY2tlZH1cIj5cclxuICAgICAgPHRkIFtuekxlZnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImxlZnQtemluZGV4XCJcclxuICAgICAgICAgICpuZ0lmPVwicXVlcnlPcHRzLmNoZWNrQm94Py5pc1Nob3dDaGVja2JveFwiXHJcbiAgICAgICAgICBuelNob3dDaGVja2JveFxyXG4gICAgICAgICAgWyhuekNoZWNrZWQpXT1cIm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdXCJcclxuICAgICAgICAgIChuekNoZWNrZWRDaGFuZ2UpPVwicmVmcmVzaFN0YXR1cygpXCJcclxuICAgICAgPjwvdGQ+XHJcbiAgICAgIDwhLS1cclxuICAgICAgICAgICAgICAgIDx0ZCBbbnpMZWZ0XT1cIml0ZW0uaXNMZWZ0ID8gdHJ1ZSA6IGZhbHNlXCIgW25nQ2xhc3NdPVwieydsZWZ0LXppbmRleCc6aXRlbS5pc0xlZnQgPyB0cnVlIDogZmFsc2V9XCIgICBbbnpSaWdodF09XCJpdGVtLmlzUmlnaHQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlcnlPcHRzLmlzU2hvd0NoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICBuelNob3dDaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgIFsobnpDaGVja2VkKV09XCJtYXBPZkNoZWNrZWRJZFtkYXRhLmlkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG56Q2hlY2tlZENoYW5nZSk9XCJyZWZyZXNoU3RhdHVzKClcIlxyXG4gICAgICAgICAgICAgICAgPjwvdGQ+XHJcbiAgICAgIC0tPlxyXG4gICAgICA8dGQgW256TGVmdF09XCJ0cnVlXCJcclxuICAgICAgICAgIGNsYXNzPVwibGVmdC16aW5kZXhcIlxyXG4gICAgICAgICAgKm5nSWY9XCJxdWVyeU9wdHMuY2hlY2tCb3g/LmlzUmFkaW9cIiBuelNob3dDaGVja2JveCAobnpDaGVja2VkQ2hhbmdlKT1cInNlbGVjdFJvdyhkYXRhLGkpXCJcclxuICAgICAgICAgIFsobnpDaGVja2VkKV09XCJtYXBPZkNoZWNrZWRJZFtkYXRhLmlkXVwiPjwvdGQ+XHJcbiAgICAgIDx0ZCBbbnpMZWZ0XT1cInRydWVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsZWZ0LXppbmRleFwiXHJcbiAgICAgICAgICAqbmdJZj1cInF1ZXJ5T3B0cy5pc0luZGV4XCIgbnpBbGlnbj1cImNlbnRlclwiIHN0eWxlPVwicGFkZGluZzoxMnB4IDA7XCIgbnpCcmVha1dvcmQ+e3tpICsgMX19PC90ZD5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlcnlPcHRzLnRhYmxlcztcIj5cclxuXHJcbiAgICAgICAgPHRkIFtuekxlZnRdPVwiaXRlbS5pc0xlZnQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2xlZnQtemluZGV4JzppdGVtLmlzTGVmdCA/IHRydWUgOiBmYWxzZX1cIlxyXG4gICAgICAgICAgICBbbnpSaWdodF09XCJpdGVtLmlzUmlnaHQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBuekJyZWFrV29yZFxyXG4gICAgICAgICAgICBbcm93U3Bhbl09XCJjaGVja1Jvd1NwYW4oaXRlbSxkYXRhKVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiY2hlY2tTaG93VGQoaXRlbSxpKSBcIj5cclxuICAgICAgICAgIDxhcHAtdGFibGUtdGQgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaV09XCJpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRvQWN0aW9uQnlSb3dBY3Rpb24pPVwiZG9BY3Rpb25CeVJvdzIoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9hcHAtdGFibGUtdGQ+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3RyPlxyXG4gICAgPC90Ym9keT5cclxuXHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICN0b3RhbFRlbXBsYXRlIGxldC10b3RhbD7lhbEge3sgdG90YWwgfX0g5p2h6K6w5b2VPC9uZy10ZW1wbGF0ZT5cclxuICA8L256LXRhYmxlPlxyXG4gIDxuei1kcm9wZG93bi1tZW51ICNtZW51PVwibnpEcm9wZG93bk1lbnVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJlbC1jb2x1bm1uXCI+XHJcbiAgICAgIDxuei1jaGVja2JveC13cmFwcGVyIHN0eWxlPVwid2lkdGg6IDEwMCU7bWFyZ2luLXRvcDogMzBweDtcIiAobnpPbkNoYW5nZSk9XCJsb2coJGV2ZW50KVwiPlxyXG4gICAgICAgIDxkaXYgbnotcm93PlxyXG4gICAgICAgICAgPGRpdiBuei1jb2wgbnpTcGFuPVwiMjRcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVyeU9wdHMudGFibGVzXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBuei1jaGVja2JveCBuelZhbHVlPVwie3tpdGVtLmtleX19XCIgW25nTW9kZWxdPVwiaXRlbS5pc1Nob3dcIj57e2l0ZW0ubmFtZX19PC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L256LWNoZWNrYm94LXdyYXBwZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJlbC1jb2x1bm1uLWhlYWRlclwiPuivt+mAieaLqeWIl+ihqOaYvuekuuWGheWuuTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uei1kcm9wZG93bi1tZW51PlxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
|
|
709
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsS0FBSyxFQUVMLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFDVCxNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF5QixXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFjLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxvQkFBb0IsRUFBMEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEVBQUMsZ0JBQWdCLEVBQXdELE1BQU0sK0JBQStCLENBQUM7QUFDdEgsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPeEQsTUFBTSxPQUFPLGlCQUFpQjtJQW9DNUIsWUFBb0IsRUFBZSxFQUFVLFFBQWtCLEVBQTZCLE1BQWMsRUFBVSxFQUFxQjtRQUFySCxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUE2QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7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QUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakQsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZDO1FBQ0QsTUFBTSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7K0dBanNCVSxpQkFBaUIscUVBb0M2QyxTQUFTO21HQXBDdkUsaUJBQWlCLDhZQzVCOUIseTRSQWlNQTs0RkRyS2EsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLFdBQVc7OzBCQXdDNkMsTUFBTTsyQkFBQyxTQUFTOzRFQTVCekUsT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBaUJHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBRW9DLFlBQVk7c0JBQXRELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBMT0NBTEVfSUQsXHJcbiAgSW5qZWN0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybUdyb3VwLCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtmb3JtYXREYXRlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge0Nka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXl9IGZyb20gXCJAYW5ndWxhci9jZGsvZHJhZy1kcm9wXCI7XHJcbmltcG9ydCB7TnpDb250ZXh0TWVudVNlcnZpY2UsIE56RHJvcGRvd25NZW51Q29tcG9uZW50fSBmcm9tICduZy16b3Jyby1hbnRkL2Ryb3Bkb3duJztcclxuaW1wb3J0IHthdHJfc3RhdGljX2RhdGFzLCBBdHJRdWVyeUhlYWRlciwgQXRyUXVleXJPcHQsIGpzb24sIFRhYmxlLCBUYWJsZUFjdGlvbn0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvYmFzZS9hdHItY29tbW9uXCI7XHJcbmltcG9ydCB7RGljdFNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2RpY3QvZGljdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SHR0cFNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2h0dHAuc2VydmljZVwiO1xyXG5pbXBvcnQge1Rvb2xzVXRpbH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdXRpbHMvVG9vbHNVdGlsXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F0ci10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdHJUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgYXRyRm9ybTogRm9ybUdyb3VwIHwgYW55O1xyXG4gIGlzQ29sbGFwc2UgPSB0cnVlO1xyXG4gIGRpY3RzOiBhbnkgPSB7fTtcclxuICBwYWdlSW5kZXggPSAxO1xyXG5cclxuICBwYWdlU2l6ZSA9IDEwO1xyXG4gIHRvdGFsID0gMTtcclxuICBASW5wdXQoKSBsb2FkaW5nID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhbGxvd0RyYWcgPSBmYWxzZTsvL+WFgeiuuOaLluaLveaNouS9jVxyXG4gIHRhYmxlRGF0YXM6IGFueSA9IFtdO1xyXG4gIHNjcm9sbFNpemU6IGFueSA9IHt4OiBcIlwiLCB5OiBcIlwifVxyXG4gIC8v6KGo5qC8Y2hlY2tib3gg6YWN572uXHJcbiAgaXNBbGxEaXNwbGF5RGF0YUNoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIGlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gIG51bWJlck9mQ2hlY2tlZCA9IDA7XHJcbiAgbWFwT2ZDaGVja2VkSWQ6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XHJcbiAgY3VyQ2hlY2tlZDogbnVtYmVyID0gLTE7XHJcbiAgaW1hZ2VQcmVmaXggPSBhdHJfc3RhdGljX2RhdGFzLk9TU19VUkw7XHJcbiAgZGVmYXVsdFBhcmFtcyA9IHt9O1xyXG5cclxuICBpc0FsbExvYWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzb3J0TWFwOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgcm93U3Bhbk1hcDogYW55ID0ge307Ly9rZXk6e+W+t+enkeeJp+Wcujp7bnVtOjF9fVxyXG4gIGhlYWRlckRlZmF1bHRWYWw6IGFueSA9IHt9XHJcblxyXG4gIEBJbnB1dCgpIHF1ZXJ5T3B0czogQXRyUXVleXJPcHQgfCBhbnk7XHJcbiAgQElucHV0KCkgc2hvd1BhZ2luYXRpb24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBAT3V0cHV0KCkgdGFibGVBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlQWN0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSBxdWVyeUJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlQWN0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSBoZWFkZXJBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlQWN0aW9uPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCd0YWJsZUNvbnRlbnQnLCB7c3RhdGljOiB0cnVlfSkgdGFibGVDb250ZW50OiBFbGVtZW50UmVmIHwgYW55O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIGxvY2FsZTogc3RyaW5nLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgaXNTaG93Q29sb3IoZGF0YTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5xdWVyeU9wdHMuY29sb3IgJiYgdGhpcy5xdWVyeU9wdHMuY29sb3Iub3BlcmF0b3IgJiYgdGhpcy5pc1Nob3dCdG4oZGF0YSwgdGhpcy5xdWVyeU9wdHMuY29sb3Iub3BlcmF0b3IpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnF1ZXJ5T3B0cy5jb2xvci5jb2xvcjtcclxuICAgIH1cclxuICAgIHJldHVybiAnJ1xyXG4gIH1cclxuXHJcbiAgZGJjbGlja0RhdGEoZGF0YTogYW55LCByb3dObzogbnVtYmVyKSB7XHJcbiAgICBsZXQgYWN0aW9uOiBUYWJsZUFjdGlvbiA9IHtcclxuICAgICAgbmFtZTogJ2RiY2xpY2tEYXRhJyxcclxuICAgICAgY29kZTogJ2RiY2xpY2tEYXRhJyxcclxuICAgICAgdHlwZTogXCJyb3dcIlxyXG4gICAgfTtcclxuICAgIGFjdGlvbi5kYXRhID0gZGF0YTtcclxuICAgIGFjdGlvbi5maXJzdERhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy50YWJsZUFjdGlvbi5lbWl0KGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICBkb0FjdGlvbkJ5Um93MihlOiBhbnkpIHtcclxuICAgIGxldCB7ZGF0YSwgY29kZSwgZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4fSA9IGVcclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6IGNvZGUsXHJcbiAgICAgIGNvZGU6IGNvZGUsXHJcbiAgICAgIHR5cGU6IFwicm93XCJcclxuICAgIH07XHJcbiAgICBhY3Rpb24uZGF0YSA9IGRhdGE7XHJcbiAgICBhY3Rpb24uZmlyc3REYXRhID0gZGF0YTtcclxuICAgIGFjdGlvbi5udW1iZXJPZkNoZWNrZWQgPSBpbmRleDtcclxuICAgIHRoaXMudGFibGVBY3Rpb24uZW1pdChhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgaHR0cFNlcnZpY2UoKTogSHR0cFNlcnZpY2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KEh0dHBTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IG56Q29udGV4dE1lbnVTZXJ2aWNlKCk6IE56Q29udGV4dE1lbnVTZXJ2aWNlIHtcclxuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChOekNvbnRleHRNZW51U2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBzZXRUYWJsZUxvYWRkaW5nKGxvYWRkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBsb2FkZGluZztcclxuICB9XHJcblxyXG4gIG9uUmVzaXplKHdpZHRoOiBhbnksIGNvbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnF1ZXJ5T3B0cy50YWJsZXMgPSB0aGlzLnF1ZXJ5T3B0cy50YWJsZXMubWFwKChlOiBhbnkpID0+IChlLm5hbWUgPT09IGNvbCA/IHsuLi5lLCB3aWR0aDogYCR7d2lkdGh9cHhgfSA6IGUpKTtcclxuICAgIGxldCB4ID0gMDtcclxuICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5xdWVyeU9wdHMudGFibGVzKSB7XHJcblxyXG4gICAgICBpZiAoaXRlbS5pc1Nob3cgJiYgaXRlbS53aWR0aCkge1xyXG4gICAgICAgIHggKz0gVG9vbHNVdGlsLnBpeGVsVG9OdW0oaXRlbS53aWR0aCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh4ID4gMjIpIHtcclxuICAgICAgeCA9IHggLSAyMjtcclxuICAgICAgdGhpcy5zY3JvbGxTaXplLnggPSB4ICsgXCJweFwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNFbmFibGUob3BlcmF0b3I6IHN0cmluZykge1xyXG4gICAgbGV0IGlzRW5hYmxlID0gdHJ1ZTtcclxuICAgIGlmICghb3BlcmF0b3IgfHwgb3BlcmF0b3IgPT0gdW5kZWZpbmVkIHx8IG9wZXJhdG9yID09IFwiXCIpXHJcbiAgICAgIGlzRW5hYmxlID0gZmFsc2U7XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IG9wID0gb3BlcmF0b3Iuc3BsaXQoXCJ8XCIpO1xyXG4gICAgICBpZiAob3AubGVuZ3RoID4gMikge1xyXG4gICAgICAgIGxldCBrZXkgPSBvcFswXTtcclxuICAgICAgICBpZiAoIWtleSkge1xyXG4gICAgICAgICAgaXNFbmFibGUgPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaXNFbmFibGUgPSAhdGhpcy5jb21wYXJlKHRoaXMubnVtYmVyT2ZDaGVja2VkLCBvcFsxXSwgb3BbMl0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2VcclxuICAgICAgICBpc0VuYWJsZSA9IGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGlzRW5hYmxlXHJcbiAgfVxyXG5cclxuICBpc1Nob3dCdG4oZGF0YTogYW55LCBvcGVyYXRvcjogc3RyaW5nLCBhY3Rpb24/OiBUYWJsZUFjdGlvbik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzU2hvdyA9IGZhbHNlO1xyXG4gICAgaWYgKCFvcGVyYXRvciB8fCBvcGVyYXRvciA9PSBudWxsIHx8IG9wZXJhdG9yID09IFwiXCIpIHtcclxuICAgICAgaXNTaG93ID0gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAob3BlcmF0b3IuaW5kZXhPZignJiYnKSA+IDApIHtcclxuICAgICAgLy8gYXxlcXxiICYmY3xlcXxkXHJcbiAgICAgIGNvbnN0IG9wcyA9IG9wZXJhdG9yLnNwbGl0KCcmJicpO1xyXG4gICAgICBpZiAob3BzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpc1Nob3cgPSB0cnVlXHJcbiAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tJc1Nob3dCYXNlKG9wc1tpXS5zcGxpdCgnfCcpLCBkYXRhKSkge1xyXG4gICAgICAgICAgICBpc1Nob3cgPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKG9wZXJhdG9yLmluZGV4T2YoJ3x8JykgPiAwKSB7XHJcbiAgICAgIC8vIGF8ZXF8Ynx8Y3xlcXxkXHJcbiAgICAgIGNvbnN0IG9wcyA9IG9wZXJhdG9yLnNwbGl0KCcmJicpO1xyXG4gICAgICBpZiAob3BzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaXNTaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAodGhpcy5jaGVja0lzU2hvd0Jhc2Uob3BzW2ldLnNwbGl0KCd8JyksIGRhdGEpKSB7XHJcbiAgICAgICAgICAgIGlzU2hvdyA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IG9wID0gb3BlcmF0b3Iuc3BsaXQoXCJ8XCIpO1xyXG4gICAgICBpc1Nob3cgPSB0aGlzLmNoZWNrSXNTaG93QmFzZShvcCwgZGF0YSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNTaG93O1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJc1Nob3dCYXNlKG9wOiBhbnksIGRhdGE6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzU2hvdyA9IGZhbHNlO1xyXG4gICAgaWYgKG9wLmxlbmd0aCA+IDEpIHtcclxuICAgICAgbGV0IHZhbHVlID0gZGF0YVtvcFswXV07XHJcbiAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICBpc1Nob3cgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpc1Nob3cgPSB0aGlzLmNvbXBhcmUodmFsdWUsIG9wWzFdLCBvcFsyXSlcclxuICAgICAgfVxyXG4gICAgfSBlbHNlXHJcbiAgICAgIGlzU2hvdyA9IGZhbHNlXHJcblxyXG4gICAgcmV0dXJuIGlzU2hvdztcclxuICB9XHJcblxyXG4gIGNvbXBhcmUodmFsdWU6IGFueSwgb3BlcmF0b3I6IGFueSwgdGFyZ2V0OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1JpZ2h0ID0gZmFsc2U7XHJcbiAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XHJcbiAgICAgIGNhc2UgJ2VxJyA6XHJcbiAgICAgICAgaWYgKHZhbHVlID09IHRhcmdldCkge1xyXG4gICAgICAgICAgaXNSaWdodCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdnaCcgOlxyXG4gICAgICAgIGlmICh2YWx1ZSA+PSB0YXJnZXQpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbm90RW1wdHknOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZW1wdHknOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICBpc1JpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQgOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBpc1JpZ2h0O1xyXG4gIH1cclxuXHJcbiAgcHVzaFRhYmxlRGF0YXModGFibGVEYXRhczogYW55KSB7XHJcbiAgICB0aGlzLnRhYmxlRGF0YXMgPSB0aGlzLnRhYmxlRGF0YXMuY29uY2F0KHRhYmxlRGF0YXMpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRGF0YXMoa2V5OiBhbnksIHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMudGFibGVEYXRhcy5mb3JFYWNoKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGl0ZW1ba2V5XSA9PT0gdmFsdWUpIHtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGRvQWN0aW9uKGNvZGU6IGFueSkge1xyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6IGNvZGUsXHJcbiAgICAgIGNvZGU6IGNvZGUsXHJcbiAgICAgIHR5cGU6IFwicm93c1wiXHJcbiAgICB9O1xyXG4gICAgbGV0IHNlbGVjdERhdGFzOiBhbnkgPSBbXTtcclxuICAgIGlmICh0aGlzLnRhYmxlRGF0YXMgJiYgdGhpcy50YWJsZURhdGFzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50YWJsZURhdGFzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm1hcE9mQ2hlY2tlZElkW2l0ZW0uaWRdKVxyXG4gICAgICAgICAgc2VsZWN0RGF0YXMucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBhY3Rpb24uZGF0YXMgPSBzZWxlY3REYXRhcztcclxuICAgIGlmIChzZWxlY3REYXRhcyAmJiBzZWxlY3REYXRhcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGFjdGlvbi5maXJzdERhdGEgPSBzZWxlY3REYXRhc1swXTtcclxuICAgIH1cclxuICAgIGFjdGlvbi5udW1iZXJPZkNoZWNrZWQgPSBzZWxlY3REYXRhcy5sZW5ndGg7XHJcbiAgICB0aGlzLnRhYmxlQWN0aW9uLmVtaXQoYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGRvQWN0aW9uQnlSb3coZGF0YTogYW55LCBjb2RlOiBhbnksIGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikge1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxyXG4gICAgfVxyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6IGNvZGUsXHJcbiAgICAgIGNvZGU6IGNvZGUsXHJcbiAgICAgIHR5cGU6IFwicm93XCJcclxuICAgIH07XHJcbiAgICBhY3Rpb24uZGF0YSA9IGRhdGE7XHJcbiAgICBhY3Rpb24uZmlyc3REYXRhID0gZGF0YTtcclxuICAgIGFjdGlvbi5udW1iZXJPZkNoZWNrZWQgPSAxO1xyXG4gICAgdGhpcy50YWJsZUFjdGlvbi5lbWl0KGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxDaGVja0luZm8oKTogYW55W10ge1xyXG4gICAgbGV0IGlkczogYW55ID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLm1hcE9mQ2hlY2tlZElkKSkge1xyXG4gICAgICBpZiAodGhpcy5tYXBPZkNoZWNrZWRJZC5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIHRoaXMubWFwT2ZDaGVja2VkSWRba2V5XSkge1xyXG4gICAgICAgIGlkcy5wdXNoKGtleSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlkcztcclxuICB9XHJcblxyXG4gIGdldEFsbENoZWNrRGF0YXMoKTogYW55W10ge1xyXG4gICAgbGV0IHNlbGVjdERhdGFzOiBhbnkgPSBbXVxyXG4gICAgdGhpcy50YWJsZURhdGFzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5tYXBPZkNoZWNrZWRJZFtpdGVtLmlkXSlcclxuICAgICAgICBzZWxlY3REYXRhcy5wdXNoKGl0ZW0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc2VsZWN0RGF0YXM7XHJcbiAgfVxyXG5cclxuICBjaGVja0FsbCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy50YWJsZURhdGFzLmZvckVhY2goKGl0ZW06IGFueSkgPT4gKHRoaXMubWFwT2ZDaGVja2VkSWRbaXRlbS5pZF0gPSB2YWx1ZSkpO1xyXG4gICAgdGhpcy5yZWZyZXNoU3RhdHVzKCk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoU3RhdHVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0FsbERpc3BsYXlEYXRhQ2hlY2tlZCA9IHRoaXMudGFibGVEYXRhc1xyXG4gICAgICAuZXZlcnkoKGl0ZW06IGFueSkgPT4gdGhpcy5tYXBPZkNoZWNrZWRJZFtpdGVtLmlkXSk7XHJcbiAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9XHJcbiAgICAgIHRoaXMudGFibGVEYXRhcy5zb21lKChpdGVtOiBhbnkpID0+IHRoaXMubWFwT2ZDaGVja2VkSWRbaXRlbS5pZF0pICYmXHJcbiAgICAgICF0aGlzLmlzQWxsRGlzcGxheURhdGFDaGVja2VkO1xyXG4gICAgdGhpcy5udW1iZXJPZkNoZWNrZWQgPSB0aGlzLnRhYmxlRGF0YXMuZmlsdGVyKChpdGVtOiBhbnkpID0+IHRoaXMubWFwT2ZDaGVja2VkSWRbaXRlbS5pZF0pLmxlbmd0aDtcclxuICAgIHRoaXMudGFibGVBY3Rpb24uZW1pdCh7XHJcbiAgICAgIGNvZGU6ICdyZWZyZXNoU3RhdHVzJywgbmFtZTogJ3NlbGVjdCcsXHJcbiAgICAgIHR5cGU6IFwicm93XCIsIGRhdGE6IHRoaXMuZ2V0QWxsQ2hlY2tEYXRhcygpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0Um93KGRhdGE6IGFueSwgcm93Tm86IG51bWJlcikge1xyXG4gICAgLy8gdGhpcy50YWJsZURhdGFzLmZvckVhY2goaXRlbSA9PiAodGhpcy5tYXBPZkNoZWNrZWRJZFtkYXRhLmlkXSA9IHZhbHVlKSk7XHJcbiAgICB0aGlzLmN1ckNoZWNrZWQgPSByb3dObztcclxuICAgIGlmICghdGhpcy5xdWVyeU9wdHMuY2hlY2tCb3g/LmlzRm9yYmlkKSB7XHJcbiAgICAgIGlmICh0aGlzLnF1ZXJ5T3B0cy5jaGVja0JveD8uaXNTaG93Q2hlY2tib3gpIHtcclxuICAgICAgICB0aGlzLm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdID0gIXRoaXMubWFwT2ZDaGVja2VkSWRbZGF0YS5pZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tYXBPZkNoZWNrZWRJZCA9IHt9O1xyXG4gICAgICAgIHRoaXMubWFwT2ZDaGVja2VkSWRbZGF0YS5pZF0gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgYWN0aW9uOiBUYWJsZUFjdGlvbiA9IHtcclxuICAgICAgbmFtZTogJ3NlbGVjdCcsXHJcbiAgICAgIGNvZGU6ICdzZWxlY3QnLFxyXG4gICAgICB0eXBlOiBcInJvd1wiXHJcbiAgICB9O1xyXG4gICAgYWN0aW9uLmRhdGEgPSBkYXRhO1xyXG4gICAgYWN0aW9uLmZpcnN0RGF0YSA9IGRhdGE7XHJcbiAgICBhY3Rpb24ubnVtYmVyT2ZDaGVja2VkID0gMTtcclxuICAgIHRoaXMudGFibGVBY3Rpb24uZW1pdChhY3Rpb24pO1xyXG4gICAgdGhpcy5yZWZyZXNoU3RhdHVzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYXRyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe30pO1xyXG4gICAgbGV0IHggPSB0aGlzLnRhYmxlQ29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC0gMjJcclxuICAgIGxldCB5ID0gdGhpcy50YWJsZUNvbnRlbnQubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLSAyMDBcclxuICAgIHRoaXMuc2Nyb2xsU2l6ZS54ID0gKHggPiAwID8geCA6IDEwMCkgKyBcInB4XCI7XHJcbiAgICB0aGlzLnNjcm9sbFNpemUueSA9ICh5ID4gMCA/IHkgOiAxMDApICsgXCJweFwiO1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5zY3JvbGxTaXplKVxyXG4gICAgdGhpcy5pbml0SGVhZGVyKCk7XHJcbiAgICBpZiAodGhpcy5xdWVyeU9wdHMgJiYgdGhpcy5xdWVyeU9wdHMudGFibGVzKSB7XHJcbiAgICAgIGZvciAobGV0IHRhYmxlIG9mIHRoaXMucXVlcnlPcHRzLnRhYmxlcykge1xyXG4gICAgICAgIGlmICh0YWJsZS5zb3J0S2V5KSB7XHJcbiAgICAgICAgICB0YWJsZS5zb3J0YWJsZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNvcnRNYXBbdGFibGUuc29ydEtleV0gPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgdGFibGUuc29ydGFibGUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucXVlcnlPcHRzICYmIHRoaXMucXVlcnlPcHRzLmRlZmF1bHRQYXJhbXMpIHtcclxuICAgICAgdGhpcy5kZWZhdWx0UGFyYW1zID0gdGhpcy5xdWVyeU9wdHMuZGVmYXVsdFBhcmFtc1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnF1ZXJ5T3B0cy5pc0F1dG9RdWVyeSkge1xyXG4gICAgICB0aGlzLnF1ZXJ5KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgLy8gdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0SGVhZGVyKCkge1xyXG4gICAgdGhpcy5oZWFkZXJEZWZhdWx0VmFsID0ge307XHJcbiAgICBpZiAodGhpcy5xdWVyeU9wdHMgJiYgdGhpcy5xdWVyeU9wdHMuaGVhZGVycyAmJiB0aGlzLnF1ZXJ5T3B0cy5oZWFkZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5xdWVyeU9wdHMuaGVhZGVycy5mb3JFYWNoKChpdGVtOiBhbnksIGk6IGFueSkgPT4ge1xyXG4gICAgICAgIGl0ZW0uc3BhbiA9IGl0ZW0uc3BhbiB8fCA4O1xyXG4gICAgICAgIGlmICghVG9vbHNVdGlsLmlzTnVsbChpdGVtLmRlZmF1bHRWYWwpKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckRlZmF1bHRWYWxbaXRlbS5rZXldID0gaXRlbS5kZWZhdWx0VmFsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLmlzU2hvdyAhPSBmYWxzZSkge1xyXG4gICAgICAgICAgaXRlbS5pc1Nob3cgPSBpIDwgdGhpcy5xdWVyeU9wdHMuc2hvd051bVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmF0ckZvcm0uYWRkQ29udHJvbChpdGVtLmtleSwgbmV3IEZvcm1Db250cm9sKCkpO1xyXG4gICAgICAgIGxldCB0eXBlID0gaXRlbS50eXBlO1xyXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBcInNlbGVjdFwiOlxyXG4gICAgICAgICAgICB0aGlzLmdldERpY3RWYWx1ZShpdGVtLmRpY3RDb2RlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwidHJlZVNlbGVjdFwiOlxyXG4gICAgICAgICAgY2FzZSBcImNhc2NhZGVyXCI6XHJcbiAgICAgICAgICBjYXNlIFwic2VsZWN0Q3VzXCI6XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnNlbGVjdFVybCAmJiBpdGVtLnNlbGVjdFVybC51cmwpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldERpY0xpc3QoaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERpY0xpc3QoaXRlbTogYW55KSB7XHJcbiAgICBpZiAoIWl0ZW0uc2VsZWN0VXJsIHx8ICFpdGVtLnNlbGVjdFVybC51cmwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGtleXMgPSBpdGVtLnNlbGVjdFVybC5jb252ZXJ0LnNwbGl0KCcsJyk7XHJcbiAgICB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QoaXRlbS5zZWxlY3RVcmwudXJsLCB7fSwgVG9vbHNVdGlsLmdldEh0dHBPcHRpb25zKCkpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAoaXRlbS50eXBlID09ICd0cmVlU2VsZWN0Jykge1xyXG4gICAgICAgIGl0ZW0udHJlZUxpc3QgPSByZXMuZGF0YS5maWx0ZXIoKGNoaWxkOiBhbnkpID0+IHtcclxuICAgICAgICAgIGtleXMuZm9yRWFjaCgodjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCB2cyA9IHYuc3BsaXQoXCJ8XCIpO1xyXG4gICAgICAgICAgICBjaGlsZFt2c1swXV0gPSBjaGlsZFt2c1sxXV07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8vIGNoaWxkLmtleSA9IGNoaWxkLmlkO1xyXG4gICAgICAgICAgLy8gY2hpbGQudGl0bGUgPSBjaGlsZC5yZWFsTmFtZTtcclxuICAgICAgICAgIHJldHVybiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09ICdzZWxlY3RDdXMnKSB7XHJcbiAgICAgICAgaXRlbS5kaWN0TGlzdCA9IHJlcy5kYXRhLmZpbHRlcigoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAga2V5cy5mb3JFYWNoKCh2OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgbGV0IHZzID0gdi5zcGxpdChcInxcIik7XHJcbiAgICAgICAgICAgIGNoaWxkW3ZzWzBdXSA9IGNoaWxkW3ZzWzFdXTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgLy8gY2hpbGQudmFsdWUgPSBjaGlsZC5pZDtcclxuICAgICAgICAgIC8vIGNoaWxkLmxhYmVsID0gY2hpbGQubmFtZTtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNjcm9sbFNpemUueSA9IHRoaXMudGFibGVDb250ZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gMTAwICsgXCJweFwiO1xyXG4gICAgICBsZXQgd2lkdGggPSAwO1xyXG4gICAgICBpZiAodGhpcy5xdWVyeU9wdHMgJiYgdGhpcy5xdWVyeU9wdHMudGFibGVzKSB7XHJcbiAgICAgICAgZm9yIChsZXQgdGFibGUgb2YgdGhpcy5xdWVyeU9wdHMudGFibGVzKSB7XHJcbiAgICAgICAgICBpZiAodGFibGUuaXNTaG93ICYmIHRhYmxlLndpZHRoKSB7XHJcblxyXG4gICAgICAgICAgICB3aWR0aCArPSBUb29sc1V0aWwucGl4ZWxUb051bSh0YWJsZS53aWR0aCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGxldCB3ID0gdGhpcy50YWJsZUNvbnRlbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAtIDIyO1xyXG4gICAgICBpZiAod2lkdGggPiB3KVxyXG4gICAgICAgIHRoaXMuc2Nyb2xsU2l6ZS54ID0gd2lkdGggKyBcInB4XCI7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLnNjcm9sbFNpemUueCA9IHRoaXMudGFibGVDb250ZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSAyMiArIFwicHhcIjtcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuc2Nyb2xsU2l6ZSk7XHJcbiAgICAgIHRoaXMuaXNBbGxMb2FkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCA1MDApXHJcblxyXG5cclxuICB9XHJcblxyXG4gIHNvcnQoc29ydE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5zb3J0TWFwKSB7XHJcbiAgICAgIHRoaXMuc29ydE1hcFtrZXldID0ga2V5ID09PSBzb3J0TmFtZSA/IHZhbHVlIDogbnVsbDtcclxuICAgIH1cclxuICAgIC8vIHRoaXMuc2VhcmNoKHRoaXMubGlzdE9mU2VhcmNoTmFtZSwgdGhpcy5saXN0T2ZTZWFyY2hBZGRyZXNzKTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuc29ydE1hcClcclxuICAgIHRoaXMucXVlcnkodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBkaWN0U2VydmljZSgpOiBEaWN0U2VydmljZSB7XHJcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoRGljdFNlcnZpY2UpXHJcbiAgfVxyXG5cclxuICBnZXREaWN0VmFsdWUoY29kZTogc3RyaW5nKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcInBwcHBcIik7XHJcbiAgICB0aGlzLmRpY3RTZXJ2aWNlLmdldERpY3RCeWNvZGUoY29kZSkuc3Vic2NyaWJlKFxyXG4gICAgICByZXN1bHQgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0ICE9IG51bGwpXHJcbiAgICAgICAgICB0aGlzLmRpY3RzW2NvZGVdID0gcmVzdWx0LmRpY3RzO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZGljdHMpXHJcblxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5kaWN0c1tjb2RlXSA9IFtdO1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICB0b2dnbGVDb2xsYXBzZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNDb2xsYXBzZSA9ICF0aGlzLmlzQ29sbGFwc2U7XHJcbiAgICAvLyB0aGlzLnF1ZXJ5T3B0cy5oZWFkZXJzLmZvckVhY2goKGM6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgLy8gICBjLmlzU2hvdyA9IHRoaXMuaXNDb2xsYXBzZSA/IGluZGV4IDwgdGhpcy5xdWVyeU9wdHMuc2hvd051bSA6IHRydWU7XHJcbiAgICAvLyB9KTtcclxuICB9XHJcblxyXG4gIHJlc2V0Rm9ybSgpOiB2b2lkIHtcclxuICAgIHRoaXMuYXRyRm9ybS5yZXNldCgpO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5oZWFkZXJEZWZhdWx0VmFsKSB7XHJcbiAgICAgIHRoaXMuYXRyRm9ybS5nZXQoa2V5KT8uc2V0VmFsdWUodGhpcy5oZWFkZXJEZWZhdWx0VmFsW2tleV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2hhbmdlKHZhbHVlOiBhbnksIGl0ZW06IGFueSkge1xyXG4gICAgY29uc29sZS5sb2codmFsdWUpO1xyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6IGl0ZW0ubGFiZWwsXHJcbiAgICAgIGNvZGU6IGl0ZW0ua2V5LFxyXG4gICAgICBkYXRhOiBpdGVtLFxyXG4gICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5oZWFkZXJBY3Rpb24uZW1pdChhY3Rpb24pXHJcblxyXG4gIH1cclxuXHJcbiAgY2xpY2tJY29uKHZhbHVlOiBhbnksIGl0ZW06IEF0clF1ZXJ5SGVhZGVyLCAkZXZlbnQ6IGFueSkge1xyXG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgY29uc29sZS5sb2codmFsdWUsIGl0ZW0pO1xyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgY29kZTogaXRlbS5pY29uPy5jb2RlID8gaXRlbS5pY29uPy5jb2RlIDogXCJcIixcclxuICAgICAgZGF0YTogaXRlbSxcclxuICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuaGVhZGVyQWN0aW9uLmVtaXQoYWN0aW9uKVxyXG4gIH1cclxuXHJcbiAgZ2V0UXVlcnlQYXJhbXMocmVzZXQ6IGJvb2xlYW4pOiBqc29uIHtcclxuICAgIGlmIChyZXNldCkge1xyXG4gICAgICB0aGlzLnBhZ2VJbmRleCA9IDE7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnBhZ2VJbmRleCk7XHJcbiAgICBsZXQgcGFyYW1zOiBhbnkgPSB7XHJcbiAgICAgIHBhZ2U6IHRoaXMucGFnZUluZGV4LFxyXG4gICAgICBsaW1pdDogdGhpcy5wYWdlU2l6ZSxcclxuICAgICAgc29ydDogdGhpcy5nZXRTb3J0SW5mbygpXHJcbiAgICB9O1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5hdHJGb3JtLnZhbHVlKSB7XHJcbiAgICAgIGlmICh0aGlzLmF0ckZvcm0udmFsdWVba2V5XSAmJiB0aGlzLmF0ckZvcm0udmFsdWVba2V5XSAhPSBudWxsICYmIHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldICE9IFwiXCIpIHtcclxuICAgICAgICBpZiAodGhpcy5nZXRIZWRlclR5cGUoa2V5KSA9PSBcImRhdGVSYW5nZVwiKSB7XHJcbiAgICAgICAgICBsZXQgYmVnaW4gPSBrZXkgKyBcIkJlZ2luXCI7XHJcbiAgICAgICAgICBsZXQgZW5kID0ga2V5ICsgXCJFbmRcIjtcclxuICAgICAgICAgIGxldCBmb3JtYXRlID0gJ3l5eXktTU0tZGQgMDA6MDA6MDAnXHJcbiAgICAgICAgICBsZXQgbnpTaG93VGltZSA9IHRoaXMuZ2V0SGVkZXJUeXBlKGtleSwgJ256U2hvd1RpbWUnKVxyXG4gICAgICAgICAgaWYgKG56U2hvd1RpbWUpIHtcclxuICAgICAgICAgICAgZm9ybWF0ZSA9ICd5eXl5LU1NLWRkIEhIOm1tOnNzJ1xyXG4gICAgICAgICAgICBpZiAobnpTaG93VGltZS5uekZvcm1hdCkge1xyXG4gICAgICAgICAgICAgIGZvcm1hdGUgPSAneXl5eS1NTS1kZCAnICsgbnpTaG93VGltZS5uekZvcm1hdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcGFyYW1zW2JlZ2luXSA9IGZvcm1hdERhdGUoKHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldWzBdIGFzIERhdGUpLCBmb3JtYXRlLCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgICBwYXJhbXNbZW5kXSA9IGZvcm1hdERhdGUoKHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldWzFdIGFzIERhdGUpLCBmb3JtYXRlLCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldEhlZGVyVHlwZShrZXkpID09IFwiZGF5UmFuZ2VcIikge1xyXG4gICAgICAgICAgbGV0IGJlZ2luID0ga2V5ICsgXCJCZWdpblwiO1xyXG4gICAgICAgICAgbGV0IGVuZCA9IGtleSArIFwiRW5kXCI7XHJcbiAgICAgICAgICBsZXQgZm9ybWF0ZSA9ICd5eXl5LU1NLWRkIDAwOjAwOjAwJ1xyXG4gICAgICAgICAgcGFyYW1zW2JlZ2luXSA9IGZvcm1hdERhdGUoKHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldWzBdIGFzIERhdGUpLCBmb3JtYXRlLCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgICBwYXJhbXNbZW5kXSA9IGZvcm1hdERhdGUoKHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldWzFdIGFzIERhdGUpLCBmb3JtYXRlLCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgfSAgZWxzZSBpZiAodGhpcy5nZXRIZWRlclR5cGUoa2V5KSA9PSBcInNkYXRlXCIpIHtcclxuICAgICAgICAgIHBhcmFtc1trZXldID0gZm9ybWF0RGF0ZSgodGhpcy5hdHJGb3JtLnZhbHVlW2tleV0gYXMgRGF0ZSksICd5eXl5LU1NLWRkIDAwOjAwOjAwJywgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXRIZWRlclR5cGUoa2V5KSA9PSBcInRyZWVTZWxlY3RcIikge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5hdHJGb3JtLnZhbHVlW2tleV07XHJcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHBhcmFtc1trZXldID0gdGhpcy5hdHJGb3JtLnZhbHVlW2tleV07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBwYXJhbXNba2V5XSA9IHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldLmpvaW4oKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0SGVkZXJUeXBlKGtleSkgPT0gXCJjYXNjYWRlclwiKSB7XHJcbiAgICAgICAgICBwYXJhbXNba2V5XSA9IHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldLmpvaW4oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcGFyYW1zW2tleV0gPSB0aGlzLmF0ckZvcm0udmFsdWVba2V5XTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcGFyYW1zID0gT2JqZWN0LmFzc2lnbihwYXJhbXMsIHRoaXMuZGVmYXVsdFBhcmFtcyk7XHJcbiAgICBjb25zb2xlLmxvZyhwYXJhbXMpXHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG5cclxuICB9XHJcblxyXG4gIGdldEhlZGVyVHlwZShjdXNLZXk6IHN0cmluZywgdHlwZUtleT86IHN0cmluZykge1xyXG4gICAgbGV0IHR5cGUgPSBudWxsO1xyXG4gICAgZm9yIChsZXQgaGVhZGVyIG9mIHRoaXMucXVlcnlPcHRzLmhlYWRlcnMpIHtcclxuICAgICAgaWYgKGN1c0tleSA9PSBoZWFkZXIua2V5KSB7XHJcbiAgICAgICAgdHlwZSA9IGhlYWRlclt0eXBlS2V5IHx8ICd0eXBlJ107XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0eXBlO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdFBhcmFtcyhwYXJhbXM6IGFueSwgcmVzZXQ6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICB0aGlzLmRlZmF1bHRQYXJhbXMgPSBwYXJhbXM7XHJcbiAgICB0aGlzLnF1ZXJ5KHJlc2V0KTtcclxuICB9XHJcblxyXG4gIGdldFNvcnRJbmZvKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgb3JkZXJieTogYW55ID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLnNvcnRNYXApIHtcclxuICAgICAgaWYgKHRoaXMuc29ydE1hcFtrZXldID09ICdhc2NlbmQnKSB7XHJcbiAgICAgICAgb3JkZXJieS5wdXNoKGtleSArIFwifFwiICsgXCJhc2NcIilcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNvcnRNYXBba2V5XSA9PSAnZGVzY2VuZCcpIHtcclxuICAgICAgICBvcmRlcmJ5LnB1c2goa2V5ICsgXCJ8XCIgKyBcImRlc2NcIilcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IG9yZGVyID0gXCJcIjtcclxuICAgIGlmIChvcmRlcmJ5Lmxlbmd0aCA8IDEgJiYgdGhpcy5xdWVyeU9wdHMuc29ydCkge1xyXG4gICAgICBvcmRlciA9IHRoaXMucXVlcnlPcHRzLnNvcnRcclxuICAgIH0gZWxzZVxyXG4gICAgICBvcmRlciA9IG9yZGVyYnkuam9pbihcIixcIik7XHJcbiAgICByZXR1cm4gb3JkZXI7XHJcbiAgfVxyXG5cclxuICBxdWVyeShyZXNldDogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5nZXRRdWVyeVBhcmFtcyhyZXNldCk7XHJcbiAgICBpZiAodGhpcy5xdWVyeU9wdHMudXJsKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QodGhpcy5xdWVyeU9wdHMudXJsLCBwYXJhbXMsIFRvb2xzVXRpbC5nZXRIdHRwT3B0aW9ucygpKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgcmVzdWx0ID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGxldCBhY3Rpb246IGFueSA9IHt9O1xyXG4gICAgICAgICAgICBhY3Rpb25bXCJyZXN1bHRcIl0gPSByZXN1bHQ7XHJcbiAgICAgICAgICAgIGFjdGlvbltcInBhcmFtc1wiXSA9IHBhcmFtcztcclxuICAgICAgICAgICAgdGhpcy5xdWVyeUJhY2suZW1pdChhY3Rpb24pO1xyXG4gICAgICAgICAgICB0aGlzLnRvdGFsID0gcmVzdWx0Py5wYWdlPy50b3RhbFJlc3VsdDtcclxuICAgICAgICAgICAgdGhpcy50YWJsZURhdGFzID0gcmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Um93U3BhbigpO1xyXG4gICAgICAgICAgICB0aGlzLm1hcE9mQ2hlY2tlZElkID0ge307XHJcbiAgICAgICAgICAgIHRoaXMuY3VyQ2hlY2tlZCA9IC0xO1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hTdGF0dXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5xdWVyeUJhY2suZW1pdCh7bmFtZTogJycsIGNvZGU6ICdxdWVyeScsIGRhdGE6IHBhcmFtc30pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb250ZXh0TWVudSgkZXZlbnQ6IGFueSwgbWVudTogTnpEcm9wZG93bk1lbnVDb21wb25lbnQpIHtcclxuICAgIGNvbnNvbGUubG9nKCRldmVudClcclxuICAgIHRoaXMubnpDb250ZXh0TWVudVNlcnZpY2UuY3JlYXRlKCRldmVudCwgbWVudSk7XHJcbiAgfVxyXG5cclxuICBsb2codmFsdWU6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyh2YWx1ZSk7XHJcbiAgICBmb3IgKGxldCB0YWJsZSBvZiB0aGlzLnF1ZXJ5T3B0cy50YWJsZXMpIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZTtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB2YWx1ZSkge1xyXG4gICAgICAgIGlmIChpdGVtID09IHRhYmxlLmtleSkge1xyXG4gICAgICAgICAgdGFibGUuaXNTaG93ID0gdHJ1ZTtcclxuICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghZmxhZylcclxuICAgICAgICB0YWJsZS5pc1Nob3cgPSBmYWxzZTtcclxuXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnF1ZXJ5T3B0cy50YWJsZXMpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tTaG93VGQoaXRlbTogVGFibGUsIGluZGV4OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICghaXRlbS5pc1Nob3cpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0uaXNSb3dTcGFuKSB7XHJcbiAgICAgIC8vIOWQiOW5tuihjCzov5Tlm57lgLzkuI7kuIrkuIDooYznm7jlkIzliJnpmpDol4/ov5nkuIDooYw7XHJcbiAgICAgIGlmIChpbmRleCA9PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qga2V5ID0gaXRlbS5rZXkgPyBpdGVtLmtleSA6IFwiXCI7XHJcbiAgICAgIGNvbnN0IGN1ciA9IHRoaXMudGFibGVEYXRhc1tpbmRleF1ba2V5XTtcclxuICAgICAgY29uc3QgcHJlID0gdGhpcy50YWJsZURhdGFzW2luZGV4IC0gMV1ba2V5XTtcclxuXHJcbiAgICAgIHJldHVybiAhKGN1ciA9PSBwcmUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGl0ZW0uaXNTaG93O1xyXG4gIH1cclxuXHJcbiAgY2hlY2tSb3dTcGFuKGl0ZW06IFRhYmxlLCBkYXRhOiBhbnkpIHtcclxuICAgIGlmIChpdGVtLmlzUm93U3Bhbikge1xyXG4gICAgICByZXR1cm4gdGhpcy5yb3dTcGFuTWFwW2l0ZW0ua2V5ID8gaXRlbS5rZXkgOiBcIlwiXVtkYXRhW2l0ZW0ua2V5ID8gaXRlbS5rZXkgOiBcIlwiXV0ubnVtXHJcbiAgICB9XHJcbiAgICByZXR1cm4gMTtcclxuICB9XHJcblxyXG4gIGdldFJvd1NwYW4oKSB7XHJcbiAgICBsZXQgaXNSb3dTcGFuID0gZmFsc2U7XHJcbiAgICB0aGlzLnF1ZXJ5T3B0cy50YWJsZXMuZm9yRWFjaChcclxuICAgICAgKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmlzUm93U3Bhbikge1xyXG4gICAgICAgICAgaXNSb3dTcGFuID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucm93U3Bhbk1hcFtpdGVtLmtleV0gPSB7fTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICBpZiAoIWlzUm93U3Bhbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucm93U3Bhbk1hcCk7XHJcbiAgICB0aGlzLnRhYmxlRGF0YXMuZm9yRWFjaChcclxuICAgICAgKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGtleXMuZm9yRWFjaChcclxuICAgICAgICAgIGtleSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbVtrZXldO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMucm93U3Bhbk1hcFtrZXldW3ZhbHVlXSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucm93U3Bhbk1hcFtrZXldW3ZhbHVlXSA9IHtcclxuICAgICAgICAgICAgICAgIG51bTogMVxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3dTcGFuTWFwW2tleV1bdmFsdWVdLm51bSArPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KTogdm9pZCB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy50YWJsZURhdGFzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6ICdkcmFnJyxcclxuICAgICAgY29kZTogJ2RyYWcnLFxyXG4gICAgICB0eXBlOiBcInJvd3NcIlxyXG4gICAgfTtcclxuICAgIGFjdGlvbi5kYXRhcyA9IHRoaXMudGFibGVEYXRhcztcclxuICAgIGlmICh0aGlzLnRhYmxlRGF0YXMgJiYgdGhpcy50YWJsZURhdGFzLmxlbmd0aCA+IDApIHtcclxuICAgICAgYWN0aW9uLmZpcnN0RGF0YSA9IHRoaXMudGFibGVEYXRhc1swXTtcclxuICAgIH1cclxuICAgIGFjdGlvbi5udW1iZXJPZkNoZWNrZWQgPSAxO1xyXG4gICAgdGhpcy50YWJsZUFjdGlvbi5lbWl0KGFjdGlvbik7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8Zm9ybSBuei1mb3JtIFtmb3JtR3JvdXBdPVwiYXRyRm9ybVwiIGNsYXNzPVwiYW50LWFkdmFuY2VkLXNlYXJjaC1mb3JtXCJcclxuICAgICAgKm5nSWY9XCJxdWVyeU9wdHMuaGVhZGVycy5sZW5ndGggPjAgfHwgcXVlcnlPcHRzLmFjdGlvbnMubGVuZ3RoID4wXCI+XHJcbiAgPGRpdiBuei1yb3cgW256R3V0dGVyXT1cIjI0XCI+XHJcbiAgICA8ZGl2IG56LWNvbCBbaGlkZGVuXT1cIiFoZWFkZXIuaXNTaG93IHx8ICFpc0NvbGxhcHNlXCIgKm5nRm9yPVwibGV0IGhlYWRlciBvZiBxdWVyeU9wdHMuaGVhZGVyc1wiXHJcbiAgICAgICAgIFtuelNwYW5dPVwiaGVhZGVyLnNwYW5cIj5cclxuICAgICAgPGFwcC10YWJsZS1mb3JtLWl0ZW1cclxuICAgICAgICBbaGVhZGVyXT1cImhlYWRlclwiXHJcbiAgICAgICAgW25nTW9kZWxdPVwiaGVhZGVyLmRlZmF1bHRWYWxcIlxyXG4gICAgICAgIFtkaWN0TGlzdF09XCJkaWN0c1toZWFkZXIuZGljdENvZGVdXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImhlYWRlci5rZXlcIlxyXG4gICAgICAgIChoZWFkZXJBY3Rpb24pPVwiaGVhZGVyQWN0aW9uLmVtaXQoJGV2ZW50KVwiPjwvYXBwLXRhYmxlLWZvcm0taXRlbT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgbnotcm93IG56VHlwZT1cImZsZXhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYXJlYVwiIG56LWNvbCBbbnpTcGFuXT1cIjE2XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBxdWVyeU9wdHMuYWN0aW9uc1wiPlxyXG4gICAgICAgIDxhdHItbG9jYWwtdXBsb2FkICpuZ0lmPVwiYWN0aW9uLmdUeXBlID09ICd1cGxvYWQnXCIgW2NvZGVdPVwiYWN0aW9uLmNvZGVcIiBbdXJsXT1cImFjdGlvbi51cmxcIiBbbmFtZV09XCJhY3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpdGhvdXRSb2xlXT1cImFjdGlvbi53aXRob3V0Um9sZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCIgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPjwvYXRyLWxvY2FsLXVwbG9hZD5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFjdGlvbi5nVHlwZVwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gW256VHlwZV09XCIncHJpbWFyeSdcIiBuelNpemU9XCJzbWFsbFwiIChjbGljayk9XCJkb0FjdGlvbihhY3Rpb24uY29kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAqYXRyUm9sZT1cImFjdGlvbi53aXRob3V0Um9sZSA/IG51bGw6YWN0aW9uLmNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNFbmFibGUoYWN0aW9uLm9wZXJhdG9yKVwiPnt7YWN0aW9uLm5hbWV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBuei1jb2wgW256U3Bhbl09XCI4XCIgY2xhc3M9XCJzZWFyY2gtYXJlYVwiICpuZ0lmPVwicXVlcnlPcHRzLmhlYWRlcnMubGVuZ3RoID4wICYmICFxdWVyeU9wdHMuaXNIaWRlUXVlcnlcIj5cclxuICAgICAgPGJ1dHRvbiBuei1idXR0b24gbnpTaXplPVwic21hbGxcIiBbbnpUeXBlXT1cIidwcmltYXJ5J1wiIChjbGljayk9XCJxdWVyeSh0cnVlKVwiPuafpeivojwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG56LWJ1dHRvbiBuelNpemU9XCJzbWFsbFwiIChjbGljayk9XCJyZXNldEZvcm0oKVwiPumHjee9rjwvYnV0dG9uPlxyXG4gICAgICA8YSBjbGFzcz1cImNvbGxhcHNlXCIgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIiAqbmdJZj1cInF1ZXJ5T3B0cy5oZWFkZXJzLmxlbmd0aCA+IDAgXCI+XHJcbiAgICAgICB7e2lzQ29sbGFwc2UgPyAn5pS26LW3Jzon5bGV5byAJ319XHJcbiAgICAgICAgPGkgbnotaWNvbiBbbnpUeXBlXT1cImlzQ29sbGFwc2UgPyAndXAnIDogJ2Rvd24nXCI+PC9pPlxyXG4gICAgICA8L2E+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwidGl0bGVcIiBjbGFzcz1cInRpdGxlXCI+e3t0aXRsZX19PC9kaXY+XHJcbjwvZm9ybT5cclxuPGRpdiBjbGFzcz1cInNlYXJjaC1yZXN1bHQtbGlzdFwiICN0YWJsZUNvbnRlbnQ+XHJcbiAgPG56LXRhYmxlICpuZ0lmPVwiaXNBbGxMb2FkXCIgI2Jhc2ljVGFibGUgY2xhc3M9XCJtYWluLXRhYmxlXCJcclxuICAgICAgICAgICAgW256U2Nyb2xsXT1cInNjcm9sbFNpemVcIlxyXG4gICAgICAgICAgICBuelNpemU9XCJtaWRkbGVcIlxyXG4gICAgICAgICAgICBuekJvcmRlcmVkXHJcbiAgICAgICAgICAgIFtuelNob3dQYWdpbmF0aW9uXT1cInNob3dQYWdpbmF0aW9uXCJcclxuICAgICAgICAgICAgbnpTaG93U2l6ZUNoYW5nZXJcclxuICAgICAgICAgICAgW256RnJvbnRQYWdpbmF0aW9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW256TG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgW256VG90YWxdPVwidG90YWxcIlxyXG4gICAgICAgICAgICBbKG56UGFnZUluZGV4KV09XCJwYWdlSW5kZXhcIlxyXG4gICAgICAgICAgICBbKG56UGFnZVNpemUpXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgW256RGF0YV09XCJ0YWJsZURhdGFzXCJcclxuICAgICAgICAgICAgKG56UGFnZUluZGV4Q2hhbmdlKT1cInF1ZXJ5KClcIlxyXG4gICAgICAgICAgICAobnpQYWdlU2l6ZUNoYW5nZSk9XCJxdWVyeSh0cnVlKVwiXHJcbiAgICAgICAgICAgIFtuelNob3dUb3RhbF09XCJ0b3RhbFRlbXBsYXRlXCJcclxuICA+XHJcbiAgICA8dGhlYWQ+XHJcbiAgICA8dHIgKGNvbnRleHRtZW51KT1cImNvbnRleHRNZW51KCRldmVudCxtZW51KVwiIGNsYXNzPVwiaGVhZGVyLXRyXCI+XHJcblxyXG4gICAgICA8dGggKm5nSWY9XCJxdWVyeU9wdHMuY2hlY2tCb3g/LmlzU2hvd0NoZWNrYm94XCJcclxuICAgICAgICAgIFtuekxlZnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImxlZnQtemluZGV4LWhlYWRlclwiXHJcbiAgICAgICAgICBuelNob3dDaGVja2JveFxyXG4gICAgICAgICAgc3R5bGU9XCJ6LWluZGV4OiA5MCFpbXBvcnRhbnQ7XCJcclxuICAgICAgICAgIG56V2lkdGg9XCIzMHB4XCJcclxuICAgICAgICAgIG56QWxpZ249XCJjZW50ZXJcIlxyXG4gICAgICAgICAgWyhuekNoZWNrZWQpXT1cImlzQWxsRGlzcGxheURhdGFDaGVja2VkXCJcclxuICAgICAgICAgIFtuekluZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlXCJcclxuICAgICAgICAgIChuekNoZWNrZWRDaGFuZ2UpPVwiY2hlY2tBbGwoJGV2ZW50KVwiXHJcbiAgICAgID48L3RoPlxyXG4gICAgICA8dGggW256TGVmdF09XCJ0cnVlXCIgY2xhc3M9XCJsZWZ0LXppbmRleC1oZWFkZXJcIiAqbmdJZj1cInF1ZXJ5T3B0cy5pc0luZGV4XCIgbnpXaWR0aD1cIjMwcHhcIiBuekFsaWduPVwiY2VudGVyXCI+IzwvdGg+XHJcbiAgICAgIDx0aCBbbnpMZWZ0XT1cInRydWVcIiBjbGFzcz1cImxlZnQtemluZGV4LWhlYWRlclwiICpuZ0lmPVwicXVlcnlPcHRzLmNoZWNrQm94Py5pc1JhZGlvXCIgbnpXaWR0aD1cIjMwcHhcIlxyXG4gICAgICAgICAgbnpBbGlnbj1cImNlbnRlclwiPiNcclxuICAgICAgPC90aD5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVyeU9wdHMudGFibGVzOyBcIj5cclxuICAgICAgICA8dGggKm5nSWY9XCJpdGVtLmlzU2hvdyBcIlxyXG4gICAgICAgICAgICBbbnpTaG93U29ydF09aXRlbS5zb3J0YWJsZVxyXG4gICAgICAgICAgICBuei1yZXNpemFibGVcclxuICAgICAgICAgICAgbnpQcmV2aWV3XHJcbiAgICAgICAgICAgIG56Qm91bmRzPVwid2luZG93XCJcclxuICAgICAgICAgICAgWyhuelNvcnRPcmRlcildPVwic29ydE1hcFtpdGVtLnNvcnRLZXldXCJcclxuICAgICAgICAgICAgKG56U29ydE9yZGVyQ2hhbmdlKT1cInNvcnQoaXRlbS5zb3J0S2V5LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgW256V2lkdGhdPVwiaXRlbS53aWR0aFwiXHJcbiAgICAgICAgICAgIFtuek1heFdpZHRoXT1cIjI1NlwiXHJcbiAgICAgICAgICAgIFtuek1pbldpZHRoXT1cIjYwXCJcclxuICAgICAgICAgICAgW256UmlnaHRdPVwiaXRlbS5pc1JpZ2h0ID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgW256TGVmdF09XCJpdGVtLmlzTGVmdCA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbGVmdC16aW5kZXgtaGVhZGVyJzppdGVtLmlzTGVmdCA/IHRydWUgOiBmYWxzZX1cIlxyXG4gICAgICAgICAgICAobnpSZXNpemVFbmQpPVwib25SZXNpemUoJGV2ZW50LCBpdGVtLm5hbWUpXCI+XHJcbiAgICAgICAgICB7e2l0ZW0ubmFtZX19PCEtLSB7d2lkdGh9OiB7IHdpZHRoOiBudW1iZXIgfSwgY29sOiBzdHJpbmctLT5cclxuICAgICAgICAgIDxuei1yZXNpemUtaGFuZGxlIG56RGlyZWN0aW9uPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZS10cmlnZ2VyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L256LXJlc2l6ZS1oYW5kbGU+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3RyPlxyXG4gICAgPC90aGVhZD5cclxuXHJcblxyXG4gICAgPHRib2R5ICpuZ0lmPVwiIWFsbG93RHJhZ1wiPlxyXG4gICAgPHRyICpuZ0Zvcj1cImxldCBkYXRhIG9mIGJhc2ljVGFibGUuZGF0YTtpbmRleCBhcyBpXCIgY2xhc3M9XCJ0LXRyXCIgKGNsaWNrKT1cInNlbGVjdFJvdyhkYXRhLGkpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7J2NvbG9yJzppc1Nob3dDb2xvcihkYXRhKX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQnOiBpID09IGN1ckNoZWNrZWR9XCIgKGRibGNsaWNrKT1cImRiY2xpY2tEYXRhKGRhdGEsaSlcIj5cclxuICAgICAgPHRkIFtuekxlZnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImxlZnQtemluZGV4XCJcclxuICAgICAgICAgICpuZ0lmPVwicXVlcnlPcHRzLmNoZWNrQm94Py5pc1Nob3dDaGVja2JveFwiXHJcbiAgICAgICAgICBuelNob3dDaGVja2JveFxyXG4gICAgICAgICAgWyhuekNoZWNrZWQpXT1cIm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdXCJcclxuICAgICAgICAgIChuekNoZWNrZWRDaGFuZ2UpPVwicmVmcmVzaFN0YXR1cygpXCJcclxuICAgICAgPjwvdGQ+XHJcbiAgICAgIDx0ZCBbbnpMZWZ0XT1cInRydWVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsZWZ0LXppbmRleFwiXHJcbiAgICAgICAgICAqbmdJZj1cInF1ZXJ5T3B0cy5jaGVja0JveD8uaXNSYWRpb1wiIG56U2hvd0NoZWNrYm94IChuekNoZWNrZWRDaGFuZ2UpPVwic2VsZWN0Um93KGRhdGEsaSlcIlxyXG4gICAgICAgICAgWyhuekNoZWNrZWQpXT1cIm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdXCI+PC90ZD5cclxuICAgICAgPHRkIFtuekxlZnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAqbmdJZj1cInF1ZXJ5T3B0cy5pc0luZGV4XCIgbnpBbGlnbj1cImNlbnRlclwiIHN0eWxlPVwicGFkZGluZzoxMnB4IDA7XCIgbnpCcmVha1dvcmQ+e3tpICsgMX19PC90ZD5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlcnlPcHRzLnRhYmxlcztcIj5cclxuXHJcbiAgICAgICAgPHRkIFtuekxlZnRdPVwiaXRlbS5pc0xlZnQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2xlZnQtemluZGV4JzppdGVtLmlzTGVmdCA/IHRydWUgOiBmYWxzZX1cIlxyXG4gICAgICAgICAgICBbbnpSaWdodF09XCJpdGVtLmlzUmlnaHQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBuekJyZWFrV29yZFxyXG4gICAgICAgICAgICBbcm93U3Bhbl09XCJjaGVja1Jvd1NwYW4oaXRlbSxkYXRhKVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiY2hlY2tTaG93VGQoaXRlbSxpKSBcIj5cclxuICAgICAgICAgIDxhcHAtdGFibGUtdGQgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaV09XCJpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRvQWN0aW9uQnlSb3dBY3Rpb24pPVwiZG9BY3Rpb25CeVJvdzIoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9hcHAtdGFibGUtdGQ+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3RyPlxyXG4gICAgPC90Ym9keT5cclxuICAgIDx0Ym9keSAqbmdJZj1cImFsbG93RHJhZ1wiIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XHJcbiAgICA8dHIgY2RrRHJhZyAqbmdGb3I9XCJsZXQgZGF0YSBvZiBiYXNpY1RhYmxlLmRhdGE7aW5kZXggYXMgaVwiIGNsYXNzPVwidC10clwiIChjbGljayk9XCJzZWxlY3RSb3coZGF0YSxpKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IGkgPT0gY3VyQ2hlY2tlZH1cIj5cclxuICAgICAgPHRkIFtuekxlZnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImxlZnQtemluZGV4XCJcclxuICAgICAgICAgICpuZ0lmPVwicXVlcnlPcHRzLmNoZWNrQm94Py5pc1Nob3dDaGVja2JveFwiXHJcbiAgICAgICAgICBuelNob3dDaGVja2JveFxyXG4gICAgICAgICAgWyhuekNoZWNrZWQpXT1cIm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdXCJcclxuICAgICAgICAgIChuekNoZWNrZWRDaGFuZ2UpPVwicmVmcmVzaFN0YXR1cygpXCJcclxuICAgICAgPjwvdGQ+XHJcbiAgICAgIDwhLS1cclxuICAgICAgICAgICAgICAgIDx0ZCBbbnpMZWZ0XT1cIml0ZW0uaXNMZWZ0ID8gdHJ1ZSA6IGZhbHNlXCIgW25nQ2xhc3NdPVwieydsZWZ0LXppbmRleCc6aXRlbS5pc0xlZnQgPyB0cnVlIDogZmFsc2V9XCIgICBbbnpSaWdodF09XCJpdGVtLmlzUmlnaHQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlcnlPcHRzLmlzU2hvd0NoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICBuelNob3dDaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgIFsobnpDaGVja2VkKV09XCJtYXBPZkNoZWNrZWRJZFtkYXRhLmlkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG56Q2hlY2tlZENoYW5nZSk9XCJyZWZyZXNoU3RhdHVzKClcIlxyXG4gICAgICAgICAgICAgICAgPjwvdGQ+XHJcbiAgICAgIC0tPlxyXG4gICAgICA8dGQgW256TGVmdF09XCJ0cnVlXCJcclxuICAgICAgICAgIGNsYXNzPVwibGVmdC16aW5kZXhcIlxyXG4gICAgICAgICAgKm5nSWY9XCJxdWVyeU9wdHMuY2hlY2tCb3g/LmlzUmFkaW9cIiBuelNob3dDaGVja2JveCAobnpDaGVja2VkQ2hhbmdlKT1cInNlbGVjdFJvdyhkYXRhLGkpXCJcclxuICAgICAgICAgIFsobnpDaGVja2VkKV09XCJtYXBPZkNoZWNrZWRJZFtkYXRhLmlkXVwiPjwvdGQ+XHJcbiAgICAgIDx0ZCBbbnpMZWZ0XT1cInRydWVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsZWZ0LXppbmRleFwiXHJcbiAgICAgICAgICAqbmdJZj1cInF1ZXJ5T3B0cy5pc0luZGV4XCIgbnpBbGlnbj1cImNlbnRlclwiIHN0eWxlPVwicGFkZGluZzoxMnB4IDA7XCIgbnpCcmVha1dvcmQ+e3tpICsgMX19PC90ZD5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlcnlPcHRzLnRhYmxlcztcIj5cclxuXHJcbiAgICAgICAgPHRkIFtuekxlZnRdPVwiaXRlbS5pc0xlZnQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2xlZnQtemluZGV4JzppdGVtLmlzTGVmdCA/IHRydWUgOiBmYWxzZX1cIlxyXG4gICAgICAgICAgICBbbnpSaWdodF09XCJpdGVtLmlzUmlnaHQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBuekJyZWFrV29yZFxyXG4gICAgICAgICAgICBbcm93U3Bhbl09XCJjaGVja1Jvd1NwYW4oaXRlbSxkYXRhKVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiY2hlY2tTaG93VGQoaXRlbSxpKSBcIj5cclxuICAgICAgICAgIDxhcHAtdGFibGUtdGQgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaV09XCJpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRvQWN0aW9uQnlSb3dBY3Rpb24pPVwiZG9BY3Rpb25CeVJvdzIoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9hcHAtdGFibGUtdGQ+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3RyPlxyXG4gICAgPC90Ym9keT5cclxuXHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICN0b3RhbFRlbXBsYXRlIGxldC10b3RhbD7lhbEge3sgdG90YWwgfX0g5p2h6K6w5b2VPC9uZy10ZW1wbGF0ZT5cclxuICA8L256LXRhYmxlPlxyXG4gIDxuei1kcm9wZG93bi1tZW51ICNtZW51PVwibnpEcm9wZG93bk1lbnVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJlbC1jb2x1bm1uXCI+XHJcbiAgICAgIDxuei1jaGVja2JveC13cmFwcGVyIHN0eWxlPVwid2lkdGg6IDEwMCU7bWFyZ2luLXRvcDogMzBweDtcIiAobnpPbkNoYW5nZSk9XCJsb2coJGV2ZW50KVwiPlxyXG4gICAgICAgIDxkaXYgbnotcm93PlxyXG4gICAgICAgICAgPGRpdiBuei1jb2wgbnpTcGFuPVwiMjRcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVyeU9wdHMudGFibGVzXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBuei1jaGVja2JveCBuelZhbHVlPVwie3tpdGVtLmtleX19XCIgW25nTW9kZWxdPVwiaXRlbS5pc1Nob3dcIj57e2l0ZW0ubmFtZX19PC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L256LWNoZWNrYm94LXdyYXBwZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJlbC1jb2x1bm1uLWhlYWRlclwiPuivt+mAieaLqeWIl+ihqOaYvuekuuWGheWuuTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uei1kcm9wZG93bi1tZW51PlxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
|