ps-toolkit-ui 1.21.73 → 1.21.79
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/bundles/ps-toolkit-ui.umd.js +86 -87
- package/bundles/ps-toolkit-ui.umd.js.map +1 -1
- package/bundles/ps-toolkit-ui.umd.min.js +1 -1
- package/bundles/ps-toolkit-ui.umd.min.js.map +1 -1
- package/esm2015/lib/classes/form.class.js +1 -2
- package/esm2015/lib/classes/helper.class.js +1 -2
- package/esm2015/lib/classes/modal.class.js +1 -2
- package/esm2015/lib/classes/request.class.js +1 -2
- package/esm2015/lib/classes/table.class.js +1 -2
- package/esm2015/lib/components/accordion/accordion.component.js +1 -2
- package/esm2015/lib/components/form/bank-card/form.bank-card.component.js +1 -2
- package/esm2015/lib/components/form/button/form.button.component.js +1 -2
- package/esm2015/lib/components/form/date/form.date.component.js +1 -2
- package/esm2015/lib/components/form/file/form.file.component.js +1 -2
- package/esm2015/lib/components/form/icon/form.icon.component.js +1 -2
- package/esm2015/lib/components/form/plaque/select/form.plaque.select.component.js +1 -2
- package/esm2015/lib/components/form/radio/form.radio.component.js +1 -2
- package/esm2015/lib/components/form/select/form.select.component.js +1 -2
- package/esm2015/lib/components/form/select/item/form.select.item.component.js +1 -1
- package/esm2015/lib/components/form/slide/form.slide.component.js +1 -2
- package/esm2015/lib/components/form/star/form.star.component.js +1 -2
- package/esm2015/lib/components/form/tag/form.tag.component.js +1 -2
- package/esm2015/lib/components/form/textbox/form.textbox.component.js +1 -1
- package/esm2015/lib/components/form/time/form.time.component.js +1 -2
- package/esm2015/lib/components/form/toggle/form.toggle.component.js +1 -1
- package/esm2015/lib/components/form/tree/form.tree.component.js +1 -2
- package/esm2015/lib/components/form/tree/item/form.tree.item.component.js +1 -2
- package/esm2015/lib/components/form/uploader/form.uploader.component.js +1 -2
- package/esm2015/lib/components/form/vehicle/form.vehicle.component.js +1 -1
- package/esm2015/lib/components/form/vehicle/search/form.vehicle.search.component.js +1 -1
- package/esm2015/lib/components/header/header.component.js +1 -2
- package/esm2015/lib/components/sidebar/item/sidebar.item.component.js +1 -2
- package/esm2015/lib/components/sidebar/sidebar.component.js +1 -2
- package/esm2015/lib/components/table/row/table.row.component.js +1 -2
- package/esm2015/lib/components/table/table.component.js +1 -2
- package/fesm2015/ps-toolkit-ui.js +82 -84
- package/fesm2015/ps-toolkit-ui.js.map +1 -1
- package/package.json +3 -3
- package/ps-toolkit-ui.metadata.json +1 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { EnumUtils, InputError, InputType, Method, ResultStatusEnum } from './enum.class';
|
|
2
2
|
import { HelperClass } from './helper.class';
|
|
3
3
|
import { RequestClass } from './request.class';
|
|
4
|
-
import * as $ from 'jquery';
|
|
5
4
|
import * as _ from 'lodash';
|
|
6
5
|
export class Progress {
|
|
7
6
|
constructor(secs) {
|
|
@@ -664,4 +663,4 @@ export class AccordionRowClass {
|
|
|
664
663
|
}, 100);
|
|
665
664
|
}
|
|
666
665
|
}
|
|
667
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJEOi9Qc1Rvb2xraXQvVUkvcHJvamVjdHMvcHMtdG9vbGtpdC11aS9zcmMvIiwic291cmNlcyI6WyJsaWIvY2xhc3Nlcy9mb3JtLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEVBQ04sZ0JBQWdCLEVBQ2pCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFHNUIsTUFBTSxPQUFPLFFBQVE7SUFDbkIsWUFBWSxJQUFZO1FBS3hCLFlBQU8sR0FBRyxHQUFHLENBQUM7UUFFZCxVQUFLLEdBQWUsSUFBSSxDQUFDO1FBQ3pCLFlBQU8sR0FBZSxJQUFJLENBQUM7UUFDM0IsV0FBTSxHQUFtQyxJQUFJLENBQUM7UUFDOUMsVUFBSyxHQUFHLEdBQUcsRUFBRTtZQUNYLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztZQUNuQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUM7Z0JBQ2YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2hCO1lBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUUsR0FBRyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO2dCQUNuRCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFDO29CQUN4QixhQUFh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QUMsTUFBTSxDQUFDLEVBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNyRDtRQUNILENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRW51bVV0aWxzLFxyXG4gIElucHV0RXJyb3IsXHJcbiAgSW5wdXRUeXBlLFxyXG4gIE1ldGhvZCxcclxuICBSZXN1bHRTdGF0dXNFbnVtXHJcbn0gZnJvbSAnLi9lbnVtLmNsYXNzJztcclxuaW1wb3J0IHtIZWxwZXJDbGFzc30gZnJvbSAnLi9oZWxwZXIuY2xhc3MnO1xyXG5pbXBvcnQge1JlcXVlc3RDbGFzc30gZnJvbSAnLi9yZXF1ZXN0LmNsYXNzJztcclxuaW1wb3J0IHtUYWJsZUNsYXNzfSBmcm9tICcuL3RhYmxlLmNsYXNzJztcclxuaW1wb3J0ICogYXMgJCBmcm9tICdqcXVlcnknO1xyXG5pbXBvcnQge01vZGFsQ2xhc3N9IGZyb20gJy4vbW9kYWwuY2xhc3MnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7Q2hhcnRDbGFzc30gZnJvbSAnLi9jaGFydC5jbGFzcyc7XHJcblxyXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3Mge1xyXG4gIGNvbnN0cnVjdG9yKHNlY3M6IG51bWJlcikge1xyXG4gICAgdGhpcy5zZWNzID0gdGhpcy5yZW1haW5TZWNzID0gc2VjcztcclxuICB9XHJcbiAgc2VjczogbnVtYmVyO1xyXG4gIHJlbWFpblNlY3M6IG51bWJlcjtcclxuICBwZXJjZW50ID0gMTAwO1xyXG4gIGludGVyVmFsO1xyXG4gIG9uRW5kOiAoKSA9PiB2b2lkID0gbnVsbDtcclxuICBvblN0YXJ0OiAoKSA9PiB2b2lkID0gbnVsbDtcclxuICBvblRpY2s6IChtOiBudW1iZXIsIHM6IG51bWJlcikgPT4gdm9pZCA9IG51bGw7XHJcbiAgc3RhcnQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnJlbWFpblNlY3MgPSB0aGlzLnNlY3M7XHJcbiAgICB0aGlzLnBlcmNlbnQgPSAxMDA7XHJcbiAgICBpZiAodGhpcy5vblN0YXJ0KXtcclxuICAgICAgdGhpcy5vblN0YXJ0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmludGVyVmFsID0gc2V0SW50ZXJ2YWwoICgpID0+IHtcclxuICAgICAgdGhpcy5wZXJjZW50ID0gKHRoaXMucmVtYWluU2VjcyAvIHRoaXMuc2VjcykgKiAxMDA7XHJcbiAgICAgIGlmICh0aGlzLnJlbWFpblNlY3MgPT09IDApe1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlclZhbCk7XHJcbiAgICAgICAgaWYgKHRoaXMub25FbmQpe1xyXG4gICAgICAgICAgdGhpcy5vbkVuZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIodGhpcy5yZW1haW5TZWNzKSl7XHJcbiAgICAgICAgY29uc3QgbSA9IE1hdGguZmxvb3IodGhpcy5yZW1haW5TZWNzIC8gNjApO1xyXG4gICAgICAgIGNvbnN0IHMgPSB0aGlzLnJlbWFpblNlY3MgJSA2MDtcclxuICAgICAgICB0aGlzLm9uVGljayhtLCBzKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbWFpblNlY3MgLT0gMC41O1xyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGNsYXNzIEZvcm1DbGFzcyB7XHJcbiAgY29uc3RydWN0b3IoZW52aXJvbm1lbnQ6IGFueSwgbDogKGssIHY/KSA9PiBzdHJpbmcsIG5hbWU6IHN0cmluZyA9IG51bGwsIHBlcm1pc3Npb246IGJvb2xlYW4gPSB0cnVlLFxyXG4gICAgICAgICAgICAgIHVybDogc3RyaW5nID0gbnVsbCwgY2xzOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XHJcbiAgICB0aGlzLmwgPSBsO1xyXG4gICAgdGhpcy51cmwgPSB1cmw7XHJcbiAgICB0aGlzLmJhc2VVcmwgPSB1cmw7XHJcbiAgICB0aGlzLmNsYXNzID0gY2xzO1xyXG4gICAgdGhpcy5wZXJtaXNzaW9uID0gcGVybWlzc2lvbjtcclxuICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLmlkID0gdGhpcy5uYW1lO1xyXG4gIH1cclxuICBsOiAoaywgdj8pID0+IHN0cmluZztcclxuICBwZXJtaXNzaW9uOiBib29sZWFuO1xyXG4gIGVudmlyb25tZW50OiBhbnkgPSBudWxsO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBpc0VkaXQgPSBmYWxzZTtcclxuICBzdWJOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgY2xhc3M6IHN0cmluZztcclxuICBiYXNlVXJsOiBzdHJpbmc7XHJcbiAgdXJsOiBzdHJpbmc7XHJcbiAgbWV0aG9kOiBNZXRob2QgPSBNZXRob2QuUG9zdDtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgc3R5bGU6IHt9O1xyXG4gIG9uVG9wID0gZmFsc2U7XHJcbiAgZGlzcGxheUxhYmVsID0gdHJ1ZTtcclxuICByZXF1ZXN0OiBhbnkgPSBudWxsO1xyXG4gIGlucHV0czogSW5wdXRDbGFzc1tdID0gW107XHJcbiAgb25TdWNjZXNzQmFzZTogKHJlc3VsdCkgPT4gdm9pZCA9IG51bGw7XHJcbiAgb25TdWNjZXNzOiAocmVzdWx0KSA9PiB2b2lkID0gbnVsbDtcclxuICBvbkZhaWxlZDogKHJlc3VsdCkgPT4gdm9pZCA9IG51bGw7XHJcbiAgb25Mb2FkOiAocmVzdWx0KSA9PiB2b2lkID0gbnVsbDtcclxuICBvbkJlZm9yZVN1Ym1pdDogKCkgPT4gYm9vbGVhbiA9IG51bGw7XHJcbiAgb25IaWRlTW9kYWw6ICgpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uU2hvd01vZGFsOiAoKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgbG9hZERhdGEodXJsKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgbmV3IFJlcXVlc3RDbGFzcyh0aGlzLmVudmlyb25tZW50LCB0aGlzLmwpLnNlbmQodXJsLCBNZXRob2QuUG9zdCwgbnVsbCwgbnVsbCwgKHJlc3VsdCkgPT4ge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldERhdGEocmVzdWx0KTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5vbkxvYWQpe1xyXG4gICAgICAgICAgdGhpcy5vbkxvYWQocmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDUwMCk7XHJcbiAgICB9LCAobSkgPT4ge1xyXG4gICAgICBpZiAobSA9PT0gJ0Zvcm1CYXNlRXJyb3JBY2Nlc3MnIHx8IG0gPT09ICdGb3JtQmFzZUVycm9yUGVybWlzc2lvbicpe1xyXG4gICAgICAgIHRoaXMucGVybWlzc2lvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZm9jdXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpID0gdGhpcy5pbnB1dHMuZmluZCh4ID0+ICF4LmRpc2FibGVkICYmIHgudHlwZSAhPT0gSW5wdXRUeXBlLkxhYmVsICYmIHgudHlwZSAhPT0gSW5wdXRUeXBlLkhpZGRlbiAmJlxyXG4gICAgICB4LnR5cGUgIT09IElucHV0VHlwZS5Db25zdGFudCAmJiB4LnR5cGUgIT09IElucHV0VHlwZS5TdWJtaXQgJiYgeC50eXBlICE9PSBJbnB1dFR5cGUuQnV0dG9uICYmIHgudHlwZSAhPT0gSW5wdXRUeXBlLkljb24gJiZcclxuICAgICAgeC50eXBlICE9PSBJbnB1dFR5cGUuQ2hlY2spO1xyXG4gICAgaWYgKGkpe1xyXG4gICAgICBpLmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN1Ym1pdChvblN1Ym1pdCA9IG51bGwpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jaGVjaygpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9uQmVmb3JlU3VibWl0ICYmICF0aGlzLm9uQmVmb3JlU3VibWl0KCkpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBidG5zID0gdGhpcy5pbnB1dHMuZmlsdGVyKHggPT4geC50eXBlID09PSBJbnB1dFR5cGUuU3VibWl0KTtcclxuICAgIGZvciAoY29uc3QgYnRuIG9mIGJ0bnMpe1xyXG4gICAgICBpZiAoYnRuLmxvYWRpbmcpe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBidG4ubG9hZGluZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRhID0gdGhpcy5kYXRhKCk7XHJcbiAgICBpZiAob25TdWJtaXQpe1xyXG4gICAgICBmb3IgKGNvbnN0IGJ0biBvZiBidG5zKXtcclxuICAgICAgICBidG4ubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIG9uU3VibWl0KGRhdGEpO1xyXG4gICAgICBpZiAodGhpcy5vblN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLm9uU3VjY2VzcyhkYXRhKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlcXVlc3QgPSBuZXcgUmVxdWVzdENsYXNzKHRoaXMuZW52aXJvbm1lbnQpLmdldENsaWVudCh0aGlzLnJlcXVlc3QsIHRoaXMudXJsLCB0aGlzLm1ldGhvZCwgZGF0YSxcclxuICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMuc3RhdHVzID09PSBSZXN1bHRTdGF0dXNFbnVtLlN1Y2Nlc3MpIHtcclxuICAgICAgICAgIGlmICh0aGlzLm9uU3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLm9uU3VjY2VzcyhyZXMucmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLm9uU3VjY2Vzc0Jhc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5vblN1Y2Nlc3NCYXNlKHJlcy5yZXN1bHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgbSA9ICcnO1xyXG4gICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IFJlc3VsdFN0YXR1c0VudW0uTm90UmVnaXN0ZXJlZCkge1xyXG4gICAgICAgICAgICBtID0gdGhpcy5sKCdGb3JtQmFzZUVycm9yTm90UmVnaXN0ZXJlZCcpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMuc3RhdHVzID09PSBSZXN1bHRTdGF0dXNFbnVtLkV4cGlyZWRSZWdpc3RlcmVkKSB7XHJcbiAgICAgICAgICAgIG0gPSB0aGlzLmwoJ0Zvcm1CYXNlRXJyb3JFeHBpcmVkUmVnaXN0ZXJlZCcpO1xyXG4gICAgICAgICAgfSAgZWxzZSBpZiAocmVzLnN0YXR1cyA9PT0gUmVzdWx0U3RhdHVzRW51bS5JbnZhbGlkSXApIHtcclxuICAgICAgICAgICAgbSA9IHRoaXMubCgnRm9ybUJhc2VFcnJvckludmFsaWRJcCcpO1xyXG4gICAgICAgICAgfSAgZWxzZSBpZiAocmVzLnN0YXR1cyA9PT0gUmVzdWx0U3RhdHVzRW51bS5Ob0NyZWRpdCkge1xyXG4gICAgICAgICAgICBtID0gdGhpcy5sKCdGb3JtQmFzZUVycm9yTm9DcmVkaXQnKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzLnN0YXR1cyA9PT0gUmVzdWx0U3RhdHVzRW51bS5VbmF1dGhvcml6ZWQpIHtcclxuICAgICAgICAgICAgbSA9IHRoaXMubCgnRm9ybUJhc2VFcnJvckV4cGlyZWQnKTtcclxuICAgICAgICAgICAgSGVscGVyQ2xhc3MuZXJhc2VDb29raWUoJ1RPS0VOJyk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5zdGF0dXMgPT09IFJlc3VsdFN0YXR1c0VudW0uTm90QWNjZXNzKSB7XHJcbiAgICAgICAgICAgIG0gPSB0aGlzLmwoJ0Zvcm1CYXNlRXJyb3JBY2Nlc3MnKTtcclxuICAgICAgICAgIH0gIGVsc2UgaWYgKHJlcy5zdGF0dXMgPT09IFJlc3VsdFN0YXR1c0VudW0uTm90UGVybWlzc2lvbikge1xyXG4gICAgICAgICAgICBtID0gdGhpcy5sKCdGb3JtQmFzZUVycm9yUGVybWlzc2lvbicpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXMubWVzc2FnZSA9PT0gJ3N0cmluZycpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFtID0gcmVzLm1lc3NhZ2Uuc3BsaXQoJzonKTtcclxuICAgICAgICAgICAgICBtID0gdGhpcy5sKGFtWzBdLCBhbS5sZW5ndGggPiAxID8gYW0uc2xpY2UoMSkgOiBudWxsKTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmZvcmluXHJcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBtc2cgaW4gcmVzLm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgIC8vIG5vaW5zcGVjdGlvbiBKU1VuZmlsdGVyZWRGb3JJbkxvb3BcclxuICAgICAgICAgICAgICAgIG0gPSB0aGlzLmwobXNnLCByZXMubWVzc2FnZVttc2ddKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZXRFcnJvcihyZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKG0pIHtcclxuICAgICAgICAgICAgSGVscGVyQ2xhc3MuYWRkTm90aWZpY2F0aW9uKG0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMub25GYWlsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkZhaWxlZChyZXMubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoY29uc3QgYnRuIG9mIGJ0bnMpe1xyXG4gICAgICAgICAgYnRuLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICBIZWxwZXJDbGFzcy5hZGROb3RpZmljYXRpb24odGhpcy5sKCdFcnJvcicpKTtcclxuICAgICAgICBpZiAodGhpcy5vbkZhaWxlZCkge1xyXG4gICAgICAgICAgdGhpcy5vbkZhaWxlZCgnRXJyb3InKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBidG4gb2YgYnRucyl7XHJcbiAgICAgICAgICBidG4ubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgY2hlY2soKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgdmFsaWQgPSB0cnVlO1xyXG4gICAgdGhpcy5pbnB1dHMuZm9yRWFjaChpbnAgPT4ge1xyXG4gICAgICBpZiAoIWlucC5pc1ZhbGlkKCkpIHtcclxuICAgICAgICBpZiAodmFsaWQpe1xyXG4gICAgICAgICAgaW5wLmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhbGlkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHZhbGlkO1xyXG4gIH1cclxuICBjbGVhcihpbnNlcnRBY2Nlc3MgPSB0cnVlKTogdm9pZCB7XHJcbiAgICB0aGlzLm1ldGhvZCA9IE1ldGhvZC5Qb3N0O1xyXG4gICAgdGhpcy51cmwgPSB0aGlzLmJhc2VVcmw7XHJcbiAgICB0aGlzLnNldEJ1dHRvbnModGhpcy5vblRvcCwgZmFsc2UsIGluc2VydEFjY2VzcywgZmFsc2UpO1xyXG4gICAgdGhpcy5jbGVhcklucHV0cygpO1xyXG4gICAgaWYgKHRoaXMub25Ub3AgJiYgIXRoaXMuaXNFZGl0KXtcclxuICAgICAgdGhpcy5mb2N1cygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0VkaXQgPSBmYWxzZTtcclxuICB9XHJcbiAgY2xlYXJJbnB1dHMoKTogdm9pZHtcclxuICAgIHRoaXMuaW5wdXRzLmZpbHRlcih4ID0+IHgudHlwZSAhPT0gSW5wdXRUeXBlLkNvbnN0YW50KS5mb3JFYWNoKGlucCA9PiB7XHJcbiAgICAgIGlucC5jbGVhcigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldEJ1dHRvbnMoZm9ybU9uVG9wLCBlZGl0OiBib29sZWFuLCBpbnNlcnRBY2Nlc3MgPSBmYWxzZSwgdXBkYXRlQWNjZXNzID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIGNvbnN0IHMgPSB0aGlzLmlucHV0cy5maW5kKHggPT4geC50eXBlID09PSBJbnB1dFR5cGUuU3VibWl0KTtcclxuICAgIGlmICghcyl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHMuZGlzYWJsZWQgPSAhKChlZGl0ICYmIHVwZGF0ZUFjY2VzcykgfHwgKCFlZGl0ICYmIGluc2VydEFjY2VzcykpO1xyXG4gICAgcy5uYW1lID0gcy5uYW1lICE9IG51bGwgPyAoZWRpdCA/ICdBY2NlcHQnIDogJ1NhdmUnKSA6IG51bGw7XHJcbiAgICBzLmNsYXNzID0gZWRpdCA/IHMuY2xhc3MucmVwbGFjZSgnZ3JlZW4nLCAnYmx1ZScpIDogcy5jbGFzcy5yZXBsYWNlKCdibHVlJywgJ2dyZWVuJyk7XHJcbiAgfVxyXG4gIGFkZEJ1dHRvbnMobmFtZSA9ICdTYXZlJywgY2xzID0gJ2dyZWVuJywgY2xlYXIgPSB0cnVlLCBpbnNlcnRBY2Nlc3MgPSB0cnVlLCBvblN1Ym1pdCA9IG51bGwpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN1Ym1pdCA9IHRoaXMuaW5wdXRzLmZpbmQoeCA9PiB4LnR5cGUgPT09IElucHV0VHlwZS5TdWJtaXQpID8/IG51bGw7XHJcbiAgICBpZiAoc3VibWl0ICE9IG51bGwpe1xyXG4gICAgICBzdWJtaXQuZGlzYWJsZWQgPSAhaW5zZXJ0QWNjZXNzO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBiciA9IG5ldyBJbnB1dENsYXNzKHRoaXMuZW52aXJvbm1lbnQsIHRoaXMubCwgbnVsbCwgbnVsbCwgSW5wdXRUeXBlLkxhYmVsLFxyXG4gICAgICB0aGlzLm9uVG9wID8gJ3NwYWNlJyA6ICd1bmRlcmxpbmUnKTtcclxuICAgIGNvbnN0IHNhdmUgPSBuZXcgSW5wdXRDbGFzcyh0aGlzLmVudmlyb25tZW50LCB0aGlzLmwsIG5hbWUsICdmYWQgZmEtY2hlY2snLCBJbnB1dFR5cGUuU3VibWl0LFxyXG4gICAgICAnc2F2ZS1mb3JtLWJ0biAnICsgKHRoaXMub25Ub3AgPyAnaC0yNSAnIDogJ2gtMzAgJykgKyBjbHMpO1xyXG4gICAgc2F2ZS5vbkNsaWNrID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLnN1Ym1pdChvblN1Ym1pdCk7XHJcbiAgICB9O1xyXG4gICAgc2F2ZS5kaXNhYmxlZCA9ICFpbnNlcnRBY2Nlc3M7XHJcbiAgICBpZiAoIWNscy5pbmNsdWRlcygnb25seS1pY29uJykpe1xyXG4gICAgICB0aGlzLmlucHV0cy5wdXNoKGJyKTtcclxuICAgIH0gZWxzZXtcclxuICAgICAgc2F2ZS5jbGFzcyA9IHNhdmUuY2xhc3MucmVwbGFjZSgnc2F2ZS1mb3JtLWJ0biAnLCAnJykucmVwbGFjZSgnaC0yNSAnLCAnaC0zMCAnKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5wdXRzLnB1c2goc2F2ZSk7XHJcbiAgICBpZiAoY2xlYXIpe1xyXG4gICAgICBjb25zdCBlcmFzZSA9IG5ldyBJbnB1dENsYXNzKHRoaXMuZW52aXJvbm1lbnQsIHRoaXMubCwgbnVsbCwgJ2ZhZCBmYS1lcmFzZXInLCBJbnB1dFR5cGUuQnV0dG9uLFxyXG4gICAgICAgICdmLWwgdy11IGdyZXkgZXJhc2UtZm9ybS1idG4gJyArICh0aGlzLm9uVG9wID8gJ2gtMjUgJyA6ICdoLTMwICcpKTtcclxuICAgICAgZXJhc2Uub25DbGljayA9ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5vblRvcCl7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyKGluc2VydEFjY2Vzcyk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmNsZWFySW5wdXRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmlucHV0cy5wdXNoKGVyYXNlKTtcclxuICAgIH1cclxuICB9XHJcbiAgZGF0YShkID0gbnVsbCk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dHMuZmluZEluZGV4KHggPT4geC50eXBlID09PSBJbnB1dFR5cGUuRmlsZSB8fCB4LnR5cGUgPT09IElucHV0VHlwZS5VcGxvYWRlcikgPT09IC0xKXtcclxuICAgICAgaWYgKGQgPT0gbnVsbCl7XHJcbiAgICAgICAgZCA9IHt9O1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgaWYgKGQgPT0gbnVsbCl7XHJcbiAgICAgICAgZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZXREID0gKG4sIHZsKSA9PiB7XHJcbiAgICAgIGlmIChkIGluc3RhbmNlb2YgRm9ybURhdGEpe1xyXG4gICAgICAgIGlmICh2bCBpbnN0YW5jZW9mIEFycmF5KXtcclxuICAgICAgICAgIGZvciAoY29uc3QgdiBvZiB2bCl7XHJcbiAgICAgICAgICAgIGQuYXBwZW5kKG4sIHYpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgZC5hcHBlbmQobiwgdmwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoZFtuXSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBfLnNldChkLCBuLCB2bCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChkW25dIGluc3RhbmNlb2YgQXJyYXkpe1xyXG4gICAgICAgICAgICBkW25dLnB1c2godmwpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZFtuXSA9IFtkW25dLCB2bF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbnB1dHMuZm9yRWFjaChpbnAgPT4ge1xyXG4gICAgICBjb25zdCB2bCA9IGlucC5kYXRhKCk7XHJcbiAgICAgIGlmICh2bCAhPT0gbnVsbCl7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2bCA9PT0gJ29iamVjdCcgJiYgISh2bCBpbnN0YW5jZW9mIEFycmF5KSl7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IFsga2V5LCB2YWx1ZSBdIG9mIE9iamVjdC5lbnRyaWVzKHZsKSkge1xyXG4gICAgICAgICAgICBzZXREKGtleSwgdmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzZXREKGlucC5uYW1lLCB2bCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkO1xyXG4gIH1cclxuICBqc29uKGQgPSBudWxsKToge30ge1xyXG4gICAgaWYgKGQgPT0gbnVsbCl7XHJcbiAgICAgIGQgPSB7fTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5wdXRzLmZvckVhY2goaW5wID0+IHtcclxuICAgICAgY29uc3QgdmwgPSBpbnAuZGF0YSgpO1xyXG4gICAgICBpZiAodmwgIT09IG51bGwgJiYgdmwgIT09ICcnKXtcclxuICAgICAgICBpZiAodmwgaW5zdGFuY2VvZiBBcnJheSl7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHYgb2Ygdmwpe1xyXG4gICAgICAgICAgICBkW2lucC5uYW1lXSA9IHY7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBkW2lucC5uYW1lXSA9IHZsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZDtcclxuICB9XHJcbiAgc2V0RGF0YShkKTogdm9pZCB7XHJcbiAgICB0aGlzLmlucHV0cy5mb3JFYWNoKGlucCA9PiB7XHJcbiAgICAgIGNvbnN0IGl2ID0gXy5nZXQoZCwgaW5wLm5hbWUpID8/IG51bGw7XHJcbiAgICAgIGlmIChpbnAudHlwZSA9PT0gSW5wdXRUeXBlLlZlaGljbGUpe1xyXG4gICAgICAgIGNvbnN0IGl2dCA9IF8uZ2V0KGQsIGlucC5uYW1lICsgJ1R5cGUnKTtcclxuICAgICAgICBpbnAuc2V0VmFsdWUoe1ZhbHVlOiBpdiwgVHlwZTogaXZ0fSwgdHJ1ZSk7XHJcbiAgICAgIH1lbHNlIGlmIChpbnAudHlwZSA9PT0gSW5wdXRUeXBlLlZlaGljbGVTZWFyY2gpe1xyXG4gICAgICAgIGNvbnN0IGl2cyA9IF8uZ2V0KGQsIGlucC5uYW1lLnJlcGxhY2UoJ0lkJywgJycpKTtcclxuICAgICAgICBjb25zdCBpdnQgPSBfLmdldChkLCBpbnAubmFtZS5yZXBsYWNlKCdJZCcsICdUeXBlJykpO1xyXG4gICAgICAgIGlucC5zZXRWYWx1ZSh7U2VhcmNoOiBpdnMsIFZhbHVlOiBpdiwgVHlwZTogaXZ0fSwgdHJ1ZSk7XHJcbiAgICAgIH1lbHNlIGlmIChpbnAudHlwZSAhPT0gSW5wdXRUeXBlLkxhYmVsIHx8IGl2ICE9IG51bGwpe1xyXG4gICAgICAgIGlucC5zZXRWYWx1ZShpdiwgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlucC50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlUGxhcXVlIHx8IGlucC50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlKXtcclxuICAgICAgICBjb25zdCBpdnMgPSBfLmdldChkLCBpbnAubmFtZS5yZXBsYWNlKCdJZCcsICcnKSk7XHJcbiAgICAgICAgaW5wLnNldFNlYXJjaChpdnMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2V0RXJyb3IocmVzKTogdm9pZCB7XHJcbiAgICBpZiAocmVzLmVycm9yICE9IG51bGwpe1xyXG4gICAgICBsZXQgZiA9IGZhbHNlO1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Zm9yaW5cclxuICAgICAgZm9yIChjb25zdCBlcnIgaW4gcmVzLmVycm9yKSB7XHJcbiAgICAgICAgLy8gbm9pbnNwZWN0aW9uIEpTVW5maWx0ZXJlZEZvckluTG9vcFxyXG4gICAgICAgIGNvbnN0IGkgPSB0aGlzLmlucHV0cy5maW5kKHggPT4geC5uYW1lID09PSBlcnIpO1xyXG4gICAgICAgIGlmIChpKXtcclxuICAgICAgICAgIC8vIG5vaW5zcGVjdGlvbiBKU1VuZmlsdGVyZWRGb3JJbkxvb3BcclxuICAgICAgICAgIGkuZXJyb3IgPSBJbnB1dEVycm9yW0lucHV0RXJyb3JbcmVzLmVycm9yW2Vycl1dXTtcclxuICAgICAgICAgIGlmICghZil7XHJcbiAgICAgICAgICAgIGkuZm9jdXMoKTtcclxuICAgICAgICAgICAgZiA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW5wdXRDbGFzcyB7XHJcbiAgY29uc3RydWN0b3IoZW52aXJvbm1lbnQ6IGFueSwgbDogKGssIHY/KSA9PiBzdHJpbmcsIG5hbWU6IHN0cmluZywgaWNvbjogc3RyaW5nID0gbnVsbCxcclxuICAgICAgICAgICAgICB0eXBlOiBJbnB1dFR5cGUgPSBJbnB1dFR5cGUuVGV4dCwgY2xzOiBzdHJpbmcgPSAnJywgdmFsdWUgPSBudWxsLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiBib29sZWFuID0gdHJ1ZSwgbWluTGVuZ3RoID0gLTEsIG1heExlbmd0aCA9IC0xKSB7XHJcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XHJcbiAgICB0aGlzLmwgPSBsO1xyXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuaWQgPSBuYW1lO1xyXG4gICAgdGhpcy5sb2FkaW5nTmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gbmFtZTtcclxuICAgIHRoaXMuaWNvbiA9IGljb247XHJcbiAgICB0aGlzLmNsYXNzID0gY2xzICsgKFtJbnB1dFR5cGUuTW9iaWxlLCBJbnB1dFR5cGUuUGhvbmUsIElucHV0VHlwZS5QYXNzd29yZCwgSW5wdXRUeXBlLkVtYWlsLCBJbnB1dFR5cGUuTnVtYmVyLCBJbnB1dFR5cGUuUHJpY2UsXHJcbiAgICAgIElucHV0VHlwZS5OYXRpb25hbENvZGUsIElucHV0VHlwZS5OYXRpb25hbE51bSwgSW5wdXRUeXBlLk5hdGlvbmFsQ29kZU51bSwgSW5wdXRUeXBlLkVjb25vbWljTnVtLCBJbnB1dFR5cGUuU2hlYmEsXHJcbiAgICAgIElucHV0VHlwZS5Qb3N0YWxDb2RlLCBJbnB1dFR5cGUuRGF0ZSwgSW5wdXRUeXBlLlRpbWUsIElucHV0VHlwZS5CaWxsTnVtYmVyLCBJbnB1dFR5cGUuVXNlcm5hbWUsIElucHV0VHlwZS5VcmxdLmluY2x1ZGVzKHR5cGUpID8gJyBsdHInIDogJycpO1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuZGVmYXVsdCA9IHZhbHVlID09IG51bGwgPyBudWxsIDogKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IF8uY2xvbmVEZWVwKHZhbHVlKSA6IEhlbHBlckNsYXNzLmNsb25lKHZhbHVlKSk7XHJcbiAgICB0aGlzLmJhc2VSZXF1aXJlZCA9IHJlcXVpcmVkO1xyXG4gICAgdGhpcy5yZXF1aXJlZCA9IHJlcXVpcmVkO1xyXG4gICAgdGhpcy5pbkVkaXRSZXF1aXJlZCA9IHJlcXVpcmVkO1xyXG4gICAgdGhpcy5taW5MZW5ndGggPSB0eXBlID09PSBJbnB1dFR5cGUuTW9iaWxlIHx8IHR5cGUgPT09IElucHV0VHlwZS5QaG9uZSB8fCB0eXBlID09PSBJbnB1dFR5cGUuTmF0aW9uYWxOdW0gfHwgdHlwZSA9PT0gSW5wdXRUeXBlLkVjb25vbWljTnVtID8gMTEgOlxyXG4gICAgICB0eXBlID09PSBJbnB1dFR5cGUuTmF0aW9uYWxDb2RlIHx8IHR5cGUgPT09IElucHV0VHlwZS5Qb3N0YWxDb2RlIHx8IHR5cGUgPT09IElucHV0VHlwZS5OYXRpb25hbENvZGVOdW0gPyAxMCA6XHJcbiAgICAgIHR5cGUgPT09IElucHV0VHlwZS5Vc2VybmFtZSA/IDUgOlxyXG4gICAgICB0eXBlID09PSBJbnB1dFR5cGUuU2hlYmEgPyAyNCA6IG1pbkxlbmd0aDtcclxuICAgIHRoaXMubWF4TGVuZ3RoID0gdHlwZSA9PT0gSW5wdXRUeXBlLk1vYmlsZSB8fCB0eXBlID09PSBJbnB1dFR5cGUuUGhvbmUgfHwgdHlwZSA9PT0gSW5wdXRUeXBlLk5hdGlvbmFsTnVtIHx8IHR5cGUgPT09IElucHV0VHlwZS5OYXRpb25hbENvZGVOdW0gPyAxMSA6XHJcbiAgICAgIHR5cGUgPT09IElucHV0VHlwZS5OYXRpb25hbENvZGUgfHwgdHlwZSA9PT0gSW5wdXRUeXBlLlBvc3RhbENvZGUgPyAxMCA6XHJcbiAgICAgIHR5cGUgPT09IElucHV0VHlwZS5FY29ub21pY051bSA/IDE0IDpcclxuICAgICAgdHlwZSA9PT0gSW5wdXRUeXBlLlVzZXJuYW1lID8gMzAgOlxyXG4gICAgICB0eXBlID09PSBJbnB1dFR5cGUuU2hlYmEgPyAyNCA6IG1heExlbmd0aDtcclxuICB9XHJcbiAgZW52aXJvbm1lbnQ6IGFueSA9IG51bGw7XHJcbiAgbDogKGssIHY/KSA9PiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHVybCA9IG51bGw7XHJcbiAgcXVlcnlQYXJhbXMgPSBudWxsO1xyXG4gIHVybE5ld1RhYiA9IGZhbHNlO1xyXG4gIGxvYWRpbmdOYW1lOiBzdHJpbmc7XHJcbiAgcGxhY2Vob2xkZXI6IHN0cmluZyA9IG51bGw7XHJcbiAgdG9vbHRpcDogc3RyaW5nO1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgaWNvbjogc3RyaW5nO1xyXG4gIGFkZE5ldyA9IGZhbHNlO1xyXG4gIGNsYXNzOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZyA9IG51bGw7XHJcbiAgdHlwZTogSW5wdXRUeXBlO1xyXG4gIHZhbHVlID0gbnVsbDtcclxuICBzZWFyY2ggPSBudWxsO1xyXG4gIGRlZmF1bHQgPSBudWxsO1xyXG4gIGJhc2VSZXF1aXJlZDogYm9vbGVhbjtcclxuICByZXF1aXJlZDogYm9vbGVhbjtcclxuICBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIGluRWRpdERpc2FibGVkID0gZmFsc2U7XHJcbiAgaW5FZGl0VmlzaWJsZSA9IHRydWU7XHJcbiAgaW5FZGl0UmVxdWlyZWQgPSB0cnVlO1xyXG4gIGRpc3BsYXlMYWJlbCA9IHRydWU7XHJcbiAgbGFiZWw6IHN0cmluZyA9IG51bGw7XHJcbiAgd2l0aENsZWFyID0gZmFsc2U7XHJcbiAgbWluTGVuZ3RoID0gLTE7XHJcbiAgbWF4TGVuZ3RoID0gLTE7XHJcbiAgZXJyb3I6IElucHV0RXJyb3IgPSBudWxsO1xyXG4gIGFkZE1vZGFsOiBNb2RhbENsYXNzID0gbnVsbDtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgYnV0dG9uID0gbnVsbDtcclxuICBoYXNCYXJjb2RlUmVhZGVyID0gZmFsc2U7XHJcbiAgb25CYXJjb2RlUmVhZGVyQ2hhbmdlID0gbnVsbDtcclxuICBvbkNsaWNrQnV0dG9uOiAoaW5wKSA9PiB2b2lkID0gbnVsbDtcclxuICBwcm9ncmVzczogUHJvZ3Jlc3MgPSBudWxsO1xyXG4gIG9uQ2xpY2s6IChidG4pID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uS2V5VXA6IChpbnApID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uS2V5RG93bjogKGUpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9wdGlvbnM6IE9wdGlvbkNsYXNzW10gPSBbXTtcclxuICBtYXRjaDogSW5wdXRDbGFzcyA9IG51bGw7XHJcbiAgcmVsOiBJbnB1dENsYXNzID0gbnVsbDtcclxuICByZWxVcmw6IHN0cmluZyA9IG51bGw7XHJcbiAgdGFibGU6IFRhYmxlQ2xhc3M7XHJcbiAgc3R5bGUgPSB7fTtcclxuICBwb3NpdGlvbiA9ICdib3R0b20nO1xyXG4gIG9uQ2hhbmdlOiAodiwgZT8pID0+IHZvaWQgPSBudWxsO1xyXG4gIGhvdmVyID0gLTE7XHJcbiAgdmlzaWJsZSA9IHRydWU7XHJcbiAgb3BlbiA9IGZhbHNlO1xyXG4gIG11bHRpcGxlID0gZmFsc2U7XHJcbiAgb25seUNoaWxkID0gdHJ1ZTtcclxuICBhbGxvd2VkID0gbnVsbDtcclxuICByb3cgPSBudWxsO1xyXG4gIHJvd3MgPSBbXTtcclxuICBsZXZlbCA9IG51bGw7XHJcbiAgbW9kYWw6IE1vZGFsQ2xhc3MgPSBudWxsO1xyXG4gIHJlcXVlc3Q6IGFueSA9IG51bGw7XHJcbiAgbmFtZUZ1bjogKHIpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uRm9jdXNJbjogKGUpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uRm9jdXNPdXQ6IChlKSA9PiB2b2lkID0gbnVsbDtcclxuICBmb2N1cyhjaGFuZ2VJbmRleDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7fVxyXG4gIGNoYW5nZVR5cGU6ICh0OiBJbnB1dFR5cGUpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICBzZXRWYWx1ZTogKHYsIGlzRWRpdCkgPT4gdm9pZCA9ICh2LCBpc0VkaXQpID0+IHsgdGhpcy52YWx1ZSA9IHY7IH07XHJcbiAgc2V0U2VhcmNoOiAodikgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG4gIGNsZWFyOiAoKSA9PiB2b2lkID0gKCkgPT4geyB0aGlzLnZhbHVlID0gbnVsbDsgfTtcclxuICBmb2N1c091dDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG4gIGRhdGE6ICgpID0+IGFueSA9ICgpID0+IHtcclxuICAgIHJldHVybiB0aGlzLnZhbHVlO1xyXG4gIH1cclxuICBpc1ZhbGlkOiAoKSA9PiBib29sZWFuID0gKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIGxvYWQodSA9IG51bGwsIGRvbmU6ICgpID0+IHZvaWQgPSBudWxsKTogdm9pZHtcclxuICAgIHUgPSB1ID8gdSA6IHRoaXMudXJsO1xyXG4gICAgaWYgKHUpe1xyXG4gICAgICB0aGlzLm9wdGlvbnMgPSBbXTtcclxuICAgICAgdGhpcy5ob3ZlciA9IC0xO1xyXG4gICAgICB0aGlzLnJvd3MgPSBbXTtcclxuICAgICAgaWYgKHR5cGVvZiB1ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGlmICghdS5pbmNsdWRlcygne30nKSl7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5yZXF1ZXN0ID0gbmV3IFJlcXVlc3RDbGFzcyh0aGlzLmVudmlyb25tZW50LCB0aGlzLmwpLnNlbmQodSA/IHUgOiB0aGlzLnVybCwgTWV0aG9kLlBvc3QsIG51bGwsIG51bGwsIChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdFNlYXJjaFJhZGlvIHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdFNlYXJjaCB8fCB0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3QgfHwgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlIHx8XHJcbiAgICAgICAgICAgICAgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlUGxhcXVlIHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZU0gfHxcclxuICAgICAgICAgICAgICB0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3RBdXRvQ29tcGxldGVQbGFxdWVGIHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZUcgfHwgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuUmFkaW8pIHtcclxuICAgICAgICAgICAgICBjb25zdCByID0gdGhpcy5nZXRPcHRpb25zKHJlc3VsdCwgbnVsbCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgcyA9IHJlc3VsdC5maW5kKHggPT4geC5TZWxlY3RlZCk7XHJcbiAgICAgICAgICAgICAgaWYgKHMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBzLklkLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2V0T3B0aW9ucyhyKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IElucHV0VHlwZS5UcmVlIHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlRyZWVSYWRpbykge1xyXG4gICAgICAgICAgICAgIHRoaXMucm93cyA9IHRoaXMuZ2V0Um93cyhyZXN1bHQsIG51bGwpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlICE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy52YWx1ZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZG9uZSkge1xyXG4gICAgICAgICAgICAgIGRvbmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0sIHRoaXMucmVxdWVzdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcclxuICAgICAgICBFbnVtVXRpbHMuZ2V0S2V5c0FuZFZhbHVlcyh1KS5mb3JFYWNoKChrKSA9PiB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaCh7TmFtZTogdGhpcy5sKGsua2V5KSwgSWQ6IGsudmFsdWUudG9TdHJpbmcoKX0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3RTZWFyY2hSYWRpbyB8fCB0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3RTZWFyY2ggfHwgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0IHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZSB8fFxyXG4gICAgICAgICAgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlUGxhcXVlIHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZU0gfHxcclxuICAgICAgICAgIHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZUYgfHwgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlUGxhcXVlRyB8fFxyXG4gICAgICAgICAgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuUmFkaW8gfHwgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuU2xpZGUpIHtcclxuICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmdldE9wdGlvbnMocmVzdWx0LCBudWxsKTtcclxuICAgICAgICAgIHRoaXMuc2V0T3B0aW9ucyhyKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlRyZWUgfHwgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuVHJlZVJhZGlvKSB7XHJcbiAgICAgICAgICB0aGlzLnJvd3MgPSB0aGlzLmdldFJvd3MocmVzdWx0LCBudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgc2V0T3B0aW9ucyhyKTogdm9pZHtcclxuICAgIHRoaXMub3B0aW9ucyA9IHI7XHJcbiAgICBpZiAodGhpcy52YWx1ZSAhPSBudWxsKXtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLnZhbHVlLCB0cnVlKTtcclxuICAgICAgfSwgNTAwKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRPcHRpb25EYXRhKCk6IGFueXtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmluZCh4ID0+IHgudmFsdWUgPT09IHRoaXMudmFsdWUpPy5vcHRpb24gPz8gbnVsbDtcclxuICB9XHJcbiAgZ2V0T3B0aW9ucyhyLCBwLCB0cmVlID0gdHJ1ZSk6IE9wdGlvbkNsYXNzW117XHJcbiAgICByZXR1cm4gci5maWx0ZXIoeCA9PiAocCA9PSBudWxsICYmICF4LlBhcmVudElkKSB8fCB4LlBhcmVudElkID09PSBwIHx8ICF0cmVlKVxyXG4gICAgICAubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbyA9IG5ldyBPcHRpb25DbGFzcyh4Lk5hbWUsIHguSWQudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZSB8fCB0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3RBdXRvQ29tcGxldGVQbGFxdWVNIHx8XHJcbiAgICAgICAgICB0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3RBdXRvQ29tcGxldGVQbGFxdWVGIHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZUcgfHwgdGhpcy5uYW1lID09PSAnQ2FySWQnKXtcclxuICAgICAgICAgIG8ubmFtZSA9IEhlbHBlckNsYXNzLlRvUmVhZGFibGVQbGFxdWUoby5uYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgby5zZWFyY2ggPSB4LlNlYXJjaDtcclxuICAgICAgICBvLm9wdGlvbiA9IHg7XHJcbiAgICAgICAgby5vcHRpb25zID0gdHJlZSA/IHRoaXMuZ2V0T3B0aW9ucyhyLCB4LklkKSA6IFtdO1xyXG4gICAgICAgIHJldHVybiBvO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZ2V0Um93cyhyLCBwKTogVHJlZVJvd0NsYXNzW117XHJcbiAgICBjb25zdCBsID0gW107XHJcbiAgICByLmZpbHRlcih4ID0+IChwID09IG51bGwgJiYgIXguUGFyZW50SWQpIHx8IHguUGFyZW50SWQgPT09IHApLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgbGV0IGMgPSB0aGlzLmdldFJvd3MociwgeC5JZCk7XHJcbiAgICAgIGMgPSBjLmxlbmd0aCA+IDAgPyBjIDogeC5DaGlsZHJlbiA/IHguQ2hpbGRyZW4ubWFwKGEgPT4gbmV3IFRyZWVSb3dDbGFzcyhhLk5hbWUsIGEuSWQsIGEuU2VsZWN0ZWQpKSA6IFtdO1xyXG4gICAgICBsZXQgcyA9IHguU2VsZWN0ZWQgPT09IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLm9ubHlDaGlsZCl7XHJcbiAgICAgICAgcyA9IGMubGVuZ3RoID09PSAwID8geC5TZWxlY3RlZCA6IChjLmZpbmQoeSA9PiB5LnNlbGVjdGVkID09PSBmYWxzZSB8fCB5LnNlbGVjdGVkID09PSBudWxsKSA9PSBudWxsID8gdHJ1ZSA6XHJcbiAgICAgICAgICAoYy5maW5kKHkgPT4geS5zZWxlY3RlZCA9PT0gdHJ1ZSB8fCB5LnNlbGVjdGVkID09PSBudWxsKSAhPSBudWxsID8gbnVsbCA6IGZhbHNlKSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbiA9IHRoaXMubmFtZUZ1biA/IHRoaXMubmFtZUZ1bih4KSA6IHguTmFtZTtcclxuICAgICAgbC5wdXNoKG5ldyBUcmVlUm93Q2xhc3MobiwgeC5JZCwgcywgYykpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbDtcclxuICB9XHJcbiAgZ2V0TGFiZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBIZWxwZXJDbGFzcy5nZXRMYWJlbCh0aGlzKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWQob3B0czogT3B0aW9uQ2xhc3NbXSA9IHRoaXMub3B0aW9ucyk6IGFueVtde1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U2VsZWN0ZWRPcHRpb25zKG9wdHMpLm1hcCh4ID0+IHgudmFsdWUpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZE5hbWUob3B0czogT3B0aW9uQ2xhc3NbXSA9IHRoaXMub3B0aW9ucyk6IGFueVtde1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U2VsZWN0ZWRPcHRpb25zKG9wdHMpLm1hcCh4ID0+IHguc2VhcmNoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRPcHRpb25zKG9wdHM6IE9wdGlvbkNsYXNzW10gPSB0aGlzLm9wdGlvbnMpOiBhbnlbXXtcclxuICAgIGxldCBsID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGYgb2Ygb3B0cyl7XHJcbiAgICAgIGlmIChmLnNlbGVjdGVkICYmICghdGhpcy5vbmx5Q2hpbGQgfHwgZi5vcHRpb25zLmxlbmd0aCA9PT0gMCkpe1xyXG4gICAgICAgIGwucHVzaChmKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBycyA9IHRoaXMuZ2V0U2VsZWN0ZWRPcHRpb25zKGYub3B0aW9ucyk7XHJcbiAgICAgIGwgPSBsLmNvbmNhdChycyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbDtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dzKHJvd3M6IGFueVtdID0gdGhpcy5yb3dzKTogYW55W117XHJcbiAgICBsZXQgbCA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBmIG9mIHJvd3Mpe1xyXG4gICAgICBpZiAoZi5zZWxlY3RlZCAmJiAoIXRoaXMub25seUNoaWxkIHx8IGYuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSl7XHJcbiAgICAgICAgbC5wdXNoKGYpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHJzID0gdGhpcy5nZXRTZWxlY3RlZFJvd3MoZi5jaGlsZHJlbik7XHJcbiAgICAgIGwgPSBsLmNvbmNhdChycyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbDtcclxuICB9XHJcbiAgZ2V0QWxsUm93cyhyb3dzOiBhbnlbXSA9IHRoaXMucm93cyk6IGFueVtde1xyXG4gICAgbGV0IGwgPSBbXTtcclxuICAgIGZvciAoY29uc3QgZiBvZiByb3dzKXtcclxuICAgICAgaWYgKCF0aGlzLm9ubHlDaGlsZCB8fCBmLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCl7XHJcbiAgICAgICAgbC5wdXNoKGYpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHJzID0gdGhpcy5nZXRBbGxSb3dzKGYuY2hpbGRyZW4pO1xyXG4gICAgICBsID0gbC5jb25jYXQocnMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGw7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgT3B0aW9uQ2xhc3Mge1xyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgb3B0aW9uczogT3B0aW9uQ2xhc3NbXSA9IFtdLCBjbHM6IHN0cmluZyA9IG51bGwsIGRpczogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuICAgIHRoaXMuY2xhc3MgPSBjbHM7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzO1xyXG4gIH1cclxuICBvcHRpb247XHJcbiAgc2VhcmNoOiBzdHJpbmc7XHJcbiAgY2xhc3M6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZztcclxuICBzaG93ID0gdHJ1ZTtcclxuICBzZWxlY3RlZCA9IGZhbHNlO1xyXG4gIHBhcmVudDogT3B0aW9uQ2xhc3MgPSBudWxsO1xyXG4gIG9wdGlvbnM6IE9wdGlvbkNsYXNzW107XHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG4gIGRpc2FibGVkID0gZmFsc2U7XHJcbn1cclxuZXhwb3J0IGNsYXNzIERheUNsYXNzIHtcclxuICBjb25zdHJ1Y3RvcihkYXk6IG51bWJlciwgdG9kYXk6IGJvb2xlYW4sIHNlbGVjdGVkOiBib29sZWFuLCBhY3RpdmU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZGF5ID0gZGF5O1xyXG4gICAgdGhpcy50b2RheSA9IHRvZGF5O1xyXG4gICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkO1xyXG4gICAgdGhpcy5hY3RpdmUgPSBhY3RpdmU7XHJcbiAgfVxyXG4gIGRheTogbnVtYmVyO1xyXG4gIHRvZGF5OiBib29sZWFuO1xyXG4gIHNlbGVjdGVkOiBib29sZWFuO1xyXG4gIGFjdGl2ZTogYm9vbGVhbjtcclxuICBjbGFzczogc3RyaW5nID0gbnVsbDtcclxufVxyXG5leHBvcnQgY2xhc3MgVHJlZVJvd0NsYXNzIHtcclxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHNlbGVjdGVkOiBib29sZWFuID0gZmFsc2UsIGNoaWxkcmVuOiBUcmVlUm93Q2xhc3NbXSA9IFtdKSB7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkO1xyXG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gIH1cclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZztcclxuICBzZWxlY3RlZDogYm9vbGVhbjtcclxuICBwYXJlbnQ6IFRyZWVSb3dDbGFzcztcclxuICBjaGlsZHJlbjogVHJlZVJvd0NsYXNzW107XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25DbGFzcyB7XHJcbiAgY29uc3RydWN0b3IobDogKGssIHY/KSA9PiBzdHJpbmcsIG5hbWU6IHN0cmluZywgY2xzOiBzdHJpbmcgPSAnJywgcm93czogQWNjb3JkaW9uUm93Q2xhc3NbXSkge1xyXG4gICAgdGhpcy5sID0gbDtcclxuICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLmNsYXNzID0gY2xzO1xyXG4gICAgdGhpcy5yb3dzID0gcm93cztcclxuICB9XHJcbiAgbDogKGssIHY/KSA9PiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGNsYXNzOiBzdHJpbmc7XHJcbiAgcm93czogQWNjb3JkaW9uUm93Q2xhc3NbXTtcclxuICBoYXNEZWxldGUgPSBmYWxzZTtcclxuICBkaXNwbGF5TGFiZWwgPSBmYWxzZTtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgYWNjZXNzID0gdHJ1ZTtcclxuICBvbkRlbGV0ZTogKHJvdykgPT4gdm9pZCA9IG51bGw7XHJcbiAgY2hlY2soKTogYm9vbGVhbntcclxuICAgIGZvciAoY29uc3Qgcm93IG9mIHRoaXMucm93cyl7XHJcbiAgICAgIGlmICghcm93LmZvcm0uY2hlY2soKSl7XHJcbiAgICAgICAgcm93Lm9wZW4oKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFjY29yZGlvblJvd0NsYXNzIHtcclxuICBjb25zdHJ1Y3RvcihpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGZvcm06IEZvcm1DbGFzcyA9IG51bGwsIHRhYmxlOiBUYWJsZUNsYXNzID0gbnVsbCkge1xyXG4gICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuZm9ybSA9IGZvcm07XHJcbiAgICB0aGlzLnRhYmxlID0gdGFibGU7XHJcbiAgfVxyXG4gIGlkOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHNob3cgPSB0cnVlO1xyXG4gIGZpcnN0VGFibGUgPSB0cnVlO1xyXG4gIGZvcm06IEZvcm1DbGFzcztcclxuICBjaGFydDogQ2hhcnRDbGFzcztcclxuICB0YWJsZTogVGFibGVDbGFzcztcclxuICB0b2dnbGUoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgJCgnI0FjY29yZGlvblJvdycgKyB0aGlzLmlkICsgJyA+IC5oZWFkZXInKS5jbGljaygpO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcbiAgb3BlbigpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoISQoJyNBY2NvcmRpb25Sb3cnICsgdGhpcy5pZCArICcgPiAuY29udGVudCcpLmhhc0NsYXNzKCdvcGVuJykpe1xyXG4gICAgICAgICQoJyNBY2NvcmRpb25Sb3cnICsgdGhpcy5pZCArICcgPiAuaGVhZGVyJykuY2xpY2soKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcbn1cclxuIl19
|
|
666
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJEOi9Qc1Rvb2xraXQvVUkvcHJvamVjdHMvcHMtdG9vbGtpdC11aS9zcmMvIiwic291cmNlcyI6WyJsaWIvY2xhc3Nlcy9mb3JtLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEVBQ04sZ0JBQWdCLEVBQ2pCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFJN0MsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFHNUIsTUFBTSxPQUFPLFFBQVE7SUFDbkIsWUFBWSxJQUFZO1FBS3hCLFlBQU8sR0FBRyxHQUFHLENBQUM7UUFFZCxVQUFLLEdBQWUsSUFBSSxDQUFDO1FBQ3pCLFlBQU8sR0FBZSxJQUFJLENBQUM7UUFDM0IsV0FBTSxHQUFtQyxJQUFJLENBQUM7UUFDOUMsVUFBSyxHQUFHLEdBQUcsRUFBRTtZQUNYLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztZQUNuQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUM7Z0JBQ2YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2hCO1lBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUUsR0FBRyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO2dCQUNuRCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFDO29CQUN4QixhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUM3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QUFlLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNyRDtRQUNILENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRW51bVV0aWxzLFxyXG4gIElucHV0RXJyb3IsXHJcbiAgSW5wdXRUeXBlLFxyXG4gIE1ldGhvZCxcclxuICBSZXN1bHRTdGF0dXNFbnVtXHJcbn0gZnJvbSAnLi9lbnVtLmNsYXNzJztcclxuaW1wb3J0IHtIZWxwZXJDbGFzc30gZnJvbSAnLi9oZWxwZXIuY2xhc3MnO1xyXG5pbXBvcnQge1JlcXVlc3RDbGFzc30gZnJvbSAnLi9yZXF1ZXN0LmNsYXNzJztcclxuaW1wb3J0IHtUYWJsZUNsYXNzfSBmcm9tICcuL3RhYmxlLmNsYXNzJztcclxuZGVjbGFyZSB2YXIgJDogYW55O1xyXG5pbXBvcnQge01vZGFsQ2xhc3N9IGZyb20gJy4vbW9kYWwuY2xhc3MnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7Q2hhcnRDbGFzc30gZnJvbSAnLi9jaGFydC5jbGFzcyc7XHJcblxyXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3Mge1xyXG4gIGNvbnN0cnVjdG9yKHNlY3M6IG51bWJlcikge1xyXG4gICAgdGhpcy5zZWNzID0gdGhpcy5yZW1haW5TZWNzID0gc2VjcztcclxuICB9XHJcbiAgc2VjczogbnVtYmVyO1xyXG4gIHJlbWFpblNlY3M6IG51bWJlcjtcclxuICBwZXJjZW50ID0gMTAwO1xyXG4gIGludGVyVmFsO1xyXG4gIG9uRW5kOiAoKSA9PiB2b2lkID0gbnVsbDtcclxuICBvblN0YXJ0OiAoKSA9PiB2b2lkID0gbnVsbDtcclxuICBvblRpY2s6IChtOiBudW1iZXIsIHM6IG51bWJlcikgPT4gdm9pZCA9IG51bGw7XHJcbiAgc3RhcnQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnJlbWFpblNlY3MgPSB0aGlzLnNlY3M7XHJcbiAgICB0aGlzLnBlcmNlbnQgPSAxMDA7XHJcbiAgICBpZiAodGhpcy5vblN0YXJ0KXtcclxuICAgICAgdGhpcy5vblN0YXJ0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmludGVyVmFsID0gc2V0SW50ZXJ2YWwoICgpID0+IHtcclxuICAgICAgdGhpcy5wZXJjZW50ID0gKHRoaXMucmVtYWluU2VjcyAvIHRoaXMuc2VjcykgKiAxMDA7XHJcbiAgICAgIGlmICh0aGlzLnJlbWFpblNlY3MgPT09IDApe1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlclZhbCk7XHJcbiAgICAgICAgaWYgKHRoaXMub25FbmQpe1xyXG4gICAgICAgICAgdGhpcy5vbkVuZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIodGhpcy5yZW1haW5TZWNzKSl7XHJcbiAgICAgICAgY29uc3QgbSA9IE1hdGguZmxvb3IodGhpcy5yZW1haW5TZWNzIC8gNjApO1xyXG4gICAgICAgIGNvbnN0IHMgPSB0aGlzLnJlbWFpblNlY3MgJSA2MDtcclxuICAgICAgICB0aGlzLm9uVGljayhtLCBzKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbWFpblNlY3MgLT0gMC41O1xyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGNsYXNzIEZvcm1DbGFzcyB7XHJcbiAgY29uc3RydWN0b3IoZW52aXJvbm1lbnQ6IGFueSwgbDogKGssIHY/KSA9PiBzdHJpbmcsIG5hbWU6IHN0cmluZyA9IG51bGwsIHBlcm1pc3Npb246IGJvb2xlYW4gPSB0cnVlLFxyXG4gICAgICAgICAgICAgIHVybDogc3RyaW5nID0gbnVsbCwgY2xzOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XHJcbiAgICB0aGlzLmwgPSBsO1xyXG4gICAgdGhpcy51cmwgPSB1cmw7XHJcbiAgICB0aGlzLmJhc2VVcmwgPSB1cmw7XHJcbiAgICB0aGlzLmNsYXNzID0gY2xzO1xyXG4gICAgdGhpcy5wZXJtaXNzaW9uID0gcGVybWlzc2lvbjtcclxuICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLmlkID0gdGhpcy5uYW1lO1xyXG4gIH1cclxuICBsOiAoaywgdj8pID0+IHN0cmluZztcclxuICBwZXJtaXNzaW9uOiBib29sZWFuO1xyXG4gIGVudmlyb25tZW50OiBhbnkgPSBudWxsO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBpc0VkaXQgPSBmYWxzZTtcclxuICBzdWJOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgY2xhc3M6IHN0cmluZztcclxuICBiYXNlVXJsOiBzdHJpbmc7XHJcbiAgdXJsOiBzdHJpbmc7XHJcbiAgbWV0aG9kOiBNZXRob2QgPSBNZXRob2QuUG9zdDtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgc3R5bGU6IHt9O1xyXG4gIG9uVG9wID0gZmFsc2U7XHJcbiAgZGlzcGxheUxhYmVsID0gdHJ1ZTtcclxuICByZXF1ZXN0OiBhbnkgPSBudWxsO1xyXG4gIGlucHV0czogSW5wdXRDbGFzc1tdID0gW107XHJcbiAgb25TdWNjZXNzQmFzZTogKHJlc3VsdCkgPT4gdm9pZCA9IG51bGw7XHJcbiAgb25TdWNjZXNzOiAocmVzdWx0KSA9PiB2b2lkID0gbnVsbDtcclxuICBvbkZhaWxlZDogKHJlc3VsdCkgPT4gdm9pZCA9IG51bGw7XHJcbiAgb25Mb2FkOiAocmVzdWx0KSA9PiB2b2lkID0gbnVsbDtcclxuICBvbkJlZm9yZVN1Ym1pdDogKCkgPT4gYm9vbGVhbiA9IG51bGw7XHJcbiAgb25IaWRlTW9kYWw6ICgpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uU2hvd01vZGFsOiAoKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgbG9hZERhdGEodXJsKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgbmV3IFJlcXVlc3RDbGFzcyh0aGlzLmVudmlyb25tZW50LCB0aGlzLmwpLnNlbmQodXJsLCBNZXRob2QuUG9zdCwgbnVsbCwgbnVsbCwgKHJlc3VsdCkgPT4ge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldERhdGEocmVzdWx0KTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5vbkxvYWQpe1xyXG4gICAgICAgICAgdGhpcy5vbkxvYWQocmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDUwMCk7XHJcbiAgICB9LCAobSkgPT4ge1xyXG4gICAgICBpZiAobSA9PT0gJ0Zvcm1CYXNlRXJyb3JBY2Nlc3MnIHx8IG0gPT09ICdGb3JtQmFzZUVycm9yUGVybWlzc2lvbicpe1xyXG4gICAgICAgIHRoaXMucGVybWlzc2lvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZm9jdXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpID0gdGhpcy5pbnB1dHMuZmluZCh4ID0+ICF4LmRpc2FibGVkICYmIHgudHlwZSAhPT0gSW5wdXRUeXBlLkxhYmVsICYmIHgudHlwZSAhPT0gSW5wdXRUeXBlLkhpZGRlbiAmJlxyXG4gICAgICB4LnR5cGUgIT09IElucHV0VHlwZS5Db25zdGFudCAmJiB4LnR5cGUgIT09IElucHV0VHlwZS5TdWJtaXQgJiYgeC50eXBlICE9PSBJbnB1dFR5cGUuQnV0dG9uICYmIHgudHlwZSAhPT0gSW5wdXRUeXBlLkljb24gJiZcclxuICAgICAgeC50eXBlICE9PSBJbnB1dFR5cGUuQ2hlY2spO1xyXG4gICAgaWYgKGkpe1xyXG4gICAgICBpLmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN1Ym1pdChvblN1Ym1pdCA9IG51bGwpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jaGVjaygpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9uQmVmb3JlU3VibWl0ICYmICF0aGlzLm9uQmVmb3JlU3VibWl0KCkpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBidG5zID0gdGhpcy5pbnB1dHMuZmlsdGVyKHggPT4geC50eXBlID09PSBJbnB1dFR5cGUuU3VibWl0KTtcclxuICAgIGZvciAoY29uc3QgYnRuIG9mIGJ0bnMpe1xyXG4gICAgICBpZiAoYnRuLmxvYWRpbmcpe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBidG4ubG9hZGluZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRhID0gdGhpcy5kYXRhKCk7XHJcbiAgICBpZiAob25TdWJtaXQpe1xyXG4gICAgICBmb3IgKGNvbnN0IGJ0biBvZiBidG5zKXtcclxuICAgICAgICBidG4ubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIG9uU3VibWl0KGRhdGEpO1xyXG4gICAgICBpZiAodGhpcy5vblN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLm9uU3VjY2VzcyhkYXRhKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlcXVlc3QgPSBuZXcgUmVxdWVzdENsYXNzKHRoaXMuZW52aXJvbm1lbnQpLmdldENsaWVudCh0aGlzLnJlcXVlc3QsIHRoaXMudXJsLCB0aGlzLm1ldGhvZCwgZGF0YSxcclxuICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMuc3RhdHVzID09PSBSZXN1bHRTdGF0dXNFbnVtLlN1Y2Nlc3MpIHtcclxuICAgICAgICAgIGlmICh0aGlzLm9uU3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLm9uU3VjY2VzcyhyZXMucmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLm9uU3VjY2Vzc0Jhc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5vblN1Y2Nlc3NCYXNlKHJlcy5yZXN1bHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgbSA9ICcnO1xyXG4gICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IFJlc3VsdFN0YXR1c0VudW0uTm90UmVnaXN0ZXJlZCkge1xyXG4gICAgICAgICAgICBtID0gdGhpcy5sKCdGb3JtQmFzZUVycm9yTm90UmVnaXN0ZXJlZCcpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMuc3RhdHVzID09PSBSZXN1bHRTdGF0dXNFbnVtLkV4cGlyZWRSZWdpc3RlcmVkKSB7XHJcbiAgICAgICAgICAgIG0gPSB0aGlzLmwoJ0Zvcm1CYXNlRXJyb3JFeHBpcmVkUmVnaXN0ZXJlZCcpO1xyXG4gICAgICAgICAgfSAgZWxzZSBpZiAocmVzLnN0YXR1cyA9PT0gUmVzdWx0U3RhdHVzRW51bS5JbnZhbGlkSXApIHtcclxuICAgICAgICAgICAgbSA9IHRoaXMubCgnRm9ybUJhc2VFcnJvckludmFsaWRJcCcpO1xyXG4gICAgICAgICAgfSAgZWxzZSBpZiAocmVzLnN0YXR1cyA9PT0gUmVzdWx0U3RhdHVzRW51bS5Ob0NyZWRpdCkge1xyXG4gICAgICAgICAgICBtID0gdGhpcy5sKCdGb3JtQmFzZUVycm9yTm9DcmVkaXQnKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzLnN0YXR1cyA9PT0gUmVzdWx0U3RhdHVzRW51bS5VbmF1dGhvcml6ZWQpIHtcclxuICAgICAgICAgICAgbSA9IHRoaXMubCgnRm9ybUJhc2VFcnJvckV4cGlyZWQnKTtcclxuICAgICAgICAgICAgSGVscGVyQ2xhc3MuZXJhc2VDb29raWUoJ1RPS0VOJyk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5zdGF0dXMgPT09IFJlc3VsdFN0YXR1c0VudW0uTm90QWNjZXNzKSB7XHJcbiAgICAgICAgICAgIG0gPSB0aGlzLmwoJ0Zvcm1CYXNlRXJyb3JBY2Nlc3MnKTtcclxuICAgICAgICAgIH0gIGVsc2UgaWYgKHJlcy5zdGF0dXMgPT09IFJlc3VsdFN0YXR1c0VudW0uTm90UGVybWlzc2lvbikge1xyXG4gICAgICAgICAgICBtID0gdGhpcy5sKCdGb3JtQmFzZUVycm9yUGVybWlzc2lvbicpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXMubWVzc2FnZSA9PT0gJ3N0cmluZycpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFtID0gcmVzLm1lc3NhZ2Uuc3BsaXQoJzonKTtcclxuICAgICAgICAgICAgICBtID0gdGhpcy5sKGFtWzBdLCBhbS5sZW5ndGggPiAxID8gYW0uc2xpY2UoMSkgOiBudWxsKTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmZvcmluXHJcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBtc2cgaW4gcmVzLm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgIC8vIG5vaW5zcGVjdGlvbiBKU1VuZmlsdGVyZWRGb3JJbkxvb3BcclxuICAgICAgICAgICAgICAgIG0gPSB0aGlzLmwobXNnLCByZXMubWVzc2FnZVttc2ddKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZXRFcnJvcihyZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKG0pIHtcclxuICAgICAgICAgICAgSGVscGVyQ2xhc3MuYWRkTm90aWZpY2F0aW9uKG0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMub25GYWlsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkZhaWxlZChyZXMubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoY29uc3QgYnRuIG9mIGJ0bnMpe1xyXG4gICAgICAgICAgYnRuLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICBIZWxwZXJDbGFzcy5hZGROb3RpZmljYXRpb24odGhpcy5sKCdFcnJvcicpKTtcclxuICAgICAgICBpZiAodGhpcy5vbkZhaWxlZCkge1xyXG4gICAgICAgICAgdGhpcy5vbkZhaWxlZCgnRXJyb3InKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBidG4gb2YgYnRucyl7XHJcbiAgICAgICAgICBidG4ubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgY2hlY2soKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgdmFsaWQgPSB0cnVlO1xyXG4gICAgdGhpcy5pbnB1dHMuZm9yRWFjaChpbnAgPT4ge1xyXG4gICAgICBpZiAoIWlucC5pc1ZhbGlkKCkpIHtcclxuICAgICAgICBpZiAodmFsaWQpe1xyXG4gICAgICAgICAgaW5wLmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhbGlkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHZhbGlkO1xyXG4gIH1cclxuICBjbGVhcihpbnNlcnRBY2Nlc3MgPSB0cnVlKTogdm9pZCB7XHJcbiAgICB0aGlzLm1ldGhvZCA9IE1ldGhvZC5Qb3N0O1xyXG4gICAgdGhpcy51cmwgPSB0aGlzLmJhc2VVcmw7XHJcbiAgICB0aGlzLnNldEJ1dHRvbnModGhpcy5vblRvcCwgZmFsc2UsIGluc2VydEFjY2VzcywgZmFsc2UpO1xyXG4gICAgdGhpcy5jbGVhcklucHV0cygpO1xyXG4gICAgaWYgKHRoaXMub25Ub3AgJiYgIXRoaXMuaXNFZGl0KXtcclxuICAgICAgdGhpcy5mb2N1cygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0VkaXQgPSBmYWxzZTtcclxuICB9XHJcbiAgY2xlYXJJbnB1dHMoKTogdm9pZHtcclxuICAgIHRoaXMuaW5wdXRzLmZpbHRlcih4ID0+IHgudHlwZSAhPT0gSW5wdXRUeXBlLkNvbnN0YW50KS5mb3JFYWNoKGlucCA9PiB7XHJcbiAgICAgIGlucC5jbGVhcigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldEJ1dHRvbnMoZm9ybU9uVG9wLCBlZGl0OiBib29sZWFuLCBpbnNlcnRBY2Nlc3MgPSBmYWxzZSwgdXBkYXRlQWNjZXNzID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIGNvbnN0IHMgPSB0aGlzLmlucHV0cy5maW5kKHggPT4geC50eXBlID09PSBJbnB1dFR5cGUuU3VibWl0KTtcclxuICAgIGlmICghcyl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHMuZGlzYWJsZWQgPSAhKChlZGl0ICYmIHVwZGF0ZUFjY2VzcykgfHwgKCFlZGl0ICYmIGluc2VydEFjY2VzcykpO1xyXG4gICAgcy5uYW1lID0gcy5uYW1lICE9IG51bGwgPyAoZWRpdCA/ICdBY2NlcHQnIDogJ1NhdmUnKSA6IG51bGw7XHJcbiAgICBzLmNsYXNzID0gZWRpdCA/IHMuY2xhc3MucmVwbGFjZSgnZ3JlZW4nLCAnYmx1ZScpIDogcy5jbGFzcy5yZXBsYWNlKCdibHVlJywgJ2dyZWVuJyk7XHJcbiAgfVxyXG4gIGFkZEJ1dHRvbnMobmFtZSA9ICdTYXZlJywgY2xzID0gJ2dyZWVuJywgY2xlYXIgPSB0cnVlLCBpbnNlcnRBY2Nlc3MgPSB0cnVlLCBvblN1Ym1pdCA9IG51bGwpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN1Ym1pdCA9IHRoaXMuaW5wdXRzLmZpbmQoeCA9PiB4LnR5cGUgPT09IElucHV0VHlwZS5TdWJtaXQpID8/IG51bGw7XHJcbiAgICBpZiAoc3VibWl0ICE9IG51bGwpe1xyXG4gICAgICBzdWJtaXQuZGlzYWJsZWQgPSAhaW5zZXJ0QWNjZXNzO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBiciA9IG5ldyBJbnB1dENsYXNzKHRoaXMuZW52aXJvbm1lbnQsIHRoaXMubCwgbnVsbCwgbnVsbCwgSW5wdXRUeXBlLkxhYmVsLFxyXG4gICAgICB0aGlzLm9uVG9wID8gJ3NwYWNlJyA6ICd1bmRlcmxpbmUnKTtcclxuICAgIGNvbnN0IHNhdmUgPSBuZXcgSW5wdXRDbGFzcyh0aGlzLmVudmlyb25tZW50LCB0aGlzLmwsIG5hbWUsICdmYWQgZmEtY2hlY2snLCBJbnB1dFR5cGUuU3VibWl0LFxyXG4gICAgICAnc2F2ZS1mb3JtLWJ0biAnICsgKHRoaXMub25Ub3AgPyAnaC0yNSAnIDogJ2gtMzAgJykgKyBjbHMpO1xyXG4gICAgc2F2ZS5vbkNsaWNrID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLnN1Ym1pdChvblN1Ym1pdCk7XHJcbiAgICB9O1xyXG4gICAgc2F2ZS5kaXNhYmxlZCA9ICFpbnNlcnRBY2Nlc3M7XHJcbiAgICBpZiAoIWNscy5pbmNsdWRlcygnb25seS1pY29uJykpe1xyXG4gICAgICB0aGlzLmlucHV0cy5wdXNoKGJyKTtcclxuICAgIH0gZWxzZXtcclxuICAgICAgc2F2ZS5jbGFzcyA9IHNhdmUuY2xhc3MucmVwbGFjZSgnc2F2ZS1mb3JtLWJ0biAnLCAnJykucmVwbGFjZSgnaC0yNSAnLCAnaC0zMCAnKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5wdXRzLnB1c2goc2F2ZSk7XHJcbiAgICBpZiAoY2xlYXIpe1xyXG4gICAgICBjb25zdCBlcmFzZSA9IG5ldyBJbnB1dENsYXNzKHRoaXMuZW52aXJvbm1lbnQsIHRoaXMubCwgbnVsbCwgJ2ZhZCBmYS1lcmFzZXInLCBJbnB1dFR5cGUuQnV0dG9uLFxyXG4gICAgICAgICdmLWwgdy11IGdyZXkgZXJhc2UtZm9ybS1idG4gJyArICh0aGlzLm9uVG9wID8gJ2gtMjUgJyA6ICdoLTMwICcpKTtcclxuICAgICAgZXJhc2Uub25DbGljayA9ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5vblRvcCl7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyKGluc2VydEFjY2Vzcyk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmNsZWFySW5wdXRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmlucHV0cy5wdXNoKGVyYXNlKTtcclxuICAgIH1cclxuICB9XHJcbiAgZGF0YShkID0gbnVsbCk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dHMuZmluZEluZGV4KHggPT4geC50eXBlID09PSBJbnB1dFR5cGUuRmlsZSB8fCB4LnR5cGUgPT09IElucHV0VHlwZS5VcGxvYWRlcikgPT09IC0xKXtcclxuICAgICAgaWYgKGQgPT0gbnVsbCl7XHJcbiAgICAgICAgZCA9IHt9O1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgaWYgKGQgPT0gbnVsbCl7XHJcbiAgICAgICAgZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZXREID0gKG4sIHZsKSA9PiB7XHJcbiAgICAgIGlmIChkIGluc3RhbmNlb2YgRm9ybURhdGEpe1xyXG4gICAgICAgIGlmICh2bCBpbnN0YW5jZW9mIEFycmF5KXtcclxuICAgICAgICAgIGZvciAoY29uc3QgdiBvZiB2bCl7XHJcbiAgICAgICAgICAgIGQuYXBwZW5kKG4sIHYpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgZC5hcHBlbmQobiwgdmwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoZFtuXSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBfLnNldChkLCBuLCB2bCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChkW25dIGluc3RhbmNlb2YgQXJyYXkpe1xyXG4gICAgICAgICAgICBkW25dLnB1c2godmwpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZFtuXSA9IFtkW25dLCB2bF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbnB1dHMuZm9yRWFjaChpbnAgPT4ge1xyXG4gICAgICBjb25zdCB2bCA9IGlucC5kYXRhKCk7XHJcbiAgICAgIGlmICh2bCAhPT0gbnVsbCl7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2bCA9PT0gJ29iamVjdCcgJiYgISh2bCBpbnN0YW5jZW9mIEFycmF5KSl7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IFsga2V5LCB2YWx1ZSBdIG9mIE9iamVjdC5lbnRyaWVzKHZsKSkge1xyXG4gICAgICAgICAgICBzZXREKGtleSwgdmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzZXREKGlucC5uYW1lLCB2bCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkO1xyXG4gIH1cclxuICBqc29uKGQgPSBudWxsKToge30ge1xyXG4gICAgaWYgKGQgPT0gbnVsbCl7XHJcbiAgICAgIGQgPSB7fTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5wdXRzLmZvckVhY2goaW5wID0+IHtcclxuICAgICAgY29uc3QgdmwgPSBpbnAuZGF0YSgpO1xyXG4gICAgICBpZiAodmwgIT09IG51bGwgJiYgdmwgIT09ICcnKXtcclxuICAgICAgICBpZiAodmwgaW5zdGFuY2VvZiBBcnJheSl7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHYgb2Ygdmwpe1xyXG4gICAgICAgICAgICBkW2lucC5uYW1lXSA9IHY7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBkW2lucC5uYW1lXSA9IHZsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZDtcclxuICB9XHJcbiAgc2V0RGF0YShkKTogdm9pZCB7XHJcbiAgICB0aGlzLmlucHV0cy5mb3JFYWNoKGlucCA9PiB7XHJcbiAgICAgIGNvbnN0IGl2ID0gXy5nZXQoZCwgaW5wLm5hbWUpID8/IG51bGw7XHJcbiAgICAgIGlmIChpbnAudHlwZSA9PT0gSW5wdXRUeXBlLlZlaGljbGUpe1xyXG4gICAgICAgIGNvbnN0IGl2dCA9IF8uZ2V0KGQsIGlucC5uYW1lICsgJ1R5cGUnKTtcclxuICAgICAgICBpbnAuc2V0VmFsdWUoe1ZhbHVlOiBpdiwgVHlwZTogaXZ0fSwgdHJ1ZSk7XHJcbiAgICAgIH1lbHNlIGlmIChpbnAudHlwZSA9PT0gSW5wdXRUeXBlLlZlaGljbGVTZWFyY2gpe1xyXG4gICAgICAgIGNvbnN0IGl2cyA9IF8uZ2V0KGQsIGlucC5uYW1lLnJlcGxhY2UoJ0lkJywgJycpKTtcclxuICAgICAgICBjb25zdCBpdnQgPSBfLmdldChkLCBpbnAubmFtZS5yZXBsYWNlKCdJZCcsICdUeXBlJykpO1xyXG4gICAgICAgIGlucC5zZXRWYWx1ZSh7U2VhcmNoOiBpdnMsIFZhbHVlOiBpdiwgVHlwZTogaXZ0fSwgdHJ1ZSk7XHJcbiAgICAgIH1lbHNlIGlmIChpbnAudHlwZSAhPT0gSW5wdXRUeXBlLkxhYmVsIHx8IGl2ICE9IG51bGwpe1xyXG4gICAgICAgIGlucC5zZXRWYWx1ZShpdiwgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlucC50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlUGxhcXVlIHx8IGlucC50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlKXtcclxuICAgICAgICBjb25zdCBpdnMgPSBfLmdldChkLCBpbnAubmFtZS5yZXBsYWNlKCdJZCcsICcnKSk7XHJcbiAgICAgICAgaW5wLnNldFNlYXJjaChpdnMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2V0RXJyb3IocmVzKTogdm9pZCB7XHJcbiAgICBpZiAocmVzLmVycm9yICE9IG51bGwpe1xyXG4gICAgICBsZXQgZiA9IGZhbHNlO1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Zm9yaW5cclxuICAgICAgZm9yIChjb25zdCBlcnIgaW4gcmVzLmVycm9yKSB7XHJcbiAgICAgICAgLy8gbm9pbnNwZWN0aW9uIEpTVW5maWx0ZXJlZEZvckluTG9vcFxyXG4gICAgICAgIGNvbnN0IGkgPSB0aGlzLmlucHV0cy5maW5kKHggPT4geC5uYW1lID09PSBlcnIpO1xyXG4gICAgICAgIGlmIChpKXtcclxuICAgICAgICAgIC8vIG5vaW5zcGVjdGlvbiBKU1VuZmlsdGVyZWRGb3JJbkxvb3BcclxuICAgICAgICAgIGkuZXJyb3IgPSBJbnB1dEVycm9yW0lucHV0RXJyb3JbcmVzLmVycm9yW2Vycl1dXTtcclxuICAgICAgICAgIGlmICghZil7XHJcbiAgICAgICAgICAgIGkuZm9jdXMoKTtcclxuICAgICAgICAgICAgZiA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW5wdXRDbGFzcyB7XHJcbiAgY29uc3RydWN0b3IoZW52aXJvbm1lbnQ6IGFueSwgbDogKGssIHY/KSA9PiBzdHJpbmcsIG5hbWU6IHN0cmluZywgaWNvbjogc3RyaW5nID0gbnVsbCxcclxuICAgICAgICAgICAgICB0eXBlOiBJbnB1dFR5cGUgPSBJbnB1dFR5cGUuVGV4dCwgY2xzOiBzdHJpbmcgPSAnJywgdmFsdWUgPSBudWxsLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiBib29sZWFuID0gdHJ1ZSwgbWluTGVuZ3RoID0gLTEsIG1heExlbmd0aCA9IC0xKSB7XHJcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XHJcbiAgICB0aGlzLmwgPSBsO1xyXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuaWQgPSBuYW1lO1xyXG4gICAgdGhpcy5sb2FkaW5nTmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gbmFtZTtcclxuICAgIHRoaXMuaWNvbiA9IGljb247XHJcbiAgICB0aGlzLmNsYXNzID0gY2xzICsgKFtJbnB1dFR5cGUuTW9iaWxlLCBJbnB1dFR5cGUuUGhvbmUsIElucHV0VHlwZS5QYXNzd29yZCwgSW5wdXRUeXBlLkVtYWlsLCBJbnB1dFR5cGUuTnVtYmVyLCBJbnB1dFR5cGUuUHJpY2UsXHJcbiAgICAgIElucHV0VHlwZS5OYXRpb25hbENvZGUsIElucHV0VHlwZS5OYXRpb25hbE51bSwgSW5wdXRUeXBlLk5hdGlvbmFsQ29kZU51bSwgSW5wdXRUeXBlLkVjb25vbWljTnVtLCBJbnB1dFR5cGUuU2hlYmEsXHJcbiAgICAgIElucHV0VHlwZS5Qb3N0YWxDb2RlLCBJbnB1dFR5cGUuRGF0ZSwgSW5wdXRUeXBlLlRpbWUsIElucHV0VHlwZS5CaWxsTnVtYmVyLCBJbnB1dFR5cGUuVXNlcm5hbWUsIElucHV0VHlwZS5VcmxdLmluY2x1ZGVzKHR5cGUpID8gJyBsdHInIDogJycpO1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuZGVmYXVsdCA9IHZhbHVlID09IG51bGwgPyBudWxsIDogKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IF8uY2xvbmVEZWVwKHZhbHVlKSA6IEhlbHBlckNsYXNzLmNsb25lKHZhbHVlKSk7XHJcbiAgICB0aGlzLmJhc2VSZXF1aXJlZCA9IHJlcXVpcmVkO1xyXG4gICAgdGhpcy5yZXF1aXJlZCA9IHJlcXVpcmVkO1xyXG4gICAgdGhpcy5pbkVkaXRSZXF1aXJlZCA9IHJlcXVpcmVkO1xyXG4gICAgdGhpcy5taW5MZW5ndGggPSB0eXBlID09PSBJbnB1dFR5cGUuTW9iaWxlIHx8IHR5cGUgPT09IElucHV0VHlwZS5QaG9uZSB8fCB0eXBlID09PSBJbnB1dFR5cGUuTmF0aW9uYWxOdW0gfHwgdHlwZSA9PT0gSW5wdXRUeXBlLkVjb25vbWljTnVtID8gMTEgOlxyXG4gICAgICB0eXBlID09PSBJbnB1dFR5cGUuTmF0aW9uYWxDb2RlIHx8IHR5cGUgPT09IElucHV0VHlwZS5Qb3N0YWxDb2RlIHx8IHR5cGUgPT09IElucHV0VHlwZS5OYXRpb25hbENvZGVOdW0gPyAxMCA6XHJcbiAgICAgIHR5cGUgPT09IElucHV0VHlwZS5Vc2VybmFtZSA/IDUgOlxyXG4gICAgICB0eXBlID09PSBJbnB1dFR5cGUuU2hlYmEgPyAyNCA6IG1pbkxlbmd0aDtcclxuICAgIHRoaXMubWF4TGVuZ3RoID0gdHlwZSA9PT0gSW5wdXRUeXBlLk1vYmlsZSB8fCB0eXBlID09PSBJbnB1dFR5cGUuUGhvbmUgfHwgdHlwZSA9PT0gSW5wdXRUeXBlLk5hdGlvbmFsTnVtIHx8IHR5cGUgPT09IElucHV0VHlwZS5OYXRpb25hbENvZGVOdW0gPyAxMSA6XHJcbiAgICAgIHR5cGUgPT09IElucHV0VHlwZS5OYXRpb25hbENvZGUgfHwgdHlwZSA9PT0gSW5wdXRUeXBlLlBvc3RhbENvZGUgPyAxMCA6XHJcbiAgICAgIHR5cGUgPT09IElucHV0VHlwZS5FY29ub21pY051bSA/IDE0IDpcclxuICAgICAgdHlwZSA9PT0gSW5wdXRUeXBlLlVzZXJuYW1lID8gMzAgOlxyXG4gICAgICB0eXBlID09PSBJbnB1dFR5cGUuU2hlYmEgPyAyNCA6IG1heExlbmd0aDtcclxuICB9XHJcbiAgZW52aXJvbm1lbnQ6IGFueSA9IG51bGw7XHJcbiAgbDogKGssIHY/KSA9PiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHVybCA9IG51bGw7XHJcbiAgcXVlcnlQYXJhbXMgPSBudWxsO1xyXG4gIHVybE5ld1RhYiA9IGZhbHNlO1xyXG4gIGxvYWRpbmdOYW1lOiBzdHJpbmc7XHJcbiAgcGxhY2Vob2xkZXI6IHN0cmluZyA9IG51bGw7XHJcbiAgdG9vbHRpcDogc3RyaW5nO1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgaWNvbjogc3RyaW5nO1xyXG4gIGFkZE5ldyA9IGZhbHNlO1xyXG4gIGNsYXNzOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZyA9IG51bGw7XHJcbiAgdHlwZTogSW5wdXRUeXBlO1xyXG4gIHZhbHVlID0gbnVsbDtcclxuICBzZWFyY2ggPSBudWxsO1xyXG4gIGRlZmF1bHQgPSBudWxsO1xyXG4gIGJhc2VSZXF1aXJlZDogYm9vbGVhbjtcclxuICByZXF1aXJlZDogYm9vbGVhbjtcclxuICBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIGluRWRpdERpc2FibGVkID0gZmFsc2U7XHJcbiAgaW5FZGl0VmlzaWJsZSA9IHRydWU7XHJcbiAgaW5FZGl0UmVxdWlyZWQgPSB0cnVlO1xyXG4gIGRpc3BsYXlMYWJlbCA9IHRydWU7XHJcbiAgbGFiZWw6IHN0cmluZyA9IG51bGw7XHJcbiAgd2l0aENsZWFyID0gZmFsc2U7XHJcbiAgbWluTGVuZ3RoID0gLTE7XHJcbiAgbWF4TGVuZ3RoID0gLTE7XHJcbiAgZXJyb3I6IElucHV0RXJyb3IgPSBudWxsO1xyXG4gIGFkZE1vZGFsOiBNb2RhbENsYXNzID0gbnVsbDtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgYnV0dG9uID0gbnVsbDtcclxuICBoYXNCYXJjb2RlUmVhZGVyID0gZmFsc2U7XHJcbiAgb25CYXJjb2RlUmVhZGVyQ2hhbmdlID0gbnVsbDtcclxuICBvbkNsaWNrQnV0dG9uOiAoaW5wKSA9PiB2b2lkID0gbnVsbDtcclxuICBwcm9ncmVzczogUHJvZ3Jlc3MgPSBudWxsO1xyXG4gIG9uQ2xpY2s6IChidG4pID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uS2V5VXA6IChpbnApID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uS2V5RG93bjogKGUpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9wdGlvbnM6IE9wdGlvbkNsYXNzW10gPSBbXTtcclxuICBtYXRjaDogSW5wdXRDbGFzcyA9IG51bGw7XHJcbiAgcmVsOiBJbnB1dENsYXNzID0gbnVsbDtcclxuICByZWxVcmw6IHN0cmluZyA9IG51bGw7XHJcbiAgdGFibGU6IFRhYmxlQ2xhc3M7XHJcbiAgc3R5bGUgPSB7fTtcclxuICBwb3NpdGlvbiA9ICdib3R0b20nO1xyXG4gIG9uQ2hhbmdlOiAodiwgZT8pID0+IHZvaWQgPSBudWxsO1xyXG4gIGhvdmVyID0gLTE7XHJcbiAgdmlzaWJsZSA9IHRydWU7XHJcbiAgb3BlbiA9IGZhbHNlO1xyXG4gIG11bHRpcGxlID0gZmFsc2U7XHJcbiAgb25seUNoaWxkID0gdHJ1ZTtcclxuICBhbGxvd2VkID0gbnVsbDtcclxuICByb3cgPSBudWxsO1xyXG4gIHJvd3MgPSBbXTtcclxuICBsZXZlbCA9IG51bGw7XHJcbiAgbW9kYWw6IE1vZGFsQ2xhc3MgPSBudWxsO1xyXG4gIHJlcXVlc3Q6IGFueSA9IG51bGw7XHJcbiAgbmFtZUZ1bjogKHIpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uRm9jdXNJbjogKGUpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uRm9jdXNPdXQ6IChlKSA9PiB2b2lkID0gbnVsbDtcclxuICBmb2N1cyhjaGFuZ2VJbmRleDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7fVxyXG4gIGNoYW5nZVR5cGU6ICh0OiBJbnB1dFR5cGUpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICBzZXRWYWx1ZTogKHYsIGlzRWRpdCkgPT4gdm9pZCA9ICh2LCBpc0VkaXQpID0+IHsgdGhpcy52YWx1ZSA9IHY7IH07XHJcbiAgc2V0U2VhcmNoOiAodikgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG4gIGNsZWFyOiAoKSA9PiB2b2lkID0gKCkgPT4geyB0aGlzLnZhbHVlID0gbnVsbDsgfTtcclxuICBmb2N1c091dDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG4gIGRhdGE6ICgpID0+IGFueSA9ICgpID0+IHtcclxuICAgIHJldHVybiB0aGlzLnZhbHVlO1xyXG4gIH1cclxuICBpc1ZhbGlkOiAoKSA9PiBib29sZWFuID0gKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIGxvYWQodSA9IG51bGwsIGRvbmU6ICgpID0+IHZvaWQgPSBudWxsKTogdm9pZHtcclxuICAgIHUgPSB1ID8gdSA6IHRoaXMudXJsO1xyXG4gICAgaWYgKHUpe1xyXG4gICAgICB0aGlzLm9wdGlvbnMgPSBbXTtcclxuICAgICAgdGhpcy5ob3ZlciA9IC0xO1xyXG4gICAgICB0aGlzLnJvd3MgPSBbXTtcclxuICAgICAgaWYgKHR5cGVvZiB1ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGlmICghdS5pbmNsdWRlcygne30nKSl7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5yZXF1ZXN0ID0gbmV3IFJlcXVlc3RDbGFzcyh0aGlzLmVudmlyb25tZW50LCB0aGlzLmwpLnNlbmQodSA/IHUgOiB0aGlzLnVybCwgTWV0aG9kLlBvc3QsIG51bGwsIG51bGwsIChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdFNlYXJjaFJhZGlvIHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdFNlYXJjaCB8fCB0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3QgfHwgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlIHx8XHJcbiAgICAgICAgICAgICAgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlUGxhcXVlIHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZU0gfHxcclxuICAgICAgICAgICAgICB0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3RBdXRvQ29tcGxldGVQbGFxdWVGIHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZUcgfHwgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuUmFkaW8pIHtcclxuICAgICAgICAgICAgICBjb25zdCByID0gdGhpcy5nZXRPcHRpb25zKHJlc3VsdCwgbnVsbCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgcyA9IHJlc3VsdC5maW5kKHggPT4geC5TZWxlY3RlZCk7XHJcbiAgICAgICAgICAgICAgaWYgKHMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBzLklkLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2V0T3B0aW9ucyhyKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IElucHV0VHlwZS5UcmVlIHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlRyZWVSYWRpbykge1xyXG4gICAgICAgICAgICAgIHRoaXMucm93cyA9IHRoaXMuZ2V0Um93cyhyZXN1bHQsIG51bGwpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlICE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy52YWx1ZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZG9uZSkge1xyXG4gICAgICAgICAgICAgIGRvbmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0sIHRoaXMucmVxdWVzdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcclxuICAgICAgICBFbnVtVXRpbHMuZ2V0S2V5c0FuZFZhbHVlcyh1KS5mb3JFYWNoKChrKSA9PiB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaCh7TmFtZTogdGhpcy5sKGsua2V5KSwgSWQ6IGsudmFsdWUudG9TdHJpbmcoKX0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3RTZWFyY2hSYWRpbyB8fCB0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3RTZWFyY2ggfHwgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0IHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZSB8fFxyXG4gICAgICAgICAgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlUGxhcXVlIHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZU0gfHxcclxuICAgICAgICAgIHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZUYgfHwgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuU2VsZWN0QXV0b0NvbXBsZXRlUGxhcXVlRyB8fFxyXG4gICAgICAgICAgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuUmFkaW8gfHwgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuU2xpZGUpIHtcclxuICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmdldE9wdGlvbnMocmVzdWx0LCBudWxsKTtcclxuICAgICAgICAgIHRoaXMuc2V0T3B0aW9ucyhyKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlRyZWUgfHwgdGhpcy50eXBlID09PSBJbnB1dFR5cGUuVHJlZVJhZGlvKSB7XHJcbiAgICAgICAgICB0aGlzLnJvd3MgPSB0aGlzLmdldFJvd3MocmVzdWx0LCBudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgc2V0T3B0aW9ucyhyKTogdm9pZHtcclxuICAgIHRoaXMub3B0aW9ucyA9IHI7XHJcbiAgICBpZiAodGhpcy52YWx1ZSAhPSBudWxsKXtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLnZhbHVlLCB0cnVlKTtcclxuICAgICAgfSwgNTAwKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRPcHRpb25EYXRhKCk6IGFueXtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmluZCh4ID0+IHgudmFsdWUgPT09IHRoaXMudmFsdWUpPy5vcHRpb24gPz8gbnVsbDtcclxuICB9XHJcbiAgZ2V0T3B0aW9ucyhyLCBwLCB0cmVlID0gdHJ1ZSk6IE9wdGlvbkNsYXNzW117XHJcbiAgICByZXR1cm4gci5maWx0ZXIoeCA9PiAocCA9PSBudWxsICYmICF4LlBhcmVudElkKSB8fCB4LlBhcmVudElkID09PSBwIHx8ICF0cmVlKVxyXG4gICAgICAubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbyA9IG5ldyBPcHRpb25DbGFzcyh4Lk5hbWUsIHguSWQudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZSB8fCB0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3RBdXRvQ29tcGxldGVQbGFxdWVNIHx8XHJcbiAgICAgICAgICB0aGlzLnR5cGUgPT09IElucHV0VHlwZS5TZWxlY3RBdXRvQ29tcGxldGVQbGFxdWVGIHx8IHRoaXMudHlwZSA9PT0gSW5wdXRUeXBlLlNlbGVjdEF1dG9Db21wbGV0ZVBsYXF1ZUcgfHwgdGhpcy5uYW1lID09PSAnQ2FySWQnKXtcclxuICAgICAgICAgIG8ubmFtZSA9IEhlbHBlckNsYXNzLlRvUmVhZGFibGVQbGFxdWUoby5uYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgby5zZWFyY2ggPSB4LlNlYXJjaDtcclxuICAgICAgICBvLm9wdGlvbiA9IHg7XHJcbiAgICAgICAgby5vcHRpb25zID0gdHJlZSA/IHRoaXMuZ2V0T3B0aW9ucyhyLCB4LklkKSA6IFtdO1xyXG4gICAgICAgIHJldHVybiBvO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZ2V0Um93cyhyLCBwKTogVHJlZVJvd0NsYXNzW117XHJcbiAgICBjb25zdCBsID0gW107XHJcbiAgICByLmZpbHRlcih4ID0+IChwID09IG51bGwgJiYgIXguUGFyZW50SWQpIHx8IHguUGFyZW50SWQgPT09IHApLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgbGV0IGMgPSB0aGlzLmdldFJvd3MociwgeC5JZCk7XHJcbiAgICAgIGMgPSBjLmxlbmd0aCA+IDAgPyBjIDogeC5DaGlsZHJlbiA/IHguQ2hpbGRyZW4ubWFwKGEgPT4gbmV3IFRyZWVSb3dDbGFzcyhhLk5hbWUsIGEuSWQsIGEuU2VsZWN0ZWQpKSA6IFtdO1xyXG4gICAgICBsZXQgcyA9IHguU2VsZWN0ZWQgPT09IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLm9ubHlDaGlsZCl7XHJcbiAgICAgICAgcyA9IGMubGVuZ3RoID09PSAwID8geC5TZWxlY3RlZCA6IChjLmZpbmQoeSA9PiB5LnNlbGVjdGVkID09PSBmYWxzZSB8fCB5LnNlbGVjdGVkID09PSBudWxsKSA9PSBudWxsID8gdHJ1ZSA6XHJcbiAgICAgICAgICAoYy5maW5kKHkgPT4geS5zZWxlY3RlZCA9PT0gdHJ1ZSB8fCB5LnNlbGVjdGVkID09PSBudWxsKSAhPSBudWxsID8gbnVsbCA6IGZhbHNlKSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbiA9IHRoaXMubmFtZUZ1biA/IHRoaXMubmFtZUZ1bih4KSA6IHguTmFtZTtcclxuICAgICAgbC5wdXNoKG5ldyBUcmVlUm93Q2xhc3MobiwgeC5JZCwgcywgYykpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbDtcclxuICB9XHJcbiAgZ2V0TGFiZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBIZWxwZXJDbGFzcy5nZXRMYWJlbCh0aGlzKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWQob3B0czogT3B0aW9uQ2xhc3NbXSA9IHRoaXMub3B0aW9ucyk6IGFueVtde1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U2VsZWN0ZWRPcHRpb25zKG9wdHMpLm1hcCh4ID0+IHgudmFsdWUpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZE5hbWUob3B0czogT3B0aW9uQ2xhc3NbXSA9IHRoaXMub3B0aW9ucyk6IGFueVtde1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U2VsZWN0ZWRPcHRpb25zKG9wdHMpLm1hcCh4ID0+IHguc2VhcmNoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRPcHRpb25zKG9wdHM6IE9wdGlvbkNsYXNzW10gPSB0aGlzLm9wdGlvbnMpOiBhbnlbXXtcclxuICAgIGxldCBsID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGYgb2Ygb3B0cyl7XHJcbiAgICAgIGlmIChmLnNlbGVjdGVkICYmICghdGhpcy5vbmx5Q2hpbGQgfHwgZi5vcHRpb25zLmxlbmd0aCA9PT0gMCkpe1xyXG4gICAgICAgIGwucHVzaChmKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBycyA9IHRoaXMuZ2V0U2VsZWN0ZWRPcHRpb25zKGYub3B0aW9ucyk7XHJcbiAgICAgIGwgPSBsLmNvbmNhdChycyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbDtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dzKHJvd3M6IGFueVtdID0gdGhpcy5yb3dzKTogYW55W117XHJcbiAgICBsZXQgbCA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBmIG9mIHJvd3Mpe1xyXG4gICAgICBpZiAoZi5zZWxlY3RlZCAmJiAoIXRoaXMub25seUNoaWxkIHx8IGYuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSl7XHJcbiAgICAgICAgbC5wdXNoKGYpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHJzID0gdGhpcy5nZXRTZWxlY3RlZFJvd3MoZi5jaGlsZHJlbik7XHJcbiAgICAgIGwgPSBsLmNvbmNhdChycyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbDtcclxuICB9XHJcbiAgZ2V0QWxsUm93cyhyb3dzOiBhbnlbXSA9IHRoaXMucm93cyk6IGFueVtde1xyXG4gICAgbGV0IGwgPSBbXTtcclxuICAgIGZvciAoY29uc3QgZiBvZiByb3dzKXtcclxuICAgICAgaWYgKCF0aGlzLm9ubHlDaGlsZCB8fCBmLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCl7XHJcbiAgICAgICAgbC5wdXNoKGYpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHJzID0gdGhpcy5nZXRBbGxSb3dzKGYuY2hpbGRyZW4pO1xyXG4gICAgICBsID0gbC5jb25jYXQocnMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGw7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgT3B0aW9uQ2xhc3Mge1xyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgb3B0aW9uczogT3B0aW9uQ2xhc3NbXSA9IFtdLCBjbHM6IHN0cmluZyA9IG51bGwsIGRpczogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuICAgIHRoaXMuY2xhc3MgPSBjbHM7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzO1xyXG4gIH1cclxuICBvcHRpb247XHJcbiAgc2VhcmNoOiBzdHJpbmc7XHJcbiAgY2xhc3M6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZztcclxuICBzaG93ID0gdHJ1ZTtcclxuICBzZWxlY3RlZCA9IGZhbHNlO1xyXG4gIHBhcmVudDogT3B0aW9uQ2xhc3MgPSBudWxsO1xyXG4gIG9wdGlvbnM6IE9wdGlvbkNsYXNzW107XHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG4gIGRpc2FibGVkID0gZmFsc2U7XHJcbn1cclxuZXhwb3J0IGNsYXNzIERheUNsYXNzIHtcclxuICBjb25zdHJ1Y3RvcihkYXk6IG51bWJlciwgdG9kYXk6IGJvb2xlYW4sIHNlbGVjdGVkOiBib29sZWFuLCBhY3RpdmU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZGF5ID0gZGF5O1xyXG4gICAgdGhpcy50b2RheSA9IHRvZGF5O1xyXG4gICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkO1xyXG4gICAgdGhpcy5hY3RpdmUgPSBhY3RpdmU7XHJcbiAgfVxyXG4gIGRheTogbnVtYmVyO1xyXG4gIHRvZGF5OiBib29sZWFuO1xyXG4gIHNlbGVjdGVkOiBib29sZWFuO1xyXG4gIGFjdGl2ZTogYm9vbGVhbjtcclxuICBjbGFzczogc3RyaW5nID0gbnVsbDtcclxufVxyXG5leHBvcnQgY2xhc3MgVHJlZVJvd0NsYXNzIHtcclxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHNlbGVjdGVkOiBib29sZWFuID0gZmFsc2UsIGNoaWxkcmVuOiBUcmVlUm93Q2xhc3NbXSA9IFtdKSB7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkO1xyXG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gIH1cclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZztcclxuICBzZWxlY3RlZDogYm9vbGVhbjtcclxuICBwYXJlbnQ6IFRyZWVSb3dDbGFzcztcclxuICBjaGlsZHJlbjogVHJlZVJvd0NsYXNzW107XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25DbGFzcyB7XHJcbiAgY29uc3RydWN0b3IobDogKGssIHY/KSA9PiBzdHJpbmcsIG5hbWU6IHN0cmluZywgY2xzOiBzdHJpbmcgPSAnJywgcm93czogQWNjb3JkaW9uUm93Q2xhc3NbXSkge1xyXG4gICAgdGhpcy5sID0gbDtcclxuICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLmNsYXNzID0gY2xzO1xyXG4gICAgdGhpcy5yb3dzID0gcm93cztcclxuICB9XHJcbiAgbDogKGssIHY/KSA9PiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGNsYXNzOiBzdHJpbmc7XHJcbiAgcm93czogQWNjb3JkaW9uUm93Q2xhc3NbXTtcclxuICBoYXNEZWxldGUgPSBmYWxzZTtcclxuICBkaXNwbGF5TGFiZWwgPSBmYWxzZTtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgYWNjZXNzID0gdHJ1ZTtcclxuICBvbkRlbGV0ZTogKHJvdykgPT4gdm9pZCA9IG51bGw7XHJcbiAgY2hlY2soKTogYm9vbGVhbntcclxuICAgIGZvciAoY29uc3Qgcm93IG9mIHRoaXMucm93cyl7XHJcbiAgICAgIGlmICghcm93LmZvcm0uY2hlY2soKSl7XHJcbiAgICAgICAgcm93Lm9wZW4oKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFjY29yZGlvblJvd0NsYXNzIHtcclxuICBjb25zdHJ1Y3RvcihpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGZvcm06IEZvcm1DbGFzcyA9IG51bGwsIHRhYmxlOiBUYWJsZUNsYXNzID0gbnVsbCkge1xyXG4gICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuZm9ybSA9IGZvcm07XHJcbiAgICB0aGlzLnRhYmxlID0gdGFibGU7XHJcbiAgfVxyXG4gIGlkOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHNob3cgPSB0cnVlO1xyXG4gIGZpcnN0VGFibGUgPSB0cnVlO1xyXG4gIGZvcm06IEZvcm1DbGFzcztcclxuICBjaGFydDogQ2hhcnRDbGFzcztcclxuICB0YWJsZTogVGFibGVDbGFzcztcclxuICB0b2dnbGUoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgJCgnI0FjY29yZGlvblJvdycgKyB0aGlzLmlkICsgJyA+IC5oZWFkZXInKS5jbGljaygpO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcbiAgb3BlbigpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoISQoJyNBY2NvcmRpb25Sb3cnICsgdGhpcy5pZCArICcgPiAuY29udGVudCcpLmhhc0NsYXNzKCdvcGVuJykpe1xyXG4gICAgICAgICQoJyNBY2NvcmRpb25Sb3cnICsgdGhpcy5pZCArICcgPiAuaGVhZGVyJykuY2xpY2soKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcbn1cclxuIl19
|