@acorex/components 1.3.86 → 1.3.90
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/acorex-components.metadata.json +1 -1
- package/bundles/acorex-components.umd.js +40 -14
- package/bundles/acorex-components.umd.js.map +1 -1
- package/bundles/acorex-components.umd.min.js +1 -1
- package/bundles/acorex-components.umd.min.js.map +1 -1
- package/esm2015/lib/number-box/number-box.component.js +1 -2
- package/esm2015/lib/query-builder/query-builder-rule.component.js +2 -2
- package/esm2015/lib/selectbox/selectbox.component.js +10 -9
- package/esm2015/lib/tree-view/tree-view.component.js +27 -7
- package/esm5/lib/number-box/number-box.component.js +1 -2
- package/esm5/lib/query-builder/query-builder-rule.component.js +2 -2
- package/esm5/lib/selectbox/selectbox.component.js +10 -9
- package/esm5/lib/tree-view/tree-view.component.js +31 -5
- package/fesm2015/acorex-components.js +37 -17
- package/fesm2015/acorex-components.js.map +1 -1
- package/fesm5/acorex-components.js +40 -15
- package/fesm5/acorex-components.js.map +1 -1
- package/lib/tree-view/tree-view.component.d.ts +6 -0
- package/package.json +1 -1
|
@@ -455,7 +455,6 @@ let AXNumberBoxComponent = AXNumberBoxComponent_1 = class AXNumberBoxComponent e
|
|
|
455
455
|
this.setCaretPosition(this.input.nativeElement, this.cursorPosition);
|
|
456
456
|
}
|
|
457
457
|
upStepHandel() {
|
|
458
|
-
debugger;
|
|
459
458
|
this.userEdite = true;
|
|
460
459
|
if (this.min != null && this.value == null) {
|
|
461
460
|
this.value = this.min.toString();
|
|
@@ -619,4 +618,4 @@ AXNumberBoxComponent = AXNumberBoxComponent_1 = __decorate([
|
|
|
619
618
|
__metadata("design:paramtypes", [ChangeDetectorRef, ElementRef])
|
|
620
619
|
], AXNumberBoxComponent);
|
|
621
620
|
export { AXNumberBoxComponent };
|
|
622
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWNvcmV4L2NvbXBvbmVudHMvIiwic291cmNlcyI6WyJsaWIvbnVtYmVyLWJveC9udW1iZXItYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFRcEYsSUFBYSxvQkFBb0IsNEJBQWpDLE1BQWEsb0JBQXFCLFNBQVEsbUJBQW1CO0lBMEozRCxZQUFzQixHQUFzQixFQUFFLEdBQWU7UUFDM0QsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQURJLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBekpuQyxRQUFHLEdBQVcsSUFBSSxDQUFDO1FBQ25CLFFBQUcsR0FBVyxJQUFJLENBQUM7UUFHNUIsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFL0IsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFHOUIsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFHNUIsZUFBVSxHQUFZLElBQUksQ0FBQztRQUczQixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFbkMsdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUUzQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBSTNCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixtQkFB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LEVBQUU7O2lEQUFvQjtBQUNuQjtJQUFSLEtBQUssRUFBRTs7aURBQW9CO0FBRzVCO0lBREMsS0FBSyxFQUFFOzsyREFDdUI7QUFFL0I7SUFEQyxLQUFLLEVBQUU7OzBEQUNzQjtBQUc5QjtJQURDLEtBQUssRUFBRTs7eURBQ29CO0FBRzVCO0lBREMsS0FBSyxFQUFFOzt3REFDbUI7QUFHM0I7SUFEQyxLQUFLLEVBQUU7OytEQUMyQjtBQWdCMUI7SUFBUixLQUFLLEVBQUU7O3FEQUFxQjtBQUNwQjtJQUFSLEtBQUssRUFBRTs7MkRBQThCO0FBQzdCO0lBQVIsS0FBSyxFQUFFOzt3REFBMkI7QUFsQ3hCLG9CQUFvQjtJQVBoQyxTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsZUFBZTtRQUN6QixtdEVBQTBDO1FBQzFDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1FBQy9DLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTtRQUNyQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsc0JBQW9CLEVBQUUsQ0FBQztLQUNwRixDQUFDO3FDQTJKMkIsaUJBQWlCLEVBQU8sVUFBVTtHQTFKbEQsb0JBQW9CLENBeWxCaEM7U0F6bEJZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBBZnRlclZpZXdJbml0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBWEJhc2VUZXh0Q29tcG9uZW50LCBBWFZhbGlkYXRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS9lbGVtZW50LmNsYXNzJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdheC1udW1iZXItYm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbnVtYmVyLWJveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgaG9zdDogeyBzdHlsZTogJ2Rpc3BsYXk6IGNvbnRlbnRzOycgfSxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYVmFsaWRhdGFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWE51bWJlckJveENvbXBvbmVudCB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhOdW1iZXJCb3hDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBtaW46IG51bWJlciA9IG51bGw7XHJcbiAgQElucHV0KCkgbWF4OiBudW1iZXIgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dTZXBhcmF0b3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHNob3dDdXJyZW5jeTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dDb3VudGVyOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzY3JvbGxXZWVsOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzaG93RG91YmxlQ291bnRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICB1c2VyUXVlc3Rpb25VcGRhdGUgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcblxyXG4gIHVzZXJFZGl0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICB0bXA6IGFueTtcclxuICBjb3VudDogbnVtYmVyO1xyXG4gIGZpbmREb3RzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZmluZE1pbnVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3Vyc29yUG9zaXRpb246IG51bWJlciA9IDA7XHJcbiAgZG90UG9zaXRpb246IG51bWJlcjtcclxuICB0ZXh0VmFsdWU6IHN0cmluZztcclxuICBkZWNpbWFsQ29uc3RhbnQ6IG51bWJlciA9IDAuMTtcclxuICBsYXN0U3RlcDogbnVtYmVyID0gbnVsbDtcclxuXHJcbiAgQElucHV0KCkgaW50U3RlcDogbnVtYmVyID0gMTtcclxuICBASW5wdXQoKSBkZWNpbWFsTnVtYmVyOiBudW1iZXIgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGN1c3RvbVN0ZXA6IG51bWJlciA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgX3ZhbHVlczogc3RyaW5nO1xyXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZXM7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgdmFsdWUodjogc3RyaW5nKSB7XHJcbiAgICBpZiAodiA9PT0gJy0nKSB7XHJcbiAgICAgIHRoaXMudGV4dFZhbHVlID0gJy0nO1xyXG4gICAgICB0aGlzLl92YWx1ZXMgPSAnLSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodiA9PT0gJycgfHwgdiA9PSBudWxsIHx8IHYgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBpc05hTihOdW1iZXIodi50b1N0cmluZygpLnJlcGxhY2UoLywvZywgJycpKSkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKHYgPT09ICcnIHx8IHYgPT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMudGV4dFZhbHVlID0gJyc7XHJcbiAgICAgICAgICBjb25zdCBvbGQgPSB0aGlzLl92YWx1ZXM7XHJcbiAgICAgICAgICB0aGlzLl92YWx1ZXMgPSBudWxsO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLl92YWx1ZXMgIT09IG9sZCkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdCh7XHJcbiAgICAgICAgICAgICAgaXNVc2VyQ2hhbmdlOiB0aGlzLnVzZXJFZGl0ZSxcclxuICAgICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICAgICAgb2xkVmFsdWU6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dTZXBhcmF0b3IgJiYgb2xkXHJcbiAgICAgICAgICAgICAgICAgID8gb2xkID09PSAnLSdcclxuICAgICAgICAgICAgICAgICAgICA/IG51bGxcclxuICAgICAgICAgICAgICAgICAgICA6IE51bWJlcihvbGQucmVwbGFjZSgvLC9nLCAnJykpXHJcbiAgICAgICAgICAgICAgICAgIDogb2xkID09PSBudWxsIHx8IG9sZCA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICAgICAgICA6IG9sZCA9PT0gJy0nXHJcbiAgICAgICAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICAgICAgICA6IE51bWJlcihvbGQpLFxyXG4gICAgICAgICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJFZGl0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJWYWxpZGF0aW9uU3R5bGUodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdiA9IHYudG9TdHJpbmcoKTtcclxuXHJcbiAgICAgICAgICAvLyB0aGlzLmFkZENvbW1hcyh2LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgdGhpcy50ZXh0VmFsdWUgPSB0aGlzLnNob3dTZXBhcmF0b3IgJiYgdiA/IHRoaXMuYWRkQ29tbWFzKHYudG9TdHJpbmcoKSkgOiB2O1xyXG5cclxuICAgICAgICAgIC8vIGlmICh0aGlzLnRleHRWYWx1ZS5pbmRleE9mKCcuJykgIT09IC0xKSB7XHJcbiAgICAgICAgICAvLyAgIC8vIGNvbnN0IGRvdHR0PSAodGhpcy50ZXh0VmFsdWUubGVuZ3RoLTEpIC0gdGhpcy50ZXh0VmFsdWUuaW5kZXhPZignLicpXHJcbiAgICAgICAgICAvLyAgIGlmICh0aGlzLnRleHRWYWx1ZS5sZW5ndGggLSAxIC0gdGhpcy50ZXh0VmFsdWUuaW5kZXhPZignLicpIDwgdGhpcy5kZWNpbWFsTnVtYmVyKSB7XHJcbiAgICAgICAgICAvLyAgICAgY29uc3QgYSA9IHRoaXMuZGVjaW1hbE51bWJlciAtICh0aGlzLnRleHRWYWx1ZS5sZW5ndGggLSAxIC0gdGhpcy50ZXh0VmFsdWUuaW5kZXhPZignLicpKTtcclxuICAgICAgICAgIC8vICAgICBjb25zdCB6ID0gJzAnO1xyXG4gICAgICAgICAgLy8gICAgIHRoaXMudGV4dFZhbHVlID0gdGhpcy50ZXh0VmFsdWUgKyAnMCc7XHJcbiAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5fdmFsdWVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZCA9IHRoaXMuX3ZhbHVlcztcclxuICAgICAgICAgICAgaWYgKG9sZC50b1N0cmluZygpLnNlYXJjaCgvXFwuL2cpICE9PSB2LnRvU3RyaW5nKCkuc2VhcmNoKC9cXC4vZykpIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA8PSBvbGQuc2VhcmNoKC9cXC4vZykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSB2LnNlYXJjaCgvXFwuL2cpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnNvclBvc2l0aW9uID0gdi5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodiAhPT0gdGhpcy5fdmFsdWVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZCA9IHRoaXMuX3ZhbHVlcztcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gdjtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuc2hvd1NlcGFyYXRvciAmJiB2ID8gTnVtYmVyKHYucmVwbGFjZSgvLC9nLCAnJykpIDogTnVtYmVyKHYpKTtcclxuICAgICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgICAgICAgICBpc1VzZXJDaGFuZ2U6IHRoaXMudXNlckVkaXRlLFxyXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5zaG93U2VwYXJhdG9yICYmIHYgPyBOdW1iZXIodi5yZXBsYWNlKC8sL2csICcnKSkgOiBOdW1iZXIodiksXHJcbiAgICAgICAgICAgICAgb2xkVmFsdWU6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dTZXBhcmF0b3IgJiYgb2xkXHJcbiAgICAgICAgICAgICAgICAgID8gb2xkID09PSAnLSdcclxuICAgICAgICAgICAgICAgICAgICA/IG51bGxcclxuICAgICAgICAgICAgICAgICAgICA6IE51bWJlcihvbGQucmVwbGFjZSgvLC9nLCAnJykpXHJcbiAgICAgICAgICAgICAgICAgIDogb2xkID09PSBudWxsIHx8IG9sZCA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICAgICAgICA6IG9sZCA9PT0gJy0nXHJcbiAgICAgICAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICAgICAgICA6IE51bWJlcihvbGQpLFxyXG4gICAgICAgICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJFZGl0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJWYWxpZGF0aW9uU3R5bGUodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50ZXh0VmFsdWUgPSAnJztcclxuICAgICAgICB2ID0gbnVsbDtcclxuICAgICAgICBjb25zdCBvbGQgPSB0aGlzLl92YWx1ZXM7XHJcbiAgICAgICAgdGhpcy5fdmFsdWVzID0gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlcyAhPT0gb2xkKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgICAgICBpc1VzZXJDaGFuZ2U6dGhpcy51c2VyRWRpdGUsXHJcbiAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICAgIG9sZFZhbHVlOlxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd1NlcGFyYXRvciAmJiBvbGRcclxuICAgICAgICAgICAgICAgID8gb2xkID09PSAnLSdcclxuICAgICAgICAgICAgICAgICAgPyBudWxsXHJcbiAgICAgICAgICAgICAgICAgIDogTnVtYmVyKG9sZC5yZXBsYWNlKC8sL2csICcnKSlcclxuICAgICAgICAgICAgICAgIDogb2xkID09PSBudWxsIHx8IG9sZCA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICA/IG51bGxcclxuICAgICAgICAgICAgICAgIDogb2xkID09PSAnLSdcclxuICAgICAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICAgICAgOiBOdW1iZXIob2xkKSxcclxuICAgICAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy51c2VyRWRpdGUgPWZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jbGVhclZhbGlkYXRpb25TdHlsZSh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICBzdXBlcihjZHIsIHJlZik7XHJcbiAgICB0aGlzLnRleHRBbGlnbiA9ICdsZWZ0JztcclxuICB9XHJcblxyXG4gIGFkZENvbW1hczIoeCkge1xyXG4gICAgcmV0dXJuIHgudG9TdHJpbmcoKS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCAnLCcpO1xyXG4gIH1cclxuXHJcbiAgYWRkQ29tbWFzKG5TdHIpIHtcclxuICAgIG5TdHIgKz0gJyc7XHJcbiAgICBjb25zdCB4ID0gblN0ci5zcGxpdCgnLicpO1xyXG4gICAgbGV0IHgxID0geFswXTtcclxuICAgIGNvbnN0IHgyID0geC5sZW5ndGggPiAxID8gJy4nICsgeFsxXSA6ICcnO1xyXG4gICAgY29uc3Qgcmd4ID0gLyhcXGQrKShcXGR7M30pLztcclxuICAgIHdoaWxlIChyZ3gudGVzdCh4MSkpIHtcclxuICAgICAgeDEgPSB4MS5yZXBsYWNlKHJneCwgJyQxJyArICcsJyArICckMicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHgxICsgeDI7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkID09PSBmYWxzZSkge1xyXG4gICAgICBpZiAodGhpcy5zY3JvbGxXZWVsID09PSB0cnVlKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVdoZWVsKGUpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgNTAwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMudmFsdWUgPSB0aGlzLm1pbi50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlV2hlZWwoZXZlbnQpIHtcclxuICAgIGlmICgoZXZlbnQgYXMgYW55KS53aGVlbERlbHRhID4gMCkge1xyXG4gICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcblxyXG4gICAgICB0aGlzLnVwU3RlcEhhbmRlbCgpO1xyXG4gICAgICB0aGlzLmRlbGF5U2VhcmNoKCk7XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldENhcmV0KCk7XHJcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfVxyXG4gICAgaWYgKChldmVudCBhcyBhbnkpLndoZWVsRGVsdGEgPCAwKSB7XHJcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ3RyYW5zcGFyZW50JztcclxuXHJcbiAgICAgIHRoaXMuZG93blN0ZXBIYW5kZWwoKTtcclxuICAgICAgdGhpcy5kZWxheVNlYXJjaCgpO1xyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRDYXJldCgpO1xyXG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ2F1dG8nO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUtleVByZXNzKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudXNlckVkaXRlID0gdHJ1ZTtcclxuICAgIGNvbnN0IE51bWJlckRvdHBhdHRlcm4gPSAvWzAtOVxcLl0vZztcclxuICAgIGNvbnN0IE51bWJlck1pbnVzUGF0dGVybiA9IC9bMC05XFwtXS9nO1xyXG5cclxuICAgIGNvbnN0IGlucHV0Q2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQuY2hhckNvZGUpO1xyXG5cclxuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvXFwuL2cpID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZmluZERvdHMgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUudG9TdHJpbmcoKS5zZWFyY2goJy0nKSA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmZpbmRNaW51cyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGdldCBjdXJzdXIgcG9zaXRpb24gd2hlbiBrZXkgcHJlc3NcclxuICAgIGlmICh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgfHwgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09PSAwKSB7XHJcbiAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gKz0gMTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjb250cm9sIGN1cnNvciB3aGVuIGluIGZpcnN0IEluZGV4XHJcbiAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA8PSAxKSB7XHJcbiAgICAgIGlmICghTnVtYmVyTWludXNQYXR0ZXJuLnRlc3QoaW5wdXRDaGFyKSkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5tYXRjaCgvXFwtL2cpKSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gY29udHJvbCBjdXJzb3Igd2hlbiBpbiBhbm90aGVyIGluZGV4XHJcbiAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiAhPT0gMSkge1xyXG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSAhPT0gOCAmJiAhTnVtYmVyRG90cGF0dGVybi50ZXN0KGlucHV0Q2hhcikpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGZvciBjb250b3IgZGVjaW1hbCBmaWd1ciA9IDAgb3IgbnVsbFxyXG4gICAgICAgIGlmICh0aGlzLmRlY2ltYWxOdW1iZXIgPT09IG51bGwgfHwgdGhpcy5kZWNpbWFsTnVtYmVyID09PSAwKSB7XHJcbiAgICAgICAgICBpZiAoaW5wdXRDaGFyID09PSAnLicpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29udHJvbCBkZWNpbWFsIG51bWJlciAoZmlndXIgb2YgZGVjaW1hbClcclxuICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL1xcLi9nKSkge1xyXG4gICAgICAgICAgY29uc3QgZmlndXJlQWZ0ZXJEb3QgPSB0aGlzLnZhbHVlLmxlbmd0aCAtIHRoaXMudmFsdWUuaW5kZXhPZignLicpO1xyXG4gICAgICAgICAgY29uc3QgZG90SW5kZXggPSB0aGlzLnZhbHVlLmluZGV4T2YoJy4nKTtcclxuICAgICAgICAgIGlmIChkb3RJbmRleCAtIDEgKyBkb3RJbmRleCArIGZpZ3VyZUFmdGVyRG90ID4gZG90SW5kZXggLSAxICsgZG90SW5kZXggKyB0aGlzLmRlY2ltYWxOdW1iZXIgJiYgdGhpcy5jdXJzb3JQb3NpdGlvbiAtIDEgPiBkb3RJbmRleCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb250cm9sICcuJyBpbnB1dFxyXG4gICAgICAgIGlmIChpbnB1dENoYXIgPT09ICcuJykge1xyXG4gICAgICAgICAgY29uc3QgbGFzdENoYXIgPSB0aGlzLnZhbHVlLnRvU3RyaW5nKCkuY2hhckF0KHRoaXMudmFsdWUubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgICAvLyBjb250cm9sIC4gd2hlbiBsYXN0IGNoYXIgaXMgLVxyXG4gICAgICAgICAgaWYgKGxhc3RDaGFyLnRvU3RyaW5nKCkubWF0Y2goL1xcLS9nKSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gY29udHJvbCAuIHdoZW4gZmluZCBmaXJzdCBkb3RcclxuICAgICAgICAgIGlmICh0aGlzLmZpbmREb3RzKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZpbmREb3RzID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZmluZE1pbnVzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUtleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICB0aGlzLnVzZXJFZGl0ZSA9IHRydWU7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICdhdXRvJztcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XHJcbiAgICAgIHRoaXMuc2V0Q2FyZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICB0aGlzLnNldENhcmV0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gbGVmdCAmIHJpZ2h0IEJ1dHRvblxyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcpIHtcclxuICAgICAgaWYgKHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCB8fCB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IDApIHtcclxuICAgICAgICB0aGlzLmN1cnNvclBvc2l0aW9uID0gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaG9tZSBidXR0b25cclxuICAgIGlmIChldmVudC5rZXkgPT09ICdIb21lJykge1xyXG4gICAgICB0aGlzLmN1cnNvclBvc2l0aW9uID0gMDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBlbmQgYnV0dG9uXHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW5kJykge1xyXG4gICAgICB0aGlzLmN1cnNvclBvc2l0aW9uID0gdGhpcy52YWx1ZS5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc2V0IGRlbGF5IHdpdGggcnhqc1xyXG4gICAgdGhpcy5kZWxheVNlYXJjaCgpO1xyXG5cclxuICAgIC8vIGJhY2tzcGFjZSBDb250cm9sXHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJykge1xyXG4gICAgICBpZiAodGhpcy52YWx1ZSA9PT0gbnVsbCB8fCB0aGlzLnZhbHVlLmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgICAgdGhpcy5jdXJzb3JQb3NpdGlvbiA9IDA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jdXJzb3JQb3NpdGlvbiAtPSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICB0aGlzLnVzZXJFZGl0ZSA9IHRydWU7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJlYWRvbmx5ID09PSBmYWxzZSkge1xyXG4gICAgICBjb25zdCBjb3VudEFmdGVyRG90ID1cclxuICAgICAgICB0aGlzLnZhbHVlICE9PSBudWxsICYmIHRoaXMudmFsdWUgIT09ICcnICYmIHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZFxyXG4gICAgICAgICAgPyB0aGlzLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoIC0gMSAtIHRoaXMudmFsdWUudG9TdHJpbmcoKS5pbmRleE9mKCcuJylcclxuICAgICAgICAgIDogMDtcclxuICAgICAgY29uc3QgZGVmYXVsdFN0ZXA6IG51bWJlciA9XHJcbiAgICAgICAgY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IE1hdGgucG93KHRoaXMuZGVjaW1hbENvbnN0YW50LCB0aGlzLmRlY2ltYWxOdW1iZXIpIDogTWF0aC5wb3codGhpcy5kZWNpbWFsQ29uc3RhbnQsIGNvdW50QWZ0ZXJEb3QpO1xyXG4gICAgICAvLyBzdGVwIGFuZCArLSB3aXRoIHVwIGtleSBhbmQgZG93biBrZXlcclxuICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9cXC4vZykpIHtcclxuICAgICAgICB0aGlzLmRvdFBvc2l0aW9uID0gdGhpcy52YWx1ZS5pbmRleE9mKCcuJyk7XHJcbiAgICAgICAgaWYgKHRoaXMuZG90UG9zaXRpb24gPj0gdGhpcy5jdXJzb3JQb3NpdGlvbikge1xyXG4gICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICAgICAgdGhpcy50bXAgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gICAgICAgICAgICB0aGlzLmNvdW50ID0gdGhpcy50bXAgLSArdGhpcy5pbnRTdGVwO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5taW4gPT09IG51bGwgfHwgTnVtYmVyKHRoaXMuY291bnQpID49IE51bWJlcih0aGlzLm1pbikpIHtcclxuICAgICAgICAgICAgICAvLyB0aGlzLnZhbHVlID0gdGhpcy5jb3VudC50b0ZpeGVkKHRoaXMuZGVjaW1hbE51bWJlcik7XHJcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcclxuICAgICAgICAgICAgdGhpcy50bXAgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gICAgICAgICAgICB0aGlzLmNvdW50ID0gdGhpcy50bXAgKyArdGhpcy5pbnRTdGVwO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXggPT09IG51bGwgfHwgTnVtYmVyKHRoaXMuY291bnQpIDw9IE51bWJlcih0aGlzLm1heCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb3VudC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5taW4gPT09IG51bGwgfHwgTnVtYmVyKHRoaXMudmFsdWUpID4gTnVtYmVyKHRoaXMubWluKSkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmN1c3RvbVN0ZXAgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG1wID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlLnJlcGxhY2UoLywvZywgJycpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFzdFN0ZXAgPVxyXG4gICAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KGRlZmF1bHRTdGVwLnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpKSArXHJcbiAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQodGhpcy5jdXN0b21TdGVwLnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpKSAtXHJcbiAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQoZGVmYXVsdFN0ZXAudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudCA9IHBhcnNlRmxvYXQodGhpcy50bXApIC0gdGhpcy5sYXN0U3RlcDtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRtcCA9IHBhcnNlRmxvYXQodGhpcy52YWx1ZS5yZXBsYWNlKC8sL2csICcnKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gcGFyc2VGbG9hdCh0aGlzLnRtcCkgLSBkZWZhdWx0U3RlcDtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXggPT09IG51bGwgfHwgTnVtYmVyKHRoaXMudmFsdWUpIDwgTnVtYmVyKHRoaXMubWF4KSkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmN1c3RvbVN0ZXAgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG1wID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlLnJlcGxhY2UoLywvZywgJycpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFzdFN0ZXAgPVxyXG4gICAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KGRlZmF1bHRTdGVwLnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpKSArXHJcbiAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQodGhpcy5jdXN0b21TdGVwLnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpKSAtXHJcbiAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQoZGVmYXVsdFN0ZXAudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudCA9IHBhcnNlRmxvYXQodGhpcy50bXApICsgdGhpcy5sYXN0U3RlcDtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRtcCA9IHBhcnNlRmxvYXQodGhpcy52YWx1ZS5yZXBsYWNlKC8sL2csICcnKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gcGFyc2VGbG9hdCh0aGlzLnRtcCkgKyBkZWZhdWx0U3RlcDtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgICAgaWYgKHRoaXMubWluICE9IG51bGwgJiYgdGhpcy52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbi50b1N0cmluZygpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWluID09PSBudWxsIHx8IE51bWJlcih0aGlzLnZhbHVlKSA+IHBhcnNlSW50KHRoaXMubWluLnRvU3RyaW5nKCkpKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9ICcwJztcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50bXAgPSArdGhpcy52YWx1ZS50b1N0cmluZygpLnJlcGxhY2UoLywvZywgJycpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudCA9ICt0aGlzLnRtcCAtICt0aGlzLmludFN0ZXA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb3VudC50b1N0cmluZygpLnJlcGxhY2UoLywvZywgJycpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcclxuICAgICAgICAgIGlmICh0aGlzLm1pbiAhPSBudWxsICYmIHRoaXMudmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5taW4udG9TdHJpbmcoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1heCA9PT0gbnVsbCB8fCBOdW1iZXIodGhpcy52YWx1ZSkgPCBwYXJzZUludCh0aGlzLm1heC50b1N0cmluZygpKSkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSAnMCc7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG1wID0gdGhpcy52YWx1ZS50b1N0cmluZygpLnJlcGxhY2UoLywvZywgJycpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudCA9ICt0aGlzLnRtcCArICt0aGlzLmludFN0ZXA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb3VudC50b1N0cmluZygpLnJlcGxhY2UoLywvZywgJycpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHN0b3Agd2hlbiBrZXlkb3duXHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDbGljaygpIHtcclxuICAgIGlmICh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgfHwgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09PSAwKSB7XHJcbiAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWxheVNlYXJjaCgpIHtcclxuICAgIE9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcikgPT4ge1xyXG4gICAgICB0aGlzLnVzZXJRdWVzdGlvblVwZGF0ZSA9IG9ic2VydmVyO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnVzZXJRdWVzdGlvblVwZGF0ZS5waXBlKGRlYm91bmNlVGltZSgxMDAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKCh0ZXh0OiBzdHJpbmcpID0+IHRoaXMuY2hlY2tNaW5NYXgodGV4dCkpO1xyXG4gICAgLy8gdGhpcy51c2VyUXVlc3Rpb25VcGRhdGUubmV4dCgoZS50YXJnZXQgYXMgYW55KS52YWx1ZSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy51c2VyUXVlc3Rpb25VcGRhdGUubmV4dCh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xyXG4gICAgfSwgNTApO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tNaW5NYXgodGV4dCkge1xyXG4gICAgaWYgKHRoaXMubWluICE9PSBudWxsKSB7XHJcbiAgICAgIGlmICgrdGV4dCA8IHRoaXMubWluKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tYXggIT09IG51bGwpIHtcclxuICAgICAgaWYgKCt0ZXh0ID4gdGhpcy5tYXgpIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvR2V0Q2FyZXRQb3NpdGlvbihjdHJsKSB7XHJcbiAgICBsZXQgQ2FyZXRQb3MgPSAwO1xyXG4gICAgaWYgKGN0cmwuc2VsZWN0aW9uU3RhcnQgfHwgY3RybC5zZWxlY3Rpb25TdGFydCA9PT0gMCkge1xyXG4gICAgICBDYXJldFBvcyA9IGN0cmwuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgIHJldHVybiBDYXJldFBvcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldENhcmV0UG9zaXRpb24oY3RybCwgcG9zKSB7XHJcbiAgICBpZiAoY3RybC5zZXRTZWxlY3Rpb25SYW5nZSkge1xyXG4gICAgICBjdHJsLmZvY3VzKCk7XHJcbiAgICAgIGN0cmwuc2V0U2VsZWN0aW9uUmFuZ2UocG9zLCBwb3MpO1xyXG4gICAgfSBlbHNlIGlmIChjdHJsLmNyZWF0ZVRleHRSYW5nZSkge1xyXG4gICAgICBjb25zdCByYW5nZSA9IGN0cmwuY3JlYXRlVGV4dFJhbmdlKCk7XHJcbiAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpO1xyXG4gICAgICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBwb3MpO1xyXG4gICAgICByYW5nZS5tb3ZlU3RhcnQoJ2NoYXJhY3RlcicsIHBvcyk7XHJcbiAgICAgIHJhbmdlLnNlbGVjdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Q2FyZXQoKSB7XHJcbiAgICB0aGlzLnNldENhcmV0UG9zaXRpb24odGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LCB0aGlzLmN1cnNvclBvc2l0aW9uKTtcclxuICB9XHJcblxyXG4gIHVwU3RlcEhhbmRlbCgpIHtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICB0aGlzLnVzZXJFZGl0ZSA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5taW4gIT0gbnVsbCAmJiB0aGlzLnZhbHVlID09IG51bGwpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluLnRvU3RyaW5nKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5yZWFkb25seSA9PT0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCBjb3VudEFmdGVyRG90ID1cclxuICAgICAgICAgIHRoaXMudmFsdWUgIT09IG51bGwgJiYgdGhpcy52YWx1ZSAhPT0gJycgJiYgdGhpcy52YWx1ZSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgID8gdGhpcy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCAtIDEgLSB0aGlzLnZhbHVlLnRvU3RyaW5nKCkuaW5kZXhPZignLicpXHJcbiAgICAgICAgICAgIDogMDtcclxuICAgICAgICBpZiAodGhpcy52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlID0gJzAnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBkZWZhdWx0U3RlcDogbnVtYmVyID1cclxuICAgICAgICAgICAgY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IE1hdGgucG93KHRoaXMuZGVjaW1hbENvbnN0YW50LCB0aGlzLmRlY2ltYWxOdW1iZXIpIDogTWF0aC5wb3codGhpcy5kZWNpbWFsQ29uc3RhbnQsIGNvdW50QWZ0ZXJEb3QpO1xyXG4gICAgICAgICAgdGhpcy5kb3RQb3NpdGlvbiA9IHRoaXMudmFsdWUudG9TdHJpbmcoKS5pbmRleE9mKCcuJykgKyAxO1xyXG4gICAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9cXC4vZykpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZG90UG9zaXRpb24gPiB0aGlzLmN1cnNvclBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50bXAgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY291bnQgPSB0aGlzLnRtcCArICt0aGlzLmludFN0ZXA7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMubWF4ID09PSBudWxsIHx8IE51bWJlcih0aGlzLmNvdW50KSA8PSB0aGlzLm1heCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm1heCA9PT0gbnVsbCB8fCBOdW1iZXIodGhpcy52YWx1ZSkgPCBOdW1iZXIodGhpcy5tYXgpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXN0b21TdGVwICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudG1wID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlLnJlcGxhY2UoLywvZywgJycpKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0U3RlcCA9XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChkZWZhdWx0U3RlcC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KSkgK1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQodGhpcy5jdXN0b21TdGVwLnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpKSAtXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChkZWZhdWx0U3RlcC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY291bnQgPSBwYXJzZUZsb2F0KHRoaXMudG1wKSArIHRoaXMubGFzdFN0ZXA7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpLnJlcGxhY2UoLywvZywgJycpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy50bXAgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gcGFyc2VGbG9hdCh0aGlzLnRtcCkgKyBkZWZhdWx0U3RlcDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkucmVwbGFjZSgvLC9nLCAnJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXggPT09IG51bGwgfHwgTnVtYmVyKHRoaXMudmFsdWUpIDwgcGFyc2VJbnQodGhpcy5tYXgudG9TdHJpbmcoKSkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnRtcCA9IHRoaXMudmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKC8sL2csICcnKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gK3RoaXMudG1wICsgK3RoaXMuaW50U3RlcDtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9TdHJpbmcoKS5yZXBsYWNlKC8sL2csICcnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG93blN0ZXBIYW5kZWwoKSB7XHJcbiAgICB0aGlzLnVzZXJFZGl0ZSA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5taW4gIT0gbnVsbCAmJiB0aGlzLnZhbHVlID09IG51bGwpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluLnRvU3RyaW5nKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5yZWFkb25seSA9PT0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCBjb3VudEFmdGVyRG90ID1cclxuICAgICAgICAgIHRoaXMudmFsdWUgIT09IG51bGwgJiYgdGhpcy52YWx1ZSAhPT0gJycgJiYgdGhpcy52YWx1ZSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgID8gdGhpcy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCAtIDEgLSB0aGlzLnZhbHVlLnRvU3RyaW5nKCkuaW5kZXhPZignLicpXHJcbiAgICAgICAgICAgIDogMDtcclxuICAgICAgICBpZiAodGhpcy52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlID0gJzAnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBkZWZhdWx0U3RlcDogbnVtYmVyID1cclxuICAgICAgICAgICAgY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IE1hdGgucG93KHRoaXMuZGVjaW1hbENvbnN0YW50LCB0aGlzLmRlY2ltYWxOdW1iZXIpIDogTWF0aC5wb3codGhpcy5kZWNpbWFsQ29uc3RhbnQsIGNvdW50QWZ0ZXJEb3QpO1xyXG4gICAgICAgICAgdGhpcy5kb3RQb3NpdGlvbiA9IHRoaXMudmFsdWUudG9TdHJpbmcoKS5pbmRleE9mKCcuJykgKyAxO1xyXG4gICAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9cXC4vZykpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZG90UG9zaXRpb24gPiB0aGlzLmN1cnNvclBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50bXAgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY291bnQgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpIC0gK3RoaXMuaW50U3RlcDtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5taW4gPT09IG51bGwgfHwgTnVtYmVyKHRoaXMuY291bnQpID49IHRoaXMubWluKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb3VudC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KS5yZXBsYWNlKC8sL2csICcnKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMubWluID09PSBudWxsIHx8IE51bWJlcih0aGlzLnZhbHVlKSA+IE51bWJlcih0aGlzLm1pbikpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1c3RvbVN0ZXAgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy50bXAgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxhc3RTdGVwID1cclxuICAgICAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KGRlZmF1bHRTdGVwLnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpKSArXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdCh0aGlzLmN1c3RvbVN0ZXAudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkpIC1cclxuICAgICAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KGRlZmF1bHRTdGVwLnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb3VudCA9IHBhcnNlRmxvYXQodGhpcy50bXApIC0gdGhpcy5sYXN0U3RlcDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnRtcCA9IHBhcnNlRmxvYXQodGhpcy52YWx1ZS5yZXBsYWNlKC8sL2csICcnKSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY291bnQgPSBwYXJzZUZsb2F0KHRoaXMudG1wKSAtIGRlZmF1bHRTdGVwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb3VudC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1pbiA9PT0gbnVsbCB8fCBOdW1iZXIodGhpcy52YWx1ZSkgPiBwYXJzZUludCh0aGlzLm1pbi50b1N0cmluZygpKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudG1wID0gK3RoaXMudmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKC8sL2csICcnKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gK3RoaXMudG1wIC0gK3RoaXMuaW50U3RlcDtcclxuICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb3VudC50b1N0cmluZygpLnJlcGxhY2UoLywvZywgJycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
621
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWNvcmV4L2NvbXBvbmVudHMvIiwic291cmNlcyI6WyJsaWIvbnVtYmVyLWJveC9udW1iZXItYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFRcEYsSUFBYSxvQkFBb0IsNEJBQWpDLE1BQWEsb0JBQXFCLFNBQVEsbUJBQW1CO0lBMEozRCxZQUFzQixHQUFzQixFQUFFLEdBQWU7UUFDM0QsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQURJLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBekpuQyxRQUFHLEdBQVcsSUFBSSxDQUFDO1FBQ25CLFFBQUcsR0FBVyxJQUFJLENBQUM7UUFHNUIsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFL0IsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFHOUIsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFHNUIsZUFBVSxHQUFZLElBQUksQ0FBQztRQUczQixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFbkMsdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUUzQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBSTNCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUczQixvQkFBZSxHQUFXLEdBQUcsQ0FBQztRQUM5QixhQUFRLEdBQVcsSUFBSSxDQUFDO1FBRWYsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUNwQixrQkFBYSxHQUFXLElBQUksQ0FBQztRQUM3QixlQUFVLEdBQVcsSUFBSSxDQUFDO1FBMEhqQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBeEhELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBVyxLQUFLLENBQUMsQ0FBUztRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUU7WUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztZQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztTQUNwQjthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7Z0JBQzdHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUU7b0JBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO29CQUNwQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO29CQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztvQkFFcEIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEdBQUcsRUFBRTt3QkFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDOzRCQUN2QixZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVM7NEJBQzVCLFNBQVMsRUFBRSxJQUFJOzRCQUNmLEtBQUssRUFBRSxJQUFJOzRCQUNYLFFBQVEsRUFDTixJQUFJLENBQUMsYUFBYSxJQUFJLEdBQUc7Z0NBQ3ZCLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRztvQ0FDWCxDQUFDLENBQUMsSUFBSTtvQ0FDTixDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dDQUNqQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUztvQ0FDbkMsQ0FBQyxDQUFDLElBQUk7b0NBQ04sQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHO3dDQUNiLENBQUMsQ0FBQyxJQUFJO3dDQUNOLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDOzRCQUNqQixXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhO3lCQUNwQyxDQUFDLENBQUM7d0JBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7d0JBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQ3pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3FCQUNyRDtpQkFDRjtxQkFBTTtvQkFDTCxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUVqQixnQ0FBZ0M7b0JBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFFNUUsNENBQTRDO29CQUM1Qyw0RUFBNEU7b0JBQzVFLHdGQUF3RjtvQkFDeEYsZ0dBQWdHO29CQUNoRyxxQkFBcUI7b0JBQ3JCLDZDQUE2QztvQkFDN0MsTUFBTTtvQkFDTixJQUFJO29CQUVKLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTt3QkFDaEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQzt3QkFDekIsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7NEJBQy9ELElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dDQUM1QyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7NkJBQ3ZDO2lDQUFNO2dDQUNMLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQzs2QkFDaEM7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRTt3QkFDdEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQzt3QkFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7d0JBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3pGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDOzRCQUN2QixZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVM7NEJBQzVCLFNBQVMsRUFBRSxJQUFJOzRCQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7NEJBQ3hFLFFBQVEsRUFDTixJQUFJLENBQUMsYUFBYSxJQUFJLEdBQUc7Z0NBQ3ZCLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRztvQ0FDWCxDQUFDLENBQUMsSUFBSTtvQ0FDTixDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dDQUNqQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUztvQ0FDbkMsQ0FBQyxDQUFDLElBQUk7b0NBQ04sQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHO3dDQUNiLENBQUMsQ0FBQyxJQUFJO3dDQUNOLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDOzRCQUNqQixXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhO3lCQUNwQyxDQUFDLENBQUM7d0JBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7d0JBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQ3pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3FCQUNyRDtpQkFDRjthQUNGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO2dCQUNwQixDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNULE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUVwQixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssR0FBRyxFQUFFO29CQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7d0JBQ3ZCLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUzt3QkFDNUIsU0FBUyxFQUFFLElBQUk7d0JBQ2YsS0FBSyxFQUFFLElBQUk7d0JBQ1gsUUFBUSxFQUNOLElBQUksQ0FBQyxhQUFhLElBQUksR0FBRzs0QkFDdkIsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHO2dDQUNYLENBQUMsQ0FBQyxJQUFJO2dDQUNOLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7NEJBQ2pDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTO2dDQUNuQyxDQUFDLENBQUMsSUFBSTtnQ0FDTixDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUc7b0NBQ2IsQ0FBQyxDQUFDLElBQUk7b0NBQ04sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7d0JBQ2pCLFdBQVcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWE7cUJBQ3BDLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztvQkFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDekIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ3JEO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFNRCxVQUFVLENBQUMsQ0FBQztRQUNWLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQUk7UUFDWixJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1gsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZCxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQztRQUMzQixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDbkIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDekM7UUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFO1lBQzNCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUU7Z0JBQzVCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQ3ZELElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3RCLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNUO1NBQ0Y7UUFFRCxvQ0FBb0M7SUFDdEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFLO1FBQ2YsSUFBSyxLQUFhLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztZQUUxRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRW5CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztZQUNyRCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDUDtRQUNELElBQUssS0FBYSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7WUFFMUQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVuQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7WUFDckQsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ1A7UUFDRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztRQUNwQyxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQztRQUV0QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0RCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQzdELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUM1RCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUN4QjtRQUVELHFDQUFxQztRQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEtBQUssQ0FBQyxFQUFFO1lBQzVGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO1lBQzlELElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDO1NBQzFCO1FBRUQscUNBQXFDO1FBQ3JDLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDdkMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3hCO1lBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN6QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDeEI7U0FDRjtRQUNELHVDQUF1QztRQUN2QyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssQ0FBQyxFQUFFO1lBQzdCLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQzVELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUN4QjtpQkFBTTtnQkFDTCx1Q0FBdUM7Z0JBQ3ZDLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxDQUFDLEVBQUU7b0JBQzNELElBQUksU0FBUyxLQUFLLEdBQUcsRUFBRTt3QkFDckIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO3FCQUN4QjtpQkFDRjtnQkFDRCw0Q0FBNEM7Z0JBQzVDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDcEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ25FLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN6QyxJQUFJLFFBQVEsR0FBRyxDQUFDLEdBQUcsUUFBUSxHQUFHLGNBQWMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxHQUFHLFFBQVEsRUFBRTt3QkFDakksS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO3FCQUN4QjtpQkFDRjtnQkFDRCxvQkFBb0I7Z0JBQ3BCLElBQUksU0FBUyxLQUFLLEdBQUcsRUFBRTtvQkFDckIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3JFLGdDQUFnQztvQkFDaEMsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUNwQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7cUJBQ3hCO29CQUNELGdDQUFnQztvQkFDaEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO3dCQUNqQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7cUJBQ3hCO29CQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO29CQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDdkI7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFvQjtRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssV0FBVyxFQUFFO1lBQ3hELElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1lBQ25ELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDekI7UUFFRCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFO1lBQzNCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNqQjtRQUVELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2pCO1FBRUQsc0JBQXNCO1FBQ3RCLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxZQUFZLEVBQUU7WUFDM0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxLQUFLLENBQUMsRUFBRTtnQkFDNUYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUM7YUFDL0Q7U0FDRjtRQUVELGNBQWM7UUFDZCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssTUFBTSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsYUFBYTtRQUNiLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxLQUFLLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUN6QztRQUVELHNCQUFzQjtRQUN0QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbkIsb0JBQW9CO1FBQ3BCLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQ2pELElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO2FBQ3pCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDO2FBQzFCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQW9CO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUU7WUFDeEQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN6QjtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxLQUFLLEVBQUU7WUFDM0IsTUFBTSxhQUFhLEdBQ2pCLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUztnQkFDbEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ3ZFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDUixNQUFNLFdBQVcsR0FDZixhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzFJLHVDQUF1QztZQUN2QyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3BELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNDLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO29CQUMzQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssV0FBVyxFQUFFO3dCQUM3QixJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDcEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzt3QkFDdEMsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7NEJBQy9ELHVEQUF1RDs0QkFDdkQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7eUJBQzFHO3FCQUNGO29CQUVELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxTQUFTLEVBQUU7d0JBQzNCLElBQUksQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUNwRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUN0QyxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTs0QkFDL0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7eUJBQzFHO3FCQUNGO2lCQUNGO3FCQUFNO29CQUNMLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUU7d0JBQzdCLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFOzRCQUM5RCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFO2dDQUM1QixJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFFBQVE7b0NBQ1gsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dDQUN4RyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dDQUM1RyxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztnQ0FDM0csSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7Z0NBQ2xELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDOzZCQUMxRztpQ0FBTTtnQ0FDTCxJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQztnQ0FDaEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7NkJBQzFHO3lCQUNGO3FCQUNGO29CQUVELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxTQUFTLEVBQUU7d0JBQzNCLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFOzRCQUM5RCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFO2dDQUM1QixJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFFBQVE7b0NBQ1gsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dDQUN4RyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dDQUM1RyxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztnQ0FDM0csSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7Z0NBQ2xELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDOzZCQUMxRztpQ0FBTTtnQ0FDTCxJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQztnQ0FDaEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7NkJBQzFHO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFdBQVcsRUFBRTtvQkFDN0IsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTt3QkFDMUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO3FCQUNsQzt5QkFBTTt3QkFDTCxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRTs0QkFDM0UsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtnQ0FDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7NkJBQ2xCO2lDQUFNO2dDQUNMLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0NBQ3BELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQ0FDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7NkJBQ3REO3lCQUNGO3FCQUNGO2lCQUNGO2dCQUNELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxTQUFTLEVBQUU7b0JBQzNCLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7d0JBQzFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztxQkFDbEM7eUJBQU07d0JBQ0wsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUU7NEJBQzNFLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7Z0NBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDOzZCQUNsQjtpQ0FBTTtnQ0FDTCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQ0FDbkQsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2dDQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQzs2QkFDdEQ7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO1FBRUQsb0JBQW9CO1FBQ3BCLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUU7WUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7WUFDMUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEtBQUssQ0FBQyxFQUFFO1lBQzVGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFFBQVEsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3SCx5REFBeUQ7UUFDekQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFJO1FBQ2QsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksRUFBRTtZQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2FBQ2pCO1NBQ0Y7UUFDRCxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7YUFDakI7U0FDRjtJQUNILENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFJO1FBQ3JCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxDQUFDLEVBQUU7WUFDcEQsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDL0IsT0FBTyxRQUFRLENBQUM7U0FDakI7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEdBQUc7UUFDeEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNsQzthQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDckMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQixLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNoQyxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNsQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDaEI7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO1lBQzFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNsQzthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssRUFBRTtnQkFDM0IsTUFBTSxhQUFhLEdBQ2pCLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUztvQkFDbEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7b0JBQ3ZFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ1IsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtvQkFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7aUJBQ2xCO3FCQUFNO29CQUNMLE1BQU0sV0FBVyxHQUNmLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7b0JBQzFJLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUMxRCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7d0JBQ3BELElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFOzRCQUMxQyxJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDcEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzs0QkFDdEMsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0NBQ3ZELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDOzZCQUMxRzt5QkFDRjs2QkFBTTs0QkFDTCxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQ0FDOUQsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRTtvQ0FDNUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0NBQ3BELElBQUksQ0FBQyxRQUFRO3dDQUNYLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQzs0Q0FDeEcsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQzs0Q0FDNUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7b0NBQzNHLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO29DQUNsRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lDQUM1SDtxQ0FBTTtvQ0FDTCxJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQ0FDcEQsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQztvQ0FDaEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztpQ0FDNUg7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7eUJBQU07d0JBQ0wsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUU7NEJBQzNFLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDOzRCQUNuRCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7NEJBRXZDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3lCQUN0RDtxQkFDRjtpQkFDRjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDMUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2xDO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFO2dCQUMzQixNQUFNLGFBQWEsR0FDakIsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTO29CQUNsRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztvQkFDdkUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDUixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO29CQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztpQkFDbEI7cUJBQU07b0JBQ0wsTUFBTSxXQUFXLEdBQ2YsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUMsQ0FBQztvQkFDMUksSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzFELElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTt3QkFDcEQsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUU7NEJBQzFDLElBQUksQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDOzRCQUNwRCxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7NEJBQ3RFLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO2dDQUN2RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDOzZCQUM1SDt5QkFDRjs2QkFBTTs0QkFDTCxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQ0FDOUQsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRTtvQ0FDNUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0NBQ3BELElBQUksQ0FBQyxRQUFRO3dDQUNYLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQzs0Q0FDeEcsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQzs0Q0FDNUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7b0NBQzNHLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO29DQUNsRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztpQ0FDMUc7cUNBQU07b0NBQ0wsSUFBSSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0NBQ3BELElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUM7b0NBQ2hELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lDQUMxRzs2QkFDRjt5QkFDRjtxQkFDRjt5QkFBTTt3QkFDTCxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRTs0QkFDM0UsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQzs0QkFDcEQsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDOzRCQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQzt5QkFDdEQ7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0lBQ0gsQ0FBQztDQUNGLENBQUE7O1lBOWI0QixpQkFBaUI7WUFBTyxVQUFVOztBQXpKcEQ7SUFBUixLQUFLLEVBQUU7O2lEQUFvQjtBQUNuQjtJQUFSLEtBQUssRUFBRTs7aURBQW9CO0FBRzVCO0lBREMsS0FBSyxFQUFFOzsyREFDdUI7QUFFL0I7SUFEQyxLQUFLLEVBQUU7OzBEQUNzQjtBQUc5QjtJQURDLEtBQUssRUFBRTs7eURBQ29CO0FBRzVCO0lBREMsS0FBSyxFQUFFOzt3REFDbUI7QUFHM0I7SUFEQyxLQUFLLEVBQUU7OytEQUMyQjtBQWdCMUI7SUFBUixLQUFLLEVBQUU7O3FEQUFxQjtBQUNwQjtJQUFSLEtBQUssRUFBRTs7MkRBQThCO0FBQzdCO0lBQVIsS0FBSyxFQUFFOzt3REFBMkI7QUFsQ3hCLG9CQUFvQjtJQVBoQyxTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsZUFBZTtRQUN6QixtdEVBQTBDO1FBQzFDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1FBQy9DLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTtRQUNyQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsc0JBQW9CLEVBQUUsQ0FBQztLQUNwRixDQUFDO3FDQTJKMkIsaUJBQWlCLEVBQU8sVUFBVTtHQTFKbEQsb0JBQW9CLENBd2xCaEM7U0F4bEJZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBBZnRlclZpZXdJbml0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBWEJhc2VUZXh0Q29tcG9uZW50LCBBWFZhbGlkYXRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS9lbGVtZW50LmNsYXNzJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdheC1udW1iZXItYm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbnVtYmVyLWJveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgaG9zdDogeyBzdHlsZTogJ2Rpc3BsYXk6IGNvbnRlbnRzOycgfSxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYVmFsaWRhdGFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWE51bWJlckJveENvbXBvbmVudCB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhOdW1iZXJCb3hDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBtaW46IG51bWJlciA9IG51bGw7XHJcbiAgQElucHV0KCkgbWF4OiBudW1iZXIgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dTZXBhcmF0b3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHNob3dDdXJyZW5jeTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dDb3VudGVyOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzY3JvbGxXZWVsOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzaG93RG91YmxlQ291bnRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICB1c2VyUXVlc3Rpb25VcGRhdGUgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcblxyXG4gIHVzZXJFZGl0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICB0bXA6IGFueTtcclxuICBjb3VudDogbnVtYmVyO1xyXG4gIGZpbmREb3RzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZmluZE1pbnVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3Vyc29yUG9zaXRpb246IG51bWJlciA9IDA7XHJcbiAgZG90UG9zaXRpb246IG51bWJlcjtcclxuICB0ZXh0VmFsdWU6IHN0cmluZztcclxuICBkZWNpbWFsQ29uc3RhbnQ6IG51bWJlciA9IDAuMTtcclxuICBsYXN0U3RlcDogbnVtYmVyID0gbnVsbDtcclxuXHJcbiAgQElucHV0KCkgaW50U3RlcDogbnVtYmVyID0gMTtcclxuICBASW5wdXQoKSBkZWNpbWFsTnVtYmVyOiBudW1iZXIgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGN1c3RvbVN0ZXA6IG51bWJlciA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgX3ZhbHVlczogc3RyaW5nO1xyXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZXM7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgdmFsdWUodjogc3RyaW5nKSB7XHJcbiAgICBpZiAodiA9PT0gJy0nKSB7XHJcbiAgICAgIHRoaXMudGV4dFZhbHVlID0gJy0nO1xyXG4gICAgICB0aGlzLl92YWx1ZXMgPSAnLSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodiA9PT0gJycgfHwgdiA9PSBudWxsIHx8IHYgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBpc05hTihOdW1iZXIodi50b1N0cmluZygpLnJlcGxhY2UoLywvZywgJycpKSkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKHYgPT09ICcnIHx8IHYgPT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMudGV4dFZhbHVlID0gJyc7XHJcbiAgICAgICAgICBjb25zdCBvbGQgPSB0aGlzLl92YWx1ZXM7XHJcbiAgICAgICAgICB0aGlzLl92YWx1ZXMgPSBudWxsO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLl92YWx1ZXMgIT09IG9sZCkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdCh7XHJcbiAgICAgICAgICAgICAgaXNVc2VyQ2hhbmdlOiB0aGlzLnVzZXJFZGl0ZSxcclxuICAgICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICAgICAgb2xkVmFsdWU6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dTZXBhcmF0b3IgJiYgb2xkXHJcbiAgICAgICAgICAgICAgICAgID8gb2xkID09PSAnLSdcclxuICAgICAgICAgICAgICAgICAgICA/IG51bGxcclxuICAgICAgICAgICAgICAgICAgICA6IE51bWJlcihvbGQucmVwbGFjZSgvLC9nLCAnJykpXHJcbiAgICAgICAgICAgICAgICAgIDogb2xkID09PSBudWxsIHx8IG9sZCA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICAgICAgICA6IG9sZCA9PT0gJy0nXHJcbiAgICAgICAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICAgICAgICA6IE51bWJlcihvbGQpLFxyXG4gICAgICAgICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJFZGl0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJWYWxpZGF0aW9uU3R5bGUodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdiA9IHYudG9TdHJpbmcoKTtcclxuXHJcbiAgICAgICAgICAvLyB0aGlzLmFkZENvbW1hcyh2LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgdGhpcy50ZXh0VmFsdWUgPSB0aGlzLnNob3dTZXBhcmF0b3IgJiYgdiA/IHRoaXMuYWRkQ29tbWFzKHYudG9TdHJpbmcoKSkgOiB2O1xyXG5cclxuICAgICAgICAgIC8vIGlmICh0aGlzLnRleHRWYWx1ZS5pbmRleE9mKCcuJykgIT09IC0xKSB7XHJcbiAgICAgICAgICAvLyAgIC8vIGNvbnN0IGRvdHR0PSAodGhpcy50ZXh0VmFsdWUubGVuZ3RoLTEpIC0gdGhpcy50ZXh0VmFsdWUuaW5kZXhPZignLicpXHJcbiAgICAgICAgICAvLyAgIGlmICh0aGlzLnRleHRWYWx1ZS5sZW5ndGggLSAxIC0gdGhpcy50ZXh0VmFsdWUuaW5kZXhPZignLicpIDwgdGhpcy5kZWNpbWFsTnVtYmVyKSB7XHJcbiAgICAgICAgICAvLyAgICAgY29uc3QgYSA9IHRoaXMuZGVjaW1hbE51bWJlciAtICh0aGlzLnRleHRWYWx1ZS5sZW5ndGggLSAxIC0gdGhpcy50ZXh0VmFsdWUuaW5kZXhPZignLicpKTtcclxuICAgICAgICAgIC8vICAgICBjb25zdCB6ID0gJzAnO1xyXG4gICAgICAgICAgLy8gICAgIHRoaXMudGV4dFZhbHVlID0gdGhpcy50ZXh0VmFsdWUgKyAnMCc7XHJcbiAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5fdmFsdWVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZCA9IHRoaXMuX3ZhbHVlcztcclxuICAgICAgICAgICAgaWYgKG9sZC50b1N0cmluZygpLnNlYXJjaCgvXFwuL2cpICE9PSB2LnRvU3RyaW5nKCkuc2VhcmNoKC9cXC4vZykpIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA8PSBvbGQuc2VhcmNoKC9cXC4vZykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSB2LnNlYXJjaCgvXFwuL2cpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnNvclBvc2l0aW9uID0gdi5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodiAhPT0gdGhpcy5fdmFsdWVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZCA9IHRoaXMuX3ZhbHVlcztcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gdjtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuc2hvd1NlcGFyYXRvciAmJiB2ID8gTnVtYmVyKHYucmVwbGFjZSgvLC9nLCAnJykpIDogTnVtYmVyKHYpKTtcclxuICAgICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgICAgICAgICBpc1VzZXJDaGFuZ2U6IHRoaXMudXNlckVkaXRlLFxyXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5zaG93U2VwYXJhdG9yICYmIHYgPyBOdW1iZXIodi5yZXBsYWNlKC8sL2csICcnKSkgOiBOdW1iZXIodiksXHJcbiAgICAgICAgICAgICAgb2xkVmFsdWU6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dTZXBhcmF0b3IgJiYgb2xkXHJcbiAgICAgICAgICAgICAgICAgID8gb2xkID09PSAnLSdcclxuICAgICAgICAgICAgICAgICAgICA/IG51bGxcclxuICAgICAgICAgICAgICAgICAgICA6IE51bWJlcihvbGQucmVwbGFjZSgvLC9nLCAnJykpXHJcbiAgICAgICAgICAgICAgICAgIDogb2xkID09PSBudWxsIHx8IG9sZCA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICAgICAgICA6IG9sZCA9PT0gJy0nXHJcbiAgICAgICAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICAgICAgICA6IE51bWJlcihvbGQpLFxyXG4gICAgICAgICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJFZGl0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJWYWxpZGF0aW9uU3R5bGUodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50ZXh0VmFsdWUgPSAnJztcclxuICAgICAgICB2ID0gbnVsbDtcclxuICAgICAgICBjb25zdCBvbGQgPSB0aGlzLl92YWx1ZXM7XHJcbiAgICAgICAgdGhpcy5fdmFsdWVzID0gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlcyAhPT0gb2xkKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgICAgICBpc1VzZXJDaGFuZ2U6IHRoaXMudXNlckVkaXRlLFxyXG4gICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgICAgICBvbGRWYWx1ZTpcclxuICAgICAgICAgICAgICB0aGlzLnNob3dTZXBhcmF0b3IgJiYgb2xkXHJcbiAgICAgICAgICAgICAgICA/IG9sZCA9PT0gJy0nXHJcbiAgICAgICAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICAgICAgICA6IE51bWJlcihvbGQucmVwbGFjZSgvLC9nLCAnJykpXHJcbiAgICAgICAgICAgICAgICA6IG9sZCA9PT0gbnVsbCB8fCBvbGQgPT09IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgPyBudWxsXHJcbiAgICAgICAgICAgICAgICA6IG9sZCA9PT0gJy0nXHJcbiAgICAgICAgICAgICAgICA/IG51bGxcclxuICAgICAgICAgICAgICAgIDogTnVtYmVyKG9sZCksXHJcbiAgICAgICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMudXNlckVkaXRlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyVmFsaWRhdGlvblN0eWxlKHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLCByZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIHN1cGVyKGNkciwgcmVmKTtcclxuICAgIHRoaXMudGV4dEFsaWduID0gJ2xlZnQnO1xyXG4gIH1cclxuXHJcbiAgYWRkQ29tbWFzMih4KSB7XHJcbiAgICByZXR1cm4geC50b1N0cmluZygpLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csICcsJyk7XHJcbiAgfVxyXG5cclxuICBhZGRDb21tYXMoblN0cikge1xyXG4gICAgblN0ciArPSAnJztcclxuICAgIGNvbnN0IHggPSBuU3RyLnNwbGl0KCcuJyk7XHJcbiAgICBsZXQgeDEgPSB4WzBdO1xyXG4gICAgY29uc3QgeDIgPSB4Lmxlbmd0aCA+IDEgPyAnLicgKyB4WzFdIDogJyc7XHJcbiAgICBjb25zdCByZ3ggPSAvKFxcZCspKFxcZHszfSkvO1xyXG4gICAgd2hpbGUgKHJneC50ZXN0KHgxKSkge1xyXG4gICAgICB4MSA9IHgxLnJlcGxhY2Uocmd4LCAnJDEnICsgJywnICsgJyQyJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geDEgKyB4MjtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgPT09IGZhbHNlKSB7XHJcbiAgICAgIGlmICh0aGlzLnNjcm9sbFdlZWwgPT09IHRydWUpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIChlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlV2hlZWwoZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LCA1MDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy52YWx1ZSA9IHRoaXMubWluLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVXaGVlbChldmVudCkge1xyXG4gICAgaWYgKChldmVudCBhcyBhbnkpLndoZWVsRGVsdGEgPiAwKSB7XHJcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ3RyYW5zcGFyZW50JztcclxuXHJcbiAgICAgIHRoaXMudXBTdGVwSGFuZGVsKCk7XHJcbiAgICAgIHRoaXMuZGVsYXlTZWFyY2goKTtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0Q2FyZXQoKTtcclxuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICdhdXRvJztcclxuICAgICAgfSwgMCk7XHJcbiAgICB9XHJcbiAgICBpZiAoKGV2ZW50IGFzIGFueSkud2hlZWxEZWx0YSA8IDApIHtcclxuICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG5cclxuICAgICAgdGhpcy5kb3duU3RlcEhhbmRlbCgpO1xyXG4gICAgICB0aGlzLmRlbGF5U2VhcmNoKCk7XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldENhcmV0KCk7XHJcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfVxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlS2V5UHJlc3MoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy51c2VyRWRpdGUgPSB0cnVlO1xyXG4gICAgY29uc3QgTnVtYmVyRG90cGF0dGVybiA9IC9bMC05XFwuXS9nO1xyXG4gICAgY29uc3QgTnVtYmVyTWludXNQYXR0ZXJuID0gL1swLTlcXC1dL2c7XHJcblxyXG4gICAgY29uc3QgaW5wdXRDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5jaGFyQ29kZSk7XHJcblxyXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9cXC4vZykgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5maW5kRG90cyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS50b1N0cmluZygpLnNlYXJjaCgnLScpID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZmluZE1pbnVzID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZ2V0IGN1cnN1ciBwb3NpdGlvbiB3aGVuIGtleSBwcmVzc1xyXG4gICAgaWYgKHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCB8fCB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IDApIHtcclxuICAgICAgdGhpcy5jdXJzb3JQb3NpdGlvbiA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcclxuICAgICAgdGhpcy5jdXJzb3JQb3NpdGlvbiArPSAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNvbnRyb2wgY3Vyc29yIHdoZW4gaW4gZmlyc3QgSW5kZXhcclxuICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDEpIHtcclxuICAgICAgaWYgKCFOdW1iZXJNaW51c1BhdHRlcm4udGVzdChpbnB1dENoYXIpKSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLm1hdGNoKC9cXC0vZykpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBjb250cm9sIGN1cnNvciB3aGVuIGluIGFub3RoZXIgaW5kZXhcclxuICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uICE9PSAxKSB7XHJcbiAgICAgIGlmIChldmVudC5rZXlDb2RlICE9PSA4ICYmICFOdW1iZXJEb3RwYXR0ZXJuLnRlc3QoaW5wdXRDaGFyKSkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gZm9yIGNvbnRvciBkZWNpbWFsIGZpZ3VyID0gMCBvciBudWxsXHJcbiAgICAgICAgaWYgKHRoaXMuZGVjaW1hbE51bWJlciA9PT0gbnVsbCB8fCB0aGlzLmRlY2ltYWxOdW1iZXIgPT09IDApIHtcclxuICAgICAgICAgIGlmIChpbnB1dENoYXIgPT09ICcuJykge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb250cm9sIGRlY2ltYWwgbnVtYmVyIChmaWd1ciBvZiBkZWNpbWFsKVxyXG4gICAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvXFwuL2cpKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWd1cmVBZnRlckRvdCA9IHRoaXMudmFsdWUubGVuZ3RoIC0gdGhpcy52YWx1ZS5pbmRleE9mKCcuJyk7XHJcbiAgICAgICAgICBjb25zdCBkb3RJbmRleCA9IHRoaXMudmFsdWUuaW5kZXhPZignLicpO1xyXG4gICAgICAgICAgaWYgKGRvdEluZGV4IC0gMSArIGRvdEluZGV4ICsgZmlndXJlQWZ0ZXJEb3QgPiBkb3RJbmRleCAtIDEgKyBkb3RJbmRleCArIHRoaXMuZGVjaW1hbE51bWJlciAmJiB0aGlzLmN1cnNvclBvc2l0aW9uIC0gMSA+IGRvdEluZGV4KSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbnRyb2wgJy4nIGlucHV0XHJcbiAgICAgICAgaWYgKGlucHV0Q2hhciA9PT0gJy4nKSB7XHJcbiAgICAgICAgICBjb25zdCBsYXN0Q2hhciA9IHRoaXMudmFsdWUudG9TdHJpbmcoKS5jaGFyQXQodGhpcy52YWx1ZS5sZW5ndGggLSAxKTtcclxuICAgICAgICAgIC8vIGNvbnRyb2wgLiB3aGVuIGxhc3QgY2hhciBpcyAtXHJcbiAgICAgICAgICBpZiAobGFzdENoYXIudG9TdHJpbmcoKS5tYXRjaCgvXFwtL2cpKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBjb250cm9sIC4gd2hlbiBmaW5kIGZpcnN0IGRvdFxyXG4gICAgICAgICAgaWYgKHRoaXMuZmluZERvdHMpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZmluZERvdHMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5maW5kTWludXMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIHRoaXMudXNlckVkaXRlID0gdHJ1ZTtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJyB8fCBldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ2F1dG8nO1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcclxuICAgICAgdGhpcy5zZXRDYXJldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgIHRoaXMuc2V0Q2FyZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBsZWZ0ICYgcmlnaHQgQnV0dG9uXHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0JyB8fCBldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xyXG4gICAgICBpZiAodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0IHx8IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBob21lIGJ1dHRvblxyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0hvbWUnKSB7XHJcbiAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGVuZCBidXR0b25cclxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbmQnKSB7XHJcbiAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSB0aGlzLnZhbHVlLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzZXQgZGVsYXkgd2l0aCByeGpzXHJcbiAgICB0aGlzLmRlbGF5U2VhcmNoKCk7XHJcblxyXG4gICAgLy8gYmFja3NwYWNlIENvbnRyb2xcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XHJcbiAgICAgIGlmICh0aGlzLnZhbHVlID09PSBudWxsIHx8IHRoaXMudmFsdWUubGVuZ3RoIDw9IDApIHtcclxuICAgICAgICB0aGlzLmN1cnNvclBvc2l0aW9uID0gMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmN1cnNvclBvc2l0aW9uIC09IDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIHRoaXMudXNlckVkaXRlID0gdHJ1ZTtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJyB8fCBldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucmVhZG9ubHkgPT09IGZhbHNlKSB7XHJcbiAgICAgIGNvbnN0IGNvdW50QWZ0ZXJEb3QgPVxyXG4gICAgICAgIHRoaXMudmFsdWUgIT09IG51bGwgJiYgdGhpcy52YWx1ZSAhPT0gJycgJiYgdGhpcy52YWx1ZSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICA/IHRoaXMudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggLSAxIC0gdGhpcy52YWx1ZS50b1N0cmluZygpLmluZGV4T2YoJy4nKVxyXG4gICAgICAgICAgOiAwO1xyXG4gICAgICBjb25zdCBkZWZhdWx0U3RlcDogbnVtYmVyID1cclxuICAgICAgICBjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gTWF0aC5wb3codGhpcy5kZWNpbWFsQ29uc3RhbnQsIHRoaXMuZGVjaW1hbE51bWJlcikgOiBNYXRoLnBvdyh0aGlzLmRlY2ltYWxDb25zdGFudCwgY291bnRBZnRlckRvdCk7XHJcbiAgICAgIC8vIHN0ZXAgYW5kICstIHdpdGggdXAga2V5IGFuZCBkb3duIGtleVxyXG4gICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL1xcLi9nKSkge1xyXG4gICAgICAgIHRoaXMuZG90UG9zaXRpb24gPSB0aGlzLnZhbHVlLmluZGV4T2YoJy4nKTtcclxuICAgICAgICBpZiAodGhpcy5kb3RQb3NpdGlvbiA+PSB0aGlzLmN1cnNvclBvc2l0aW9uKSB7XHJcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgICAgICB0aGlzLnRtcCA9IHBhcnNlRmxvYXQodGhpcy52YWx1ZS5yZXBsYWNlKC8sL2csICcnKSk7XHJcbiAgICAgICAgICAgIHRoaXMuY291bnQgPSB0aGlzLnRtcCAtICt0aGlzLmludFN0ZXA7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1pbiA9PT0gbnVsbCB8fCBOdW1iZXIodGhpcy5jb3VudCkgPj0gTnVtYmVyKHRoaXMubWluKSkge1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvRml4ZWQodGhpcy5kZWNpbWFsTnVtYmVyKTtcclxuICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb3VudC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xyXG4gICAgICAgICAgICB0aGlzLnRtcCA9IHBhcnNlRmxvYXQodGhpcy52YWx1ZS5yZXBsYWNlKC8sL2csICcnKSk7XHJcbiAgICAgICAgICAgIHRoaXMuY291bnQgPSB0aGlzLnRtcCArICt0aGlzLmludFN0ZXA7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1heCA9PT0gbnVsbCB8fCBOdW1iZXIodGhpcy5jb3VudCkgPD0gTnVtYmVyKHRoaXMubWF4KSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1pbiA9PT0gbnVsbCB8fCBOdW1iZXIodGhpcy52YWx1ZSkgPiBOdW1iZXIodGhpcy5taW4pKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuY3VzdG9tU3RlcCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50bXAgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0U3RlcCA9XHJcbiAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQoZGVmYXVsdFN0ZXAudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkpICtcclxuICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdCh0aGlzLmN1c3RvbVN0ZXAudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkpIC1cclxuICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChkZWZhdWx0U3RlcC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gcGFyc2VGbG9hdCh0aGlzLnRtcCkgLSB0aGlzLmxhc3RTdGVwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG1wID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlLnJlcGxhY2UoLywvZywgJycpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY291bnQgPSBwYXJzZUZsb2F0KHRoaXMudG1wKSAtIGRlZmF1bHRTdGVwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1heCA9PT0gbnVsbCB8fCBOdW1iZXIodGhpcy52YWx1ZSkgPCBOdW1iZXIodGhpcy5tYXgpKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuY3VzdG9tU3RlcCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50bXAgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0U3RlcCA9XHJcbiAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQoZGVmYXVsdFN0ZXAudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkpICtcclxuICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdCh0aGlzLmN1c3RvbVN0ZXAudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkpIC1cclxuICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChkZWZhdWx0U3RlcC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gcGFyc2VGbG9hdCh0aGlzLnRtcCkgKyB0aGlzLmxhc3RTdGVwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG1wID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlLnJlcGxhY2UoLywvZywgJycpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY291bnQgPSBwYXJzZUZsb2F0KHRoaXMudG1wKSArIGRlZmF1bHRTdGVwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5taW4gIT0gbnVsbCAmJiB0aGlzLnZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5taW4gPT09IG51bGwgfHwgTnVtYmVyKHRoaXMudmFsdWUpID4gcGFyc2VJbnQodGhpcy5taW4udG9TdHJpbmcoKSkpIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gJzAnO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRtcCA9ICt0aGlzLnZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gK3RoaXMudG1wIC0gK3RoaXMuaW50U3RlcDtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xyXG4gICAgICAgICAgaWYgKHRoaXMubWluICE9IG51bGwgJiYgdGhpcy52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbi50b1N0cmluZygpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWF4ID09PSBudWxsIHx8IE51bWJlcih0aGlzLnZhbHVlKSA8IHBhcnNlSW50KHRoaXMubWF4LnRvU3RyaW5nKCkpKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9ICcwJztcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50bXAgPSB0aGlzLnZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gK3RoaXMudG1wICsgK3RoaXMuaW50U3RlcDtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc3RvcCB3aGVuIGtleWRvd25cclxuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJyB8fCBldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ3RyYW5zcGFyZW50JztcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUNsaWNrKCkge1xyXG4gICAgaWYgKHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCB8fCB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IDApIHtcclxuICAgICAgdGhpcy5jdXJzb3JQb3NpdGlvbiA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlbGF5U2VhcmNoKCkge1xyXG4gICAgT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgIHRoaXMudXNlclF1ZXN0aW9uVXBkYXRlID0gb2JzZXJ2ZXI7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudXNlclF1ZXN0aW9uVXBkYXRlLnBpcGUoZGVib3VuY2VUaW1lKDEwMDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoKHRleHQ6IHN0cmluZykgPT4gdGhpcy5jaGVja01pbk1heCh0ZXh0KSk7XHJcbiAgICAvLyB0aGlzLnVzZXJRdWVzdGlvblVwZGF0ZS5uZXh0KChlLnRhcmdldCBhcyBhbnkpLnZhbHVlKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnVzZXJRdWVzdGlvblVwZGF0ZS5uZXh0KHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSk7XHJcbiAgICB9LCA1MCk7XHJcbiAgfVxyXG5cclxuICBjaGVja01pbk1heCh0ZXh0KSB7XHJcbiAgICBpZiAodGhpcy5taW4gIT09IG51bGwpIHtcclxuICAgICAgaWYgKCt0ZXh0IDwgdGhpcy5taW4pIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1heCAhPT0gbnVsbCkge1xyXG4gICAgICBpZiAoK3RleHQgPiB0aGlzLm1heCkge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSAnJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG9HZXRDYXJldFBvc2l0aW9uKGN0cmwpIHtcclxuICAgIGxldCBDYXJldFBvcyA9IDA7XHJcbiAgICBpZiAoY3RybC5zZWxlY3Rpb25TdGFydCB8fCBjdHJsLnNlbGVjdGlvblN0YXJ0ID09PSAwKSB7XHJcbiAgICAgIENhcmV0UG9zID0gY3RybC5zZWxlY3Rpb25TdGFydDtcclxuICAgICAgcmV0dXJuIENhcmV0UG9zO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Q2FyZXRQb3NpdGlvbihjdHJsLCBwb3MpIHtcclxuICAgIGlmIChjdHJsLnNldFNlbGVjdGlvblJhbmdlKSB7XHJcbiAgICAgIGN0cmwuZm9jdXMoKTtcclxuICAgICAgY3RybC5zZXRTZWxlY3Rpb25SYW5nZShwb3MsIHBvcyk7XHJcbiAgICB9IGVsc2UgaWYgKGN0cmwuY3JlYXRlVGV4dFJhbmdlKSB7XHJcbiAgICAgIGNvbnN0IHJhbmdlID0gY3RybC5jcmVhdGVUZXh0UmFuZ2UoKTtcclxuICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7XHJcbiAgICAgIHJhbmdlLm1vdmVFbmQoJ2NoYXJhY3RlcicsIHBvcyk7XHJcbiAgICAgIHJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgcG9zKTtcclxuICAgICAgcmFuZ2Uuc2VsZWN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDYXJldCgpIHtcclxuICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbih0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuY3Vyc29yUG9zaXRpb24pO1xyXG4gIH1cclxuXHJcbiAgdXBTdGVwSGFuZGVsKCkge1xyXG4gICAgdGhpcy51c2VyRWRpdGUgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMubWluICE9IG51bGwgJiYgdGhpcy52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbi50b1N0cmluZygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMucmVhZG9ubHkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgY29uc3QgY291bnRBZnRlckRvdCA9XHJcbiAgICAgICAgICB0aGlzLnZhbHVlICE9PSBudWxsICYmIHRoaXMudmFsdWUgIT09ICcnICYmIHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICA/IHRoaXMudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggLSAxIC0gdGhpcy52YWx1ZS50b1N0cmluZygpLmluZGV4T2YoJy4nKVxyXG4gICAgICAgICAgICA6IDA7XHJcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy52YWx1ZSA9ICcwJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgZGVmYXVsdFN0ZXA6IG51bWJlciA9XHJcbiAgICAgICAgICAgIGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyBNYXRoLnBvdyh0aGlzLmRlY2ltYWxDb25zdGFudCwgdGhpcy5kZWNpbWFsTnVtYmVyKSA6IE1hdGgucG93KHRoaXMuZGVjaW1hbENvbnN0YW50LCBjb3VudEFmdGVyRG90KTtcclxuICAgICAgICAgIHRoaXMuZG90UG9zaXRpb24gPSB0aGlzLnZhbHVlLnRvU3RyaW5nKCkuaW5kZXhPZignLicpICsgMTtcclxuICAgICAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvXFwuL2cpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRvdFBvc2l0aW9uID4gdGhpcy5jdXJzb3JQb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHRoaXMudG1wID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlLnJlcGxhY2UoLywvZywgJycpKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gdGhpcy50bXAgKyArdGhpcy5pbnRTdGVwO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm1heCA9PT0gbnVsbCB8fCBOdW1iZXIodGhpcy5jb3VudCkgPD0gdGhpcy5tYXgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5tYXggPT09IG51bGwgfHwgTnVtYmVyKHRoaXMudmFsdWUpIDwgTnVtYmVyKHRoaXMubWF4KSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VzdG9tU3RlcCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnRtcCA9IHBhcnNlRmxvYXQodGhpcy52YWx1ZS5yZXBsYWNlKC8sL2csICcnKSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubGFzdFN0ZXAgPVxyXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQoZGVmYXVsdFN0ZXAudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkpICtcclxuICAgICAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KHRoaXMuY3VzdG9tU3RlcC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KSkgLVxyXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQoZGVmYXVsdFN0ZXAudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gcGFyc2VGbG9hdCh0aGlzLnRtcCkgKyB0aGlzLmxhc3RTdGVwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb3VudC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KS5yZXBsYWNlKC8sL2csICcnKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudG1wID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlLnJlcGxhY2UoLywvZywgJycpKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb3VudCA9IHBhcnNlRmxvYXQodGhpcy50bXApICsgZGVmYXVsdFN0ZXA7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpLnJlcGxhY2UoLywvZywgJycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWF4ID09PSBudWxsIHx8IE51bWJlcih0aGlzLnZhbHVlKSA8IHBhcnNlSW50KHRoaXMubWF4LnRvU3RyaW5nKCkpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50bXAgPSB0aGlzLnZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb3VudCA9ICt0aGlzLnRtcCArICt0aGlzLmludFN0ZXA7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvd25TdGVwSGFuZGVsKCkge1xyXG4gICAgdGhpcy51c2VyRWRpdGUgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMubWluICE9IG51bGwgJiYgdGhpcy52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbi50b1N0cmluZygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMucmVhZG9ubHkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgY29uc3QgY291bnRBZnRlckRvdCA9XHJcbiAgICAgICAgICB0aGlzLnZhbHVlICE9PSBudWxsICYmIHRoaXMudmFsdWUgIT09ICcnICYmIHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICA/IHRoaXMudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggLSAxIC0gdGhpcy52YWx1ZS50b1N0cmluZygpLmluZGV4T2YoJy4nKVxyXG4gICAgICAgICAgICA6IDA7XHJcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy52YWx1ZSA9ICcwJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgZGVmYXVsdFN0ZXA6IG51bWJlciA9XHJcbiAgICAgICAgICAgIGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyBNYXRoLnBvdyh0aGlzLmRlY2ltYWxDb25zdGFudCwgdGhpcy5kZWNpbWFsTnVtYmVyKSA6IE1hdGgucG93KHRoaXMuZGVjaW1hbENvbnN0YW50LCBjb3VudEFmdGVyRG90KTtcclxuICAgICAgICAgIHRoaXMuZG90UG9zaXRpb24gPSB0aGlzLnZhbHVlLnRvU3RyaW5nKCkuaW5kZXhPZignLicpICsgMTtcclxuICAgICAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvXFwuL2cpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRvdFBvc2l0aW9uID4gdGhpcy5jdXJzb3JQb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHRoaXMudG1wID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlLnJlcGxhY2UoLywvZywgJycpKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlLnJlcGxhY2UoLywvZywgJycpKSAtICt0aGlzLmludFN0ZXA7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMubWluID09PSBudWxsIHx8IE51bWJlcih0aGlzLmNvdW50KSA+PSB0aGlzLm1pbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkucmVwbGFjZSgvLC9nLCAnJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm1pbiA9PT0gbnVsbCB8fCBOdW1iZXIodGhpcy52YWx1ZSkgPiBOdW1iZXIodGhpcy5taW4pKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXN0b21TdGVwICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudG1wID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlLnJlcGxhY2UoLywvZywgJycpKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0U3RlcCA9XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChkZWZhdWx0U3RlcC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KSkgK1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQodGhpcy5jdXN0b21TdGVwLnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpKSAtXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChkZWZhdWx0U3RlcC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY291bnQgPSBwYXJzZUZsb2F0KHRoaXMudG1wKSAtIHRoaXMubGFzdFN0ZXA7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy50bXAgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gcGFyc2VGbG9hdCh0aGlzLnRtcCkgLSBkZWZhdWx0U3RlcDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5taW4gPT09IG51bGwgfHwgTnVtYmVyKHRoaXMudmFsdWUpID4gcGFyc2VJbnQodGhpcy5taW4udG9TdHJpbmcoKSkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnRtcCA9ICt0aGlzLnZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb3VudCA9ICt0aGlzLnRtcCAtICt0aGlzLmludFN0ZXA7XHJcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9TdHJpbmcoKS5yZXBsYWNlKC8sL2csICcnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -275,11 +275,11 @@ __decorate([
|
|
|
275
275
|
AXQueryBuilderRuleComponent = __decorate([
|
|
276
276
|
Component({
|
|
277
277
|
selector: 'ax-query-rule',
|
|
278
|
-
template: "<div class=\"condition\" *ngIf=\"parent\">\r\n <div class=\"text {{parent.condition}}\">\r\n <span>{{parent.condition}}</span>\r\n </div>\r\n</div>\r\n<div class=\"handler\">\r\n <i class=\"far fa-grip-lines-vertical\"></i>\r\n</div>\r\n\r\n<div class=\"caption\" [ngClass]=\"{'editable': isEditing}\">\r\n <ng-container *ngIf=\"isEditing;else fieldsTemplate\">\r\n <ax-form-group>\r\n <ax-select-box (selectionChanged)=\"captionChange($event)\" allowNull=\"false\"\r\n [(selectedItems)]=\"rule.dataFieldItem\" textField=\"caption\" valueField=\"dataField\" [items]=\"fields\"\r\n size=\"sm\" mode=\"single\">\r\n </ax-select-box>\r\n </ax-form-group>\r\n </ng-container>\r\n <ng-template #fieldsTemplate>\r\n <div (click)=\"handleEditClick()\">\r\n {{rule.caption}}\r\n </div>\r\n </ng-template>\r\n</div>\r\n\r\n<div class=\"operator\" [ngClass]=\"{'editable': isEditing,'radius':!showValue}\">\r\n <ng-container *ngIf=\"isEditing;else operatorTemplate\">\r\n <ax-form-group>\r\n <ax-select-box #selectBox (selectedItemsChange)=\"operatorChange($event)\" allowNull=\"false\"\r\n [(selectedValues)]=\"rule.operator\" size=\"sm\" mode=\"single\">\r\n <ax-data-source [provideData]=\"provideDataOperator\">\r\n </ax-data-source>\r\n </ax-select-box>\r\n </ax-form-group>\r\n </ng-container>\r\n <ng-template #operatorTemplate>\r\n <div class=\"text\" (click)=\"handleEditClick()\">\r\n {{('queryBuilder.'+rule.operator) | trans}}\r\n </div>\r\n </ng-template>\r\n</div>\r\n<div *ngIf=\"showValue\" class=\"value\" [ngClass]=\"{'editable': isEditing}\">\r\n <ng-container *ngIf=\"isEditing;else valueTemplate\">\r\n\r\n <div *ngIf=\" rule.control && !isOnDemandLabel\" [ngSwitch]=\"rule.control.type\">\r\n <div *ngSwitchCase=\"'textBox'\">\r\n <ax-form-group>\r\n <ax-text-box (onValueChanged)=\"valueChange($event)\" placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\"\r\n [(value)]=\"rule.value\" size=\"sm\">\r\n </ax-text-box>\r\n </ax-form-group>\r\n </div>\r\n <div *ngSwitchCase=\"'selectBox'\">\r\n <ax-form-group>\r\n <ax-select-box placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\" [textField]=\"getOption('textField')\"\r\n [(selectedItems)]=\"rule.valueItem\" [valueField]=\"getOption('valueField')\"\r\n [mode]=\"getOption('mode')\" (selectedItemsChange)=\"selectedItemsChange($event)\" size=\"sm\"\r\n #selectBoxValue [remoteOperation]=\"getOption('remoteOperation')\">\r\n <ax-data-source [provideData]=\"getProvideData\"></ax-data-source>\r\n </ax-select-box>\r\n </ax-form-group>\r\n </div>\r\n <div *ngSwitchCase=\"'numberBox'\">\r\n <ax-form-group>\r\n <ax-number-box (onValueChanged)=\"valueChange($event)\" placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\"\r\n [(value)]=\"rule.value\" size=\"sm\">\r\n </ax-number-box>\r\n </ax-form-group>\r\n </div>\r\n <div *ngSwitchCase=\"'datePicker'\">\r\n\r\n\r\n </div>\r\n <div *ngSwitchCase=\"'boolean'\">\r\n\r\n <ax-form-group>\r\n <ax-select-box #selectBoxBoolean (selectedItemsChange)=\"valueBooleanChange($event)\"\r\n allowNull=\"false\" [selectedValues]=\"rule.value\" size=\"sm\" mode=\"single\">\r\n <ax-data-source [provideData]=\"provideDataBoolean\">\r\n </ax-data-source>\r\n </ax-select-box>\r\n </ax-form-group>\r\n\r\n </div>\r\n <div *ngSwitchDefault>\r\n <ax-form-group>\r\n <ax-text-box (onValueChanged)=\"valueChange($event)\" placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\"\r\n [(value)]=\"rule.value\" size=\"sm\">\r\n </ax-text-box>\r\n\r\n </ax-form-group>\r\n\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isOnDemandLabel\">\r\n\r\n <ax-text-box #textBoxNameValue [value]=\"getOnDemandName(rule.onDemandLabel)\"\r\n (onValueChanged)=\"onDemandLabelChange($event)\" placeholder=\"\u0646\u0627\u0645 \u0645\u062A\u063A\u06CC\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\" size=\"sm\">\r\n <!-- <ax-validation>\r\n <ax-validation-rule type=\"required\"></ax-validation-rule>\r\n </ax-validation> -->\r\n </ax-text-box>\r\n\r\n\r\n </div>\r\n\r\n </ng-container>\r\n <ng-template #valueTemplate>\r\n <div (click)=\"handleEditClick()\">\r\n\r\n {{rule.text}}\r\n\r\n </div>\r\n </ng-template>\r\n</div>\r\n\r\n<div class=\"buttons-list\">\r\n <div *ngIf=\"showValue && isEditing\" class=\"button variable\" [ngClass]=\"{'active-button': isOnDemandLabel}\">\r\n <i class=\"far fa-dollar-sign\"></i>\r\n <ax-check-box [value]=\"isOnDemandLabel\" (onClick)=\"onDemandLabel($event)\">\r\n </ax-check-box>\r\n </div>\r\n\r\n <div class=\"button commit\" (click)=\"handleCommitClick()\" *ngIf=\"isEditing\">\r\n <i class=\"far fa-check\"></i>\r\n </div>\r\n <div class=\"button remove\" (click)=\"handleRemoveClick()\"
|
|
278
|
+
template: "<div class=\"condition\" *ngIf=\"parent\">\r\n <div class=\"text {{parent.condition}}\">\r\n <span>{{parent.condition}}</span>\r\n </div>\r\n</div>\r\n<div class=\"handler\">\r\n <i class=\"far fa-grip-lines-vertical\"></i>\r\n</div>\r\n\r\n<div class=\"caption\" [ngClass]=\"{'editable': isEditing}\">\r\n <ng-container *ngIf=\"isEditing;else fieldsTemplate\">\r\n <ax-form-group>\r\n <ax-select-box (selectionChanged)=\"captionChange($event)\" allowNull=\"false\"\r\n [(selectedItems)]=\"rule.dataFieldItem\" textField=\"caption\" valueField=\"dataField\" [items]=\"fields\"\r\n size=\"sm\" mode=\"single\">\r\n </ax-select-box>\r\n </ax-form-group>\r\n </ng-container>\r\n <ng-template #fieldsTemplate>\r\n <div (click)=\"handleEditClick()\">\r\n {{rule.caption}}\r\n </div>\r\n </ng-template>\r\n</div>\r\n\r\n<div class=\"operator\" [ngClass]=\"{'editable': isEditing,'radius':!showValue}\">\r\n <ng-container *ngIf=\"isEditing;else operatorTemplate\">\r\n <ax-form-group>\r\n <ax-select-box #selectBox (selectedItemsChange)=\"operatorChange($event)\" allowNull=\"false\"\r\n [(selectedValues)]=\"rule.operator\" size=\"sm\" mode=\"single\">\r\n <ax-data-source [provideData]=\"provideDataOperator\">\r\n </ax-data-source>\r\n </ax-select-box>\r\n </ax-form-group>\r\n </ng-container>\r\n <ng-template #operatorTemplate>\r\n <div class=\"text\" (click)=\"handleEditClick()\">\r\n {{('queryBuilder.'+rule.operator) | trans}}\r\n </div>\r\n </ng-template>\r\n</div>\r\n<div *ngIf=\"showValue\" class=\"value\" [ngClass]=\"{'editable': isEditing}\">\r\n <ng-container *ngIf=\"isEditing;else valueTemplate\">\r\n\r\n <div *ngIf=\" rule.control && !isOnDemandLabel\" [ngSwitch]=\"rule.control.type\">\r\n <div *ngSwitchCase=\"'textBox'\">\r\n <ax-form-group>\r\n <ax-text-box (onValueChanged)=\"valueChange($event)\" placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\"\r\n [(value)]=\"rule.value\" size=\"sm\">\r\n </ax-text-box>\r\n </ax-form-group>\r\n </div>\r\n <div *ngSwitchCase=\"'selectBox'\">\r\n <ax-form-group>\r\n <ax-select-box placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\" [textField]=\"getOption('textField')\"\r\n [(selectedItems)]=\"rule.valueItem\" [valueField]=\"getOption('valueField')\"\r\n [mode]=\"getOption('mode')\" (selectedItemsChange)=\"selectedItemsChange($event)\" size=\"sm\"\r\n #selectBoxValue [remoteOperation]=\"getOption('remoteOperation')\">\r\n <ax-data-source [provideData]=\"getProvideData\"></ax-data-source>\r\n </ax-select-box>\r\n </ax-form-group>\r\n </div>\r\n <div *ngSwitchCase=\"'numberBox'\">\r\n <ax-form-group>\r\n <ax-number-box (onValueChanged)=\"valueChange($event)\" placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\"\r\n [(value)]=\"rule.value\" size=\"sm\">\r\n </ax-number-box>\r\n </ax-form-group>\r\n </div>\r\n <div *ngSwitchCase=\"'datePicker'\">\r\n\r\n\r\n </div>\r\n <div *ngSwitchCase=\"'boolean'\">\r\n\r\n <ax-form-group>\r\n <ax-select-box #selectBoxBoolean (selectedItemsChange)=\"valueBooleanChange($event)\"\r\n allowNull=\"false\" [selectedValues]=\"rule.value\" size=\"sm\" mode=\"single\">\r\n <ax-data-source [provideData]=\"provideDataBoolean\">\r\n </ax-data-source>\r\n </ax-select-box>\r\n </ax-form-group>\r\n\r\n </div>\r\n <div *ngSwitchDefault>\r\n <ax-form-group>\r\n <ax-text-box (onValueChanged)=\"valueChange($event)\" placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\"\r\n [(value)]=\"rule.value\" size=\"sm\">\r\n </ax-text-box>\r\n\r\n </ax-form-group>\r\n\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isOnDemandLabel\">\r\n\r\n <ax-text-box #textBoxNameValue [value]=\"getOnDemandName(rule.onDemandLabel)\"\r\n (onValueChanged)=\"onDemandLabelChange($event)\" placeholder=\"\u0646\u0627\u0645 \u0645\u062A\u063A\u06CC\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\" size=\"sm\">\r\n <!-- <ax-validation>\r\n <ax-validation-rule type=\"required\"></ax-validation-rule>\r\n </ax-validation> -->\r\n </ax-text-box>\r\n\r\n\r\n </div>\r\n\r\n </ng-container>\r\n <ng-template #valueTemplate>\r\n <div (click)=\"handleEditClick()\">\r\n\r\n {{rule.text}}\r\n\r\n </div>\r\n </ng-template>\r\n</div>\r\n\r\n<div class=\"buttons-list\">\r\n <div *ngIf=\"showValue && isEditing\" class=\"button variable\" [ngClass]=\"{'active-button': isOnDemandLabel}\">\r\n <i class=\"far fa-dollar-sign\"></i>\r\n <ax-check-box [value]=\"isOnDemandLabel\" (onClick)=\"onDemandLabel($event)\">\r\n </ax-check-box>\r\n </div>\r\n\r\n <div class=\"button commit\" (click)=\"handleCommitClick()\" *ngIf=\"isEditing\">\r\n <i class=\"far fa-check\"></i>\r\n </div>\r\n <div class=\"button remove\" (click)=\"handleRemoveClick()\">\r\n <i class=\"far fa-times\"></i>\r\n </div>\r\n</div>",
|
|
279
279
|
host: { class: 'ax ax-query-rule' },
|
|
280
280
|
encapsulation: ViewEncapsulation.None
|
|
281
281
|
}),
|
|
282
282
|
__metadata("design:paramtypes", [])
|
|
283
283
|
], AXQueryBuilderRuleComponent);
|
|
284
284
|
export { AXQueryBuilderRuleComponent };
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci1ydWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9xdWVyeS1idWlsZGVyL3F1ZXJ5LWJ1aWxkZXItcnVsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBMkIscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBUXBGLElBQWEsMkJBQTJCLEdBQXhDLE1BQWEsMkJBQTJCO0lBNkJ0QztRQXBCQSxjQUFTLEdBQVksSUFBSSxDQUFDO1FBUzFCLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFHbkIsaUJBQVksR0FBMEMsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFHbEcsZ0JBQVcsR0FBMEMsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFFakcsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUzQixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQVlqQyx1QkFBa0IsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3pCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDN0IsT0FBTyxDQUFDO29CQUNOO3dCQUNFLEtBQUssRUFBRSxNQUFNO3dCQUNiLElBQUksRUFBRSxZQUFZLENBQUMs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SW5pdCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYUXVlcnlCdWlsZGVyUnVsZSwgQVhRdWVyeUJ1aWxkZXJHcm91cCwgQVhRdWVyeUJ1aWxkZXJSdWxlRXZlbnQsIEFYUXVlcnlCdWlsZGVyQ29udHJvbCB9IGZyb20gJy4vcXVlcnktYnVpbGRlci5jbGFzcyc7XHJcbmltcG9ydCB7IEFYVHJhbnNsYXRvciB9IGZyb20gJ0BhY29yZXgvY29yZSc7XHJcbmltcG9ydCB7IEFYU2VsZWN0Qm94Q29tcG9uZW50IH0gZnJvbSAnLi4vc2VsZWN0Ym94L3NlbGVjdGJveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBWFRleHRCb3hDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0Ym94L3RleHRib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhWYWxpZGF0aW9uRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL3ZhbGlkYXRpb24vdmFsaWRhdGlvbi1mb3JtLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LXF1ZXJ5LXJ1bGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAncXVlcnktYnVpbGRlci1ydWxlLmNvbXBvbmVudC5odG1sJyxcclxuICBob3N0OiB7IGNsYXNzOiAnYXggYXgtcXVlcnktcnVsZScgfSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWFF1ZXJ5QnVpbGRlclJ1bGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdEJveCcpIHNlbGVjdEJveDogQVhTZWxlY3RCb3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnc2VsZWN0Qm94VmFsdWUnKSBzZWxlY3RCb3hWYWx1ZTogQVhTZWxlY3RCb3hDb21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdEJveEJvb2xlYW4nKSBzZWxlY3RCb3hCb29sZWFuOiBBWFNlbGVjdEJveENvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZCgndGV4dEJveE5hbWVWYWx1ZScpIHRleHRCb3hOYW1lVmFsdWU6IEFYVGV4dEJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKEFYVmFsaWRhdGlvbkZvcm1Db21wb25lbnQpIGZvcm06IEFYVmFsaWRhdGlvbkZvcm1Db21wb25lbnQ7XHJcbiAgQElucHV0KClcclxuICBpc0VkaXRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHJ1bGU6IEFYUXVlcnlCdWlsZGVyUnVsZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwYXJlbnQ6IEFYUXVlcnlCdWlsZGVyR3JvdXA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZmllbGRzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvblJ1bGVEZWxldGU6IEV2ZW50RW1pdHRlcjxBWFF1ZXJ5QnVpbGRlclJ1bGVFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYUXVlcnlCdWlsZGVyUnVsZUV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBydWxlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYUXVlcnlCdWlsZGVyUnVsZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhRdWVyeUJ1aWxkZXJSdWxlRXZlbnQ+KCk7XHJcblxyXG4gIHNob3dWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBpc09uRGVtYW5kTGFiZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHsgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvL0NhbGxlZCBhZnRlciBuZ0FmdGVyQ29udGVudEluaXQgd2hlbiB0aGUgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBpbml0aWFsaXplZC4gQXBwbGllcyB0byBjb21wb25lbnRzIG9ubHkuXHJcbiAgICAvL0FkZCAnaW1wbGVtZW50cyBBZnRlclZpZXdJbml0JyB0byB0aGUgY2xhc3MuXHJcbiAgICBpZiAodGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwpIHtcclxuICAgICAgdGhpcy5pc09uRGVtYW5kTGFiZWwgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcm92aWRlRGF0YUJvb2xlYW4gPSAoZSkgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIHJlc29sdmUoW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHZhbHVlOiAndHJ1ZScsXHJcbiAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIudHJ1ZScpXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB2YWx1ZTogJ2ZhbHNlJyxcclxuICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5mYWxzZScpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgXSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzYXZlUnVsZSgpIHtcclxuICAgIHRoaXMuZm9ybS52YWxpZGF0ZSgpLnRoZW4oYyA9PiB7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBwcm92aWRlRGF0YU9wZXJhdG9yID0gKGUpID0+IHtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgaWYgKHRoaXMucnVsZS5kYXRhVHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICByZXNvbHZlKFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdlcXVhbCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5lcXVhbCcpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2YWx1ZTogJ2NvbnRhaW5zJyxcclxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLmNvbnRhaW5zJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnc3RhcnQtd2l0aCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5zdGFydC13aXRoJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnZW5kLXdpdGgnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuZW5kLXdpdGgnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdub3QtZXF1YWwnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIubm90LWVxdWFsJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnbnVsbCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5udWxsJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnbm90LW51bGwnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIubm90LW51bGwnKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnJ1bGUuZGF0YVR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgcmVzb2x2ZShbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnZXF1YWwnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuZXF1YWwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdndCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5ncmVhdGVyLXRoYW4nKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdndGUnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuZ3JlYXRlci10aGFuLWVxdWFsJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnbHQnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIubGVzcy10aGFuJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnbHRlJyxcclxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLmxlc3MtdGhhbi1lcXVhbCcpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2YWx1ZTogJ25vdC1lcXVhbCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5ub3QtZXF1YWwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdudWxsJyxcclxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLm51bGwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdub3QtbnVsbCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5ub3QtbnVsbCcpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMucnVsZS5kYXRhVHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgcmVzb2x2ZShbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnZXF1YWwnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuZXF1YWwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdudWxsJyxcclxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLm51bGwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdub3QtbnVsbCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5ub3QtbnVsbCcpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXSk7XHJcbiAgICAgIH1cclxuICAgICAgcmVzb2x2ZShbXSk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBoYW5kbGVFZGl0Q2xpY2soKSB7XHJcbiAgICB0aGlzLmlzRWRpdGluZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDb21taXRDbGljaygpIHtcclxuICAgIHRoaXMuaXNFZGl0aW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnJ1bGVDaGFuZ2VkLmVtaXQoeyBpdGVtczogdGhpcy5ydWxlLCBjb21wb25lbnQ6IHRoaXMgfSk7XHJcbiAgfVxyXG4gIGhhbmRsZVJlbW92ZUNsaWNrKCkge1xyXG4gICAgdGhpcy5vblJ1bGVEZWxldGUuZW1pdCh7IGl0ZW1zOiB0aGlzLnJ1bGUsIGNvbXBvbmVudDogdGhpcyB9KTtcclxuICB9XHJcbiAgY2FwdGlvbkNoYW5nZShlKSB7XHJcbiAgICBpZiAoZS5zZWxlY3RlZEl0ZW1zWzBdKSB7XHJcbiAgICAgIHRoaXMucnVsZS5jYXB0aW9uID0gZS5zZWxlY3RlZEl0ZW1zWzBdLmNhcHRpb247XHJcbiAgICAgIHRoaXMucnVsZS5kYXRhRmllbGQgPSBlLnNlbGVjdGVkSXRlbXNbMF0uZGF0YUZpZWxkO1xyXG4gICAgICB0aGlzLnJ1bGUuZGF0YVR5cGUgPSBlLnNlbGVjdGVkSXRlbXNbMF0uZGF0YVR5cGU7XHJcbiAgICAgIHRoaXMucnVsZS5jb250cm9sID0gZS5zZWxlY3RlZEl0ZW1zWzBdLmNvbnRyb2wgfHwgbmV3IEFYUXVlcnlCdWlsZGVyQ29udHJvbCgpO1xyXG4gICAgICB0aGlzLnJ1bGUuZGF0YUZpZWxkSXRlbVswXSA9IGUuc2VsZWN0ZWRJdGVtc1swXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RCb3gpIHtcclxuICAgICAgdGhpcy5zZWxlY3RCb3gucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucnVsZS52YWx1ZSA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5ydWxlLmNvbnRyb2wudHlwZSA9PT0gJ3NlbGVjdEJveCcpIHtcclxuICAgICAgdGhpcy5zZWxlY3RCb3hWYWx1ZS5yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ydWxlLmNvbnRyb2wudHlwZSA9PSAnYm9vbGVhbicpIHtcclxuICAgICAgdGhpcy5zZWxlY3RCb3hCb29sZWFuLnJlZnJlc2goKTtcclxuICAgIH1cclxuICAgIHRoaXMucnVsZUNoYW5nZWQuZW1pdCh7IGNvbXBvbmVudDogdGhpcywgaXRlbXM6IHRoaXMucnVsZSB9KTtcclxuICB9XHJcblxyXG4gIG9wZXJhdG9yQ2hhbmdlKGUpIHtcclxuICAgIHRoaXMucnVsZS5vcGVyYXRvciA9IGVbMF0udmFsdWU7XHJcbiAgICB0aGlzLnJ1bGVDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGl0ZW1zOiB0aGlzLnJ1bGUgfSk7XHJcblxyXG5cclxuICAgIGlmIChlWzBdLnZhbHVlICE9PSAnbnVsbCcgJiYgZVswXS52YWx1ZSAhPT0gJ25vdC1udWxsJykge1xyXG4gICAgICB0aGlzLnNob3dWYWx1ZSA9IHRydWU7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93VmFsdWUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5ydWxlLnZhbHVlID0gJyc7XHJcbiAgICAgIHRoaXMucnVsZS50ZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMucnVsZS52YWx1ZUl0ZW0gPSBbXTtcclxuICAgICAgdGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwgPSAnJztcclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIHZhbHVlQ2hhbmdlKGUpIHtcclxuICAgIC8vIHRoaXMucnVsZS50ZXh0ID0gZS52YWx1ZSA9PSB1bmRlZmluZWQgPyBlWzBdLnZhbHVlIDogKGUudmFsdWUgPT0gbnVsbCA/ICcnIDogZS52YWx1ZSk7XHJcbiAgICB0aGlzLnJ1bGUudGV4dCA9IGVbMF0gPyAoZVswXS52YWx1ZSA9PSBudWxsID8gJycgOiBlWzBdLnZhbHVlKSA6IChlLnZhbHVlID09IG51bGwgPyAnJyA6IGUudmFsdWUpO1xyXG4gICAgdGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwgPSAnJztcclxuICAgIHRoaXMucnVsZUNoYW5nZWQuZW1pdCh7IGNvbXBvbmVudDogdGhpcywgaXRlbXM6IHRoaXMucnVsZSB9KTtcclxuICB9XHJcbiAgb25EZW1hbmRMYWJlbENoYW5nZShlKSB7XHJcbiAgICAvLyB0aGlzLnJ1bGUub25EZW1hbmRMYWJlbCA9IGUudmFsdWUgPT0gdW5kZWZpbmVkID8gJz8/Pz98JyArIGVbMF0udmFsdWUgOiAnPz8/P3wnICsgZS52YWx1ZTtcclxuICAgIHRoaXMucnVsZS5vbkRlbWFuZExhYmVsID0gZVswXSA/ICc/Pz8/fCcgKyAoZVswXS52YWx1ZSA9PSBudWxsID8gJycgOiBlWzBdLnZhbHVlKSA6ICc/Pz8/fCcgKyAoZS52YWx1ZSA9PSBudWxsID8gJycgOiBlLnZhbHVlKVxyXG4gICAgdGhpcy5ydWxlLnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnJ1bGUudGV4dCA9ICcnO1xyXG4gICAgdGhpcy5ydWxlLnZhbHVlSXRlbSA9IFtdO1xyXG5cclxuICAgIHRoaXMucnVsZUNoYW5nZWQuZW1pdCh7IGNvbXBvbmVudDogdGhpcywgaXRlbXM6IHRoaXMucnVsZSB9KTtcclxuICB9XHJcbiAgdmFsdWVCb29sZWFuQ2hhbmdlKGUpIHtcclxuICAgIC8vIHRoaXMucnVsZS50ZXh0ID0gZS52YWx1ZSA9PSB1bmRlZmluZWQgPyBlWzBdLnZhbHVlIDogKGUudmFsdWUgPT0gbnVsbCA/ICcnIDogZS52YWx1ZSk7XHJcbiAgICB0aGlzLnJ1bGUudGV4dCA9IGVbMF0gPyAoZVswXS52YWx1ZSA9PSBudWxsID8gJycgOiBlWzBdLnZhbHVlKSA6IChlLnZhbHVlID09IG51bGwgPyAnJyA6IGUudmFsdWUpO1xyXG4gICAgdGhpcy5ydWxlLnZhbHVlID0gZS52YWx1ZSA9PSB1bmRlZmluZWQgPyBlWzBdLnZhbHVlIDogZS52YWx1ZTtcclxuICAgIHRoaXMucnVsZS5vbkRlbWFuZExhYmVsID0gJyc7XHJcbiAgICB0aGlzLnJ1bGVDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGl0ZW1zOiB0aGlzLnJ1bGUgfSk7XHJcbiAgfVxyXG4gIGdldE9uRGVtYW5kTmFtZSh2KSB7XHJcbiAgICByZXR1cm4gdiA/IHYuc3BsaXQoJ3wnKVsxXSA6ICcnO1xyXG4gIH1cclxuICBzZWxlY3RlZEl0ZW1zQ2hhbmdlKGUpIHtcclxuICAgIGxldCBuID0gdGhpcy5nZXRPcHRpb24oJ3RleHRGaWVsZCcpO1xyXG4gICAgdGhpcy5ydWxlLnRleHQgPSBlWzBdW25dO1xyXG4gICAgaWYgKHRoaXMucnVsZSAmJiB0aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zLnZhbHVlRmllbGQpIHtcclxuICAgICAgdGhpcy5ydWxlLnZhbHVlID0gZVswXVt0aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zLnZhbHVlRmllbGRdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ydWxlLnZhbHVlID0gZVswXS52YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMucnVsZS52YWx1ZUl0ZW1bMF0gPSBlWzBdO1xyXG4gICAgdGhpcy5ydWxlQ2hhbmdlZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBpdGVtczogdGhpcy5ydWxlIH0pO1xyXG4gICAgdGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwgPSAnJztcclxuICB9XHJcbiAgb25EZW1hbmRMYWJlbChlKSB7XHJcbiAgICAvLyBpZiAoZS52YWx1ZSAmJiAodGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwgPT0gJz8/Pz98JyB8fCB0aGlzLnJ1bGUub25EZW1hbmRMYWJlbCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMucnVsZS5vbkRlbWFuZExhYmVsID09PSBudWxsIHx8IHRoaXMucnVsZS5vbkRlbWFuZExhYmVsID09PSAnJykpIHtcclxuICAgIC8vICAgdGhpcy50ZXh0Qm94TmFtZVZhbHVlLmZvY3VzKCk7XHJcbiAgICAvLyB9XHJcbiAgICBpZiAoZS52YWx1ZSA9PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLnJ1bGUub25EZW1hbmRMYWJlbCA9ICcnO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc09uRGVtYW5kTGFiZWwgPSBlLnZhbHVlO1xyXG4gIH1cclxuICBnZXRQcm92aWRlRGF0YSA9IChlKSA9PiB7XHJcbiAgICBpZiAodGhpcy5ydWxlICYmIHRoaXMucnVsZS5jb250cm9sLm9wdGlvbnMgJiYgdGhpcy5ydWxlLmNvbnRyb2wub3B0aW9ucy5kYXRhU291cmNlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zLmRhdGFTb3VyY2UoeyAuLi5lLCBvcHRpb25zRGF0YTogeyAuLi50aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zIH0gfSk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZ2V0T3B0aW9uKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMucnVsZS5jb250cm9sLm9wdGlvbnMgPyB0aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zW25hbWVdIDogbnVsbDtcclxuICB9XHJcbn1cclxuIl19
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci1ydWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9xdWVyeS1idWlsZGVyL3F1ZXJ5LWJ1aWxkZXItcnVsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBMkIscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBUXBGLElBQWEsMkJBQTJCLEdBQXhDLE1BQWEsMkJBQTJCO0lBNkJ0QztRQXBCQSxjQUFTLEdBQVksSUFBSSxDQUFDO1FBUzFCLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFHbkIsaUJBQVksR0FBMEMsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFHbEcsZ0JBQVcsR0FBMEMsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFFakcsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUzQixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQVlqQyx1QkFBa0IsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3pCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDN0IsT0FBTyxDQUFDO29CQUNOO3dCQUNFLEtBQUssRUFBRSxNQUFNO3dCQUNiLElBQUksRUFBRSxZQUFZLENBQUMs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SW5pdCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYUXVlcnlCdWlsZGVyUnVsZSwgQVhRdWVyeUJ1aWxkZXJHcm91cCwgQVhRdWVyeUJ1aWxkZXJSdWxlRXZlbnQsIEFYUXVlcnlCdWlsZGVyQ29udHJvbCB9IGZyb20gJy4vcXVlcnktYnVpbGRlci5jbGFzcyc7XHJcbmltcG9ydCB7IEFYVHJhbnNsYXRvciB9IGZyb20gJ0BhY29yZXgvY29yZSc7XHJcbmltcG9ydCB7IEFYU2VsZWN0Qm94Q29tcG9uZW50IH0gZnJvbSAnLi4vc2VsZWN0Ym94L3NlbGVjdGJveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBWFRleHRCb3hDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0Ym94L3RleHRib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhWYWxpZGF0aW9uRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL3ZhbGlkYXRpb24vdmFsaWRhdGlvbi1mb3JtLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LXF1ZXJ5LXJ1bGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAncXVlcnktYnVpbGRlci1ydWxlLmNvbXBvbmVudC5odG1sJyxcclxuICBob3N0OiB7IGNsYXNzOiAnYXggYXgtcXVlcnktcnVsZScgfSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWFF1ZXJ5QnVpbGRlclJ1bGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdEJveCcpIHNlbGVjdEJveDogQVhTZWxlY3RCb3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnc2VsZWN0Qm94VmFsdWUnKSBzZWxlY3RCb3hWYWx1ZTogQVhTZWxlY3RCb3hDb21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdEJveEJvb2xlYW4nKSBzZWxlY3RCb3hCb29sZWFuOiBBWFNlbGVjdEJveENvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZCgndGV4dEJveE5hbWVWYWx1ZScpIHRleHRCb3hOYW1lVmFsdWU6IEFYVGV4dEJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKEFYVmFsaWRhdGlvbkZvcm1Db21wb25lbnQpIGZvcm06IEFYVmFsaWRhdGlvbkZvcm1Db21wb25lbnQ7XHJcbiAgQElucHV0KClcclxuICBpc0VkaXRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHJ1bGU6IEFYUXVlcnlCdWlsZGVyUnVsZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwYXJlbnQ6IEFYUXVlcnlCdWlsZGVyR3JvdXA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZmllbGRzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvblJ1bGVEZWxldGU6IEV2ZW50RW1pdHRlcjxBWFF1ZXJ5QnVpbGRlclJ1bGVFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYUXVlcnlCdWlsZGVyUnVsZUV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBydWxlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYUXVlcnlCdWlsZGVyUnVsZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhRdWVyeUJ1aWxkZXJSdWxlRXZlbnQ+KCk7XHJcblxyXG4gIHNob3dWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBpc09uRGVtYW5kTGFiZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHsgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvL0NhbGxlZCBhZnRlciBuZ0FmdGVyQ29udGVudEluaXQgd2hlbiB0aGUgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBpbml0aWFsaXplZC4gQXBwbGllcyB0byBjb21wb25lbnRzIG9ubHkuXHJcbiAgICAvL0FkZCAnaW1wbGVtZW50cyBBZnRlclZpZXdJbml0JyB0byB0aGUgY2xhc3MuXHJcbiAgICBpZiAodGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwpIHtcclxuICAgICAgdGhpcy5pc09uRGVtYW5kTGFiZWwgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcm92aWRlRGF0YUJvb2xlYW4gPSAoZSkgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIHJlc29sdmUoW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHZhbHVlOiAndHJ1ZScsXHJcbiAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIudHJ1ZScpXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB2YWx1ZTogJ2ZhbHNlJyxcclxuICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5mYWxzZScpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgXSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzYXZlUnVsZSgpIHtcclxuICAgIHRoaXMuZm9ybS52YWxpZGF0ZSgpLnRoZW4oYyA9PiB7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBwcm92aWRlRGF0YU9wZXJhdG9yID0gKGUpID0+IHtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgaWYgKHRoaXMucnVsZS5kYXRhVHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICByZXNvbHZlKFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdlcXVhbCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5lcXVhbCcpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2YWx1ZTogJ2NvbnRhaW5zJyxcclxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLmNvbnRhaW5zJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnc3RhcnQtd2l0aCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5zdGFydC13aXRoJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnZW5kLXdpdGgnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuZW5kLXdpdGgnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdub3QtZXF1YWwnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIubm90LWVxdWFsJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnbnVsbCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5udWxsJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnbm90LW51bGwnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIubm90LW51bGwnKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnJ1bGUuZGF0YVR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgcmVzb2x2ZShbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnZXF1YWwnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuZXF1YWwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdndCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5ncmVhdGVyLXRoYW4nKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdndGUnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuZ3JlYXRlci10aGFuLWVxdWFsJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnbHQnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIubGVzcy10aGFuJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnbHRlJyxcclxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLmxlc3MtdGhhbi1lcXVhbCcpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2YWx1ZTogJ25vdC1lcXVhbCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5ub3QtZXF1YWwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdudWxsJyxcclxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLm51bGwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdub3QtbnVsbCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5ub3QtbnVsbCcpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMucnVsZS5kYXRhVHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgcmVzb2x2ZShbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnZXF1YWwnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuZXF1YWwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdudWxsJyxcclxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLm51bGwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdub3QtbnVsbCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5ub3QtbnVsbCcpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXSk7XHJcbiAgICAgIH1cclxuICAgICAgcmVzb2x2ZShbXSk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBoYW5kbGVFZGl0Q2xpY2soKSB7XHJcbiAgICB0aGlzLmlzRWRpdGluZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDb21taXRDbGljaygpIHtcclxuICAgIHRoaXMuaXNFZGl0aW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnJ1bGVDaGFuZ2VkLmVtaXQoeyBpdGVtczogdGhpcy5ydWxlLCBjb21wb25lbnQ6IHRoaXMgfSk7XHJcbiAgfVxyXG4gIGhhbmRsZVJlbW92ZUNsaWNrKCkge1xyXG4gICAgdGhpcy5vblJ1bGVEZWxldGUuZW1pdCh7IGl0ZW1zOiB0aGlzLnJ1bGUsIGNvbXBvbmVudDogdGhpcyB9KTtcclxuICB9XHJcbiAgY2FwdGlvbkNoYW5nZShlKSB7XHJcbiAgICBpZiAoZS5zZWxlY3RlZEl0ZW1zWzBdKSB7XHJcbiAgICAgIHRoaXMucnVsZS5jYXB0aW9uID0gZS5zZWxlY3RlZEl0ZW1zWzBdLmNhcHRpb247XHJcbiAgICAgIHRoaXMucnVsZS5kYXRhRmllbGQgPSBlLnNlbGVjdGVkSXRlbXNbMF0uZGF0YUZpZWxkO1xyXG4gICAgICB0aGlzLnJ1bGUuZGF0YVR5cGUgPSBlLnNlbGVjdGVkSXRlbXNbMF0uZGF0YVR5cGU7XHJcbiAgICAgIHRoaXMucnVsZS5jb250cm9sID0gZS5zZWxlY3RlZEl0ZW1zWzBdLmNvbnRyb2wgfHwgbmV3IEFYUXVlcnlCdWlsZGVyQ29udHJvbCgpO1xyXG4gICAgICB0aGlzLnJ1bGUuZGF0YUZpZWxkSXRlbVswXSA9IGUuc2VsZWN0ZWRJdGVtc1swXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RCb3gpIHtcclxuICAgICAgdGhpcy5zZWxlY3RCb3gucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucnVsZS52YWx1ZSA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5ydWxlLmNvbnRyb2wudHlwZSA9PT0gJ3NlbGVjdEJveCcpIHtcclxuICAgICAgdGhpcy5zZWxlY3RCb3hWYWx1ZS5yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ydWxlLmNvbnRyb2wudHlwZSA9PSAnYm9vbGVhbicpIHtcclxuICAgICAgdGhpcy5zZWxlY3RCb3hCb29sZWFuLnJlZnJlc2goKTtcclxuICAgIH1cclxuICAgIHRoaXMucnVsZUNoYW5nZWQuZW1pdCh7IGNvbXBvbmVudDogdGhpcywgaXRlbXM6IHRoaXMucnVsZSB9KTtcclxuICB9XHJcblxyXG4gIG9wZXJhdG9yQ2hhbmdlKGUpIHtcclxuICAgIHRoaXMucnVsZS5vcGVyYXRvciA9IGVbMF0udmFsdWU7XHJcbiAgICB0aGlzLnJ1bGVDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGl0ZW1zOiB0aGlzLnJ1bGUgfSk7XHJcblxyXG5cclxuICAgIGlmIChlWzBdLnZhbHVlICE9PSAnbnVsbCcgJiYgZVswXS52YWx1ZSAhPT0gJ25vdC1udWxsJykge1xyXG4gICAgICB0aGlzLnNob3dWYWx1ZSA9IHRydWU7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93VmFsdWUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5ydWxlLnZhbHVlID0gJyc7XHJcbiAgICAgIHRoaXMucnVsZS50ZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMucnVsZS52YWx1ZUl0ZW0gPSBbXTtcclxuICAgICAgdGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwgPSAnJztcclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIHZhbHVlQ2hhbmdlKGUpIHtcclxuICAgIC8vIHRoaXMucnVsZS50ZXh0ID0gZS52YWx1ZSA9PSB1bmRlZmluZWQgPyBlWzBdLnZhbHVlIDogKGUudmFsdWUgPT0gbnVsbCA/ICcnIDogZS52YWx1ZSk7XHJcbiAgICB0aGlzLnJ1bGUudGV4dCA9IGVbMF0gPyAoZVswXS52YWx1ZSA9PSBudWxsID8gJycgOiBlWzBdLnZhbHVlKSA6IChlLnZhbHVlID09IG51bGwgPyAnJyA6IGUudmFsdWUpO1xyXG4gICAgdGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwgPSAnJztcclxuICAgIHRoaXMucnVsZUNoYW5nZWQuZW1pdCh7IGNvbXBvbmVudDogdGhpcywgaXRlbXM6IHRoaXMucnVsZSB9KTtcclxuICB9XHJcbiAgb25EZW1hbmRMYWJlbENoYW5nZShlKSB7XHJcbiAgICAvLyB0aGlzLnJ1bGUub25EZW1hbmRMYWJlbCA9IGUudmFsdWUgPT0gdW5kZWZpbmVkID8gJz8/Pz98JyArIGVbMF0udmFsdWUgOiAnPz8/P3wnICsgZS52YWx1ZTtcclxuICAgIHRoaXMucnVsZS5vbkRlbWFuZExhYmVsID0gZVswXSA/ICc/Pz8/fCcgKyAoZVswXS52YWx1ZSA9PSBudWxsID8gJycgOiBlWzBdLnZhbHVlKSA6ICc/Pz8/fCcgKyAoZS52YWx1ZSA9PSBudWxsID8gJycgOiBlLnZhbHVlKVxyXG4gICAgdGhpcy5ydWxlLnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnJ1bGUudGV4dCA9ICcnO1xyXG4gICAgdGhpcy5ydWxlLnZhbHVlSXRlbSA9IFtdO1xyXG5cclxuICAgIHRoaXMucnVsZUNoYW5nZWQuZW1pdCh7IGNvbXBvbmVudDogdGhpcywgaXRlbXM6IHRoaXMucnVsZSB9KTtcclxuICB9XHJcbiAgdmFsdWVCb29sZWFuQ2hhbmdlKGUpIHtcclxuICAgIC8vIHRoaXMucnVsZS50ZXh0ID0gZS52YWx1ZSA9PSB1bmRlZmluZWQgPyBlWzBdLnZhbHVlIDogKGUudmFsdWUgPT0gbnVsbCA/ICcnIDogZS52YWx1ZSk7XHJcbiAgICB0aGlzLnJ1bGUudGV4dCA9IGVbMF0gPyAoZVswXS52YWx1ZSA9PSBudWxsID8gJycgOiBlWzBdLnZhbHVlKSA6IChlLnZhbHVlID09IG51bGwgPyAnJyA6IGUudmFsdWUpO1xyXG4gICAgdGhpcy5ydWxlLnZhbHVlID0gZS52YWx1ZSA9PSB1bmRlZmluZWQgPyBlWzBdLnZhbHVlIDogZS52YWx1ZTtcclxuICAgIHRoaXMucnVsZS5vbkRlbWFuZExhYmVsID0gJyc7XHJcbiAgICB0aGlzLnJ1bGVDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGl0ZW1zOiB0aGlzLnJ1bGUgfSk7XHJcbiAgfVxyXG4gIGdldE9uRGVtYW5kTmFtZSh2KSB7XHJcbiAgICByZXR1cm4gdiA/IHYuc3BsaXQoJ3wnKVsxXSA6ICcnO1xyXG4gIH1cclxuICBzZWxlY3RlZEl0ZW1zQ2hhbmdlKGUpIHtcclxuICAgIGxldCBuID0gdGhpcy5nZXRPcHRpb24oJ3RleHRGaWVsZCcpO1xyXG4gICAgdGhpcy5ydWxlLnRleHQgPSBlWzBdW25dO1xyXG4gICAgaWYgKHRoaXMucnVsZSAmJiB0aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zLnZhbHVlRmllbGQpIHtcclxuICAgICAgdGhpcy5ydWxlLnZhbHVlID0gZVswXVt0aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zLnZhbHVlRmllbGRdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ydWxlLnZhbHVlID0gZVswXS52YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMucnVsZS52YWx1ZUl0ZW1bMF0gPSBlWzBdO1xyXG4gICAgdGhpcy5ydWxlQ2hhbmdlZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBpdGVtczogdGhpcy5ydWxlIH0pO1xyXG4gICAgdGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwgPSAnJztcclxuICB9XHJcbiAgb25EZW1hbmRMYWJlbChlKSB7XHJcbiAgICAvLyBpZiAoZS52YWx1ZSAmJiAodGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwgPT0gJz8/Pz98JyB8fCB0aGlzLnJ1bGUub25EZW1hbmRMYWJlbCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMucnVsZS5vbkRlbWFuZExhYmVsID09PSBudWxsIHx8IHRoaXMucnVsZS5vbkRlbWFuZExhYmVsID09PSAnJykpIHtcclxuICAgIC8vICAgdGhpcy50ZXh0Qm94TmFtZVZhbHVlLmZvY3VzKCk7XHJcbiAgICAvLyB9XHJcbiAgICBpZiAoZS52YWx1ZSA9PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLnJ1bGUub25EZW1hbmRMYWJlbCA9ICcnO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc09uRGVtYW5kTGFiZWwgPSBlLnZhbHVlO1xyXG4gIH1cclxuICBnZXRQcm92aWRlRGF0YSA9IChlKSA9PiB7XHJcbiAgICBpZiAodGhpcy5ydWxlICYmIHRoaXMucnVsZS5jb250cm9sLm9wdGlvbnMgJiYgdGhpcy5ydWxlLmNvbnRyb2wub3B0aW9ucy5kYXRhU291cmNlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zLmRhdGFTb3VyY2UoeyAuLi5lLCBvcHRpb25zRGF0YTogeyAuLi50aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zIH0gfSk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZ2V0T3B0aW9uKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMucnVsZS5jb250cm9sLm9wdGlvbnMgPyB0aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zW25hbWVdIDogbnVsbDtcclxuICB9XHJcbn1cclxuIl19
|