@sapphire-ion/framework 1.0.35 → 1.0.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/default/default-table/default-table.component.mjs +2 -2
- package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +56 -11
- package/esm2022/lib/components/inputs/input-select/input.select.configuration.mjs +17 -1
- package/esm2022/lib/components/inputs/inputs.module.mjs +8 -4
- package/esm2022/lib/components/popover/sion-popover/sion-popover.component.mjs +11 -40
- package/esm2022/lib/components/popover/sion-popover.module.mjs +5 -4
- package/esm2022/lib/core.module.mjs +12 -7
- package/esm2022/lib/services/modal-focus-trap.service.mjs +62 -0
- package/fesm2022/sapphire-ion-framework.mjs +231 -132
- package/fesm2022/sapphire-ion-framework.mjs.map +1 -1
- package/lib/components/inputs/input-select/input-select.component.d.ts +7 -2
- package/lib/components/inputs/input-select/input.select.configuration.d.ts +13 -0
- package/lib/components/inputs/inputs.module.d.ts +2 -1
- package/lib/components/popover/sion-popover/sion-popover.component.d.ts +4 -9
- package/lib/components/popover/sion-popover.module.d.ts +2 -1
- package/lib/core.module.d.ts +3 -0
- package/lib/services/modal-focus-trap.service.d.ts +13 -0
- package/package.json +1 -1
- package/themes/components/popover/sion-popover/sion-popover.component.scss +5 -3
- package/themes/styles/core.styles.scss +2 -1
- package/themes/styles/ionic/ion-modal.scss +1 -1
|
@@ -130,7 +130,7 @@ export class DefaultTableComponent {
|
|
|
130
130
|
column.class += ' font-mono';
|
|
131
131
|
column.label = value;
|
|
132
132
|
}
|
|
133
|
-
else if ([InputType.Decimal, InputType.Decimal, InputType.Currency].includes(tf.type)) {
|
|
133
|
+
else if ([InputType.Decimal, InputType.Decimal, InputType.Currency, InputType.Number].includes(tf.type)) {
|
|
134
134
|
const configuration = tf.configuration;
|
|
135
135
|
column.label = [
|
|
136
136
|
configuration.prefix,
|
|
@@ -213,4 +213,4 @@ class AvailableTableField {
|
|
|
213
213
|
this.descending = descending;
|
|
214
214
|
}
|
|
215
215
|
}
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZGVmYXVsdC9kZWZhdWx0LXRhYmxlL2RlZmF1bHQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC10YWJsZS9kZWZhdWx0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBZSxLQUFLLEVBQXVCLE1BQU0sRUFBdUMsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdLLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDN0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUdyRixPQUFPLEVBQWMsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBU3hELE1BQU0sT0FBTyxxQkFBcUI7SUFvRWhDLFlBQ1MsY0FBK0IsRUFDOUIsY0FBOEIsRUFDOUIsTUFBc0I7UUFGdkIsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBQzlC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QUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQzsrR0F6TVUscUJBQXFCO21HQUFyQixxQkFBcUIsNDdFQ3ZCbEMsdTBZQXFOTTs7NEZEOUxPLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlO3FJQU1oQixhQUFhO3NCQUFyQixLQUFLOztBQTBNUixNQUFNLGVBQWU7SUFDbkIsWUFDUyxJQUFPLEVBQ1AsRUFBc0IsRUFDdEIsVUFBZ0MsRUFDaEMsYUFBcUIsRUFBRSxFQUN2QixhQUFxQixFQUFFO1FBSnZCLFNBQUksR0FBSixJQUFJLENBQUc7UUFDUCxPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFzQjtRQUNoQyxlQUFVLEdBQVYsVUFBVSxDQUFhO1FBQ3ZCLGVBQVUsR0FBVixVQUFVLENBQWE7SUFDOUIsQ0FBQztDQUNKO0FBRUQsTUFBTSxrQkFBa0I7SUFLdEIsWUFDUyxRQUFhLElBQUksRUFDakIsRUFBYztRQURkLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUxoQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsVUFBSyxHQUFXLEVBQUUsQ0FBQztJQUl4QixDQUFDO0NBQ0o7QUFFRCxNQUFNLG1CQUFtQjtJQUN2QixZQUNTLEVBQWMsRUFDZCxTQUFrQixFQUNsQixVQUFtQjtRQUZuQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBUztRQUNsQixlQUFVLEdBQVYsVUFBVSxDQUFTO0lBQzFCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgSW5wdXQsIGlucHV0LCBJbnB1dFNpZ25hbCwgbW9kZWwsIE1vZGVsU2lnbmFsLCBPbkluaXQsIG91dHB1dCwgT3V0cHV0RW1pdHRlclJlZiwgT3V0cHV0UmVmLCBTaWduYWwsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL2lucHV0cy9pbnB1dC1kZWNpbWFsL2lucHV0LWRlY2ltYWwuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL2lucHV0cy9pbnB1dC1zZWxlY3QvaW5wdXQuc2VsZWN0LmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBGb3JtYXRUZWxlZm9uZUNlbHVsYXIgfSBmcm9tICcuLi8uLi9pbnB1dHMvaW5wdXQtdGVsZWZvbmUvaW5wdXQtdGVsZWZvbmUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy93ZWIvc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybWF0Q3BmQ25waiB9IGZyb20gJy4uLy4uL2lucHV0cy9pbnB1dC1jcGYtY25wai9pbnB1dC1jcGYtY25wai5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9odHRwLnNlcnZpY2UnXHJcbmltcG9ydCB7IFRhYmxlRmllbGQgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2lucHV0cy90YWJsZS1maWVsZCc7XHJcbmltcG9ydCB7IENvbXBhcmlzb24sIENvbXBpbGVMc3RUYWJsZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9jb21wYXJpc29uL2NvbXBhcmlzb24nO1xyXG5pbXBvcnQgeyBGb3JtYXRDZXAgfSBmcm9tICcuLi8uLi9pbnB1dHMvaW5wdXQtY2VwL2lucHV0LWNlcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi9pbnB1dHMvaW5wdXQtdHlwZSc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XHJcblxyXG50eXBlIENTU1N0eWxlU3RyaW5nR2VuZXJhdG9yID0gKGluZGV4OiBzdHJpbmcsIG9iamVjdDogYW55KSA9PiBzdHJpbmc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RlZmF1bHQtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kZWZhdWx0LXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kZWZhdWx0LXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0VGFibGVDb21wb25lbnQ8U2VydmljZSBleHRlbmRzIEh0dHBTZXJ2aWNlLCBUID0gYW55PiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGFjb2VzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgLyoqIFRlbXBsYXRlIGRlIGHDp8O1ZXMsIGRldmUgc2VyIHVtIGVsZW1lbnRvIGBgYDxuZy10ZW1wbGF0ZT5gYGAgKi9cclxuICAvLyBhY29lc1RlbXBsYXRlOiBJbnB1dFNpZ25hbDxUZW1wbGF0ZVJlZjxhbnk+PiA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XHJcblxyXG4gIC8qKiBTZXJ2aWNlIGEgc2VyIHV0aWxpemFkbyBuYSBsaXN0YWdlbSAqL1xyXG4gIHNlcnZpY2U6IElucHV0U2lnbmFsPFNlcnZpY2U+ID0gaW5wdXQ8U2VydmljZT4oKTtcclxuXHJcbiAgdG90YWw6IE1vZGVsU2lnbmFsPG51bWJlcj4gPSBtb2RlbDxudW1iZXI+KDApO1xyXG5cclxuICAvKiogTsO6bWVybyBkZSBpdGVtcyBtw6F4aW1vICh1c2FuZG8gdHdvIHdheSBkYXRhIGJpbmRpbmcpICovXHJcbiAgbGltaXQ6IE1vZGVsU2lnbmFsPG51bWJlcj4gPSBtb2RlbDxudW1iZXI+KCk7XHJcblxyXG4gIC8qKiBWYWxvciBkYSBwYWdpbmEsIHNldGFkbyA9IDEgcXVhbmRvIHRyb2NhLXNlIG8gdmFsb3IgZGUgbGltaXRlIGRlIHBhZ2luYXMgKHVzYW5kbyB0d28gd2F5IGRhdGEgYmluZGluZykgKi9cclxuICBwYWdlOiBNb2RlbFNpZ25hbDxudW1iZXI+ID0gbW9kZWw8bnVtYmVyPigxKTtcclxuXHJcbiAgLyoqIFByb3ByaWVkYWRlIGRlIG9yZGVuYcOnw6NvICh1c2FuZG8gdHdvIHdheSBkYXRhIGJpbmRpbmcpICovXHJcbiAgb3JkZXJCeVByb3BlcnR5OiBNb2RlbFNpZ25hbDxzdHJpbmcgfCBudWxsPiA9IG1vZGVsPHN0cmluZyB8IG51bGw+KG51bGwpO1xyXG4gICAgXHJcbiAgLyoqIFByb3ByaWVkYWRlIGRlIG9yZGVuYcOnw6NvXHJcbiAgICogU2UgPSB0cnVlICBPcmRlbmFyw6EgZGUgbWVub3IgYW8gbWFpb3IgXHJcbiAgICogU2UgPSBmYWxzZSBPcmRlbmFyw6EgZGUgbWFpb3IgYW8gbWVub3IgKHVzYW5kbyB0d28gd2F5IGRhdGEgYmluZGluZykgKi9cclxuICBhc2NlbmRpbmc6IE1vZGVsU2lnbmFsPGJvb2xlYW4+ID0gbW9kZWw8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG4gIC8qKiBGaWx0cm9zICh1c2FuZG8gdHdvIHdheSBkYXRhIGJpbmRpbmcpICovIFxyXG4gIGZpbHRlcjogTW9kZWxTaWduYWw8Q29tcGFyaXNvbltdPiA9IG1vZGVsPENvbXBhcmlzb25bXT4oW10pO1xyXG5cclxuICAvKiogRXZlbnRvIGVtaXRpZG8gcXVhbmRvIHVtIGRvcyBkYWRvcyDDqSBhdGl2YWRvLiBFbWl0ZSBvIGlkIGRvIGRhZG8gKi8gIFxyXG4gIGF0aXZhciA6IE91dHB1dEVtaXR0ZXJSZWY8bnVtYmVyPiA9IG91dHB1dDxudW1iZXI+KCk7XHJcbiAgcmVmcmVzaDogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dDx2b2lkPigpO1xyXG5cclxuXHJcbiAgbG9hZGluZzogTW9kZWxTaWduYWw8Ym9vbGVhbj4gPSBtb2RlbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIC8qKiBMaXN0YSBkZSBkYWRvcyBhIHNlciBleGliaWRvcyAqL1xyXG4gIGl0ZW1zOiBNb2RlbFNpZ25hbDxUW10+ID0gbW9kZWw8VFtdPihbXSk7XHJcblxyXG4gIC8qKiBMaXN0YSBkZSBjYW1wb3MgYSBzZXIgZXhpYmlkb3MgKi9cclxuICBsc3RUYWJsZUZpZWxkczogTW9kZWxTaWduYWw8VGFibGVGaWVsZFtdPiA9IG1vZGVsPFRhYmxlRmllbGRbXT4oW10pO1xyXG4gIGxzdFRhYmxlRmllbGRzQXZhaWxhYmxlOiBTaWduYWw8QXZhaWxhYmxlVGFibGVGaWVsZFtdPiA9IGNvbXB1dGVkPEF2YWlsYWJsZVRhYmxlRmllbGRbXT4oKCkgPT4geyBcclxuICAgIHJldHVybiB0aGlzLmxzdFRhYmxlRmllbGRzKCkuZmlsdGVyKHAgPT4gIXAuaGlkZGVuKS5tYXAodGYgPT4ge1xyXG4gICAgICByZXR1cm4gbmV3IEF2YWlsYWJsZVRhYmxlRmllbGQoXHJcbiAgICAgICAgdGYsIFxyXG4gICAgICAgIHRoaXMuYXNjZW5kaW5nKCkgJiYgdGhpcy5vcmRlckJ5UHJvcGVydHkoKSA9PSB0Zi5pbmRleCwgXHJcbiAgICAgICAgIXRoaXMuYXNjZW5kaW5nKCkgJiYgdGhpcy5vcmRlckJ5UHJvcGVydHkoKSA9PSB0Zi5pbmRleFxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcblxyXG4gIC8qKiBSZW1vdmUgb3MgZmlsdHJvcyBubyBjYWJlw6dhbGhvIGRhIHRhYmVsYSAgKi9cclxuICBub0ZpbHRlcnM6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvKiogQXBsaWNhIGNsYXNzZXMgZGUgQ1NTIG5hIGNvbHVuYSBkZSBhY2lyZG8gY29tIG8gcmV0b3JubyBkYSBmdW7Dp8OjbyBwYXNzYWRhIGNvbW8gcGFyYW1ldHJvICAqL1xyXG4gIGNvbHVtbkNsYXNzOiBJbnB1dFNpZ25hbDxDU1NTdHlsZVN0cmluZ0dlbmVyYXRvciB8IG51bGw+ID0gaW5wdXQ8Q1NTU3R5bGVTdHJpbmdHZW5lcmF0b3IgfCBudWxsPihudWxsKTtcclxuXHJcbiAgLyoqIEFwbGljYSBzdHlsZSBkZSBDU1MgbmEgY29sdW5hIGRlIGFjaXJjbyBjb20gbyByZXRvcm5vIGRhIGZ1bsOnw6NvIHBhc3NhZGEgY29tbyBwYXJhbWV0cm8gICovXHJcbiAgY29sdW1uU3R5bGU6IElucHV0U2lnbmFsPENTU1N0eWxlU3RyaW5nR2VuZXJhdG9yIHwgbnVsbD4gPSBpbnB1dDxDU1NTdHlsZVN0cmluZ0dlbmVyYXRvciB8IG51bGw+KG51bGwpO1xyXG5cclxuICAvKiogUmVtb3ZlIGEgcGFnaW5hw6fDo28gZGEgbGlzdGFnZW0gKi9cclxuICBub1BhZ2luYXRpb246IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvKiogQ2FtaW5obyBkZSByZWRpcmVjaW9uYW1lbnRvIGRvIGl0ZW0gKi9cclxuICBpdGVtUGF0aDogSW5wdXRTaWduYWw8c3RyaW5nPiA9IGlucHV0PHN0cmluZz4oJ3ZpZXcvOmlkJyk7XHJcbiAgaXRlbUNsaWNrOiBPdXRwdXRFbWl0dGVyUmVmPFQ+ID0gb3V0cHV0PFQ+KCk7XHJcblxyXG4gIElucHV0VHlwZSA9IElucHV0VHlwZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgc3RvcmFnZVNlcnZpY2UgOiBTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXIgICAgICAgIDogUm91dGVyLFxyXG4gICkgeyBcclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgdGYgb2YgdGhpcy5sc3RUYWJsZUZpZWxkcygpLmZpbHRlcihwID0+IHAudHlwZSA9PSBJbnB1dFR5cGUuU2VsZWN0KSkge1xyXG4gICAgICAgICh0Zi5jb25maWd1cmF0aW9uIGFzIElucHV0U2VsZWN0Q29uZmlndXJhdGlvbikubG9hZGVyLlJlZnJlc2goKS50aGVuKCgpID0+IHRoaXMuU2V0THN0Um93cygpKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLlNldExzdFJvd3MoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgUmVkaXJlY3QoZmllbGQ6IFRhYmxlRmllbGQgfCB1bmRlZmluZWQsIGl0ZW06IFQpOiB2b2lke1xyXG4gICAgdGhpcy5pdGVtQ2xpY2suZW1pdChpdGVtKTtcclxuICAgIGlmKCFmaWVsZCl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZVxyXG4gICAgaWYoZmllbGQuaW5kZXggPT0gJ2F0aXZvJyl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1lbHNlXHJcbiAgICBpZihmaWVsZC50eXBlICA9PSAnRmlsZScpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9ZWxzZVxyXG4gICAgaWYodGhpcy5pdGVtUGF0aCgpKXtcclxuICAgICAgY29uc3QgaWQgPSBpdGVtWydpZCddOyBcclxuICAgICAgY29uc3QgcGF0aCA9IHRoaXMuaXRlbVBhdGgoKS5yZXBsYWNlKFwiOmlkXCIsIGlkLnRvU3RyaW5nKCkpO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC4vJHtwYXRofWBdLCB7IHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFNldExzdFJvd3MoKXsgXHJcbiAgICB0aGlzLmxzdFJvd3MgPSB0aGlzLml0ZW1zKCkubWFwKGl0ZW0gPT4ge1xyXG4gICAgICByZXR1cm4gbmV3IERlZmF1bHRUYWJsZVJvdzxUPihcclxuICAgICAgICBpdGVtLCBcclxuICAgICAgICBpdGVtWydpZCddLFxyXG4gICAgICAgIHRoaXMuR2V0Q29sdW1ucyhpdGVtKSxcclxuICAgICAgICB0aGlzLmNvbHVtbkNsYXNzKCkgPyB0aGlzLmNvbHVtbkNsYXNzKCkoJ2Fjb2VzJywgaXRlbSkgOiAnJyxcclxuICAgICAgICB0aGlzLmNvbHVtblN0eWxlKCkgPyB0aGlzLmNvbHVtbkNsYXNzKCkoJ2Fjb2VzJywgaXRlbSkgOiAnJyxcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBcclxuICBsc3RSb3dzOiBEZWZhdWx0VGFibGVSb3c8VD5bXSA9IFtdOyBcclxuXHJcbiAgR2V0Q29sdW1ucyhpdGVtOiBUKTogRGVmYXVsdFRhYmxlQ29sdW1uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMubHN0VGFibGVGaWVsZHMoKS5maWx0ZXIocCA9PiAhcC5oaWRkZW4pLm1hcCh0ZiA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gaXRlbVt0Zi5pbmRleF07XHJcbiAgICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBEZWZhdWx0VGFibGVDb2x1bW4odmFsdWUsIHRmKTtcclxuICAgICAgY29sdW1uLmNsYXNzID0gdGhpcy5jb2x1bW5DbGFzcygpID8gdGhpcy5jb2x1bW5DbGFzcygpKHRmLmluZGV4LCBpdGVtKSA6ICcnO1xyXG4gICAgICBjb2x1bW4uc3R5bGUgPSB0aGlzLmNvbHVtblN0eWxlKCkgPyB0aGlzLmNvbHVtblN0eWxlKCkodGYuaW5kZXgsIGl0ZW0pIDogJyc7XHJcbiAgICAgIFxyXG4gICAgICBpZighdmFsdWUpeyBcclxuICAgICAgICBjb2x1bW4ubGFiZWwgPSAnLScgXHJcbiAgICAgICAgcmV0dXJuIGNvbHVtbjtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgaWYodGYudHlwZSA9PSBJbnB1dFR5cGUuQm9vbCl7XHJcbiAgICAgICAgY29sdW1uLmxhYmVsID0gXCI8Ym9vbD5cIlxyXG4gICAgICB9IGVsc2VcclxuICAgICAgaWYodGYudHlwZSA9PSBJbnB1dFR5cGUuQ2VwKXtcclxuICAgICAgICBjb2x1bW4ubGFiZWwgPSBGb3JtYXRDZXAodmFsdWUpO1xyXG4gICAgICB9IGVsc2VcclxuICAgICAgaWYodGYudHlwZSA9PSBJbnB1dFR5cGUuQ29sb3Ipe1xyXG4gICAgICAgIGNvbHVtbi5sYWJlbCA9IHZhbHVlO1xyXG4gICAgICB9IGVsc2VcclxuICAgICAgaWYoW0lucHV0VHlwZS5DcGYsIElucHV0VHlwZS5DbnBqLCBJbnB1dFR5cGUuQ3BmQ25wal0uaW5jbHVkZXModGYudHlwZSkpe1xyXG4gICAgICAgIGNvbHVtbi5sYWJlbCA9IEZvcm1hdENwZkNucGoodmFsdWUpO1xyXG4gICAgICB9IGVsc2VcclxuICAgICAgaWYodGYudHlwZSA9PSBJbnB1dFR5cGUuRGF0ZVRpbWUpe1xyXG4gICAgICAgIGNvbHVtbi5jbGFzcyArPSAnIGZvbnQtbW9ubyc7XHJcbiAgICAgICAgY29sdW1uLmxhYmVsID0gVXRpbHMuRGF0ZUlTT1RvRERNTVlZWVlISE1NKHZhbHVlKTtcclxuICAgICAgfSBlbHNlXHJcbiAgICAgIGlmKHRmLnR5cGUgPT0gSW5wdXRUeXBlLkRhdGUpe1xyXG4gICAgICAgIGNvbHVtbi5jbGFzcyArPSAnIGZvbnQtbW9ubyc7XHJcbiAgICAgICAgY29sdW1uLmxhYmVsID0gVXRpbHMuRGF0ZUlTT1RvRERNTVlZWVlISE1NKHZhbHVlKTtcclxuICAgICAgfSBlbHNlXHJcbiAgICAgIGlmKHRmLnR5cGUgPT0gSW5wdXRUeXBlLlRpbWUpe1xyXG4gICAgICAgIGNvbHVtbi5jbGFzcyArPSAnIGZvbnQtbW9ubyc7XHJcbiAgICAgICAgY29sdW1uLmxhYmVsID0gdmFsdWU7XHJcbiAgICAgIH0gZWxzZVxyXG4gICAgICBpZihbSW5wdXRUeXBlLkRlY2ltYWwsIElucHV0VHlwZS5EZWNpbWFsLCBJbnB1dFR5cGUuQ3VycmVuY3ldLmluY2x1ZGVzKHRmLnR5cGUpKXtcclxuICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uOiBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uID0gdGYuY29uZmlndXJhdGlvbjtcclxuICAgICAgICBjb2x1bW4ubGFiZWwgPSBbXHJcbiAgICAgICAgICBjb25maWd1cmF0aW9uLnByZWZpeCwgXHJcbiAgICAgICAgICBmb3JtYXROdW1iZXIodmFsdWUgYXMgbnVtYmVyLCAncHQtQlInLCBgMS4ke2NvbmZpZ3VyYXRpb24ucHJlY2lzaW9ufS0ke2NvbmZpZ3VyYXRpb24ucHJlY2lzaW9ufWApLFxyXG4gICAgICAgICAgY29uZmlndXJhdGlvbi5zdWZpeCwgXHJcbiAgICAgICAgXS5qb2luKCcgJyk7XHJcbiAgICAgIH0gZWxzZVxyXG4gICAgICBpZih0Zi50eXBlID09IElucHV0VHlwZS5GaWxlKXtcclxuICAgICAgICBjb2x1bW4ubGFiZWwgPSAnPGZpbGU+JztcclxuICAgICAgfSBlbHNlXHJcbiAgICAgIGlmKHRmLnR5cGUgPT0gSW5wdXRUeXBlLkljb24pe1xyXG4gICAgICAgIGNvbHVtbi5sYWJlbCA9ICdpY29uJztcclxuICAgICAgfSBlbHNlXHJcbiAgICAgIGlmKHRmLnR5cGUgPT0gSW5wdXRUeXBlLlNlbGVjdCl7XHJcbiAgICAgICAgY29sdW1uLmxhYmVsID0gKHRmLmNvbmZpZ3VyYXRpb24gYXMgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKS5sb2FkZXIuR2V0TGFiZWwodmFsdWUpO1xyXG4gICAgICAgIGNvbHVtbi5sb2FkaW5nID0gISh0Zi5jb25maWd1cmF0aW9uIGFzIElucHV0U2VsZWN0Q29uZmlndXJhdGlvbikubG9hZGVyLmlzTG9hZGVkO1xyXG4gICAgICB9IGVsc2VcclxuICAgICAgaWYoW0lucHV0VHlwZS5TdHJpbmcsIElucHV0VHlwZS5UZXh0QXJlYV0uaW5jbHVkZXModGYudHlwZSkpe1xyXG4gICAgICAgIGNvbHVtbi5sYWJlbCA9IHZhbHVlXHJcbiAgICAgIH0gZWxzZVxyXG4gICAgICBpZihbSW5wdXRUeXBlLlRlbGVmb25lLCBJbnB1dFR5cGUuQ2VsdWxhciwgSW5wdXRUeXBlLlRlbGVmb25lQ2VsdWxhcl0uaW5jbHVkZXModGYudHlwZSkpe1xyXG4gICAgICAgIGNvbHVtbi5sYWJlbCA9IEZvcm1hdFRlbGVmb25lQ2VsdWxhcih2YWx1ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBjb2x1bW47XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkgeyB0aGlzLlNldExzdFJvd3MoKTsgfVxyXG5cclxuICBTd2l0Y2hPcmRlcih0ZjogVGFibGVGaWVsZCk6IHZvaWR7XHJcbiAgICBpZih0aGlzLm9yZGVyQnlQcm9wZXJ0eSgpICE9IHRmLmluZGV4KXtcclxuICAgICAgdGhpcy5vcmRlckJ5UHJvcGVydHkuc2V0KHRmLmluZGV4KTtcclxuICAgICAgdGhpcy5hc2NlbmRpbmcuc2V0KHRydWUpO1xyXG4gICAgfSBlbHNlIFxyXG4gICAgaWYodGhpcy5hc2NlbmRpbmcoKSl7XHJcbiAgICAgIHRoaXMuYXNjZW5kaW5nLnNldChmYWxzZSk7XHJcbiAgICB9IGVsc2V7IFxyXG4gICAgICB0aGlzLm9yZGVyQnlQcm9wZXJ0eS5zZXQobnVsbCk7IFxyXG4gICAgfVxyXG4gICAgdGhpcy5yZWZyZXNoLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIENoYW5nZUZpbHRlcigpOiB2b2lke1xyXG4gICAgdGhpcy5maWx0ZXIuc2V0KENvbXBpbGVMc3RUYWJsZUZpZWxkKHRoaXMubHN0VGFibGVGaWVsZHMoKSkpO1xyXG4gICAgdGhpcy5wYWdlLnNldCgxKTtcclxuICAgIHRoaXMucmVmcmVzaC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBBdGl2YXIoaWQ6IG51bWJlcik6IHZvaWR7XHJcbiAgICB0aGlzLmF0aXZhci5lbWl0KGlkKTtcclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIERlZmF1bHRUYWJsZVJvdzxUPntcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpdGVtOiBULFxyXG4gICAgcHVibGljIGlkOiBudW1iZXIgfCB1bmRlZmluZWQsXHJcbiAgICBwdWJsaWMgbHN0Q29sdW1uczogRGVmYXVsdFRhYmxlQ29sdW1uW10sXHJcbiAgICBwdWJsaWMgYWNvZXNDbGFzczogc3RyaW5nID0gJycsXHJcbiAgICBwdWJsaWMgYWNvZXNTdHlsZTogc3RyaW5nID0gJycsXHJcbiAgKXt9XHJcbn0gXHJcblxyXG5jbGFzcyBEZWZhdWx0VGFibGVDb2x1bW57XHJcbiAgcHVibGljIGxhYmVsOiBzdHJpbmcgfCBudWxsXHJcbiAgcHVibGljIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgY2xhc3M6IHN0cmluZyA9ICcnO1xyXG4gIHB1YmxpYyBzdHlsZTogc3RyaW5nID0gJyc7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgdmFsdWU6IGFueSA9IG51bGwsXHJcbiAgICBwdWJsaWMgdGY6IFRhYmxlRmllbGQsXHJcbiAgKXt9XHJcbn1cclxuXHJcbmNsYXNzIEF2YWlsYWJsZVRhYmxlRmllbGR7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgdGY6IFRhYmxlRmllbGQsXHJcbiAgICBwdWJsaWMgYXNjZW5kaW5nOiBib29sZWFuLFxyXG4gICAgcHVibGljIGRlc2NlbmRpbmc6IGJvb2xlYW4sXHJcbiAgKXt9XHJcbn0iLCI8IS0tIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgcm91bmRlZC0yeGwgZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW4gcmVsYXRpdmVcIj5cclxuICAgIDxsb2FkaW5nIFt0eXBlXT1cIjNcIiBbbG9hZGluZ109XCJsb2FkaW5nXCI+PC9sb2FkaW5nPlxyXG4gICAgPGNvbnRlbnQtYmxvY2sgdGV4dD1cIlNlbSBEYWRvc1wiIFt2YWx1ZV09XCIhKGl0ZW1zLmxlbmd0aCAhPSAwIHx8IGxvYWRpbmcpXCI+PC9jb250ZW50LWJsb2NrPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgc2hyaW5rIHJlbGF0aXZlIG92ZXJmbG93LXktYXV0b1wiPlxyXG4gICAgICAgIDx0YWJsZT5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwicHgtMyAhaC0xMFwiICpuZ0lmPVwiYWNvZXNUZW1wbGF0ZVwiPiBBw6fDtWVzIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGZpZWxkIG9mIGxzdFRhYmxlRmllbGRzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghZmllbGQuaGlkZGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJwLTIgcHgtM1wiIGlkPVwidGgtZmlsdGVyLXNlbGVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydCBoLWZ1bGxcIiBzdHlsZT1cIndoaXRlLXNwYWNlOiB2YXIoLS1pb24tdGFibGUtZmlsdGVyLXdyYXApO1wiPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZighbm9GaWx0ZXJzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGgtZmlsdGVyIGNsYXNzPVwiIXRleHQtYmFzZVwiIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudFwiICpuZ0lmPVwiKGZpZWxkLnR5cGUgIT0gSW5wdXRUeXBlRmlsZSkgJiYgIShmaWVsZC5maWx0ZXIgJiYgZmllbGQuZGlzYWJsZWRDaGFuZ2UoKSkgJiYgIW5vRmlsdGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiQ2hhbmdlRmlsdGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3RoLWZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ZmllbGQuaGVhZGVyfX08L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCIhKCEoZmllbGQudHlwZSAhPSBJbnB1dFR5cGVGaWxlKSAmJiAhKGZpZWxkLmZpbHRlciAmJiBmaWVsZC5kaXNhYmxlZENoYW5nZSgpKSkgJiYgIW5vRmlsdGVyc1wiIGNsYXNzPVwib3JkZXItc3dpdGNoIGgtNSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweC0xIG1sLTIgc2hyaW5rLTAgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC0yeGxcIiAoY2xpY2spPVwiU3dpdGNoT3JkZXIoZmllbGQpXCIgW25nQ2xhc3NdPVwieyAnb3JkZXJpbmctYXNjJyA6IG9yZGVyQnlQcm9wZXJ0eSA9PSBmaWVsZC5pbmRleCAmJiBhc2NlbmRpbmcsICdvcmRlcmluZy1kZXNjJyA6IG9yZGVyQnlQcm9wZXJ0eSA9PSBmaWVsZC5pbmRleCAmJiAhYXNjZW5kaW5nfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBpZD1cInVwXCIgICBuYW1lPVwiYXJyb3ctdXBcIiAgIGNsYXNzPVwiLW10LTFcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBpZD1cImRvd25cIiBuYW1lPVwiYXJyb3ctZG93blwiIGNsYXNzPVwiLW1sLTEgLW1iLTFcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8dHIgW2hpZGRlbl09XCJsb2FkaW5nXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgICAgICBAaWYoYWNvZXNUZW1wbGF0ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndoaXRlc3BhY2Utbm93cmFwIHB5LTEgcHgtM1wiIFtzdHlsZV09XCJHZXRUZFN0eWxlKCdBY29lcycsIGl0ZW0pXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFjb2VzVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGZpZWxkIG9mIGxzdFRhYmxlRmllbGRzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghZmllbGQuaGlkZGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJweC0zIHB5LTJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJHZXRUZENsYXNzZXMoZmllbGQsIGl0ZW0pXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIkdldFRkU3R5bGUoZmllbGQsIGl0ZW0pXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlJlZGlyZWN0KGZpZWxkLCBpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogdmFyKC0taW9uLXRhYmxlLXJvdy13cmFwKTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmllbGQuaW5kZXggPT0gJ2F0aXZvJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0XCIgW3JvdXRlckxpbmtdPVwibnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10b2dnbGUgW2NoZWNrZWRdPVwiaXRlbVtmaWVsZC5pbmRleF1cIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiIChpb25DaGFuZ2UpPVwiQXRpdmFyKGl0ZW0uaWQpXCIgPjwvaW9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChcIkJvb2xcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmllbGQuY29uZmlndXJhdGlvbi50eXBlID09IFwidG9nZ2xlXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIi1mdWxsIGgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRvZ2dsZSBbY2hlY2tlZF09XCJpdGVtW2ZpZWxkLmluZGV4XVwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC9pb24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiLWZ1bGwgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY2hlY2tib3ggW2NoZWNrZWRdPVwiaXRlbVtmaWVsZC5pbmRleF1cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvaW9uLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoXCJGaWxlXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZG93bmxvYWQtYnV0dG9uIFsobmdNb2RlbCldPVwiaXRlbVtmaWVsZC5pbmRleF1cIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9kb3dubG9hZC1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoXCJTZWxlY3RcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7R2V0U2VsZWN0TGFiZWwoaXRlbSwgZmllbGQpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBkZWZhdWx0IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e0dldEZpZWxkKGl0ZW0sIGZpZWxkKX19IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9aXRlbS1lbmRdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIEBpZighbm9QYWdpbmF0aW9uKXtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hyaW5rLTAgei1bMTAwXVwiPlxyXG4gICAgICAgICAgICA8ZGVmYXVsdC1wYWdpbmF0aW9uXHJcbiAgICAgICAgICAgICAgICBbcGFnZV09XCJwYWdlXCJcclxuICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIkVtaXRQYWdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW3RvdGFsXT1cInRvdGFsXCJcclxuICAgICAgICAgICAgICAgIFtsaW1pdF09XCJsaW1pdFwiXHJcbiAgICAgICAgICAgICAgICBbbGVuZ3RoXT1cIml0ZW1zLmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgPjwvZGVmYXVsdC1wYWdpbmF0aW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG48L2Rpdj4gLS0+XHJcblxyXG48ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIHJvdW5kZWQteGwgZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW4gcmVsYXRpdmVcIj5cclxuICAgIDxsb2FkaW5nIFt0eXBlXT1cIjNcIiBbbG9hZGluZ109XCJsb2FkaW5nKClcIj48L2xvYWRpbmc+XHJcbiAgICA8Y29udGVudC1ibG9jayB0ZXh0PVwiU2VtIERhZG9zXCIgW3ZhbHVlXT1cIiEoaXRlbXMubGVuZ3RoICE9IDAgfHwgbG9hZGluZylcIj48L2NvbnRlbnQtYmxvY2s+XHJcblxyXG4gICAgIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgc2hyaW5rIHJlbGF0aXZlIG92ZXJmbG93LXktYXV0b1wiPlxyXG4gICAgICAgIDx0YWJsZT5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZihhY29lc1RlbXBsYXRlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJwLTJcIj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBw6fDtWVzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgQGZvciAodGZhIG9mIGxzdFRhYmxlRmllbGRzQXZhaWxhYmxlKCk7IHRyYWNrIHRmYS50Zi5pbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cInAtMlwiPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKCFub0ZpbHRlcnMoKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aC1maWx0ZXIgY2xhc3M9XCIhdGV4dC1iYXNlXCIgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKCh0ZmEudGYudHlwZSAhPSBJbnB1dFR5cGUuRmlsZSB8fCAodGZhLnRmLmZpbHRlciAmJiB0ZmEudGYuZGlzYWJsZWRDaGFuZ2UoKSkpICYmICFub0ZpbHRlcnMoKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cInRmYS50ZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIkNoYW5nZUZpbHRlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdGgtZmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t0ZmEudGYuaGVhZGVyfX0gXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZigodGZhLnRmLnR5cGUgIT0gSW5wdXRUeXBlLkZpbGUgfHwgKHRmYS50Zi5maWx0ZXIgJiYgdGZhLnRmLmRpc2FibGVkQ2hhbmdlKCkpKSAmJiAhbm9GaWx0ZXJzKCkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCJ7ICdiZy1saWdodC8xMCAhb3BhY2l0eS0xMDAnOiB0ZmEuYXNjZW5kaW5nIHx8IHRmYS5kZXNjZW5kaW5nIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvcmRlciBoLTQgdy01IHJlbGF0aXZlIGN1cnNvci1wb2ludGVyIHJvdW5kZWQtbGcgb3BhY2l0eS0wIGRlZmF1bHQtdHJhbnNpdGlvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlN3aXRjaE9yZGVyKHRmYS50ZilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRleHQtcHJpbWFyeV09XCJ0ZmEuYXNjZW5kaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIGxlZnQtMCB0b3AtMFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJhcnJvdy11cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pb24taWNvbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRleHQtcHJpbWFyeV09XCJ0ZmEuZGVzY2VuZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSByaWdodC0wIGJvdHRvbS0wXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImFycm93LWRvd25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaW9uLWljb24+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgQGZvciAocm93IG9mIGxzdFJvd3M7IHRyYWNrIHJvdy5pZCB8fCAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICA8dHIgW2hpZGRlbl09XCJsb2FkaW5nKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGFjb2VzVGVtcGxhdGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIChjbGljayk9XCJSZWRpcmVjdCh1bmRlZmluZWQsIHJvdy5pdGVtKVwiIGNsYXNzPVwid2hpdGVzcGFjZS1ub3dyYXAgcHktMSBweC0zIHt7cm93LmFjb2VzQ2xhc3N9fVwiIFtzdHlsZV09XCJyb3cuYWNvZXNTdHlsZVwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWNvZXNUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdy5pdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiByb3cubHN0Q29sdW1uczsgdHJhY2sgY29sLnRmLmluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ7e2NvbC5jbGFzc319IHAtMiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJSZWRpcmVjdChjb2wudGYsIHJvdy5pdGVtKVwiIFtzdHlsZV09XCInd2hpdGUtc3BhY2U6IHZhcigtLWlvbi10YWJsZS1yb3ctd3JhcCk7JyArIGNvbC5zdHlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihjb2wudGYuaW5kZXggPT0gJ2F0aXZvJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnRcIiBbcm91dGVyTGlua109XCJudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRvZ2dsZSBbY2hlY2tlZF09XCJjb2wudmFsdWVcIiBbZGlzYWJsZWRdPVwibG9hZGluZygpXCIgKGlvbkNoYW5nZSk9XCJBdGl2YXIocm93LmlkKVwiID48L2lvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZWxzZSBpZiAoY29sLnRmLnR5cGUgPT0gSW5wdXRUeXBlLkJvb2wpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihjb2wudGYuY29uZmlndXJhdGlvbi50eXBlID09ICd0b2dnbGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10b2dnbGUgW2NoZWNrZWRdPVwiY29sLnZhbHVlXCIgW2Rpc2FibGVkXT1cInRydWVcIj48L2lvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jaGVja2JveCBbY2hlY2tlZF09XCJjb2wudmFsdWVcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvaW9uLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGVsc2UgaWYgKGNvbC50Zi50eXBlID09IElucHV0VHlwZS5GaWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkb3dubG9hZC1idXR0b24gWyhuZ01vZGVsKV09XCJjb2wudmFsdWVcIiBbY29uZmlndXJhdGlvbl09XCJjb2wudGYuY29uZmlndXJhdGlvblwiPjwvZG93bmxvYWQtYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZWxzZSBpZiAoY29sLmxvYWRpbmcpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImRvdHNcIj48L2lvbi1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbC5sYWJlbH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9aXRlbS1lbmRdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgPC9kaXY+XHJcbiAgICAgQGlmKCFub1BhZ2luYXRpb24oKSl7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNocmluay0wIHotWzEwMF1cIj5cclxuICAgICAgICAgICAgPGRlZmF1bHQtcGFnaW5hdGlvblxyXG4gICAgICAgICAgICAgICAgW3BhZ2VdPVwicGFnZSgpXCJcclxuICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cInBhZ2Uuc2V0KCRldmVudCk7IHJlZnJlc2guZW1pdCgpXCJcclxuICAgICAgICAgICAgICAgIFt0b3RhbF09XCJ0b3RhbCgpXCJcclxuICAgICAgICAgICAgICAgIFtsaW1pdF09XCJsaW1pdCgpXCJcclxuICAgICAgICAgICAgICAgIFtsZW5ndGhdPVwiaXRlbXMoKS5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZygpXCJcclxuICAgICAgICAgICAgPjwvZGVmYXVsdC1wYWdpbmF0aW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cIm92ZXJmbG93LXktYXV0b1wiPlxyXG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgbHN0Um93czsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLXJlZC01MDAgZmxleFwiPlxyXG4gICAgICAgICAgICAgICAge3skaW5kZXh9fSAtIFxyXG4gICAgICAgICAgICAgICAgQGZvciAobGJsIG9mIGl0ZW0ubHN0Q29sdW1uczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKFt7e2xibC5sYWJlbH19XSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+IC0tPlxyXG48L2Rpdj4iXX0=
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZGVmYXVsdC9kZWZhdWx0LXRhYmxlL2RlZmF1bHQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC10YWJsZS9kZWZhdWx0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBZSxLQUFLLEVBQXVCLE1BQU0sRUFBdUMsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdLLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDN0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUdyRixPQUFPLEVBQWMsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBU3hELE1BQU0sT0FBTyxxQkFBcUI7SUFvRWhDLFlBQ1MsY0FBK0IsRUFDOUIsY0FBOEIsRUFDOUIsTUFBc0I7UUFGdkIsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBQzlC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QUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDOytHQXpNVSxxQkFBcUI7bUdBQXJCLHFCQUFxQiw0N0VDdkJsQyx1MFlBcU5NOzs0RkQ5TE8scUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGVBQWU7cUlBTWhCLGFBQWE7c0JBQXJCLEtBQUs7O0FBME1SLE1BQU0sZUFBZTtJQUNuQixZQUNTLElBQU8sRUFDUCxFQUFzQixFQUN0QixVQUFnQyxFQUNoQyxhQUFxQixFQUFFLEVBQ3ZCLGFBQXFCLEVBQUU7UUFKdkIsU0FBSSxHQUFKLElBQUksQ0FBRztRQUNQLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBQ2hDLGVBQVUsR0FBVixVQUFVLENBQWE7UUFDdkIsZUFBVSxHQUFWLFVBQVUsQ0FBYTtJQUM5QixDQUFDO0NBQ0o7QUFFRCxNQUFNLGtCQUFrQjtJQUt0QixZQUNTLFFBQWEsSUFBSSxFQUNqQixFQUFjO1FBRGQsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBTGhCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixVQUFLLEdBQVcsRUFBRSxDQUFDO0lBSXhCLENBQUM7Q0FDSjtBQUVELE1BQU0sbUJBQW1CO0lBQ3ZCLFlBQ1MsRUFBYyxFQUNkLFNBQWtCLEVBQ2xCLFVBQW1CO1FBRm5CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUFTO1FBQ2xCLGVBQVUsR0FBVixVQUFVLENBQVM7SUFDMUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBJbnB1dCwgaW5wdXQsIElucHV0U2lnbmFsLCBtb2RlbCwgTW9kZWxTaWduYWwsIE9uSW5pdCwgb3V0cHV0LCBPdXRwdXRFbWl0dGVyUmVmLCBPdXRwdXRSZWYsIFNpZ25hbCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vaW5wdXRzL2lucHV0LWRlY2ltYWwvaW5wdXQtZGVjaW1hbC5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vaW5wdXRzL2lucHV0LXNlbGVjdC9pbnB1dC5zZWxlY3QuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IEZvcm1hdFRlbGVmb25lQ2VsdWxhciB9IGZyb20gJy4uLy4uL2lucHV0cy9pbnB1dC10ZWxlZm9uZS9pbnB1dC10ZWxlZm9uZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtYXRDcGZDbnBqIH0gZnJvbSAnLi4vLi4vaW5wdXRzL2lucHV0LWNwZi1jbnBqL2lucHV0LWNwZi1jbnBqLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvd2ViL2h0dHAuc2VydmljZSdcclxuaW1wb3J0IHsgVGFibGVGaWVsZCB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvaW5wdXRzL3RhYmxlLWZpZWxkJztcclxuaW1wb3J0IHsgQ29tcGFyaXNvbiwgQ29tcGlsZUxzdFRhYmxlRmllbGQgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vY29tcGFyaXNvbic7XHJcbmltcG9ydCB7IEZvcm1hdENlcCB9IGZyb20gJy4uLy4uL2lucHV0cy9pbnB1dC1jZXAvaW5wdXQtY2VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uL2lucHV0cy9pbnB1dC10eXBlJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcclxuXHJcbnR5cGUgQ1NTU3R5bGVTdHJpbmdHZW5lcmF0b3IgPSAoaW5kZXg6IHN0cmluZywgb2JqZWN0OiBhbnkpID0+IHN0cmluZztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGVmYXVsdC10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RlZmF1bHQtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RlZmF1bHQtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERlZmF1bHRUYWJsZUNvbXBvbmVudDxTZXJ2aWNlIGV4dGVuZHMgSHR0cFNlcnZpY2UsIFQgPSBhbnk+IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgYWNvZXNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvKiogVGVtcGxhdGUgZGUgYcOnw7VlcywgZGV2ZSBzZXIgdW0gZWxlbWVudG8gYGBgPG5nLXRlbXBsYXRlPmBgYCAqL1xyXG4gIC8vIGFjb2VzVGVtcGxhdGU6IElucHV0U2lnbmFsPFRlbXBsYXRlUmVmPGFueT4+ID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcclxuXHJcbiAgLyoqIFNlcnZpY2UgYSBzZXIgdXRpbGl6YWRvIG5hIGxpc3RhZ2VtICovXHJcbiAgc2VydmljZTogSW5wdXRTaWduYWw8U2VydmljZT4gPSBpbnB1dDxTZXJ2aWNlPigpO1xyXG5cclxuICB0b3RhbDogTW9kZWxTaWduYWw8bnVtYmVyPiA9IG1vZGVsPG51bWJlcj4oMCk7XHJcblxyXG4gIC8qKiBOw7ptZXJvIGRlIGl0ZW1zIG3DoXhpbW8gKHVzYW5kbyB0d28gd2F5IGRhdGEgYmluZGluZykgKi9cclxuICBsaW1pdDogTW9kZWxTaWduYWw8bnVtYmVyPiA9IG1vZGVsPG51bWJlcj4oKTtcclxuXHJcbiAgLyoqIFZhbG9yIGRhIHBhZ2luYSwgc2V0YWRvID0gMSBxdWFuZG8gdHJvY2Etc2UgbyB2YWxvciBkZSBsaW1pdGUgZGUgcGFnaW5hcyAodXNhbmRvIHR3byB3YXkgZGF0YSBiaW5kaW5nKSAqL1xyXG4gIHBhZ2U6IE1vZGVsU2lnbmFsPG51bWJlcj4gPSBtb2RlbDxudW1iZXI+KDEpO1xyXG5cclxuICAvKiogUHJvcHJpZWRhZGUgZGUgb3JkZW5hw6fDo28gKHVzYW5kbyB0d28gd2F5IGRhdGEgYmluZGluZykgKi9cclxuICBvcmRlckJ5UHJvcGVydHk6IE1vZGVsU2lnbmFsPHN0cmluZyB8IG51bGw+ID0gbW9kZWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XHJcbiAgICBcclxuICAvKiogUHJvcHJpZWRhZGUgZGUgb3JkZW5hw6fDo29cclxuICAgKiBTZSA9IHRydWUgIE9yZGVuYXLDoSBkZSBtZW5vciBhbyBtYWlvciBcclxuICAgKiBTZSA9IGZhbHNlIE9yZGVuYXLDoSBkZSBtYWlvciBhbyBtZW5vciAodXNhbmRvIHR3byB3YXkgZGF0YSBiaW5kaW5nKSAqL1xyXG4gIGFzY2VuZGluZzogTW9kZWxTaWduYWw8Ym9vbGVhbj4gPSBtb2RlbDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgLyoqIEZpbHRyb3MgKHVzYW5kbyB0d28gd2F5IGRhdGEgYmluZGluZykgKi8gXHJcbiAgZmlsdGVyOiBNb2RlbFNpZ25hbDxDb21wYXJpc29uW10+ID0gbW9kZWw8Q29tcGFyaXNvbltdPihbXSk7XHJcblxyXG4gIC8qKiBFdmVudG8gZW1pdGlkbyBxdWFuZG8gdW0gZG9zIGRhZG9zIMOpIGF0aXZhZG8uIEVtaXRlIG8gaWQgZG8gZGFkbyAqLyAgXHJcbiAgYXRpdmFyIDogT3V0cHV0RW1pdHRlclJlZjxudW1iZXI+ID0gb3V0cHV0PG51bWJlcj4oKTtcclxuICByZWZyZXNoOiBPdXRwdXRFbWl0dGVyUmVmPHZvaWQ+ID0gb3V0cHV0PHZvaWQ+KCk7XHJcblxyXG5cclxuICBsb2FkaW5nOiBNb2RlbFNpZ25hbDxib29sZWFuPiA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgLyoqIExpc3RhIGRlIGRhZG9zIGEgc2VyIGV4aWJpZG9zICovXHJcbiAgaXRlbXM6IE1vZGVsU2lnbmFsPFRbXT4gPSBtb2RlbDxUW10+KFtdKTtcclxuXHJcbiAgLyoqIExpc3RhIGRlIGNhbXBvcyBhIHNlciBleGliaWRvcyAqL1xyXG4gIGxzdFRhYmxlRmllbGRzOiBNb2RlbFNpZ25hbDxUYWJsZUZpZWxkW10+ID0gbW9kZWw8VGFibGVGaWVsZFtdPihbXSk7XHJcbiAgbHN0VGFibGVGaWVsZHNBdmFpbGFibGU6IFNpZ25hbDxBdmFpbGFibGVUYWJsZUZpZWxkW10+ID0gY29tcHV0ZWQ8QXZhaWxhYmxlVGFibGVGaWVsZFtdPigoKSA9PiB7IFxyXG4gICAgcmV0dXJuIHRoaXMubHN0VGFibGVGaWVsZHMoKS5maWx0ZXIocCA9PiAhcC5oaWRkZW4pLm1hcCh0ZiA9PiB7XHJcbiAgICAgIHJldHVybiBuZXcgQXZhaWxhYmxlVGFibGVGaWVsZChcclxuICAgICAgICB0ZiwgXHJcbiAgICAgICAgdGhpcy5hc2NlbmRpbmcoKSAmJiB0aGlzLm9yZGVyQnlQcm9wZXJ0eSgpID09IHRmLmluZGV4LCBcclxuICAgICAgICAhdGhpcy5hc2NlbmRpbmcoKSAmJiB0aGlzLm9yZGVyQnlQcm9wZXJ0eSgpID09IHRmLmluZGV4XHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgLyoqIFJlbW92ZSBvcyBmaWx0cm9zIG5vIGNhYmXDp2FsaG8gZGEgdGFiZWxhICAqL1xyXG4gIG5vRmlsdGVyczogSW5wdXRTaWduYWw8Ym9vbGVhbj4gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIC8qKiBBcGxpY2EgY2xhc3NlcyBkZSBDU1MgbmEgY29sdW5hIGRlIGFjaXJkbyBjb20gbyByZXRvcm5vIGRhIGZ1bsOnw6NvIHBhc3NhZGEgY29tbyBwYXJhbWV0cm8gICovXHJcbiAgY29sdW1uQ2xhc3M6IElucHV0U2lnbmFsPENTU1N0eWxlU3RyaW5nR2VuZXJhdG9yIHwgbnVsbD4gPSBpbnB1dDxDU1NTdHlsZVN0cmluZ0dlbmVyYXRvciB8IG51bGw+KG51bGwpO1xyXG5cclxuICAvKiogQXBsaWNhIHN0eWxlIGRlIENTUyBuYSBjb2x1bmEgZGUgYWNpcmNvIGNvbSBvIHJldG9ybm8gZGEgZnVuw6fDo28gcGFzc2FkYSBjb21vIHBhcmFtZXRybyAgKi9cclxuICBjb2x1bW5TdHlsZTogSW5wdXRTaWduYWw8Q1NTU3R5bGVTdHJpbmdHZW5lcmF0b3IgfCBudWxsPiA9IGlucHV0PENTU1N0eWxlU3RyaW5nR2VuZXJhdG9yIHwgbnVsbD4obnVsbCk7XHJcblxyXG4gIC8qKiBSZW1vdmUgYSBwYWdpbmHDp8OjbyBkYSBsaXN0YWdlbSAqL1xyXG4gIG5vUGFnaW5hdGlvbjogSW5wdXRTaWduYWw8Ym9vbGVhbj4gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIC8qKiBDYW1pbmhvIGRlIHJlZGlyZWNpb25hbWVudG8gZG8gaXRlbSAqL1xyXG4gIGl0ZW1QYXRoOiBJbnB1dFNpZ25hbDxzdHJpbmc+ID0gaW5wdXQ8c3RyaW5nPigndmlldy86aWQnKTtcclxuICBpdGVtQ2xpY2s6IE91dHB1dEVtaXR0ZXJSZWY8VD4gPSBvdXRwdXQ8VD4oKTtcclxuXHJcbiAgSW5wdXRUeXBlID0gSW5wdXRUeXBlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzdG9yYWdlU2VydmljZSA6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHJvdXRlciAgICAgICAgOiBSb3V0ZXIsXHJcbiAgKSB7IFxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgZm9yIChjb25zdCB0ZiBvZiB0aGlzLmxzdFRhYmxlRmllbGRzKCkuZmlsdGVyKHAgPT4gcC50eXBlID09IElucHV0VHlwZS5TZWxlY3QpKSB7XHJcbiAgICAgICAgKHRmLmNvbmZpZ3VyYXRpb24gYXMgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKS5sb2FkZXIuUmVmcmVzaCgpLnRoZW4oKCkgPT4gdGhpcy5TZXRMc3RSb3dzKCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuU2V0THN0Um93cygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBSZWRpcmVjdChmaWVsZDogVGFibGVGaWVsZCB8IHVuZGVmaW5lZCwgaXRlbTogVCk6IHZvaWR7XHJcbiAgICB0aGlzLml0ZW1DbGljay5lbWl0KGl0ZW0pO1xyXG4gICAgaWYoIWZpZWxkKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlXHJcbiAgICBpZihmaWVsZC5pbmRleCA9PSAnYXRpdm8nKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfWVsc2VcclxuICAgIGlmKGZpZWxkLnR5cGUgID09ICdGaWxlJyl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1lbHNlXHJcbiAgICBpZih0aGlzLml0ZW1QYXRoKCkpe1xyXG4gICAgICBjb25zdCBpZCA9IGl0ZW1bJ2lkJ107IFxyXG4gICAgICBjb25zdCBwYXRoID0gdGhpcy5pdGVtUGF0aCgpLnJlcGxhY2UoXCI6aWRcIiwgaWQudG9TdHJpbmcoKSk7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgLi8ke3BhdGh9YF0sIHsgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgU2V0THN0Um93cygpeyBcclxuICAgIHRoaXMubHN0Um93cyA9IHRoaXMuaXRlbXMoKS5tYXAoaXRlbSA9PiB7XHJcbiAgICAgIHJldHVybiBuZXcgRGVmYXVsdFRhYmxlUm93PFQ+KFxyXG4gICAgICAgIGl0ZW0sIFxyXG4gICAgICAgIGl0ZW1bJ2lkJ10sXHJcbiAgICAgICAgdGhpcy5HZXRDb2x1bW5zKGl0ZW0pLFxyXG4gICAgICAgIHRoaXMuY29sdW1uQ2xhc3MoKSA/IHRoaXMuY29sdW1uQ2xhc3MoKSgnYWNvZXMnLCBpdGVtKSA6ICcnLFxyXG4gICAgICAgIHRoaXMuY29sdW1uU3R5bGUoKSA/IHRoaXMuY29sdW1uQ2xhc3MoKSgnYWNvZXMnLCBpdGVtKSA6ICcnLFxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIFxyXG4gIGxzdFJvd3M6IERlZmF1bHRUYWJsZVJvdzxUPltdID0gW107IFxyXG5cclxuICBHZXRDb2x1bW5zKGl0ZW06IFQpOiBEZWZhdWx0VGFibGVDb2x1bW5bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5sc3RUYWJsZUZpZWxkcygpLmZpbHRlcihwID0+ICFwLmhpZGRlbikubWFwKHRmID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBpdGVtW3RmLmluZGV4XTtcclxuICAgICAgY29uc3QgY29sdW1uID0gbmV3IERlZmF1bHRUYWJsZUNvbHVtbih2YWx1ZSwgdGYpO1xyXG4gICAgICBjb2x1bW4uY2xhc3MgPSB0aGlzLmNvbHVtbkNsYXNzKCkgPyB0aGlzLmNvbHVtbkNsYXNzKCkodGYuaW5kZXgsIGl0ZW0pIDogJyc7XHJcbiAgICAgIGNvbHVtbi5zdHlsZSA9IHRoaXMuY29sdW1uU3R5bGUoKSA/IHRoaXMuY29sdW1uU3R5bGUoKSh0Zi5pbmRleCwgaXRlbSkgOiAnJztcclxuICAgICAgXHJcbiAgICAgIGlmKCF2YWx1ZSl7IFxyXG4gICAgICAgIGNvbHVtbi5sYWJlbCA9ICctJyBcclxuICAgICAgICByZXR1cm4gY29sdW1uO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBpZih0Zi50eXBlID09IElucHV0VHlwZS5Cb29sKXtcclxuICAgICAgICBjb2x1bW4ubGFiZWwgPSBcIjxib29sPlwiXHJcbiAgICAgIH0gZWxzZVxyXG4gICAgICBpZih0Zi50eXBlID09IElucHV0VHlwZS5DZXApe1xyXG4gICAgICAgIGNvbHVtbi5sYWJlbCA9IEZvcm1hdENlcCh2YWx1ZSk7XHJcbiAgICAgIH0gZWxzZVxyXG4gICAgICBpZih0Zi50eXBlID09IElucHV0VHlwZS5Db2xvcil7XHJcbiAgICAgICAgY29sdW1uLmxhYmVsID0gdmFsdWU7XHJcbiAgICAgIH0gZWxzZVxyXG4gICAgICBpZihbSW5wdXRUeXBlLkNwZiwgSW5wdXRUeXBlLkNucGosIElucHV0VHlwZS5DcGZDbnBqXS5pbmNsdWRlcyh0Zi50eXBlKSl7XHJcbiAgICAgICAgY29sdW1uLmxhYmVsID0gRm9ybWF0Q3BmQ25waih2YWx1ZSk7XHJcbiAgICAgIH0gZWxzZVxyXG4gICAgICBpZih0Zi50eXBlID09IElucHV0VHlwZS5EYXRlVGltZSl7XHJcbiAgICAgICAgY29sdW1uLmNsYXNzICs9ICcgZm9udC1tb25vJztcclxuICAgICAgICBjb2x1bW4ubGFiZWwgPSBVdGlscy5EYXRlSVNPVG9ERE1NWVlZWUhITU0odmFsdWUpO1xyXG4gICAgICB9IGVsc2VcclxuICAgICAgaWYodGYudHlwZSA9PSBJbnB1dFR5cGUuRGF0ZSl7XHJcbiAgICAgICAgY29sdW1uLmNsYXNzICs9ICcgZm9udC1tb25vJztcclxuICAgICAgICBjb2x1bW4ubGFiZWwgPSBVdGlscy5EYXRlSVNPVG9ERE1NWVlZWUhITU0odmFsdWUpO1xyXG4gICAgICB9IGVsc2VcclxuICAgICAgaWYodGYudHlwZSA9PSBJbnB1dFR5cGUuVGltZSl7XHJcbiAgICAgICAgY29sdW1uLmNsYXNzICs9ICcgZm9udC1tb25vJztcclxuICAgICAgICBjb2x1bW4ubGFiZWwgPSB2YWx1ZTtcclxuICAgICAgfSBlbHNlXHJcbiAgICAgIGlmKFtJbnB1dFR5cGUuRGVjaW1hbCwgSW5wdXRUeXBlLkRlY2ltYWwsIElucHV0VHlwZS5DdXJyZW5jeSwgSW5wdXRUeXBlLk51bWJlcl0uaW5jbHVkZXModGYudHlwZSkpe1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24gPSB0Zi5jb25maWd1cmF0aW9uO1xyXG4gICAgICAgIGNvbHVtbi5sYWJlbCA9IFtcclxuICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucHJlZml4LCBcclxuICAgICAgICAgIGZvcm1hdE51bWJlcih2YWx1ZSBhcyBudW1iZXIsICdwdC1CUicsIGAxLiR7Y29uZmlndXJhdGlvbi5wcmVjaXNpb259LSR7Y29uZmlndXJhdGlvbi5wcmVjaXNpb259YCksXHJcbiAgICAgICAgICBjb25maWd1cmF0aW9uLnN1Zml4LCBcclxuICAgICAgICBdLmpvaW4oJyAnKTtcclxuICAgICAgfSBlbHNlXHJcbiAgICAgIGlmKHRmLnR5cGUgPT0gSW5wdXRUeXBlLkZpbGUpe1xyXG4gICAgICAgIGNvbHVtbi5sYWJlbCA9ICc8ZmlsZT4nO1xyXG4gICAgICB9IGVsc2VcclxuICAgICAgaWYodGYudHlwZSA9PSBJbnB1dFR5cGUuSWNvbil7XHJcbiAgICAgICAgY29sdW1uLmxhYmVsID0gJ2ljb24nO1xyXG4gICAgICB9IGVsc2VcclxuICAgICAgaWYodGYudHlwZSA9PSBJbnB1dFR5cGUuU2VsZWN0KXtcclxuICAgICAgICBjb2x1bW4ubGFiZWwgPSAodGYuY29uZmlndXJhdGlvbiBhcyBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24pLmxvYWRlci5HZXRMYWJlbCh2YWx1ZSk7XHJcbiAgICAgICAgY29sdW1uLmxvYWRpbmcgPSAhKHRmLmNvbmZpZ3VyYXRpb24gYXMgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKS5sb2FkZXIuaXNMb2FkZWQ7XHJcbiAgICAgIH0gZWxzZVxyXG4gICAgICBpZihbSW5wdXRUeXBlLlN0cmluZywgSW5wdXRUeXBlLlRleHRBcmVhXS5pbmNsdWRlcyh0Zi50eXBlKSl7XHJcbiAgICAgICAgY29sdW1uLmxhYmVsID0gdmFsdWVcclxuICAgICAgfSBlbHNlXHJcbiAgICAgIGlmKFtJbnB1dFR5cGUuVGVsZWZvbmUsIElucHV0VHlwZS5DZWx1bGFyLCBJbnB1dFR5cGUuVGVsZWZvbmVDZWx1bGFyXS5pbmNsdWRlcyh0Zi50eXBlKSl7XHJcbiAgICAgICAgY29sdW1uLmxhYmVsID0gRm9ybWF0VGVsZWZvbmVDZWx1bGFyKHZhbHVlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGNvbHVtbjtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7IHRoaXMuU2V0THN0Um93cygpOyB9XHJcblxyXG4gIFN3aXRjaE9yZGVyKHRmOiBUYWJsZUZpZWxkKTogdm9pZHtcclxuICAgIGlmKHRoaXMub3JkZXJCeVByb3BlcnR5KCkgIT0gdGYuaW5kZXgpe1xyXG4gICAgICB0aGlzLm9yZGVyQnlQcm9wZXJ0eS5zZXQodGYuaW5kZXgpO1xyXG4gICAgICB0aGlzLmFzY2VuZGluZy5zZXQodHJ1ZSk7XHJcbiAgICB9IGVsc2UgXHJcbiAgICBpZih0aGlzLmFzY2VuZGluZygpKXtcclxuICAgICAgdGhpcy5hc2NlbmRpbmcuc2V0KGZhbHNlKTtcclxuICAgIH0gZWxzZXsgXHJcbiAgICAgIHRoaXMub3JkZXJCeVByb3BlcnR5LnNldChudWxsKTsgXHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZnJlc2guZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgQ2hhbmdlRmlsdGVyKCk6IHZvaWR7XHJcbiAgICB0aGlzLmZpbHRlci5zZXQoQ29tcGlsZUxzdFRhYmxlRmllbGQodGhpcy5sc3RUYWJsZUZpZWxkcygpKSk7XHJcbiAgICB0aGlzLnBhZ2Uuc2V0KDEpO1xyXG4gICAgdGhpcy5yZWZyZXNoLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIEF0aXZhcihpZDogbnVtYmVyKTogdm9pZHtcclxuICAgIHRoaXMuYXRpdmFyLmVtaXQoaWQpO1xyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgRGVmYXVsdFRhYmxlUm93PFQ+e1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGl0ZW06IFQsXHJcbiAgICBwdWJsaWMgaWQ6IG51bWJlciB8IHVuZGVmaW5lZCxcclxuICAgIHB1YmxpYyBsc3RDb2x1bW5zOiBEZWZhdWx0VGFibGVDb2x1bW5bXSxcclxuICAgIHB1YmxpYyBhY29lc0NsYXNzOiBzdHJpbmcgPSAnJyxcclxuICAgIHB1YmxpYyBhY29lc1N0eWxlOiBzdHJpbmcgPSAnJyxcclxuICApe31cclxufSBcclxuXHJcbmNsYXNzIERlZmF1bHRUYWJsZUNvbHVtbntcclxuICBwdWJsaWMgbGFiZWw6IHN0cmluZyB8IG51bGxcclxuICBwdWJsaWMgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjbGFzczogc3RyaW5nID0gJyc7XHJcbiAgcHVibGljIHN0eWxlOiBzdHJpbmcgPSAnJztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyB2YWx1ZTogYW55ID0gbnVsbCxcclxuICAgIHB1YmxpYyB0ZjogVGFibGVGaWVsZCxcclxuICApe31cclxufVxyXG5cclxuY2xhc3MgQXZhaWxhYmxlVGFibGVGaWVsZHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyB0ZjogVGFibGVGaWVsZCxcclxuICAgIHB1YmxpYyBhc2NlbmRpbmc6IGJvb2xlYW4sXHJcbiAgICBwdWJsaWMgZGVzY2VuZGluZzogYm9vbGVhbixcclxuICApe31cclxufSIsIjwhLS0gPGRpdiBjbGFzcz1cInNpemUtZnVsbCByb3VuZGVkLTJ4bCBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlbiByZWxhdGl2ZVwiPlxyXG4gICAgPGxvYWRpbmcgW3R5cGVdPVwiM1wiIFtsb2FkaW5nXT1cImxvYWRpbmdcIj48L2xvYWRpbmc+XHJcbiAgICA8Y29udGVudC1ibG9jayB0ZXh0PVwiU2VtIERhZG9zXCIgW3ZhbHVlXT1cIiEoaXRlbXMubGVuZ3RoICE9IDAgfHwgbG9hZGluZylcIj48L2NvbnRlbnQtYmxvY2s+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInNpemUtZnVsbCBzaHJpbmsgcmVsYXRpdmUgb3ZlcmZsb3cteS1hdXRvXCI+XHJcbiAgICAgICAgPHRhYmxlPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJweC0zICFoLTEwXCIgKm5nSWY9XCJhY29lc1RlbXBsYXRlXCI+IEHDp8O1ZXMgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoZmllbGQgb2YgbHN0VGFibGVGaWVsZHM7IGxldCBpID0gJGluZGV4OyB0cmFjayBpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFmaWVsZC5oaWRkZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cInAtMiBweC0zXCIgaWQ9XCJ0aC1maWx0ZXItc2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IGgtZnVsbFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IHZhcigtLWlvbi10YWJsZS1maWx0ZXItd3JhcCk7XCI+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKCFub0ZpbHRlcnMpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aC1maWx0ZXIgY2xhc3M9XCIhdGV4dC1iYXNlXCIgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50XCIgKm5nSWY9XCIoZmllbGQudHlwZSAhPSBJbnB1dFR5cGVGaWxlKSAmJiAhKGZpZWxkLmZpbHRlciAmJiBmaWVsZC5kaXNhYmxlZENoYW5nZSgpKSAmJiAhbm9GaWx0ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJDaGFuZ2VGaWx0ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdGgtZmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tmaWVsZC5oZWFkZXJ9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIiEoIShmaWVsZC50eXBlICE9IElucHV0VHlwZUZpbGUpICYmICEoZmllbGQuZmlsdGVyICYmIGZpZWxkLmRpc2FibGVkQ2hhbmdlKCkpKSAmJiAhbm9GaWx0ZXJzXCIgY2xhc3M9XCJvcmRlci1zd2l0Y2ggaC01IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB4LTEgbWwtMiBzaHJpbmstMCBjdXJzb3ItcG9pbnRlciByb3VuZGVkLTJ4bFwiIChjbGljayk9XCJTd2l0Y2hPcmRlcihmaWVsZClcIiBbbmdDbGFzc109XCJ7ICdvcmRlcmluZy1hc2MnIDogb3JkZXJCeVByb3BlcnR5ID09IGZpZWxkLmluZGV4ICYmIGFzY2VuZGluZywgJ29yZGVyaW5nLWRlc2MnIDogb3JkZXJCeVByb3BlcnR5ID09IGZpZWxkLmluZGV4ICYmICFhc2NlbmRpbmd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIGlkPVwidXBcIiAgIG5hbWU9XCJhcnJvdy11cFwiICAgY2xhc3M9XCItbXQtMVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIGlkPVwiZG93blwiIG5hbWU9XCJhcnJvdy1kb3duXCIgY2xhc3M9XCItbWwtMSAtbWItMVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgIDx0ciBbaGlkZGVuXT1cImxvYWRpbmdcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZihhY29lc1RlbXBsYXRlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwid2hpdGVzcGFjZS1ub3dyYXAgcHktMSBweC0zXCIgW3N0eWxlXT1cIkdldFRkU3R5bGUoJ0Fjb2VzJywgaXRlbSlcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWNvZXNUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgQGZvciAoZmllbGQgb2YgbHN0VGFibGVGaWVsZHM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFmaWVsZC5oaWRkZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInB4LTMgcHktMlwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIkdldFRkQ2xhc3NlcyhmaWVsZCwgaXRlbSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiR2V0VGRTdHlsZShmaWVsZCwgaXRlbSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiUmVkaXJlY3QoZmllbGQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndoaXRlLXNwYWNlOiB2YXIoLS1pb24tdGFibGUtcm93LXdyYXApO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmaWVsZC5pbmRleCA9PSAnYXRpdm8nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnRcIiBbcm91dGVyTGlua109XCJudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRvZ2dsZSBbY2hlY2tlZF09XCJpdGVtW2ZpZWxkLmluZGV4XVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCIgKGlvbkNoYW5nZSk9XCJBdGl2YXIoaXRlbS5pZClcIiA+PC9pb24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAoZmllbGQudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKFwiQm9vbFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmaWVsZC5jb25maWd1cmF0aW9uLnR5cGUgPT0gXCJ0b2dnbGVcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiLWZ1bGwgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tdG9nZ2xlIFtjaGVja2VkXT1cIml0ZW1bZmllbGQuaW5kZXhdXCIgW2Rpc2FibGVkXT1cInRydWVcIj48L2lvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCItZnVsbCBoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jaGVja2JveCBbY2hlY2tlZF09XCJpdGVtW2ZpZWxkLmluZGV4XVwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC9pb24tY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChcIkZpbGVcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkb3dubG9hZC1idXR0b24gWyhuZ01vZGVsKV09XCJpdGVtW2ZpZWxkLmluZGV4XVwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2Rvd25sb2FkLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChcIlNlbGVjdFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tHZXRTZWxlY3RMYWJlbChpdGVtLCBmaWVsZCl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGRlZmF1bHQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7R2V0RmllbGQoaXRlbSwgZmllbGQpfX0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1pdGVtLWVuZF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgQGlmKCFub1BhZ2luYXRpb24pe1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaHJpbmstMCB6LVsxMDBdXCI+XHJcbiAgICAgICAgICAgIDxkZWZhdWx0LXBhZ2luYXRpb25cclxuICAgICAgICAgICAgICAgIFtwYWdlXT1cInBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwiRW1pdFBhZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbdG90YWxdPVwidG90YWxcIlxyXG4gICAgICAgICAgICAgICAgW2xpbWl0XT1cImxpbWl0XCJcclxuICAgICAgICAgICAgICAgIFtsZW5ndGhdPVwiaXRlbXMubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICA+PC9kZWZhdWx0LXBhZ2luYXRpb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbjwvZGl2PiAtLT5cclxuXHJcbjxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgcm91bmRlZC14bCBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlbiByZWxhdGl2ZVwiPlxyXG4gICAgPGxvYWRpbmcgW3R5cGVdPVwiM1wiIFtsb2FkaW5nXT1cImxvYWRpbmcoKVwiPjwvbG9hZGluZz5cclxuICAgIDxjb250ZW50LWJsb2NrIHRleHQ9XCJTZW0gRGFkb3NcIiBbdmFsdWVdPVwiIShpdGVtcy5sZW5ndGggIT0gMCB8fCBsb2FkaW5nKVwiPjwvY29udGVudC1ibG9jaz5cclxuXHJcbiAgICAgPGRpdiBjbGFzcz1cInNpemUtZnVsbCBzaHJpbmsgcmVsYXRpdmUgb3ZlcmZsb3cteS1hdXRvXCI+XHJcbiAgICAgICAgPHRhYmxlPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmKGFjb2VzVGVtcGxhdGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cInAtMlwiPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEHDp8O1ZXMgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAZm9yICh0ZmEgb2YgbHN0VGFibGVGaWVsZHNBdmFpbGFibGUoKTsgdHJhY2sgdGZhLnRmLmluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwicC0yXCI+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTIgaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoIW5vRmlsdGVycygpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoLWZpbHRlciBjbGFzcz1cIiF0ZXh0LWJhc2VcIiBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoKHRmYS50Zi50eXBlICE9IElucHV0VHlwZS5GaWxlIHx8ICh0ZmEudGYuZmlsdGVyICYmIHRmYS50Zi5kaXNhYmxlZENoYW5nZSgpKSkgJiYgIW5vRmlsdGVycygpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwidGZhLnRmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiQ2hhbmdlRmlsdGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC90aC1maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3RmYS50Zi5oZWFkZXJ9fSBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKCh0ZmEudGYudHlwZSAhPSBJbnB1dFR5cGUuRmlsZSB8fCAodGZhLnRmLmZpbHRlciAmJiB0ZmEudGYuZGlzYWJsZWRDaGFuZ2UoKSkpICYmICFub0ZpbHRlcnMoKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtuZ0NsYXNzXT1cInsgJ2JnLWxpZ2h0LzEwICFvcGFjaXR5LTEwMCc6IHRmYS5hc2NlbmRpbmcgfHwgdGZhLmRlc2NlbmRpbmcgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm9yZGVyIGgtNCB3LTUgcmVsYXRpdmUgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1sZyBvcGFjaXR5LTAgZGVmYXVsdC10cmFuc2l0aW9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiU3dpdGNoT3JkZXIodGZhLnRmKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGV4dC1wcmltYXJ5XT1cInRmYS5hc2NlbmRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0wIHRvcC0wXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImFycm93LXVwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2lvbi1pY29uPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGV4dC1wcmltYXJ5XT1cInRmYS5kZXNjZW5kaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIHJpZ2h0LTAgYm90dG9tLTBcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiYXJyb3ctZG93blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pb24taWNvbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgbHN0Um93czsgdHJhY2sgcm93LmlkIHx8ICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDx0ciBbaGlkZGVuXT1cImxvYWRpbmcoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYoYWNvZXNUZW1wbGF0ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKGNsaWNrKT1cIlJlZGlyZWN0KHVuZGVmaW5lZCwgcm93Lml0ZW0pXCIgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vd3JhcCBweS0xIHB4LTMge3tyb3cuYWNvZXNDbGFzc319XCIgW3N0eWxlXT1cInJvdy5hY29lc1N0eWxlXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhY29lc1RlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93Lml0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoY29sIG9mIHJvdy5sc3RDb2x1bW5zOyB0cmFjayBjb2wudGYuaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInt7Y29sLmNsYXNzfX0gcC0yIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIlJlZGlyZWN0KGNvbC50Ziwgcm93Lml0ZW0pXCIgW3N0eWxlXT1cIid3aGl0ZS1zcGFjZTogdmFyKC0taW9uLXRhYmxlLXJvdy13cmFwKTsnICsgY29sLnN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGNvbC50Zi5pbmRleCA9PSAnYXRpdm8nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydFwiIFtyb3V0ZXJMaW5rXT1cIm51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tdG9nZ2xlIFtjaGVja2VkXT1cImNvbC52YWx1ZVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nKClcIiAoaW9uQ2hhbmdlKT1cIkF0aXZhcihyb3cuaWQpXCIgPjwvaW9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBlbHNlIGlmIChjb2wudGYudHlwZSA9PSBJbnB1dFR5cGUuQm9vbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGNvbC50Zi5jb25maWd1cmF0aW9uLnR5cGUgPT0gJ3RvZ2dsZScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRvZ2dsZSBbY2hlY2tlZF09XCJjb2wudmFsdWVcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvaW9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNoZWNrYm94IFtjaGVja2VkXT1cImNvbC52YWx1ZVwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC9pb24tY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZWxzZSBpZiAoY29sLnRmLnR5cGUgPT0gSW5wdXRUeXBlLkZpbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRvd25sb2FkLWJ1dHRvbiBbKG5nTW9kZWwpXT1cImNvbC52YWx1ZVwiIFtjb25maWd1cmF0aW9uXT1cImNvbC50Zi5jb25maWd1cmF0aW9uXCI+PC9kb3dubG9hZC1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBlbHNlIGlmIChjb2wubG9hZGluZyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiZG90c1wiPjwvaW9uLXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29sLmxhYmVsfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1pdGVtLWVuZF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICA8L2Rpdj5cclxuICAgICBAaWYoIW5vUGFnaW5hdGlvbigpKXtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hyaW5rLTAgei1bMTAwXVwiPlxyXG4gICAgICAgICAgICA8ZGVmYXVsdC1wYWdpbmF0aW9uXHJcbiAgICAgICAgICAgICAgICBbcGFnZV09XCJwYWdlKClcIlxyXG4gICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwicGFnZS5zZXQoJGV2ZW50KTsgcmVmcmVzaC5lbWl0KClcIlxyXG4gICAgICAgICAgICAgICAgW3RvdGFsXT1cInRvdGFsKClcIlxyXG4gICAgICAgICAgICAgICAgW2xpbWl0XT1cImxpbWl0KClcIlxyXG4gICAgICAgICAgICAgICAgW2xlbmd0aF09XCJpdGVtcygpLmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nKClcIlxyXG4gICAgICAgICAgICA+PC9kZWZhdWx0LXBhZ2luYXRpb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwib3ZlcmZsb3cteS1hdXRvXCI+XHJcbiAgICAgICAgQGZvciAoaXRlbSBvZiBsc3RSb3dzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItcmVkLTUwMCBmbGV4XCI+XHJcbiAgICAgICAgICAgICAgICB7eyRpbmRleH19IC0gXHJcbiAgICAgICAgICAgICAgICBAZm9yIChsYmwgb2YgaXRlbS5sc3RDb2x1bW5zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAoW3t7bGJsLmxhYmVsfX1dKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICA8L2Rpdj4gLS0+XHJcbjwvZGl2PiJdfQ==
|