ngx-tethys 15.3.3 → 15.3.5
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/CHANGELOG.md +34 -0
- package/avatar/styles/avatar-list.scss +0 -11
- package/avatar/styles/mixin.scss +0 -10
- package/esm2020/input-number/input-number.component.mjs +2 -2
- package/esm2020/pagination/pagination.component.mjs +2 -2
- package/esm2020/select/custom-select/custom-select.component.mjs +33 -8
- package/esm2020/select/module.mjs +4 -4
- package/esm2020/select/select.config.mjs +9 -1
- package/esm2020/shared/directives/view-outlet.directive.mjs +3 -3
- package/esm2020/util/helpers/helpers.mjs +2 -2
- package/esm2020/version.mjs +2 -2
- package/fesm2015/ngx-tethys-input-number.mjs +1 -1
- package/fesm2015/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2015/ngx-tethys-pagination.mjs +1 -1
- package/fesm2015/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2015/ngx-tethys-select.mjs +43 -10
- package/fesm2015/ngx-tethys-select.mjs.map +1 -1
- package/fesm2015/ngx-tethys-shared.mjs +2 -2
- package/fesm2015/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2015/ngx-tethys-util.mjs +1 -1
- package/fesm2015/ngx-tethys-util.mjs.map +1 -1
- package/fesm2015/ngx-tethys.mjs +1 -1
- package/fesm2015/ngx-tethys.mjs.map +1 -1
- package/fesm2020/ngx-tethys-input-number.mjs +1 -1
- package/fesm2020/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2020/ngx-tethys-pagination.mjs +1 -1
- package/fesm2020/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2020/ngx-tethys-select.mjs +43 -10
- package/fesm2020/ngx-tethys-select.mjs.map +1 -1
- package/fesm2020/ngx-tethys-shared.mjs +2 -2
- package/fesm2020/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2020/ngx-tethys-util.mjs +1 -1
- package/fesm2020/ngx-tethys-util.mjs.map +1 -1
- package/fesm2020/ngx-tethys.mjs +1 -1
- package/fesm2020/ngx-tethys.mjs.map +1 -1
- package/package.json +1 -1
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/select/custom-select/custom-select.component.d.ts +13 -3
- package/select/select.config.d.ts +12 -0
- package/styles/variables.scss +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,40 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [15.3.5](https://github.com/atinc/ngx-tethys/compare/15.3.2...15.3.5) (2023-05-23)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **avatar:** adjust font-size to 36px when thySize is set to 110px #INFR-7997 ([#2670](https://github.com/atinc/ngx-tethys/issues/2670)) ([1c6492e](https://github.com/atinc/ngx-tethys/commit/1c6492e728861fc90cbdc3041e56cba31012bac3)), closes [#INFR-7997](https://github.com/atinc/ngx-tethys/issues/INFR-7997)
|
|
11
|
+
* **date-picker:** date picker config service provided in root ([#2668](https://github.com/atinc/ngx-tethys/issues/2668)) ([ec711e4](https://github.com/atinc/ngx-tethys/commit/ec711e4960416a7d5ba6bea23af9662b1fdab5bb))
|
|
12
|
+
* **input-number:** #INFR-7673 is float regular err ([#2673](https://github.com/atinc/ngx-tethys/issues/2673)) ([232f233](https://github.com/atinc/ngx-tethys/commit/232f2331c63ebb45ae904d01e823b3b19612d3f0)), closes [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673)
|
|
13
|
+
* **InputNumber:** Only numbers are allowed as input #INFR-7673 ([#2663](https://github.com/atinc/ngx-tethys/issues/2663)) ([79381fe](https://github.com/atinc/ngx-tethys/commit/79381fe6d38f948d296edcae1127fe4004907cfc)), closes [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673)
|
|
14
|
+
* **shard:** fix view outlet error when current context and previous context are the same object #INFR-8019 ([#2677](https://github.com/atinc/ngx-tethys/issues/2677)) ([83b4e58](https://github.com/atinc/ngx-tethys/commit/83b4e58e310357ea1fb6360a13e2f971dd2a707c)), closes [#INFR-8019](https://github.com/atinc/ngx-tethys/issues/INFR-8019)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* **schematics:** add cdk migration and v16 label template/ts/stylesheets migration ([#2660](https://github.com/atinc/ngx-tethys/issues/2660)) ([10e9225](https://github.com/atinc/ngx-tethys/commit/10e92255f11921b335432d688b35f66fcec1d68b))
|
|
20
|
+
* **select:** support thyDropdownWidthMode to set cdkConnectedOverlayMinWidth #INFR-7975 ([#2675](https://github.com/atinc/ngx-tethys/issues/2675)) ([2360042](https://github.com/atinc/ngx-tethys/commit/236004282d649edeb44b8085d9fc55ce25dc0ea9)), closes [#INFR-7975](https://github.com/atinc/ngx-tethys/issues/INFR-7975)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
## [15.3.4](https://github.com/atinc/ngx-tethys/compare/15.3.2...15.3.4) (2023-05-22)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### Bug Fixes
|
|
28
|
+
|
|
29
|
+
* **date-picker:** date picker config service provided in root ([#2668](https://github.com/atinc/ngx-tethys/issues/2668)) ([ec711e4](https://github.com/atinc/ngx-tethys/commit/ec711e4960416a7d5ba6bea23af9662b1fdab5bb))
|
|
30
|
+
* **InputNumber:** Only numbers are allowed as input #INFR-7673 ([#2663](https://github.com/atinc/ngx-tethys/issues/2663)) ([79381fe](https://github.com/atinc/ngx-tethys/commit/79381fe6d38f948d296edcae1127fe4004907cfc)), closes [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673) [#INFR-7673](https://github.com/atinc/ngx-tethys/issues/INFR-7673)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Features
|
|
34
|
+
|
|
35
|
+
* **select:** support thyDropdownWidthMode to set cdkConnectedOverlayMinWidth #INFR-7975 ([#2675](https://github.com/atinc/ngx-tethys/issues/2675)) ([2360042](https://github.com/atinc/ngx-tethys/commit/236004282d649edeb44b8085d9fc55ce25dc0ea9)), closes [#INFR-7975](https://github.com/atinc/ngx-tethys/issues/INFR-7975)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
5
39
|
## [15.3.3](https://github.com/atinc/ngx-tethys/compare/15.3.2...15.3.3) (2023-05-22)
|
|
6
40
|
|
|
7
41
|
|
|
@@ -32,14 +32,3 @@
|
|
|
32
32
|
margin-left: variables.$overlap-avatar-item-space;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
@each $size, $value in variables.$avatar-sizes {
|
|
37
|
-
.more-#{$size} {
|
|
38
|
-
@include mixin.avatarMoreSize($size, $value);
|
|
39
|
-
background-color: rgba(variables.$black, 0.3);
|
|
40
|
-
color: variables.$white;
|
|
41
|
-
position: absolute;
|
|
42
|
-
left: 0;
|
|
43
|
-
top: 0;
|
|
44
|
-
}
|
|
45
|
-
}
|
package/avatar/styles/mixin.scss
CHANGED
|
@@ -309,7 +309,7 @@ export class ThyInputNumberComponent extends _MixinBase {
|
|
|
309
309
|
return Number(num);
|
|
310
310
|
}
|
|
311
311
|
isInputNumber(value) {
|
|
312
|
-
return isFloat(value) || /^[-+Ee]$|^([
|
|
312
|
+
return isFloat(value) || /^[-+Ee]$|^([-+.]?[0-9])*(([.]|[.eE])?[eE]?[+-]?)?$|^$/.test(value);
|
|
313
313
|
}
|
|
314
314
|
ngOnDestroy() {
|
|
315
315
|
this.ngUnsubscribe$.next();
|
|
@@ -375,4 +375,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
375
375
|
}], thyFocus: [{
|
|
376
376
|
type: Output
|
|
377
377
|
}] } });
|
|
378
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbnB1dC1udW1iZXIvaW5wdXQtbnVtYmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9pbnB1dC1udW1iZXIvaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsNEJBQTRCLEVBRTVCLFlBQVksRUFDWixXQUFXLEVBQ1gsYUFBYSxFQUNiLGFBQWEsRUFHaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBSXRGLElBQUssSUFH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QyxLQUFLO2dCQUtHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBTW1CLFdBQVc7c0JBQW5DLEtBQUs7Z0JBTU8sTUFBTTtzQkFBbEIsS0FBSztnQkFnQk8sTUFBTTtzQkFBbEIsS0FBSztnQkFla0IsT0FBTztzQkFBOUIsS0FBSztnQkFNRyxPQUFPO3NCQUFmLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtJLE9BQU87c0JBQWhCLE1BQU07Z0JBS0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWJzdHJhY3RDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBDb25zdHJ1Y3RvcixcbiAgICBJbnB1dEJvb2xlYW4sXG4gICAgSW5wdXROdW1iZXIsXG4gICAgbWl4aW5EaXNhYmxlZCxcbiAgICBtaXhpblRhYkluZGV4LFxuICAgIFRoeUNhbkRpc2FibGUsXG4gICAgVGh5SGFzVGFiSW5kZXhcbn0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFRoeU1heERpcmVjdGl2ZSwgVGh5TWluRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9mb3JtJztcbmltcG9ydCB7IFRoeUljb25Db21wb25lbnQgfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5SW5wdXRDb21wb25lbnQsIFRoeUlucHV0RGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9pbnB1dCc7XG5pbXBvcnQgeyBUaHlBdXRvZm9jdXNEaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL3NoYXJlZCc7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBFTlRFUiwgaXNOdW1iZXIsIGlzVW5kZWZpbmVkT3JOdWxsLCBVUF9BUlJPVywgaXNGbG9hdCB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxudHlwZSBJbnB1dFNpemUgPSAneHMnIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJyc7XG5cbmVudW0gVHlwZSB7XG4gICAgdXAsXG4gICAgZG93blxufVxuXG5jb25zdCBfTWl4aW5CYXNlOiBDb25zdHJ1Y3RvcjxUaHlIYXNUYWJJbmRleD4gJiBDb25zdHJ1Y3RvcjxUaHlDYW5EaXNhYmxlPiAmIHR5cGVvZiBBYnN0cmFjdENvbnRyb2xWYWx1ZUFjY2Vzc29yID0gbWl4aW5UYWJJbmRleChcbiAgICBtaXhpbkRpc2FibGVkKEFic3RyYWN0Q29udHJvbFZhbHVlQWNjZXNzb3IpXG4pO1xuXG4vKipcbiAqIOaVsOWtl+i+k+WFpeahhlxuICogQG5hbWUgdGh5LWlucHV0LW51bWJlclxuICogQG9yZGVyIDEwXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LWlucHV0LW51bWJlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGh5SW5wdXROdW1iZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVGh5SWNvbkNvbXBvbmVudCwgVGh5SW5wdXREaXJlY3RpdmUsIFRoeUF1dG9mb2N1c0RpcmVjdGl2ZSwgRm9ybXNNb2R1bGUsIFRoeU1pbkRpcmVjdGl2ZSwgVGh5TWF4RGlyZWN0aXZlXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGh5LWlucHV0LW51bWJlcicsXG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAndGFiSW5kZXgnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaHlJbnB1dE51bWJlckNvbXBvbmVudCBleHRlbmRzIF9NaXhpbkJhc2UgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55PjtcblxuICAgIHByaXZhdGUgYXV0b1N0ZXBUaW1lcjogYW55O1xuXG4gICAgdmFsaWRWYWx1ZTogbnVtYmVyIHwgc3RyaW5nO1xuXG4gICAgZGlzcGxheVZhbHVlOiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgICBkaXNhYmxlZFVwID0gZmFsc2U7XG5cbiAgICBkaXNhYmxlZERvd24gPSBmYWxzZTtcblxuICAgIGFjdGl2ZVZhbHVlOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuiHquWKqOiBmueEplxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeUF1dG9Gb2N1czogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOi+k+WFpeahhueahHBsYWNlaG9sZGVyXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm56aB55SoXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5RGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDmnIDlpKflgLxcbiAgICAgKiBAZGVmYXVsdCBJbmZpbml0eVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCB0aHlNYXgodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLmlubmVyTWF4ID0gaXNOdW1iZXIodmFsdWUpID8gdmFsdWUgOiB0aGlzLmlubmVyTWF4O1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5VmFsdWUgfHwgdGhpcy5kaXNwbGF5VmFsdWUgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IE51bWJlcih0aGlzLmRpc3BsYXlWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkVXAgPSB2YWwgPj0gdGhpcy5pbm5lck1heDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCB0aHlNYXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyTWF4O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOacgOWwj+WAvFxuICAgICAqIEBkZWZhdWx0IC1JbmZpbml0eVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCB0aHlNaW4odmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLmlubmVyTWluID0gaXNOdW1iZXIodmFsdWUpID8gdmFsdWUgOiB0aGlzLmlubmVyTWluO1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5VmFsdWUgfHwgdGhpcy5kaXNwbGF5VmFsdWUgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IE51bWJlcih0aGlzLmRpc3BsYXlWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkRG93biA9IHZhbCA8PSB0aGlzLmlubmVyTWluO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHRoeU1pbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5uZXJNaW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5q+P5qyh5pS55Y+Y5q2l5pWw77yM5Y+v5Lul5Li65bCP5pWwXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgdGh5U3RlcCA9IDE7XG5cbiAgICAvKipcbiAgICAgKiDovpPlhaXmoYblpKflsI9cbiAgICAgKiBAdHlwZSB4cyB8IHNtIHwgbWQgfCBsZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNpemU6IElucHV0U2l6ZTtcblxuICAgIC8qKlxuICAgICAqIOaVsOWAvOeyvuW6plxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVByZWNpc2lvbjogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICog5pWw5YC85ZCO57yAXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5U3VmZml4OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDnhKbngrnlpLHljrvkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDnhKbngrnmv4DmtLvkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gICAgcHJpdmF0ZSBpbm5lck1heDogbnVtYmVyID0gSW5maW5pdHk7XG5cbiAgICBwcml2YXRlIGlubmVyTWluOiBudW1iZXIgPSAtSW5maW5pdHk7XG5cbiAgICBwcml2YXRlIGlzRm9jdXNlZDogYm9vbGVhbjtcblxuICAgIHByaXZhdGUgbmdVbnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGh5RGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvclxuICAgICAgICAgICAgLm1vbml0b3IodGhpcy5lbGVtZW50UmVmLCB0cnVlKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShmb2N1c09yaWdpbiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFmb2N1c09yaWdpbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQmx1cigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgd2hlbiBpbnB1dEVsZW1lbnQuZm9jdXMgYW5kIGlucHV0LW51bWJlciBmb2N1c1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXMudGh5U3VmZml4ICYmICFjaGFuZ2VzLnRoeVN1ZmZpeC5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldEN1cnJlbnRWYWxpZFZhbHVlKHRoaXMudmFsaWRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkVmFsdWUodmFsaWRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuZm9ybWF0dGVyVmFsdWUodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgX3ZhbHVlID0gdGhpcy5nZXRDdXJyZW50VmFsaWRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsaWRWYWx1ZShfdmFsdWUpO1xuICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuZm9ybWF0dGVyVmFsdWUoX3ZhbHVlKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlVmFsaWRWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTm90VmFsaWQodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkVmFsdWUgPSAnJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbGlkVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpc2FibGVkVXAgPSB0aGlzLmRpc2FibGVkRG93biA9IGZhbHNlO1xuICAgICAgICBpZiAodmFsdWUgfHwgdmFsdWUgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IE51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICBpZiAodmFsID49IHRoaXMudGh5TWF4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZFVwID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2YWwgPD0gdGhpcy50aHlNaW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkRG93biA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyc2VWYWx1ZSA9IHRoaXMucGFyc2VyKHZhbHVlKTtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0Q3VycmVudFZhbGlkVmFsdWUocGFyc2VWYWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLnZhbGlkVmFsdWUgIT09IHZhbGlkVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsaWRWYWx1ZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VGbih0aGlzLnZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbnB1dChpbnB1dD86IFRoeUlucHV0Q29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gaW5wdXQudmFsdWU7XG4gICAgICAgIGlmICh0aGlzLmlzSW5wdXROdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVZhbHVlID0gdmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuYWN0aXZlVmFsdWU7XG4gICAgICAgICAgICBpbnB1dC52YWx1ZSA9IHRoaXMuZGlzcGxheVZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25CbHVyKGV2ZW50PzogRm9jdXNFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0ZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5mb3JtYXR0ZXJWYWx1ZSh0aGlzLnZhbGlkVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgICAgICAgICAgdGhpcy50aHlCbHVyLmVtaXQoKTtcbiAgICAgICAgICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkZvY3VzKGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbnB1dEZvY3VzKGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVWYWx1ZSA9IHRoaXMucGFyc2VyKHRoaXMuZGlzcGxheVZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICBpZiAoIXRoaXMuaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLmlucHV0RWxlbWVudCwgJ2tleWJvYXJkJyk7XG4gICAgICAgICAgICB0aGlzLnRoeUZvY3VzLmVtaXQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25LZXlEb3duKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gVVBfQVJST1cpIHtcbiAgICAgICAgICAgIHRoaXMudXAoZSk7XG4gICAgICAgICAgICB0aGlzLnN0b3AoKTtcbiAgICAgICAgfSBlbHNlIGlmIChlLmtleUNvZGUgPT09IERPV05fQVJST1cpIHtcbiAgICAgICAgICAgIHRoaXMuZG93bihlKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGUua2V5Q29kZSA9PT0gRU5URVIpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5mb3JtYXR0ZXJWYWx1ZSh0aGlzLnZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b1N0ZXBUaW1lcikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuYXV0b1N0ZXBUaW1lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGVwKHR5cGU6IFR5cGUsIGU6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcCgpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLnRoeURpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbGlkVmFsdWUgYXMgbnVtYmVyO1xuICAgICAgICBsZXQgdmFsO1xuICAgICAgICBpZiAodHlwZSA9PT0gVHlwZS51cCkge1xuICAgICAgICAgICAgdmFsID0gdGhpcy51cFN0ZXAodmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFR5cGUuZG93bikge1xuICAgICAgICAgICAgdmFsID0gdGhpcy5kb3duU3RlcCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3V0T2ZSYW5nZSA9IHZhbCA+IHRoaXMudGh5TWF4IHx8IHZhbCA8IHRoaXMudGh5TWluO1xuICAgICAgICB2YWwgPSB0aGlzLmdldEN1cnJlbnRWYWxpZFZhbHVlKHZhbCk7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsaWRWYWx1ZSh2YWwpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4odGhpcy52YWxpZFZhbHVlKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLmZvcm1hdHRlclZhbHVlKHZhbCk7XG4gICAgICAgIGlmIChvdXRPZlJhbmdlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hdXRvU3RlcFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAodGhpc1tUeXBlW3R5cGVdXSBhcyAoZTogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpID0+IHZvaWQpKGUpO1xuICAgICAgICB9LCAzMDApO1xuICAgIH1cblxuICAgIHVwU3RlcCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgcHJlY2lzaW9uRmFjdG9yID0gdGhpcy5nZXRQcmVjaXNpb25GYWN0b3IodmFsdWUpO1xuICAgICAgICBjb25zdCBwcmVjaXNpb24gPSB0aGlzLmdldE1heFByZWNpc2lvbih2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9ICgocHJlY2lzaW9uRmFjdG9yICogdmFsdWUgKyBwcmVjaXNpb25GYWN0b3IgKiB0aGlzLnRoeVN0ZXApIC8gcHJlY2lzaW9uRmFjdG9yKS50b0ZpeGVkKHByZWNpc2lvbik7XG4gICAgICAgIHJldHVybiB0aGlzLnRvTnVtYmVyKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgZG93blN0ZXAodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHByZWNpc2lvbkZhY3RvciA9IHRoaXMuZ2V0UHJlY2lzaW9uRmFjdG9yKHZhbHVlKTtcbiAgICAgICAgY29uc3QgcHJlY2lzaW9uID0gTWF0aC5hYnModGhpcy5nZXRNYXhQcmVjaXNpb24odmFsdWUpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gKChwcmVjaXNpb25GYWN0b3IgKiB2YWx1ZSAtIHByZWNpc2lvbkZhY3RvciAqIHRoaXMudGh5U3RlcCkgLyBwcmVjaXNpb25GYWN0b3IpLnRvRml4ZWQocHJlY2lzaW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9OdW1iZXIocmVzdWx0KTtcbiAgICB9XG5cbiAgICBnZXRNYXhQcmVjaXNpb24odmFsdWU6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGlmICghaXNVbmRlZmluZWRPck51bGwodGhpcy50aHlQcmVjaXNpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlQcmVjaXNpb247XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RlcFByZWNpc2lvbiA9IHRoaXMuZ2V0UHJlY2lzaW9uKHRoaXMudGh5U3RlcCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZVByZWNpc2lvbiA9IHRoaXMuZ2V0UHJlY2lzaW9uKHZhbHVlIGFzIG51bWJlcik7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGVwUHJlY2lzaW9uO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBNYXRoLm1heChjdXJyZW50VmFsdWVQcmVjaXNpb24sIHN0ZXBQcmVjaXNpb24pO1xuICAgIH1cblxuICAgIGdldFByZWNpc2lvbkZhY3RvcihhY3RpdmVWYWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgcHJlY2lzaW9uID0gdGhpcy5nZXRNYXhQcmVjaXNpb24oYWN0aXZlVmFsdWUpO1xuICAgICAgICByZXR1cm4gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG4gICAgfVxuXG4gICAgZ2V0UHJlY2lzaW9uKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB2YWx1ZVN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIC8vIDAuMDAwMDAwMDAwNC50b1N0cmluZygpID0gNGUxMCAgPT4gMTBcbiAgICAgICAgaWYgKHZhbHVlU3RyaW5nLmluZGV4T2YoJ2UtJykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlU3RyaW5nLnNsaWNlKHZhbHVlU3RyaW5nLmluZGV4T2YoJ2UtJykgKyAyKSwgMTApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwcmVjaXNpb24gPSAwO1xuICAgICAgICAvLyAxLjIyMjIgPT4gIDRcbiAgICAgICAgaWYgKHZhbHVlU3RyaW5nLmluZGV4T2YoJy4nKSA+PSAwKSB7XG4gICAgICAgICAgICBwcmVjaXNpb24gPSB2YWx1ZVN0cmluZy5sZW5ndGggLSB2YWx1ZVN0cmluZy5pbmRleE9mKCcuJykgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcmVjaXNpb247XG4gICAgfVxuXG4gICAgdXAoZTogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB0aGlzLnN0ZXAoVHlwZS51cCwgZSk7XG4gICAgfVxuXG4gICAgZG93bihlOiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMuc3RlcChUeXBlLmRvd24sIGUpO1xuICAgIH1cblxuICAgIGZvcm1hdHRlclZhbHVlKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcGFyc2VWYWx1ZSA9IHRoaXMucGFyc2VyKGAke3ZhbHVlfWApO1xuICAgICAgICBpZiAocGFyc2VWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGh5U3VmZml4ID8gYCR7cGFyc2VWYWx1ZX0gJHt0aGlzLnRoeVN1ZmZpeH1gIDogcGFyc2VWYWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBhcnNlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnJlcGxhY2UoL+OAgi9nLCAnLicpXG4gICAgICAgICAgICAucmVwbGFjZSgvW15cXHdcXC4tXSsvZywgJycpXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLnRoeVN1ZmZpeCwgJycpO1xuICAgIH1cblxuICAgIGdldEN1cnJlbnRWYWxpZFZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIgfCBzdHJpbmcge1xuICAgICAgICBsZXQgdmFsID0gdmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIHZhbCA9IHBhcnNlRmxvYXQodmFsdWUgYXMgc3RyaW5nKTtcbiAgICAgICAgaWYgKHRoaXMuaXNOb3RWYWxpZCh2YWwpKSB7XG4gICAgICAgICAgICB2YWwgPSB0aGlzLnZhbGlkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh2YWwgYXMgbnVtYmVyKSA8IHRoaXMudGh5TWluKSB7XG4gICAgICAgICAgICB2YWwgPSB0aGlzLnRoeU1pbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHZhbCBhcyBudW1iZXIpID4gdGhpcy50aHlNYXgpIHtcbiAgICAgICAgICAgIHZhbCA9IHRoaXMudGh5TWF4O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudG9OdW1iZXIodmFsKTtcbiAgICB9XG5cbiAgICBpc05vdFZhbGlkKG51bTogc3RyaW5nIHwgbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc05hTihudW0gYXMgbnVtYmVyKSB8fCBudW0gPT09ICcnIHx8IG51bSA9PT0gbnVsbCB8fCAhIShudW0gJiYgbnVtLnRvU3RyaW5nKCkuaW5kZXhPZignLicpID09PSBudW0udG9TdHJpbmcoKS5sZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICB0b051bWJlcihudW06IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLmlzTm90VmFsaWQobnVtKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bSBhcyBudW1iZXI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbnVtU3RyID0gU3RyaW5nKG51bSk7XG4gICAgICAgIGlmIChudW1TdHIuaW5kZXhPZignLicpID49IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKHRoaXMudGh5UHJlY2lzaW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihOdW1iZXIobnVtKS50b0ZpeGVkKHRoaXMudGh5UHJlY2lzaW9uKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE51bWJlcihudW0pO1xuICAgIH1cblxuICAgIGlzSW5wdXROdW1iZXIodmFsdWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gaXNGbG9hdCh2YWx1ZSkgfHwgL15bLStFZV0kfF4oWy5dP1swLTldKSooWy5dP1suZUVdP1srLV0/KT8kfF4kLy50ZXN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5lbGVtZW50UmVmKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyLWhhbmRsZXItd3JhcFwiIFtjbGFzcy5pbnB1dC1udW1iZXItZGlzYWJsZWRdPVwidGh5RGlzYWJsZWRcIj5cbiAgPHNwYW5cbiAgICB1bnNlbGVjdGFibGU9XCJ1bnNlbGVjdGFibGVcIlxuICAgIGNsYXNzPVwiaW5wdXQtbnVtYmVyLWhhbmRsZXIgaW5wdXQtbnVtYmVyLWhhbmRsZXItdXBcIlxuICAgIChtb3VzZWRvd24pPVwidXAoJGV2ZW50KVwiXG4gICAgKG1vdXNldXApPVwic3RvcCgpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJzdG9wKClcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFVwXCJcbiAgPlxuICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImFuZ2xlLXVwXCI+PC90aHktaWNvbj5cbiAgPC9zcGFuPlxuICA8c3BhblxuICAgIHVuc2VsZWN0YWJsZT1cInVuc2VsZWN0YWJsZVwiXG4gICAgY2xhc3M9XCJpbnB1dC1udW1iZXItaGFuZGxlciBpbnB1dC1udW1iZXItaGFuZGxlci1kb3duXCJcbiAgICAobW91c2Vkb3duKT1cImRvd24oJGV2ZW50KVwiXG4gICAgKG1vdXNldXApPVwic3RvcCgpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJzdG9wKClcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZERvd25cIlxuICA+XG4gICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtZG93blwiPjwvdGh5LWljb24+XG4gIDwvc3Bhbj5cbjwvZGl2PlxuPGlucHV0XG4gIHRoeUlucHV0XG4gICNpbnB1dFxuICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICBjbGFzcz1cImlucHV0LW51bWJlci1pbnB1dCBmb3JtLWNvbnRyb2xcIlxuICBbdGh5U2l6ZV09XCJ0aHlTaXplXCJcbiAgW3RoeUF1dG9mb2N1c109XCJ0aHlBdXRvRm9jdXNcIlxuICBbZGlzYWJsZWRdPVwidGh5RGlzYWJsZWRcIlxuICBbYXR0ci5taW5dPVwidGh5TWluXCJcbiAgW2F0dHIubWF4XT1cInRoeU1heFwiXG4gIFtwbGFjZWhvbGRlcl09XCJ0aHlQbGFjZWhvbGRlclwiXG4gIFthdHRyLnN0ZXBdPVwidGh5U3RlcFwiXG4gIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgKGtleXVwKT1cInN0b3AoKVwiXG4gIFsobmdNb2RlbCldPVwiZGlzcGxheVZhbHVlXCJcbiAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCJcbiAgKGlucHV0KT1cIm9uSW5wdXQoaW5wdXQpXCJcbiAgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygkZXZlbnQpXCJcbiAgdGFiaW5kZXg9XCItMVwiXG4vPlxuIl19
|
|
378
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbnB1dC1udW1iZXIvaW5wdXQtbnVtYmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9pbnB1dC1udW1iZXIvaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsNEJBQTRCLEVBRTVCLFlBQVksRUFDWixXQUFXLEVBQ1gsYUFBYSxFQUNiLGFBQWEsRUFHaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBSXRGLElBQUssSUFH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QyxLQUFLO2dCQUtHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBTW1CLFdBQVc7c0JBQW5DLEtBQUs7Z0JBTU8sTUFBTTtzQkFBbEIsS0FBSztnQkFnQk8sTUFBTTtzQkFBbEIsS0FBSztnQkFla0IsT0FBTztzQkFBOUIsS0FBSztnQkFNRyxPQUFPO3NCQUFmLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtJLE9BQU87c0JBQWhCLE1BQU07Z0JBS0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWJzdHJhY3RDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBDb25zdHJ1Y3RvcixcbiAgICBJbnB1dEJvb2xlYW4sXG4gICAgSW5wdXROdW1iZXIsXG4gICAgbWl4aW5EaXNhYmxlZCxcbiAgICBtaXhpblRhYkluZGV4LFxuICAgIFRoeUNhbkRpc2FibGUsXG4gICAgVGh5SGFzVGFiSW5kZXhcbn0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFRoeU1heERpcmVjdGl2ZSwgVGh5TWluRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9mb3JtJztcbmltcG9ydCB7IFRoeUljb25Db21wb25lbnQgfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5SW5wdXRDb21wb25lbnQsIFRoeUlucHV0RGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9pbnB1dCc7XG5pbXBvcnQgeyBUaHlBdXRvZm9jdXNEaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL3NoYXJlZCc7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBFTlRFUiwgaXNOdW1iZXIsIGlzVW5kZWZpbmVkT3JOdWxsLCBVUF9BUlJPVywgaXNGbG9hdCB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxudHlwZSBJbnB1dFNpemUgPSAneHMnIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJyc7XG5cbmVudW0gVHlwZSB7XG4gICAgdXAsXG4gICAgZG93blxufVxuXG5jb25zdCBfTWl4aW5CYXNlOiBDb25zdHJ1Y3RvcjxUaHlIYXNUYWJJbmRleD4gJiBDb25zdHJ1Y3RvcjxUaHlDYW5EaXNhYmxlPiAmIHR5cGVvZiBBYnN0cmFjdENvbnRyb2xWYWx1ZUFjY2Vzc29yID0gbWl4aW5UYWJJbmRleChcbiAgICBtaXhpbkRpc2FibGVkKEFic3RyYWN0Q29udHJvbFZhbHVlQWNjZXNzb3IpXG4pO1xuXG4vKipcbiAqIOaVsOWtl+i+k+WFpeahhlxuICogQG5hbWUgdGh5LWlucHV0LW51bWJlclxuICogQG9yZGVyIDEwXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LWlucHV0LW51bWJlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGh5SW5wdXROdW1iZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVGh5SWNvbkNvbXBvbmVudCwgVGh5SW5wdXREaXJlY3RpdmUsIFRoeUF1dG9mb2N1c0RpcmVjdGl2ZSwgRm9ybXNNb2R1bGUsIFRoeU1pbkRpcmVjdGl2ZSwgVGh5TWF4RGlyZWN0aXZlXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGh5LWlucHV0LW51bWJlcicsXG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAndGFiSW5kZXgnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaHlJbnB1dE51bWJlckNvbXBvbmVudCBleHRlbmRzIF9NaXhpbkJhc2UgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55PjtcblxuICAgIHByaXZhdGUgYXV0b1N0ZXBUaW1lcjogYW55O1xuXG4gICAgdmFsaWRWYWx1ZTogbnVtYmVyIHwgc3RyaW5nO1xuXG4gICAgZGlzcGxheVZhbHVlOiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgICBkaXNhYmxlZFVwID0gZmFsc2U7XG5cbiAgICBkaXNhYmxlZERvd24gPSBmYWxzZTtcblxuICAgIGFjdGl2ZVZhbHVlOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuiHquWKqOiBmueEplxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeUF1dG9Gb2N1czogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOi+k+WFpeahhueahHBsYWNlaG9sZGVyXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm56aB55SoXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5RGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDmnIDlpKflgLxcbiAgICAgKiBAZGVmYXVsdCBJbmZpbml0eVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCB0aHlNYXgodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLmlubmVyTWF4ID0gaXNOdW1iZXIodmFsdWUpID8gdmFsdWUgOiB0aGlzLmlubmVyTWF4O1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5VmFsdWUgfHwgdGhpcy5kaXNwbGF5VmFsdWUgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IE51bWJlcih0aGlzLmRpc3BsYXlWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkVXAgPSB2YWwgPj0gdGhpcy5pbm5lck1heDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCB0aHlNYXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyTWF4O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOacgOWwj+WAvFxuICAgICAqIEBkZWZhdWx0IC1JbmZpbml0eVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCB0aHlNaW4odmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLmlubmVyTWluID0gaXNOdW1iZXIodmFsdWUpID8gdmFsdWUgOiB0aGlzLmlubmVyTWluO1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5VmFsdWUgfHwgdGhpcy5kaXNwbGF5VmFsdWUgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IE51bWJlcih0aGlzLmRpc3BsYXlWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkRG93biA9IHZhbCA8PSB0aGlzLmlubmVyTWluO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHRoeU1pbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5uZXJNaW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5q+P5qyh5pS55Y+Y5q2l5pWw77yM5Y+v5Lul5Li65bCP5pWwXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgdGh5U3RlcCA9IDE7XG5cbiAgICAvKipcbiAgICAgKiDovpPlhaXmoYblpKflsI9cbiAgICAgKiBAdHlwZSB4cyB8IHNtIHwgbWQgfCBsZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNpemU6IElucHV0U2l6ZTtcblxuICAgIC8qKlxuICAgICAqIOaVsOWAvOeyvuW6plxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVByZWNpc2lvbjogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICog5pWw5YC85ZCO57yAXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5U3VmZml4OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDnhKbngrnlpLHljrvkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDnhKbngrnmv4DmtLvkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gICAgcHJpdmF0ZSBpbm5lck1heDogbnVtYmVyID0gSW5maW5pdHk7XG5cbiAgICBwcml2YXRlIGlubmVyTWluOiBudW1iZXIgPSAtSW5maW5pdHk7XG5cbiAgICBwcml2YXRlIGlzRm9jdXNlZDogYm9vbGVhbjtcblxuICAgIHByaXZhdGUgbmdVbnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGh5RGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvclxuICAgICAgICAgICAgLm1vbml0b3IodGhpcy5lbGVtZW50UmVmLCB0cnVlKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShmb2N1c09yaWdpbiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFmb2N1c09yaWdpbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQmx1cigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgd2hlbiBpbnB1dEVsZW1lbnQuZm9jdXMgYW5kIGlucHV0LW51bWJlciBmb2N1c1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXMudGh5U3VmZml4ICYmICFjaGFuZ2VzLnRoeVN1ZmZpeC5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldEN1cnJlbnRWYWxpZFZhbHVlKHRoaXMudmFsaWRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkVmFsdWUodmFsaWRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuZm9ybWF0dGVyVmFsdWUodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgX3ZhbHVlID0gdGhpcy5nZXRDdXJyZW50VmFsaWRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsaWRWYWx1ZShfdmFsdWUpO1xuICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuZm9ybWF0dGVyVmFsdWUoX3ZhbHVlKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlVmFsaWRWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTm90VmFsaWQodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkVmFsdWUgPSAnJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbGlkVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpc2FibGVkVXAgPSB0aGlzLmRpc2FibGVkRG93biA9IGZhbHNlO1xuICAgICAgICBpZiAodmFsdWUgfHwgdmFsdWUgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IE51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICBpZiAodmFsID49IHRoaXMudGh5TWF4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZFVwID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2YWwgPD0gdGhpcy50aHlNaW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkRG93biA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyc2VWYWx1ZSA9IHRoaXMucGFyc2VyKHZhbHVlKTtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0Q3VycmVudFZhbGlkVmFsdWUocGFyc2VWYWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLnZhbGlkVmFsdWUgIT09IHZhbGlkVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsaWRWYWx1ZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VGbih0aGlzLnZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbnB1dChpbnB1dD86IFRoeUlucHV0Q29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gaW5wdXQudmFsdWU7XG4gICAgICAgIGlmICh0aGlzLmlzSW5wdXROdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVZhbHVlID0gdmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuYWN0aXZlVmFsdWU7XG4gICAgICAgICAgICBpbnB1dC52YWx1ZSA9IHRoaXMuZGlzcGxheVZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25CbHVyKGV2ZW50PzogRm9jdXNFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0ZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5mb3JtYXR0ZXJWYWx1ZSh0aGlzLnZhbGlkVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgICAgICAgICAgdGhpcy50aHlCbHVyLmVtaXQoKTtcbiAgICAgICAgICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkZvY3VzKGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbnB1dEZvY3VzKGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVWYWx1ZSA9IHRoaXMucGFyc2VyKHRoaXMuZGlzcGxheVZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICBpZiAoIXRoaXMuaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLmlucHV0RWxlbWVudCwgJ2tleWJvYXJkJyk7XG4gICAgICAgICAgICB0aGlzLnRoeUZvY3VzLmVtaXQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25LZXlEb3duKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gVVBfQVJST1cpIHtcbiAgICAgICAgICAgIHRoaXMudXAoZSk7XG4gICAgICAgICAgICB0aGlzLnN0b3AoKTtcbiAgICAgICAgfSBlbHNlIGlmIChlLmtleUNvZGUgPT09IERPV05fQVJST1cpIHtcbiAgICAgICAgICAgIHRoaXMuZG93bihlKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGUua2V5Q29kZSA9PT0gRU5URVIpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5mb3JtYXR0ZXJWYWx1ZSh0aGlzLnZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b1N0ZXBUaW1lcikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuYXV0b1N0ZXBUaW1lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGVwKHR5cGU6IFR5cGUsIGU6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcCgpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLnRoeURpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbGlkVmFsdWUgYXMgbnVtYmVyO1xuICAgICAgICBsZXQgdmFsO1xuICAgICAgICBpZiAodHlwZSA9PT0gVHlwZS51cCkge1xuICAgICAgICAgICAgdmFsID0gdGhpcy51cFN0ZXAodmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFR5cGUuZG93bikge1xuICAgICAgICAgICAgdmFsID0gdGhpcy5kb3duU3RlcCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3V0T2ZSYW5nZSA9IHZhbCA+IHRoaXMudGh5TWF4IHx8IHZhbCA8IHRoaXMudGh5TWluO1xuICAgICAgICB2YWwgPSB0aGlzLmdldEN1cnJlbnRWYWxpZFZhbHVlKHZhbCk7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsaWRWYWx1ZSh2YWwpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4odGhpcy52YWxpZFZhbHVlKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLmZvcm1hdHRlclZhbHVlKHZhbCk7XG4gICAgICAgIGlmIChvdXRPZlJhbmdlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hdXRvU3RlcFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAodGhpc1tUeXBlW3R5cGVdXSBhcyAoZTogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpID0+IHZvaWQpKGUpO1xuICAgICAgICB9LCAzMDApO1xuICAgIH1cblxuICAgIHVwU3RlcCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgcHJlY2lzaW9uRmFjdG9yID0gdGhpcy5nZXRQcmVjaXNpb25GYWN0b3IodmFsdWUpO1xuICAgICAgICBjb25zdCBwcmVjaXNpb24gPSB0aGlzLmdldE1heFByZWNpc2lvbih2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9ICgocHJlY2lzaW9uRmFjdG9yICogdmFsdWUgKyBwcmVjaXNpb25GYWN0b3IgKiB0aGlzLnRoeVN0ZXApIC8gcHJlY2lzaW9uRmFjdG9yKS50b0ZpeGVkKHByZWNpc2lvbik7XG4gICAgICAgIHJldHVybiB0aGlzLnRvTnVtYmVyKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgZG93blN0ZXAodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHByZWNpc2lvbkZhY3RvciA9IHRoaXMuZ2V0UHJlY2lzaW9uRmFjdG9yKHZhbHVlKTtcbiAgICAgICAgY29uc3QgcHJlY2lzaW9uID0gTWF0aC5hYnModGhpcy5nZXRNYXhQcmVjaXNpb24odmFsdWUpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gKChwcmVjaXNpb25GYWN0b3IgKiB2YWx1ZSAtIHByZWNpc2lvbkZhY3RvciAqIHRoaXMudGh5U3RlcCkgLyBwcmVjaXNpb25GYWN0b3IpLnRvRml4ZWQocHJlY2lzaW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9OdW1iZXIocmVzdWx0KTtcbiAgICB9XG5cbiAgICBnZXRNYXhQcmVjaXNpb24odmFsdWU6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGlmICghaXNVbmRlZmluZWRPck51bGwodGhpcy50aHlQcmVjaXNpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlQcmVjaXNpb247XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RlcFByZWNpc2lvbiA9IHRoaXMuZ2V0UHJlY2lzaW9uKHRoaXMudGh5U3RlcCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZVByZWNpc2lvbiA9IHRoaXMuZ2V0UHJlY2lzaW9uKHZhbHVlIGFzIG51bWJlcik7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGVwUHJlY2lzaW9uO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBNYXRoLm1heChjdXJyZW50VmFsdWVQcmVjaXNpb24sIHN0ZXBQcmVjaXNpb24pO1xuICAgIH1cblxuICAgIGdldFByZWNpc2lvbkZhY3RvcihhY3RpdmVWYWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgcHJlY2lzaW9uID0gdGhpcy5nZXRNYXhQcmVjaXNpb24oYWN0aXZlVmFsdWUpO1xuICAgICAgICByZXR1cm4gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG4gICAgfVxuXG4gICAgZ2V0UHJlY2lzaW9uKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB2YWx1ZVN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIC8vIDAuMDAwMDAwMDAwNC50b1N0cmluZygpID0gNGUxMCAgPT4gMTBcbiAgICAgICAgaWYgKHZhbHVlU3RyaW5nLmluZGV4T2YoJ2UtJykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlU3RyaW5nLnNsaWNlKHZhbHVlU3RyaW5nLmluZGV4T2YoJ2UtJykgKyAyKSwgMTApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwcmVjaXNpb24gPSAwO1xuICAgICAgICAvLyAxLjIyMjIgPT4gIDRcbiAgICAgICAgaWYgKHZhbHVlU3RyaW5nLmluZGV4T2YoJy4nKSA+PSAwKSB7XG4gICAgICAgICAgICBwcmVjaXNpb24gPSB2YWx1ZVN0cmluZy5sZW5ndGggLSB2YWx1ZVN0cmluZy5pbmRleE9mKCcuJykgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcmVjaXNpb247XG4gICAgfVxuXG4gICAgdXAoZTogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB0aGlzLnN0ZXAoVHlwZS51cCwgZSk7XG4gICAgfVxuXG4gICAgZG93bihlOiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMuc3RlcChUeXBlLmRvd24sIGUpO1xuICAgIH1cblxuICAgIGZvcm1hdHRlclZhbHVlKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcGFyc2VWYWx1ZSA9IHRoaXMucGFyc2VyKGAke3ZhbHVlfWApO1xuICAgICAgICBpZiAocGFyc2VWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGh5U3VmZml4ID8gYCR7cGFyc2VWYWx1ZX0gJHt0aGlzLnRoeVN1ZmZpeH1gIDogcGFyc2VWYWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBhcnNlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnJlcGxhY2UoL+OAgi9nLCAnLicpXG4gICAgICAgICAgICAucmVwbGFjZSgvW15cXHdcXC4tXSsvZywgJycpXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLnRoeVN1ZmZpeCwgJycpO1xuICAgIH1cblxuICAgIGdldEN1cnJlbnRWYWxpZFZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIgfCBzdHJpbmcge1xuICAgICAgICBsZXQgdmFsID0gdmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIHZhbCA9IHBhcnNlRmxvYXQodmFsdWUgYXMgc3RyaW5nKTtcbiAgICAgICAgaWYgKHRoaXMuaXNOb3RWYWxpZCh2YWwpKSB7XG4gICAgICAgICAgICB2YWwgPSB0aGlzLnZhbGlkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh2YWwgYXMgbnVtYmVyKSA8IHRoaXMudGh5TWluKSB7XG4gICAgICAgICAgICB2YWwgPSB0aGlzLnRoeU1pbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHZhbCBhcyBudW1iZXIpID4gdGhpcy50aHlNYXgpIHtcbiAgICAgICAgICAgIHZhbCA9IHRoaXMudGh5TWF4O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudG9OdW1iZXIodmFsKTtcbiAgICB9XG5cbiAgICBpc05vdFZhbGlkKG51bTogc3RyaW5nIHwgbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc05hTihudW0gYXMgbnVtYmVyKSB8fCBudW0gPT09ICcnIHx8IG51bSA9PT0gbnVsbCB8fCAhIShudW0gJiYgbnVtLnRvU3RyaW5nKCkuaW5kZXhPZignLicpID09PSBudW0udG9TdHJpbmcoKS5sZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICB0b051bWJlcihudW06IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLmlzTm90VmFsaWQobnVtKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bSBhcyBudW1iZXI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbnVtU3RyID0gU3RyaW5nKG51bSk7XG4gICAgICAgIGlmIChudW1TdHIuaW5kZXhPZignLicpID49IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKHRoaXMudGh5UHJlY2lzaW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihOdW1iZXIobnVtKS50b0ZpeGVkKHRoaXMudGh5UHJlY2lzaW9uKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE51bWJlcihudW0pO1xuICAgIH1cblxuICAgIGlzSW5wdXROdW1iZXIodmFsdWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gaXNGbG9hdCh2YWx1ZSkgfHwgL15bLStFZV0kfF4oWy0rLl0/WzAtOV0pKigoWy5dfFsuZUVdKT9bZUVdP1srLV0/KT8kfF4kLy50ZXN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5lbGVtZW50UmVmKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyLWhhbmRsZXItd3JhcFwiIFtjbGFzcy5pbnB1dC1udW1iZXItZGlzYWJsZWRdPVwidGh5RGlzYWJsZWRcIj5cbiAgPHNwYW5cbiAgICB1bnNlbGVjdGFibGU9XCJ1bnNlbGVjdGFibGVcIlxuICAgIGNsYXNzPVwiaW5wdXQtbnVtYmVyLWhhbmRsZXIgaW5wdXQtbnVtYmVyLWhhbmRsZXItdXBcIlxuICAgIChtb3VzZWRvd24pPVwidXAoJGV2ZW50KVwiXG4gICAgKG1vdXNldXApPVwic3RvcCgpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJzdG9wKClcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFVwXCJcbiAgPlxuICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImFuZ2xlLXVwXCI+PC90aHktaWNvbj5cbiAgPC9zcGFuPlxuICA8c3BhblxuICAgIHVuc2VsZWN0YWJsZT1cInVuc2VsZWN0YWJsZVwiXG4gICAgY2xhc3M9XCJpbnB1dC1udW1iZXItaGFuZGxlciBpbnB1dC1udW1iZXItaGFuZGxlci1kb3duXCJcbiAgICAobW91c2Vkb3duKT1cImRvd24oJGV2ZW50KVwiXG4gICAgKG1vdXNldXApPVwic3RvcCgpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJzdG9wKClcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZERvd25cIlxuICA+XG4gICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtZG93blwiPjwvdGh5LWljb24+XG4gIDwvc3Bhbj5cbjwvZGl2PlxuPGlucHV0XG4gIHRoeUlucHV0XG4gICNpbnB1dFxuICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICBjbGFzcz1cImlucHV0LW51bWJlci1pbnB1dCBmb3JtLWNvbnRyb2xcIlxuICBbdGh5U2l6ZV09XCJ0aHlTaXplXCJcbiAgW3RoeUF1dG9mb2N1c109XCJ0aHlBdXRvRm9jdXNcIlxuICBbZGlzYWJsZWRdPVwidGh5RGlzYWJsZWRcIlxuICBbYXR0ci5taW5dPVwidGh5TWluXCJcbiAgW2F0dHIubWF4XT1cInRoeU1heFwiXG4gIFtwbGFjZWhvbGRlcl09XCJ0aHlQbGFjZWhvbGRlclwiXG4gIFthdHRyLnN0ZXBdPVwidGh5U3RlcFwiXG4gIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgKGtleXVwKT1cInN0b3AoKVwiXG4gIFsobmdNb2RlbCldPVwiZGlzcGxheVZhbHVlXCJcbiAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCJcbiAgKGlucHV0KT1cIm9uSW5wdXQoaW5wdXQpXCJcbiAgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygkZXZlbnQpXCJcbiAgdGFiaW5kZXg9XCItMVwiXG4vPlxuIl19
|
|
@@ -272,7 +272,7 @@ export class ThyPaginationComponent {
|
|
|
272
272
|
}
|
|
273
273
|
}
|
|
274
274
|
ThyPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ThyPaginationComponent, deps: [{ token: THY_PAGINATION_CONFIG, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
275
|
-
ThyPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ThyPaginationComponent, isStandalone: true, selector: "thy-pagination", inputs: { thyPageIndex: "thyPageIndex", thyPageSize: "thyPageSize", thyTotal: "thyTotal", thyCustomPages: "thyCustomPages", disabled: ["thyDisabled", "disabled"], showQuickJumper: ["thyShowQuickJumper", "showQuickJumper"], showTotalPageCount: ["thyShowTotalPageCount", "showTotalPageCount"], size: ["thySize", "size"], maxCount: ["thyMaxCount", "maxCount"], marginalCount: ["thyMarginalCount", "marginalCount"], thyRangeCount: "thyRangeCount", showSizeChanger: ["thyShowSizeChanger", "showSizeChanger"], pageSizeOptions: ["thyPageSizeOptions", "pageSizeOptions"], hideOnSinglePage: ["thyHideOnSinglePage", "hideOnSinglePage"], showTotal: ["thyShowTotal", "showTotal"] }, outputs: { pageIndexChange: "thyPageIndexChange", pageChanged: "thyPageChanged", pageSizeChanged: "thyPageSizeChanged" }, host: { properties: { "class.thy-pagination": "this.isPaginationClass", "class.thy-pagination-has-total": "this.showTotal" } }, ngImport: i0, template: "<ng-container *ngIf=\"(hideOnSinglePage && total > pageSize) || !hideOnSinglePage\">\n <div class=\"thy-pagination-total\" *ngIf=\"showTotal\">\n <ng-container *ngIf=\"!isTemplateRef(showTotal); else totalTemplate\">\n <ng-container *ngIf=\"total > 0\">\n <div class=\"mr-3\">\n \u7B2C<span class=\"number\"> {{ range.from }}-{{ range.to }} </span>\u6761\n </div>\n <div>\n \u5171<span class=\"number\"> {{ total }} </span>\u6761\n </div>\n </ng-container>\n </ng-container>\n <ng-template #totalTemplate>\n <ng-template [ngTemplateOutlet]=\"showTotal\" [ngTemplateOutletContext]=\"{ $implicit: total, range: range }\"></ng-template>\n </ng-template>\n </div>\n <div class=\"thy-pagination-content\">\n <div class=\"thy-pagination-size\" *ngIf=\"config.showSizeChanger\">\n <thy-custom-select\n [(ngModel)]=\"selectPageSize\"\n [thySize]=\"selectSize\"\n [thyDisabled]=\"disabled\"\n (ngModelChange)=\"onPageSizeChange($event)\"\n >\n <thy-option\n class=\"page-size-option\"\n *ngFor=\"let option of config.pageSizeOptions\"\n [thyValue]=\"option\"\n [thyLabelText]=\"option + ' \u6761/\u9875'\"\n ></thy-option>\n </thy-custom-select>\n </div>\n <ul class=\"thy-pagination-pages\">\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === firstIndex\"\n *ngIf=\"config.boundaryLinks\"\n (click)=\"selectPage(firstIndex)\"\n >\n <a class=\"thy-page-link thy-page-link-first\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.firstText\">{{ config.firstText }}</ng-container>\n <ng-container *ngIf=\"config.firstIcon\">\n <thy-icon [thyIconName]=\"config.firstIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === firstIndex\"\n *ngIf=\"config.directionLinks\"\n (click)=\"selectPage(pageIndex - 1)\"\n >\n <a class=\"thy-page-link page-link-pre\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.previousText\">{{ config.previousText }}</ng-container>\n <ng-container *ngIf=\"config.previousIcon\">\n <thy-icon [thyIconName]=\"config.previousIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item thy-page-number\"\n [class.active]=\"page.active\"\n [class.disabled]=\"disabled\"\n (click)=\"selectPage(page.index)\"\n *ngFor=\"let page of pages\"\n >\n <a class=\"thy-page-link\" href=\"javascript:;\">{{ page.text }}</a>\n </li>\n <li\n class=\"thy-page-item page-item-next\"\n [class.disabled]=\"disabled || pageIndex === pageCount\"\n *ngIf=\"config.directionLinks\"\n (click)=\"selectPage(pageIndex + 1)\"\n >\n <a class=\"thy-page-link thy-page-link-next\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.nextText\">{{ config.nextText }}</ng-container>\n <ng-container *ngIf=\"config.nextIcon\">\n <thy-icon [thyIconName]=\"config.nextIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === pageCount\"\n *ngIf=\"config.boundaryLinks\"\n (click)=\"selectPage(pageCount)\"\n >\n <a class=\"thy-page-link thy-page-link-last\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.lastText\">{{ config.lastText }}</ng-container>\n <ng-container *ngIf=\"config.lastIcon\">\n <thy-icon [thyIconName]=\"config.lastIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n </ul>\n <ng-container *ngIf=\"config.showTotalPageCount && config.totalPagesFormat\">\n <div class=\"thy-pagination-count\" [innerHTML]=\"pageCount | paginationTotalPagesFormat: config.totalPagesFormat\"></div>\n </ng-container>\n <ng-container *ngIf=\"config.showQuickJumper\">\n <div class=\"thy-pagination-jumper\">\n <div class=\"thy-pagination-jumper-input\">\n \u8DF3\u81F3\n <input type=\"text\" [disabled]=\"disabled\" #jumperInput (thyEnter)=\"jumpPage(jumperInput)\" (blur)=\"jumpPage(jumperInput)\" />\n \u9875\n </div>\n </div>\n </ng-container>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThySelectCustomComponent, selector: "thy-custom-select", inputs: ["thyShowSearch", "thyPlaceHolder", "thyServerSearch", "thyLoadState", "thyAutoActiveFirstItem", "thyMode", "thySize", "thyEmptyStateText", "thyEmptySearchMessageText", "thyEnableScrollLoad", "thyAllowClear", "thyDisabled", "thySortComparator", "thyFooterTemplate", "thyPlacement", "thyOrigin", "thyFooterClass", "thyAutoExpand", "thyHasBackdrop", "thyMaxTagCount"], outputs: ["thyOnSearch", "thyOnScrollToBottom", "thyOnExpandStatusChange"], exportAs: ["thyCustomSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ThyOptionComponent, selector: "thy-option", inputs: ["thyValue", "thyRawValue", "thyLabelText", "thyShowOptionCustom", "thySearchKey", "thyDisabled"], outputs: ["selectionChange", "visibleChange"] }, { kind: "component", type: ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: ThyEnterDirective, selector: "[thyEnter]", outputs: ["thyEnter"] }, { kind: "pipe", type: PaginationTotalCountFormat, name: "paginationTotalPagesFormat" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
275
|
+
ThyPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ThyPaginationComponent, isStandalone: true, selector: "thy-pagination", inputs: { thyPageIndex: "thyPageIndex", thyPageSize: "thyPageSize", thyTotal: "thyTotal", thyCustomPages: "thyCustomPages", disabled: ["thyDisabled", "disabled"], showQuickJumper: ["thyShowQuickJumper", "showQuickJumper"], showTotalPageCount: ["thyShowTotalPageCount", "showTotalPageCount"], size: ["thySize", "size"], maxCount: ["thyMaxCount", "maxCount"], marginalCount: ["thyMarginalCount", "marginalCount"], thyRangeCount: "thyRangeCount", showSizeChanger: ["thyShowSizeChanger", "showSizeChanger"], pageSizeOptions: ["thyPageSizeOptions", "pageSizeOptions"], hideOnSinglePage: ["thyHideOnSinglePage", "hideOnSinglePage"], showTotal: ["thyShowTotal", "showTotal"] }, outputs: { pageIndexChange: "thyPageIndexChange", pageChanged: "thyPageChanged", pageSizeChanged: "thyPageSizeChanged" }, host: { properties: { "class.thy-pagination": "this.isPaginationClass", "class.thy-pagination-has-total": "this.showTotal" } }, ngImport: i0, template: "<ng-container *ngIf=\"(hideOnSinglePage && total > pageSize) || !hideOnSinglePage\">\n <div class=\"thy-pagination-total\" *ngIf=\"showTotal\">\n <ng-container *ngIf=\"!isTemplateRef(showTotal); else totalTemplate\">\n <ng-container *ngIf=\"total > 0\">\n <div class=\"mr-3\">\n \u7B2C<span class=\"number\"> {{ range.from }}-{{ range.to }} </span>\u6761\n </div>\n <div>\n \u5171<span class=\"number\"> {{ total }} </span>\u6761\n </div>\n </ng-container>\n </ng-container>\n <ng-template #totalTemplate>\n <ng-template [ngTemplateOutlet]=\"showTotal\" [ngTemplateOutletContext]=\"{ $implicit: total, range: range }\"></ng-template>\n </ng-template>\n </div>\n <div class=\"thy-pagination-content\">\n <div class=\"thy-pagination-size\" *ngIf=\"config.showSizeChanger\">\n <thy-custom-select\n [(ngModel)]=\"selectPageSize\"\n [thySize]=\"selectSize\"\n [thyDisabled]=\"disabled\"\n (ngModelChange)=\"onPageSizeChange($event)\"\n >\n <thy-option\n class=\"page-size-option\"\n *ngFor=\"let option of config.pageSizeOptions\"\n [thyValue]=\"option\"\n [thyLabelText]=\"option + ' \u6761/\u9875'\"\n ></thy-option>\n </thy-custom-select>\n </div>\n <ul class=\"thy-pagination-pages\">\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === firstIndex\"\n *ngIf=\"config.boundaryLinks\"\n (click)=\"selectPage(firstIndex)\"\n >\n <a class=\"thy-page-link thy-page-link-first\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.firstText\">{{ config.firstText }}</ng-container>\n <ng-container *ngIf=\"config.firstIcon\">\n <thy-icon [thyIconName]=\"config.firstIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === firstIndex\"\n *ngIf=\"config.directionLinks\"\n (click)=\"selectPage(pageIndex - 1)\"\n >\n <a class=\"thy-page-link page-link-pre\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.previousText\">{{ config.previousText }}</ng-container>\n <ng-container *ngIf=\"config.previousIcon\">\n <thy-icon [thyIconName]=\"config.previousIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item thy-page-number\"\n [class.active]=\"page.active\"\n [class.disabled]=\"disabled\"\n (click)=\"selectPage(page.index)\"\n *ngFor=\"let page of pages\"\n >\n <a class=\"thy-page-link\" href=\"javascript:;\">{{ page.text }}</a>\n </li>\n <li\n class=\"thy-page-item page-item-next\"\n [class.disabled]=\"disabled || pageIndex === pageCount\"\n *ngIf=\"config.directionLinks\"\n (click)=\"selectPage(pageIndex + 1)\"\n >\n <a class=\"thy-page-link thy-page-link-next\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.nextText\">{{ config.nextText }}</ng-container>\n <ng-container *ngIf=\"config.nextIcon\">\n <thy-icon [thyIconName]=\"config.nextIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === pageCount\"\n *ngIf=\"config.boundaryLinks\"\n (click)=\"selectPage(pageCount)\"\n >\n <a class=\"thy-page-link thy-page-link-last\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.lastText\">{{ config.lastText }}</ng-container>\n <ng-container *ngIf=\"config.lastIcon\">\n <thy-icon [thyIconName]=\"config.lastIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n </ul>\n <ng-container *ngIf=\"config.showTotalPageCount && config.totalPagesFormat\">\n <div class=\"thy-pagination-count\" [innerHTML]=\"pageCount | paginationTotalPagesFormat: config.totalPagesFormat\"></div>\n </ng-container>\n <ng-container *ngIf=\"config.showQuickJumper\">\n <div class=\"thy-pagination-jumper\">\n <div class=\"thy-pagination-jumper-input\">\n \u8DF3\u81F3\n <input type=\"text\" [disabled]=\"disabled\" #jumperInput (thyEnter)=\"jumpPage(jumperInput)\" (blur)=\"jumpPage(jumperInput)\" />\n \u9875\n </div>\n </div>\n </ng-container>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThySelectCustomComponent, selector: "thy-custom-select", inputs: ["thyDropdownWidthMode", "thyShowSearch", "thyPlaceHolder", "thyServerSearch", "thyLoadState", "thyAutoActiveFirstItem", "thyMode", "thySize", "thyEmptyStateText", "thyEmptySearchMessageText", "thyEnableScrollLoad", "thyAllowClear", "thyDisabled", "thySortComparator", "thyFooterTemplate", "thyPlacement", "thyOrigin", "thyFooterClass", "thyAutoExpand", "thyHasBackdrop", "thyMaxTagCount"], outputs: ["thyOnSearch", "thyOnScrollToBottom", "thyOnExpandStatusChange"], exportAs: ["thyCustomSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ThyOptionComponent, selector: "thy-option", inputs: ["thyValue", "thyRawValue", "thyLabelText", "thyShowOptionCustom", "thySearchKey", "thyDisabled"], outputs: ["selectionChange", "visibleChange"] }, { kind: "component", type: ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: ThyEnterDirective, selector: "[thyEnter]", outputs: ["thyEnter"] }, { kind: "pipe", type: PaginationTotalCountFormat, name: "paginationTotalPagesFormat" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
276
276
|
__decorate([
|
|
277
277
|
InputNumber(),
|
|
278
278
|
__metadata("design:type", Number),
|
|
@@ -399,4 +399,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
399
399
|
type: Input,
|
|
400
400
|
args: ['thyShowTotal']
|
|
401
401
|
}] } });
|
|
402
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsdUJBQXVCLEVBQ3ZCLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsUUFBUSxFQUNSLE1BQU0sRUFFVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQXVCLE1BQU0scUJBQXFCLENBQUM7QUFDL0gsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFNUQ7Ozs7R0FJRztBQWtCSCxNQUFNLE9BQU8sc0JBQXNCO0lBSS9COzs7T0FHRztJQUNILElBRUksWUFBWSxDQUFDLFNBQWlCO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBRUksV0FBVyxDQUFDLFFBQWdCO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUVJLFFBQVEsQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ0ksY0FBYyxDQUFDLEtBQWU7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMzQjtJQUNMLENBQUM7SUFPRDs7O09BR0c7SUFDSCxJQUVJLGVBQWUsQ0FBQyxLQUFjO1FBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFFSSxrQkFBa0IsQ0FBQyxLQUFjO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFDSSxJQUFJLENBQUMsSUFBd0I7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBRUksUUFBUSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFRRDs7O09BR0c7SUFDSCxJQUVJLGFBQWEsQ0FBQyxLQUFhO1FBQzNCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDL0IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNsQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDaEM7U0FDSjtJQUNMLENBQUM7SUFFRCxJQUVJLGVBQWUsQ0FBQyxLQUFjO1FBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNJLGVBQWUsQ0FBQyxLQUFlO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBd0RELFlBR1ksZ0JBQXFDLEVBQ3JDLEdBQXNCO1FBRHRCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBcUI7UUFDckMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF4TWxDLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3ZCLFdBQU0sR0FBNkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBNERqSDs7V0FFRztRQUNtQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBb0Z2RDs7V0FFRztRQUMyQixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFM0U7O1dBRUc7UUFDdUIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUUvQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFcEUsVUFBSyxHQUEwRCxFQUFFLENBQUM7UUFFbEUsY0FBUyxHQUFHLENBQUMsQ0FBQztRQVVkLFVBQUssR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRTNCLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFFZix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFMUIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsaUJBQVksR0FBRyxlQUFlLEVBQUUsQ0FBQztRQUVsQyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRWxCLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBRUUsc0JBQWlCLEdBQUcsSUFBSSxDQUFDO1FBRTlEOzs7V0FHRztRQUdILGNBQVMsR0FBc0YsS0FBSyxDQUFDO0lBT2xHLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWE7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLElBQUksbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdEO0lBQ0wsQ0FBQztJQUVPLFlBQVksQ0FBQyxTQUFpQjtRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDO1FBQzlFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNsRCxJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1QsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUM7WUFDOUMsRUFBRSxFQUFFLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVO1NBQ3hELENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNqRCxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM3RDthQUFNO1lBQ0gsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDN0U7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sUUFBUSxDQUFDLEtBQWEsRUFBRSxJQUFZLEVBQUUsTUFBZTtRQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU8sZUFBZSxDQUFDLFNBQWlCLEVBQUUsU0FBaUI7UUFDeEQsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNqRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNyQyxPQUFPO29CQUNILEtBQUssRUFBRSxJQUFJO29CQUNYLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUNyQixNQUFNLEVBQUUsSUFBSSxLQUFLLENBQUMsU0FBUztpQkFDOUIsQ0FBQztZQUNOLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTztTQUNWO1FBRUQsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2YsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUN0QyxNQUFNLFVBQVUsR0FBRyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQ3hDLElBQUksVUFBVSxFQUFFO1lBQ1osTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUV0QixjQUFjO1lBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDckMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7YUFDckU7WUFDRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUN6RCxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUN4RTtZQUVELGFBQWE7WUFDYixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUU7Z0JBQ25ELFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3ZFO1lBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxTQUFTLEdBQUcsYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUM3RCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQzthQUNwRTtZQUVELFlBQVk7WUFDWixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFFLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsYUFBYSxDQUFDLENBQUM7WUFDaEYsSUFBSSxTQUFTLEdBQUcsQ0FBQyxJQUFJLGFBQWEsRUFBRTtnQkFDaEMsR0FBRyxHQUFHLFVBQVUsQ0FBQzthQUNwQjtZQUNELElBQUksU0FBUyxHQUFHLFNBQVMsSUFBSSxhQUFhLEVBQUU7Z0JBQ3hDLEtBQUssR0FBRyxTQUFTLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQzthQUN0QztZQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUM7b0JBQ1AsS0FBSyxFQUFFLENBQUM7b0JBQ1IsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7b0JBQ2xCLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTO2lCQUMzQixDQUFDLENBQUM7YUFDTjtZQUNELEtBQUssR0FBRyxDQUFDLEdBQUcsV0FBVyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUM7U0FDckQ7YUFBTTtZQUNILEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pDLEtBQUssQ0FBQyxJQUFJLENBQUM7b0JBQ1AsS0FBSyxFQUFFLENBQUM7b0JBQ1IsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7b0JBQ2xCLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTO2lCQUMzQixDQUFDLENBQUM7YUFDTjtTQUNKO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVPLFVBQVUsQ0FBQyxTQUFpQjtRQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBaUI7UUFDeEIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLFNBQVMsS0FBSyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUU7WUFDeEYsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQXVCO1FBQzVCLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM5QjtRQUNELEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7O21IQS9VUSxzQkFBc0Isa0JBdU1uQixxQkFBcUI7dUdBdk14QixzQkFBc0IsbStCQy9DbkMsaTlJQTZHQSw0Q0R6RVEsSUFBSSw2RkFDSixnQkFBZ0Isb0pBQ2hCLHdCQUF3QiwraEJBQ3hCLFdBQVcsK1ZBQ1gsS0FBSyxtSEFDTCxrQkFBa0IsaU5BQ2xCLGdCQUFnQixzTUFDaEIsaUJBQWlCLHlFQUNqQiwwQkFBMEI7QUFXOUI7SUFDQyxXQUFXLEVBQUU7OzswREFNYjtBQU1EO0lBQ0MsV0FBVyxFQUFFOzs7eURBU2I7QUFLRDtJQUNDLFdBQVcsRUFBRTs7O3NEQVFiO0FBb0JEO0lBQXVCLFlBQVksRUFBRTs7d0RBQWtCO0FBTXZEO0lBQ0MsWUFBWSxFQUFFOzs7NkRBR2Q7QUFNRDtJQUNDLFlBQVksRUFBRTs7O2dFQUdkO0FBaUJEO0lBQ0MsV0FBVyxFQUFFOzs7c0RBR2I7QUFNRDtJQUE0QixXQUFXLEVBQUU7OzZEQUF1QjtBQU1oRTtJQUNDLFdBQVcsRUFBRTs7OzJEQVFiO0FBRUQ7SUFDQyxZQUFZLEVBQUU7Ozs2REFHZDtBQWNEO0lBQStCLFlBQVksRUFBRTs7Z0VBQTJCOzJGQW5KL0Qsc0JBQXNCO2tCQWpCbEMsU0FBUzsrQkFDSSxnQkFBZ0IsbUJBRVQsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ0wsSUFBSTt3QkFDSixnQkFBZ0I7d0JBQ2hCLHdCQUF3Qjt3QkFDeEIsV0FBVzt3QkFDWCxLQUFLO3dCQUNMLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLDBCQUEwQjtxQkFDN0I7OzBCQXdNSSxRQUFROzswQkFDUixNQUFNOzJCQUFDLHFCQUFxQjs0RUE3TDdCLFlBQVk7c0JBRmYsS0FBSztnQkFlRixXQUFXO3NCQUZkLEtBQUs7Z0JBaUJGLFFBQVE7c0JBRlgsS0FBSztnQkFnQkYsY0FBYztzQkFEakIsS0FBSztnQkFjZ0MsUUFBUTtzQkFBN0MsS0FBSzt1QkFBQyxhQUFhO2dCQVFoQixlQUFlO3NCQUZsQixLQUFLO3VCQUFDLG9CQUFvQjtnQkFZdkIsa0JBQWtCO3NCQUZyQixLQUFLO3VCQUFDLHVCQUF1QjtnQkFZMUIsSUFBSTtzQkFEUCxLQUFLO3VCQUFDLFNBQVM7Z0JBWVosUUFBUTtzQkFGWCxLQUFLO3VCQUFDLGFBQWE7Z0JBVXNCLGFBQWE7c0JBQXRELEtBQUs7dUJBQUMsa0JBQWtCO2dCQVFyQixhQUFhO3NCQUZoQixLQUFLO2dCQWFGLGVBQWU7c0JBRmxCLEtBQUs7dUJBQUMsb0JBQW9CO2dCQVV2QixlQUFlO3NCQURsQixLQUFLO3VCQUFDLG9CQUFvQjtnQkFTbUIsZ0JBQWdCO3NCQUE3RCxLQUFLO3VCQUFDLHFCQUFxQjtnQkFLRSxlQUFlO3NCQUE1QyxNQUFNO3VCQUFDLG9CQUFvQjtnQkFLRixXQUFXO3NCQUFwQyxNQUFNO3VCQUFDLGdCQUFnQjtnQkFFTSxlQUFlO3NCQUE1QyxNQUFNO3VCQUFDLG9CQUFvQjtnQkE0QlMsaUJBQWlCO3NCQUFyRCxXQUFXO3VCQUFDLHNCQUFzQjtnQkFRbkMsU0FBUztzQkFGUixXQUFXO3VCQUFDLGdDQUFnQzs7c0JBQzVDLEtBQUs7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIE9wdGlvbmFsLFxuICAgIEluamVjdCxcbiAgICBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBhZ2luYXRpb25Db25maWdNb2RlbCB9IGZyb20gJy4vcGFnaW5hdGlvbi5jbGFzcyc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uRGVmYXVsdENvbmZpZywgREVGQVVMVF9SQU5HRV9DT1VOVCwgVEhZX1BBR0lOQVRJT05fQ09ORklHLCBUaHlQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSAnLi9wYWdpbmF0aW9uLmNvbmZpZyc7XG5pbXBvcnQgeyB1c2VIb3N0UmVuZGVyZXIgfSBmcm9tICdAdGV0aHlzL2Nkay9kb20nO1xuaW1wb3J0IHsgaXNUZW1wbGF0ZVJlZiB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uVG90YWxDb3VudEZvcm1hdCB9IGZyb20gJy4vcGFnaW5hdGlvbi5waXBlJztcbmltcG9ydCB7IFRoeUljb25Db21wb25lbnQgfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5T3B0aW9uQ29tcG9uZW50LCBUaHlFbnRlckRpcmVjdGl2ZSB9IGZyb20gJ25neC10ZXRoeXMvc2hhcmVkJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGh5U2VsZWN0Q3VzdG9tQ29tcG9uZW50IH0gZnJvbSAnbmd4LXRldGh5cy9zZWxlY3QnO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCwgTmdGb3IgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5cbi8qKlxuICog5YiG6aG157uE5Lu277yM5b2T5pWw5o2u6YeP6L+H5aSa5pe277yM5L2/55So5YiG6aG15YiG6Kej5pWw5o2u44CCXG4gKiBAbmFtZSB0aHktcGFnaW5hdGlvblxuICogQG9yZGVyIDEwXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LXBhZ2luYXRpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgVGh5U2VsZWN0Q3VzdG9tQ29tcG9uZW50LFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIFRoeU9wdGlvbkNvbXBvbmVudCxcbiAgICAgICAgVGh5SWNvbkNvbXBvbmVudCxcbiAgICAgICAgVGh5RW50ZXJEaXJlY3RpdmUsXG4gICAgICAgIFBhZ2luYXRpb25Ub3RhbENvdW50Rm9ybWF0XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlQYWdpbmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBpc1RlbXBsYXRlUmVmID0gaXNUZW1wbGF0ZVJlZjtcbiAgICBwdWJsaWMgY29uZmlnOiBUaHlQYWdpbmF0aW9uQ29uZmlnTW9kZWwgPSBPYmplY3QuYXNzaWduKHt9LCBQYWdpbmF0aW9uRGVmYXVsdENvbmZpZywgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLm1haW4pO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u5b2T5YmN6aG177yM5pSv5oyB5Y+M5ZCR57uR5a6aXG4gICAgICogQGRlZmF1bHQgMVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQElucHV0TnVtYmVyKClcbiAgICBzZXQgdGh5UGFnZUluZGV4KHBhZ2VJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucGFnZUluZGV4ID0gcGFnZUluZGV4O1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5zZXRQYWdlSW5kZXgocGFnZUluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOavj+mhteadoeebruaVsOmHj1xuICAgICAqIEBkZWZhdWx0IDIwXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASW5wdXROdW1iZXIoKVxuICAgIHNldCB0aHlQYWdlU2l6ZShwYWdlU2l6ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RQYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlQ291bnQoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2VzKHRoaXMucGFnZUluZGV4LCB0aGlzLnBhZ2VDb3VudCk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaAu+mhteaVsCDkuI4gdG90YWxQYWdlcyDkuozpgInkuIDkvKDlhaVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dE51bWJlcigpXG4gICAgc2V0IHRoeVRvdGFsKHRvdGFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy50b3RhbCA9IHRvdGFsO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlQ291bnQoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0UGFnZUluZGV4KHRoaXMucGFnZUluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6Ieq5a6a5LmJ5YiG6aG16aG156CB77yM6K6+572u6Ieq5a6a5LmJ5YiG6aG16aG156CB5ZCO5bCG5LiN5qC55o2uIFRvdGFsIOWSjCBQYWdlU2l6ZSDmnaXoh6rliqjorqHnrpfpobXnoIHvvIzlrozlhajku6XkvKDlhaXnmoTpobXnoIHkuLrlh4ZcbiAgICAgKiBAdHlwZSBudW1iZXJbXVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUN1c3RvbVBhZ2VzKHBhZ2VzOiBudW1iZXJbXSkge1xuICAgICAgICB0aGlzLmN1c3RvbVBhZ2VzID0gcGFnZXM7XG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dUb3RhbFBhZ2VDb3VudCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlQ291bnQoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2VzKHRoaXMucGFnZUluZGV4LCB0aGlzLnBhZ2VDb3VudCk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuemgeeUqFxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5RGlzYWJsZWQnKSBASW5wdXRCb29sZWFuKCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYvuekuuW/q+mAn+i3s+i9rFxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KCd0aHlTaG93UXVpY2tKdW1wZXInKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIHNldCBzaG93UXVpY2tKdW1wZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd1F1aWNrSnVtcGVyID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5piv5ZCm5pi+56S65oC76aG15pWw5L+h5oGvXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5U2hvd1RvdGFsUGFnZUNvdW50JylcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICBzZXQgc2hvd1RvdGFsUGFnZUNvdW50KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dUb3RhbFBhZ2VDb3VudCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruWIhumhtee7hOS7tueahOWkp+Wwj1xuICAgICAqIEB0eXBlIHNtIHwgbWQgfCBsZ1xuICAgICAqIEBkZWZhdWx0IG1kXG4gICAgICovXG4gICAgQElucHV0KCd0aHlTaXplJylcbiAgICBzZXQgc2l6ZShzaXplOiAnc20nIHwgJ21kJyB8ICdsZycpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RTaXplID0gc2l6ZTtcbiAgICAgICAgdGhpcy5ob3N0UmVuZGVyZXIuYWRkQ2xhc3MoYHRoeS1wYWdpbmF0aW9uLSR7c2l6ZX1gKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mnIDlpKfmmL7npLrmlbDph4/vvIzotoXlh7rmnIDlpKfmmL7npLrmlbDlkI7kvJroh6rliqjov5vooYzliIblibLmmL7npLpcbiAgICAgKiBAZGVmYXVsdCA5XG4gICAgICovXG4gICAgQElucHV0KCd0aHlNYXhDb3VudCcpXG4gICAgQElucHV0TnVtYmVyKClcbiAgICBzZXQgbWF4Q291bnQodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLmNvbmZpZy5tYXhDb3VudCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9rui+uee8mOaYvuekuuaVsOmHj1xuICAgICAqIEBkZWZhdWx0IDJcbiAgICAgKi9cbiAgICBASW5wdXQoJ3RoeU1hcmdpbmFsQ291bnQnKSBASW5wdXROdW1iZXIoKSBtYXJnaW5hbENvdW50OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7kuK3pl7TljLrln5/mmL7npLrmlbDph49cbiAgICAgKiBAZGVmYXVsdCA3XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASW5wdXROdW1iZXIoKVxuICAgIHNldCB0aHlSYW5nZUNvdW50KHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5yYW5nZUNvdW50ID0gdmFsdWU7XG4gICAgICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0TWFyZ2luYWxDb3VudCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoJ3RoeVNob3dTaXplQ2hhbmdlcicpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgc2V0IHNob3dTaXplQ2hhbmdlcih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmNvbmZpZy5zaG93U2l6ZUNoYW5nZXIgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSBudW1iZXJbXVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5UGFnZVNpemVPcHRpb25zJylcbiAgICBzZXQgcGFnZVNpemVPcHRpb25zKHZhbHVlOiBudW1iZXJbXSkge1xuICAgICAgICB0aGlzLmNvbmZpZy5wYWdlU2l6ZU9wdGlvbnMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlj6rmnInkuIDpobXml7bmmK/lkKbpmpDol4/liIbpobXlmahcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5SGlkZU9uU2luZ2xlUGFnZScpIEBJbnB1dEJvb2xlYW4oKSBoaWRlT25TaW5nbGVQYWdlOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog6aG156CB5pS55Y+Y55qE5Zue6LCDXG4gICAgICovXG4gICAgQE91dHB1dCgndGh5UGFnZUluZGV4Q2hhbmdlJykgcGFnZUluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiDkuI5Cb290c3RyYXAgcGFnaW5hdGlvbiDlhbzlrrnvvIzlkI7nu63niYjmnKzkvJrov5vooYzliKDpmaTvvIzlj4LmlbDkv53mjIHkuI4gYm9vdHN0cmFwIOS4gOiHtFxuICAgICAqL1xuICAgIEBPdXRwdXQoJ3RoeVBhZ2VDaGFuZ2VkJykgcGFnZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcGFnZTogbnVtYmVyIH0+KCk7XG5cbiAgICBAT3V0cHV0KCd0aHlQYWdlU2l6ZUNoYW5nZWQnKSBwYWdlU2l6ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIHB1YmxpYyBwYWdlczogeyBpbmRleD86IG51bWJlcjsgdGV4dD86IHN0cmluZzsgYWN0aXZlPzogYm9vbGVhbiB9W10gPSBbXTtcblxuICAgIHB1YmxpYyBwYWdlSW5kZXggPSAxO1xuXG4gICAgcHVibGljIHBhZ2VTaXplOiBudW1iZXI7XG5cbiAgICBwdWJsaWMgcGFnZUNvdW50OiBudW1iZXI7XG5cbiAgICBwdWJsaWMgY3VzdG9tUGFnZXM6IG51bWJlcltdO1xuXG4gICAgcHVibGljIHRvdGFsOiBudW1iZXI7XG5cbiAgICBwdWJsaWMgcmFuZ2UgPSB7IGZyb206IDAsIHRvOiAwIH07XG5cbiAgICBwdWJsaWMgZmlyc3RJbmRleCA9IDE7XG5cbiAgICBwdWJsaWMgaXNIaWRlT25TaW5nbGVQYWdlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGhvc3RSZW5kZXJlciA9IHVzZUhvc3RSZW5kZXJlcigpO1xuXG4gICAgcHVibGljIHNlbGVjdFNpemUgPSAnbWQnO1xuXG4gICAgcHVibGljIHNlbGVjdFBhZ2VTaXplOiBOdW1iZXIgPSAyMDtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LXBhZ2luYXRpb24nKSBpc1BhZ2luYXRpb25DbGFzcyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmmL7npLrojIPlm7Tlkox0b3RhbFxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktcGFnaW5hdGlvbi1oYXMtdG90YWwnKVxuICAgIEBJbnB1dCgndGh5U2hvd1RvdGFsJylcbiAgICBzaG93VG90YWw6IGJvb2xlYW4gfCBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogbnVtYmVyOyByYW5nZTogeyBmcm9tOiBudW1iZXI7IHRvOiBudW1iZXIgfSB9PiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoVEhZX1BBR0lOQVRJT05fQ09ORklHKVxuICAgICAgICBwcml2YXRlIHBhZ2luYXRpb25Db25maWc6IFRoeVBhZ2luYXRpb25Db25maWcsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNldE1hcmdpbmFsQ291bnQodGhpcy5jb25maWcucmFuZ2VDb3VudCk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlUGFnZUNvdW50KCk7XG4gICAgICAgIHRoaXMuc2V0UGFnZUluZGV4KHRoaXMucGFnZUluZGV4KTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRNYXJnaW5hbENvdW50KHJhbmdlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLm1hcmdpbmFsQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMubWFyZ2luYWxDb3VudCA9IHJhbmdlIDw9IERFRkFVTFRfUkFOR0VfQ09VTlQgPyAxIDogMjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UGFnZUluZGV4KHBhZ2VJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucGFnZUluZGV4ID0gcGFnZUluZGV4ID4gdGhpcy5wYWdlQ291bnQgPyB0aGlzLnBhZ2VDb3VudCA6IHBhZ2VJbmRleCB8fCAxO1xuICAgICAgICBjb25zdCB0b1BhZ2VTaXplID0gdGhpcy5wYWdlSW5kZXggKiB0aGlzLnBhZ2VTaXplO1xuICAgICAgICB0aGlzLnJhbmdlID0ge1xuICAgICAgICAgICAgZnJvbTogKHRoaXMucGFnZUluZGV4IC0gMSkgKiB0aGlzLnBhZ2VTaXplICsgMSxcbiAgICAgICAgICAgIHRvOiB0b1BhZ2VTaXplID4gdGhpcy50b3RhbCA/IHRoaXMudG90YWwgOiB0b1BhZ2VTaXplXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2VzKHRoaXMucGFnZUluZGV4LCB0aGlzLnBhZ2VDb3VudCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlUGFnZUNvdW50KCkge1xuICAgICAgICBsZXQgcGFnZUNvdW50ID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tUGFnZXMgJiYgdGhpcy5jdXN0b21QYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBwYWdlQ291bnQgPSB0aGlzLmN1c3RvbVBhZ2VzW3RoaXMuY3VzdG9tUGFnZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYWdlQ291bnQgPSB0aGlzLnBhZ2VTaXplIDwgMSA/IDEgOiBNYXRoLmNlaWwodGhpcy50b3RhbCAvIHRoaXMucGFnZVNpemUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFnZUNvdW50ID0gTWF0aC5tYXgocGFnZUNvdW50IHx8IDAsIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFrZVBhZ2UoaW5kZXg6IG51bWJlciwgdGV4dDogc3RyaW5nLCBhY3RpdmU6IGJvb2xlYW4pOiB7IGluZGV4OiBudW1iZXI7IHRleHQ6IHN0cmluZzsgYWN0aXZlOiBib29sZWFuIH0ge1xuICAgICAgICByZXR1cm4geyBpbmRleCwgdGV4dCwgYWN0aXZlIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplUGFnZXMocGFnZUluZGV4OiBudW1iZXIsIHBhZ2VDb3VudDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVBhZ2VzICYmIHRoaXMuY3VzdG9tUGFnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5wYWdlcyA9IHRoaXMuY3VzdG9tUGFnZXMubWFwKHBhZ2UgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBwYWdlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBwYWdlLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogcGFnZSA9PT0gK3BhZ2VJbmRleFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYWdlcyA9IFtdO1xuICAgICAgICBjb25zdCBtYXJnaW5hbENvdW50ID0gdGhpcy5tYXJnaW5hbENvdW50O1xuICAgICAgICBjb25zdCByYW5nZUNvdW50ID0gdGhpcy5jb25maWcucmFuZ2VDb3VudDtcbiAgICAgICAgY29uc3QgbWF4Q291bnQgPSB0aGlzLmNvbmZpZy5tYXhDb3VudDtcbiAgICAgICAgY29uc3QgaXNNYXhTaXplZCA9IHBhZ2VDb3VudCA+IG1heENvdW50O1xuICAgICAgICBpZiAoaXNNYXhTaXplZCkge1xuICAgICAgICAgICAgY29uc3QgYmVmb3JlUGFnZXMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGFmdGVyUGFnZXMgPSBbXTtcblxuICAgICAgICAgICAgLy8gYmVmb3JlUGFnZXNcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IG1hcmdpbmFsQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGJlZm9yZVBhZ2VzLnB1c2godGhpcy5tYWtlUGFnZShpLCBpLnRvU3RyaW5nKCksIGkgPT09IHBhZ2VJbmRleCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhZ2VJbmRleCAtIE1hdGguY2VpbChyYW5nZUNvdW50IC8gMikgPiB0aGlzLmZpcnN0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICBiZWZvcmVQYWdlcy5wdXNoKHRoaXMubWFrZVBhZ2UocGFnZUluZGV4IC0gcmFuZ2VDb3VudCwgJ8K3wrfCtycsIG51bGwpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYWZ0ZXJQYWdlc1xuICAgICAgICAgICAgaWYgKHBhZ2VJbmRleCArIE1hdGguY2VpbChyYW5nZUNvdW50IC8gMikgPCBwYWdlQ291bnQpIHtcbiAgICAgICAgICAgICAgICBhZnRlclBhZ2VzLnB1c2godGhpcy5tYWtlUGFnZShwYWdlSW5kZXggKyByYW5nZUNvdW50LCAnwrfCt8K3JywgbnVsbCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHBhZ2VDb3VudCAtIG1hcmdpbmFsQ291bnQgKyAxOyBpIDw9IHBhZ2VDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYWZ0ZXJQYWdlcy5wdXNoKHRoaXMubWFrZVBhZ2UoaSwgaS50b1N0cmluZygpLCBpID09PSBwYWdlSW5kZXgpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gbWFpblBhZ2VzXG4gICAgICAgICAgICBsZXQgc3RhcnQgPSBNYXRoLm1heChtYXJnaW5hbENvdW50ICsgMSwgcGFnZUluZGV4IC0gKHJhbmdlQ291bnQgLSAxKSAvIDIpO1xuICAgICAgICAgICAgbGV0IGVuZCA9IE1hdGgubWluKHBhZ2VJbmRleCArIChyYW5nZUNvdW50IC0gMSkgLyAyLCBwYWdlQ291bnQgLSBtYXJnaW5hbENvdW50KTtcbiAgICAgICAgICAgIGlmIChwYWdlSW5kZXggLSAxIDw9IG1hcmdpbmFsQ291bnQpIHtcbiAgICAgICAgICAgICAgICBlbmQgPSByYW5nZUNvdW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhZ2VDb3VudCAtIHBhZ2VJbmRleCA8PSBtYXJnaW5hbENvdW50KSB7XG4gICAgICAgICAgICAgICAgc3RhcnQgPSBwYWdlQ291bnQgLSByYW5nZUNvdW50ICsgMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcGFnZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogaSA9PT0gK3BhZ2VJbmRleFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFnZXMgPSBbLi4uYmVmb3JlUGFnZXMsIC4uLnBhZ2VzLCAuLi5hZnRlclBhZ2VzXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHBhZ2VDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcGFnZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogaSA9PT0gK3BhZ2VJbmRleFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFnZXMgPSBwYWdlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhZ2VDaGFuZ2UocGFnZUluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5wYWdlSW5kZXhDaGFuZ2UuZW1pdChwYWdlSW5kZXgpO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQoeyBwYWdlOiBwYWdlSW5kZXggfSk7XG4gICAgfVxuXG4gICAgc2VsZWN0UGFnZShwYWdlSW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCBwYWdlSW5kZXggPT09IHRoaXMuZmlyc3RJbmRleCAtIDEgfHwgcGFnZUluZGV4ID09PSB0aGlzLnBhZ2VDb3VudCArIDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFBhZ2VJbmRleChwYWdlSW5kZXgpO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UodGhpcy5wYWdlSW5kZXgpO1xuICAgIH1cblxuICAgIGp1bXBQYWdlKGlucHV0OiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHBhZ2VJbmRleCA9ICtpbnB1dC52YWx1ZTtcbiAgICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIocGFnZUluZGV4KSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RQYWdlKHBhZ2VJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBvblBhZ2VTaXplQ2hhbmdlKGV2ZW50OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50O1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZVBhZ2VDb3VudCgpO1xuICAgICAgICB0aGlzLnNldFBhZ2VJbmRleCh0aGlzLnBhZ2VJbmRleCk7XG4gICAgICAgIHRoaXMucGFnZVNpemVDaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIoaGlkZU9uU2luZ2xlUGFnZSAmJiB0b3RhbCA+IHBhZ2VTaXplKSB8fCAhaGlkZU9uU2luZ2xlUGFnZVwiPlxuICA8ZGl2IGNsYXNzPVwidGh5LXBhZ2luYXRpb24tdG90YWxcIiAqbmdJZj1cInNob3dUb3RhbFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZVJlZihzaG93VG90YWwpOyBlbHNlIHRvdGFsVGVtcGxhdGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b3RhbCA+IDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yLTNcIj5cbiAgICAgICAgICDnrKw8c3BhbiBjbGFzcz1cIm51bWJlclwiPiB7eyByYW5nZS5mcm9tIH19LXt7IHJhbmdlLnRvIH19IDwvc3Bhbj7mnaFcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAg5YWxPHNwYW4gY2xhc3M9XCJudW1iZXJcIj4ge3sgdG90YWwgfX0gPC9zcGFuPuadoVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjdG90YWxUZW1wbGF0ZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzaG93VG90YWxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHRvdGFsLCByYW5nZTogcmFuZ2UgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0aHktcGFnaW5hdGlvbi1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLXNpemVcIiAqbmdJZj1cImNvbmZpZy5zaG93U2l6ZUNoYW5nZXJcIj5cbiAgICAgIDx0aHktY3VzdG9tLXNlbGVjdFxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdFBhZ2VTaXplXCJcbiAgICAgICAgW3RoeVNpemVdPVwic2VsZWN0U2l6ZVwiXG4gICAgICAgIFt0aHlEaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDx0aHktb3B0aW9uXG4gICAgICAgICAgY2xhc3M9XCJwYWdlLXNpemUtb3B0aW9uXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGNvbmZpZy5wYWdlU2l6ZU9wdGlvbnNcIlxuICAgICAgICAgIFt0aHlWYWx1ZV09XCJvcHRpb25cIlxuICAgICAgICAgIFt0aHlMYWJlbFRleHRdPVwib3B0aW9uICsgJyDmnaEv6aG1J1wiXG4gICAgICAgID48L3RoeS1vcHRpb24+XG4gICAgICA8L3RoeS1jdXN0b20tc2VsZWN0PlxuICAgIDwvZGl2PlxuICAgIDx1bCBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLXBhZ2VzXCI+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJ0aHktcGFnZS1pdGVtXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IHBhZ2VJbmRleCA9PT0gZmlyc3RJbmRleFwiXG4gICAgICAgICpuZ0lmPVwiY29uZmlnLmJvdW5kYXJ5TGlua3NcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGFnZShmaXJzdEluZGV4KVwiXG4gICAgICA+XG4gICAgICAgIDxhIGNsYXNzPVwidGh5LXBhZ2UtbGluayB0aHktcGFnZS1saW5rLWZpcnN0XCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcuZmlyc3RUZXh0XCI+e3sgY29uZmlnLmZpcnN0VGV4dCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcuZmlyc3RJY29uXCI+XG4gICAgICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cImNvbmZpZy5maXJzdEljb25cIj48L3RoeS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwidGh5LXBhZ2UtaXRlbVwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwYWdlSW5kZXggPT09IGZpcnN0SW5kZXhcIlxuICAgICAgICAqbmdJZj1cImNvbmZpZy5kaXJlY3Rpb25MaW5rc1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RQYWdlKHBhZ2VJbmRleCAtIDEpXCJcbiAgICAgID5cbiAgICAgICAgPGEgY2xhc3M9XCJ0aHktcGFnZS1saW5rICBwYWdlLWxpbmstcHJlXCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcucHJldmlvdXNUZXh0XCI+e3sgY29uZmlnLnByZXZpb3VzVGV4dCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcucHJldmlvdXNJY29uXCI+XG4gICAgICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cImNvbmZpZy5wcmV2aW91c0ljb25cIj48L3RoeS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwidGh5LXBhZ2UtaXRlbSB0aHktcGFnZS1udW1iZXJcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInBhZ2UuYWN0aXZlXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBhZ2UocGFnZS5pbmRleClcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgcGFnZSBvZiBwYWdlc1wiXG4gICAgICA+XG4gICAgICAgIDxhIGNsYXNzPVwidGh5LXBhZ2UtbGlua1wiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIj57eyBwYWdlLnRleHQgfX08L2E+XG4gICAgICA8L2xpPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwidGh5LXBhZ2UtaXRlbSBwYWdlLWl0ZW0tbmV4dFwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwYWdlSW5kZXggPT09IHBhZ2VDb3VudFwiXG4gICAgICAgICpuZ0lmPVwiY29uZmlnLmRpcmVjdGlvbkxpbmtzXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBhZ2UocGFnZUluZGV4ICsgMSlcIlxuICAgICAgPlxuICAgICAgICA8YSBjbGFzcz1cInRoeS1wYWdlLWxpbmsgdGh5LXBhZ2UtbGluay1uZXh0XCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcubmV4dFRleHRcIj57eyBjb25maWcubmV4dFRleHQgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLm5leHRJY29uXCI+XG4gICAgICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cImNvbmZpZy5uZXh0SWNvblwiPjwvdGh5LWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJ0aHktcGFnZS1pdGVtXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IHBhZ2VJbmRleCA9PT0gcGFnZUNvdW50XCJcbiAgICAgICAgKm5nSWY9XCJjb25maWcuYm91bmRhcnlMaW5rc1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RQYWdlKHBhZ2VDb3VudClcIlxuICAgICAgPlxuICAgICAgICA8YSBjbGFzcz1cInRoeS1wYWdlLWxpbmsgdGh5LXBhZ2UtbGluay1sYXN0XCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcubGFzdFRleHRcIj57eyBjb25maWcubGFzdFRleHQgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmxhc3RJY29uXCI+XG4gICAgICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cImNvbmZpZy5sYXN0SWNvblwiPjwvdGh5LWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnNob3dUb3RhbFBhZ2VDb3VudCAmJiBjb25maWcudG90YWxQYWdlc0Zvcm1hdFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLWNvdW50XCIgW2lubmVySFRNTF09XCJwYWdlQ291bnQgfCBwYWdpbmF0aW9uVG90YWxQYWdlc0Zvcm1hdDogY29uZmlnLnRvdGFsUGFnZXNGb3JtYXRcIj48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnNob3dRdWlja0p1bXBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLWp1bXBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGh5LXBhZ2luYXRpb24tanVtcGVyLWlucHV0XCI+XG4gICAgICAgICAg6Lez6IezXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgI2p1bXBlcklucHV0ICh0aHlFbnRlcik9XCJqdW1wUGFnZShqdW1wZXJJbnB1dClcIiAoYmx1cik9XCJqdW1wUGFnZShqdW1wZXJJbnB1dClcIiAvPlxuICAgICAgICAgIOmhtVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
402
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsdUJBQXVCLEVBQ3ZCLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsUUFBUSxFQUNSLE1BQU0sRUFFVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQXVCLE1BQU0scUJBQXFCLENBQUM7QUFDL0gsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFNUQ7Ozs7R0FJRztBQWtCSCxNQUFNLE9BQU8sc0JBQXNCO0lBSS9COzs7T0FHRztJQUNILElB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QUFDLG9CQUFvQjtnQkFZdkIsa0JBQWtCO3NCQUZyQixLQUFLO3VCQUFDLHVCQUF1QjtnQkFZMUIsSUFBSTtzQkFEUCxLQUFLO3VCQUFDLFNBQVM7Z0JBWVosUUFBUTtzQkFGWCxLQUFLO3VCQUFDLGFBQWE7Z0JBVXNCLGFBQWE7c0JBQXRELEtBQUs7dUJBQUMsa0JBQWtCO2dCQVFyQixhQUFhO3NCQUZoQixLQUFLO2dCQWFGLGVBQWU7c0JBRmxCLEtBQUs7dUJBQUMsb0JBQW9CO2dCQVV2QixlQUFlO3NCQURsQixLQUFLO3VCQUFDLG9CQUFvQjtnQkFTbUIsZ0JBQWdCO3NCQUE3RCxLQUFLO3VCQUFDLHFCQUFxQjtnQkFLRSxlQUFlO3NCQUE1QyxNQUFNO3VCQUFDLG9CQUFvQjtnQkFLRixXQUFXO3NCQUFwQyxNQUFNO3VCQUFDLGdCQUFnQjtnQkFFTSxlQUFlO3NCQUE1QyxNQUFNO3VCQUFDLG9CQUFvQjtnQkE0QlMsaUJBQWlCO3NCQUFyRCxXQUFXO3VCQUFDLHNCQUFzQjtnQkFRbkMsU0FBUztzQkFGUixXQUFXO3VCQUFDLGdDQUFnQzs7c0JBQzVDLEtBQUs7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIE9wdGlvbmFsLFxuICAgIEluamVjdCxcbiAgICBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBhZ2luYXRpb25Db25maWdNb2RlbCB9IGZyb20gJy4vcGFnaW5hdGlvbi5jbGFzcyc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uRGVmYXVsdENvbmZpZywgREVGQVVMVF9SQU5HRV9DT1VOVCwgVEhZX1BBR0lOQVRJT05fQ09ORklHLCBUaHlQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSAnLi9wYWdpbmF0aW9uLmNvbmZpZyc7XG5pbXBvcnQgeyB1c2VIb3N0UmVuZGVyZXIgfSBmcm9tICdAdGV0aHlzL2Nkay9kb20nO1xuaW1wb3J0IHsgaXNUZW1wbGF0ZVJlZiB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uVG90YWxDb3VudEZvcm1hdCB9IGZyb20gJy4vcGFnaW5hdGlvbi5waXBlJztcbmltcG9ydCB7IFRoeUljb25Db21wb25lbnQgfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5T3B0aW9uQ29tcG9uZW50LCBUaHlFbnRlckRpcmVjdGl2ZSB9IGZyb20gJ25neC10ZXRoeXMvc2hhcmVkJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGh5U2VsZWN0Q3VzdG9tQ29tcG9uZW50IH0gZnJvbSAnbmd4LXRldGh5cy9zZWxlY3QnO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCwgTmdGb3IgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5cbi8qKlxuICog5YiG6aG157uE5Lu277yM5b2T5pWw5o2u6YeP6L+H5aSa5pe277yM5L2/55So5YiG6aG15YiG6Kej5pWw5o2u44CCXG4gKiBAbmFtZSB0aHktcGFnaW5hdGlvblxuICogQG9yZGVyIDEwXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LXBhZ2luYXRpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgVGh5U2VsZWN0Q3VzdG9tQ29tcG9uZW50LFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIFRoeU9wdGlvbkNvbXBvbmVudCxcbiAgICAgICAgVGh5SWNvbkNvbXBvbmVudCxcbiAgICAgICAgVGh5RW50ZXJEaXJlY3RpdmUsXG4gICAgICAgIFBhZ2luYXRpb25Ub3RhbENvdW50Rm9ybWF0XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlQYWdpbmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBpc1RlbXBsYXRlUmVmID0gaXNUZW1wbGF0ZVJlZjtcbiAgICBwdWJsaWMgY29uZmlnOiBUaHlQYWdpbmF0aW9uQ29uZmlnTW9kZWwgPSBPYmplY3QuYXNzaWduKHt9LCBQYWdpbmF0aW9uRGVmYXVsdENvbmZpZywgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLm1haW4pO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u5b2T5YmN6aG177yM5pSv5oyB5Y+M5ZCR57uR5a6aXG4gICAgICogQGRlZmF1bHQgMVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQElucHV0TnVtYmVyKClcbiAgICBzZXQgdGh5UGFnZUluZGV4KHBhZ2VJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucGFnZUluZGV4ID0gcGFnZUluZGV4O1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5zZXRQYWdlSW5kZXgocGFnZUluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOavj+mhteadoeebruaVsOmHj1xuICAgICAqIEBkZWZhdWx0IDIwXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASW5wdXROdW1iZXIoKVxuICAgIHNldCB0aHlQYWdlU2l6ZShwYWdlU2l6ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RQYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlQ291bnQoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2VzKHRoaXMucGFnZUluZGV4LCB0aGlzLnBhZ2VDb3VudCk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaAu+mhteaVsCDkuI4gdG90YWxQYWdlcyDkuozpgInkuIDkvKDlhaVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dE51bWJlcigpXG4gICAgc2V0IHRoeVRvdGFsKHRvdGFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy50b3RhbCA9IHRvdGFsO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlQ291bnQoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0UGFnZUluZGV4KHRoaXMucGFnZUluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6Ieq5a6a5LmJ5YiG6aG16aG156CB77yM6K6+572u6Ieq5a6a5LmJ5YiG6aG16aG156CB5ZCO5bCG5LiN5qC55o2uIFRvdGFsIOWSjCBQYWdlU2l6ZSDmnaXoh6rliqjorqHnrpfpobXnoIHvvIzlrozlhajku6XkvKDlhaXnmoTpobXnoIHkuLrlh4ZcbiAgICAgKiBAdHlwZSBudW1iZXJbXVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUN1c3RvbVBhZ2VzKHBhZ2VzOiBudW1iZXJbXSkge1xuICAgICAgICB0aGlzLmN1c3RvbVBhZ2VzID0gcGFnZXM7XG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dUb3RhbFBhZ2VDb3VudCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlQ291bnQoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2VzKHRoaXMucGFnZUluZGV4LCB0aGlzLnBhZ2VDb3VudCk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuemgeeUqFxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5RGlzYWJsZWQnKSBASW5wdXRCb29sZWFuKCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYvuekuuW/q+mAn+i3s+i9rFxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KCd0aHlTaG93UXVpY2tKdW1wZXInKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIHNldCBzaG93UXVpY2tKdW1wZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd1F1aWNrSnVtcGVyID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5piv5ZCm5pi+56S65oC76aG15pWw5L+h5oGvXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5U2hvd1RvdGFsUGFnZUNvdW50JylcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICBzZXQgc2hvd1RvdGFsUGFnZUNvdW50KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dUb3RhbFBhZ2VDb3VudCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruWIhumhtee7hOS7tueahOWkp+Wwj1xuICAgICAqIEB0eXBlIHNtIHwgbWQgfCBsZ1xuICAgICAqIEBkZWZhdWx0IG1kXG4gICAgICovXG4gICAgQElucHV0KCd0aHlTaXplJylcbiAgICBzZXQgc2l6ZShzaXplOiAnc20nIHwgJ21kJyB8ICdsZycpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RTaXplID0gc2l6ZTtcbiAgICAgICAgdGhpcy5ob3N0UmVuZGVyZXIuYWRkQ2xhc3MoYHRoeS1wYWdpbmF0aW9uLSR7c2l6ZX1gKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mnIDlpKfmmL7npLrmlbDph4/vvIzotoXlh7rmnIDlpKfmmL7npLrmlbDlkI7kvJroh6rliqjov5vooYzliIblibLmmL7npLpcbiAgICAgKiBAZGVmYXVsdCA5XG4gICAgICovXG4gICAgQElucHV0KCd0aHlNYXhDb3VudCcpXG4gICAgQElucHV0TnVtYmVyKClcbiAgICBzZXQgbWF4Q291bnQodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLmNvbmZpZy5tYXhDb3VudCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9rui+uee8mOaYvuekuuaVsOmHj1xuICAgICAqIEBkZWZhdWx0IDJcbiAgICAgKi9cbiAgICBASW5wdXQoJ3RoeU1hcmdpbmFsQ291bnQnKSBASW5wdXROdW1iZXIoKSBtYXJnaW5hbENvdW50OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7kuK3pl7TljLrln5/mmL7npLrmlbDph49cbiAgICAgKiBAZGVmYXVsdCA3XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASW5wdXROdW1iZXIoKVxuICAgIHNldCB0aHlSYW5nZUNvdW50KHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5yYW5nZUNvdW50ID0gdmFsdWU7XG4gICAgICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0TWFyZ2luYWxDb3VudCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoJ3RoeVNob3dTaXplQ2hhbmdlcicpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgc2V0IHNob3dTaXplQ2hhbmdlcih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmNvbmZpZy5zaG93U2l6ZUNoYW5nZXIgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSBudW1iZXJbXVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5UGFnZVNpemVPcHRpb25zJylcbiAgICBzZXQgcGFnZVNpemVPcHRpb25zKHZhbHVlOiBudW1iZXJbXSkge1xuICAgICAgICB0aGlzLmNvbmZpZy5wYWdlU2l6ZU9wdGlvbnMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlj6rmnInkuIDpobXml7bmmK/lkKbpmpDol4/liIbpobXlmahcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5SGlkZU9uU2luZ2xlUGFnZScpIEBJbnB1dEJvb2xlYW4oKSBoaWRlT25TaW5nbGVQYWdlOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog6aG156CB5pS55Y+Y55qE5Zue6LCDXG4gICAgICovXG4gICAgQE91dHB1dCgndGh5UGFnZUluZGV4Q2hhbmdlJykgcGFnZUluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiDkuI5Cb290c3RyYXAgcGFnaW5hdGlvbiDlhbzlrrnvvIzlkI7nu63niYjmnKzkvJrov5vooYzliKDpmaTvvIzlj4LmlbDkv53mjIHkuI4gYm9vdHN0cmFwIOS4gOiHtFxuICAgICAqL1xuICAgIEBPdXRwdXQoJ3RoeVBhZ2VDaGFuZ2VkJykgcGFnZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcGFnZTogbnVtYmVyIH0+KCk7XG5cbiAgICBAT3V0cHV0KCd0aHlQYWdlU2l6ZUNoYW5nZWQnKSBwYWdlU2l6ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIHB1YmxpYyBwYWdlczogeyBpbmRleD86IG51bWJlcjsgdGV4dD86IHN0cmluZzsgYWN0aXZlPzogYm9vbGVhbiB9W10gPSBbXTtcblxuICAgIHB1YmxpYyBwYWdlSW5kZXggPSAxO1xuXG4gICAgcHVibGljIHBhZ2VTaXplOiBudW1iZXI7XG5cbiAgICBwdWJsaWMgcGFnZUNvdW50OiBudW1iZXI7XG5cbiAgICBwdWJsaWMgY3VzdG9tUGFnZXM6IG51bWJlcltdO1xuXG4gICAgcHVibGljIHRvdGFsOiBudW1iZXI7XG5cbiAgICBwdWJsaWMgcmFuZ2UgPSB7IGZyb206IDAsIHRvOiAwIH07XG5cbiAgICBwdWJsaWMgZmlyc3RJbmRleCA9IDE7XG5cbiAgICBwdWJsaWMgaXNIaWRlT25TaW5nbGVQYWdlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGhvc3RSZW5kZXJlciA9IHVzZUhvc3RSZW5kZXJlcigpO1xuXG4gICAgcHVibGljIHNlbGVjdFNpemUgPSAnbWQnO1xuXG4gICAgcHVibGljIHNlbGVjdFBhZ2VTaXplOiBOdW1iZXIgPSAyMDtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LXBhZ2luYXRpb24nKSBpc1BhZ2luYXRpb25DbGFzcyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmmL7npLrojIPlm7Tlkox0b3RhbFxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktcGFnaW5hdGlvbi1oYXMtdG90YWwnKVxuICAgIEBJbnB1dCgndGh5U2hvd1RvdGFsJylcbiAgICBzaG93VG90YWw6IGJvb2xlYW4gfCBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogbnVtYmVyOyByYW5nZTogeyBmcm9tOiBudW1iZXI7IHRvOiBudW1iZXIgfSB9PiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoVEhZX1BBR0lOQVRJT05fQ09ORklHKVxuICAgICAgICBwcml2YXRlIHBhZ2luYXRpb25Db25maWc6IFRoeVBhZ2luYXRpb25Db25maWcsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNldE1hcmdpbmFsQ291bnQodGhpcy5jb25maWcucmFuZ2VDb3VudCk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlUGFnZUNvdW50KCk7XG4gICAgICAgIHRoaXMuc2V0UGFnZUluZGV4KHRoaXMucGFnZUluZGV4KTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRNYXJnaW5hbENvdW50KHJhbmdlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLm1hcmdpbmFsQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMubWFyZ2luYWxDb3VudCA9IHJhbmdlIDw9IERFRkFVTFRfUkFOR0VfQ09VTlQgPyAxIDogMjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UGFnZUluZGV4KHBhZ2VJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucGFnZUluZGV4ID0gcGFnZUluZGV4ID4gdGhpcy5wYWdlQ291bnQgPyB0aGlzLnBhZ2VDb3VudCA6IHBhZ2VJbmRleCB8fCAxO1xuICAgICAgICBjb25zdCB0b1BhZ2VTaXplID0gdGhpcy5wYWdlSW5kZXggKiB0aGlzLnBhZ2VTaXplO1xuICAgICAgICB0aGlzLnJhbmdlID0ge1xuICAgICAgICAgICAgZnJvbTogKHRoaXMucGFnZUluZGV4IC0gMSkgKiB0aGlzLnBhZ2VTaXplICsgMSxcbiAgICAgICAgICAgIHRvOiB0b1BhZ2VTaXplID4gdGhpcy50b3RhbCA/IHRoaXMudG90YWwgOiB0b1BhZ2VTaXplXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2VzKHRoaXMucGFnZUluZGV4LCB0aGlzLnBhZ2VDb3VudCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlUGFnZUNvdW50KCkge1xuICAgICAgICBsZXQgcGFnZUNvdW50ID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tUGFnZXMgJiYgdGhpcy5jdXN0b21QYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBwYWdlQ291bnQgPSB0aGlzLmN1c3RvbVBhZ2VzW3RoaXMuY3VzdG9tUGFnZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYWdlQ291bnQgPSB0aGlzLnBhZ2VTaXplIDwgMSA/IDEgOiBNYXRoLmNlaWwodGhpcy50b3RhbCAvIHRoaXMucGFnZVNpemUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFnZUNvdW50ID0gTWF0aC5tYXgocGFnZUNvdW50IHx8IDAsIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFrZVBhZ2UoaW5kZXg6IG51bWJlciwgdGV4dDogc3RyaW5nLCBhY3RpdmU6IGJvb2xlYW4pOiB7IGluZGV4OiBudW1iZXI7IHRleHQ6IHN0cmluZzsgYWN0aXZlOiBib29sZWFuIH0ge1xuICAgICAgICByZXR1cm4geyBpbmRleCwgdGV4dCwgYWN0aXZlIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplUGFnZXMocGFnZUluZGV4OiBudW1iZXIsIHBhZ2VDb3VudDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVBhZ2VzICYmIHRoaXMuY3VzdG9tUGFnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5wYWdlcyA9IHRoaXMuY3VzdG9tUGFnZXMubWFwKHBhZ2UgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBwYWdlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBwYWdlLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogcGFnZSA9PT0gK3BhZ2VJbmRleFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYWdlcyA9IFtdO1xuICAgICAgICBjb25zdCBtYXJnaW5hbENvdW50ID0gdGhpcy5tYXJnaW5hbENvdW50O1xuICAgICAgICBjb25zdCByYW5nZUNvdW50ID0gdGhpcy5jb25maWcucmFuZ2VDb3VudDtcbiAgICAgICAgY29uc3QgbWF4Q291bnQgPSB0aGlzLmNvbmZpZy5tYXhDb3VudDtcbiAgICAgICAgY29uc3QgaXNNYXhTaXplZCA9IHBhZ2VDb3VudCA+IG1heENvdW50O1xuICAgICAgICBpZiAoaXNNYXhTaXplZCkge1xuICAgICAgICAgICAgY29uc3QgYmVmb3JlUGFnZXMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGFmdGVyUGFnZXMgPSBbXTtcblxuICAgICAgICAgICAgLy8gYmVmb3JlUGFnZXNcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IG1hcmdpbmFsQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGJlZm9yZVBhZ2VzLnB1c2godGhpcy5tYWtlUGFnZShpLCBpLnRvU3RyaW5nKCksIGkgPT09IHBhZ2VJbmRleCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhZ2VJbmRleCAtIE1hdGguY2VpbChyYW5nZUNvdW50IC8gMikgPiB0aGlzLmZpcnN0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICBiZWZvcmVQYWdlcy5wdXNoKHRoaXMubWFrZVBhZ2UocGFnZUluZGV4IC0gcmFuZ2VDb3VudCwgJ8K3wrfCtycsIG51bGwpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYWZ0ZXJQYWdlc1xuICAgICAgICAgICAgaWYgKHBhZ2VJbmRleCArIE1hdGguY2VpbChyYW5nZUNvdW50IC8gMikgPCBwYWdlQ291bnQpIHtcbiAgICAgICAgICAgICAgICBhZnRlclBhZ2VzLnB1c2godGhpcy5tYWtlUGFnZShwYWdlSW5kZXggKyByYW5nZUNvdW50LCAnwrfCt8K3JywgbnVsbCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHBhZ2VDb3VudCAtIG1hcmdpbmFsQ291bnQgKyAxOyBpIDw9IHBhZ2VDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYWZ0ZXJQYWdlcy5wdXNoKHRoaXMubWFrZVBhZ2UoaSwgaS50b1N0cmluZygpLCBpID09PSBwYWdlSW5kZXgpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gbWFpblBhZ2VzXG4gICAgICAgICAgICBsZXQgc3RhcnQgPSBNYXRoLm1heChtYXJnaW5hbENvdW50ICsgMSwgcGFnZUluZGV4IC0gKHJhbmdlQ291bnQgLSAxKSAvIDIpO1xuICAgICAgICAgICAgbGV0IGVuZCA9IE1hdGgubWluKHBhZ2VJbmRleCArIChyYW5nZUNvdW50IC0gMSkgLyAyLCBwYWdlQ291bnQgLSBtYXJnaW5hbENvdW50KTtcbiAgICAgICAgICAgIGlmIChwYWdlSW5kZXggLSAxIDw9IG1hcmdpbmFsQ291bnQpIHtcbiAgICAgICAgICAgICAgICBlbmQgPSByYW5nZUNvdW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhZ2VDb3VudCAtIHBhZ2VJbmRleCA8PSBtYXJnaW5hbENvdW50KSB7XG4gICAgICAgICAgICAgICAgc3RhcnQgPSBwYWdlQ291bnQgLSByYW5nZUNvdW50ICsgMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcGFnZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogaSA9PT0gK3BhZ2VJbmRleFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFnZXMgPSBbLi4uYmVmb3JlUGFnZXMsIC4uLnBhZ2VzLCAuLi5hZnRlclBhZ2VzXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHBhZ2VDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcGFnZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogaSA9PT0gK3BhZ2VJbmRleFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFnZXMgPSBwYWdlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhZ2VDaGFuZ2UocGFnZUluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5wYWdlSW5kZXhDaGFuZ2UuZW1pdChwYWdlSW5kZXgpO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQoeyBwYWdlOiBwYWdlSW5kZXggfSk7XG4gICAgfVxuXG4gICAgc2VsZWN0UGFnZShwYWdlSW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCBwYWdlSW5kZXggPT09IHRoaXMuZmlyc3RJbmRleCAtIDEgfHwgcGFnZUluZGV4ID09PSB0aGlzLnBhZ2VDb3VudCArIDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFBhZ2VJbmRleChwYWdlSW5kZXgpO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UodGhpcy5wYWdlSW5kZXgpO1xuICAgIH1cblxuICAgIGp1bXBQYWdlKGlucHV0OiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHBhZ2VJbmRleCA9ICtpbnB1dC52YWx1ZTtcbiAgICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIocGFnZUluZGV4KSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RQYWdlKHBhZ2VJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBvblBhZ2VTaXplQ2hhbmdlKGV2ZW50OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50O1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZVBhZ2VDb3VudCgpO1xuICAgICAgICB0aGlzLnNldFBhZ2VJbmRleCh0aGlzLnBhZ2VJbmRleCk7XG4gICAgICAgIHRoaXMucGFnZVNpemVDaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIoaGlkZU9uU2luZ2xlUGFnZSAmJiB0b3RhbCA+IHBhZ2VTaXplKSB8fCAhaGlkZU9uU2luZ2xlUGFnZVwiPlxuICA8ZGl2IGNsYXNzPVwidGh5LXBhZ2luYXRpb24tdG90YWxcIiAqbmdJZj1cInNob3dUb3RhbFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZVJlZihzaG93VG90YWwpOyBlbHNlIHRvdGFsVGVtcGxhdGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b3RhbCA+IDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yLTNcIj5cbiAgICAgICAgICDnrKw8c3BhbiBjbGFzcz1cIm51bWJlclwiPiB7eyByYW5nZS5mcm9tIH19LXt7IHJhbmdlLnRvIH19IDwvc3Bhbj7mnaFcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAg5YWxPHNwYW4gY2xhc3M9XCJudW1iZXJcIj4ge3sgdG90YWwgfX0gPC9zcGFuPuadoVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjdG90YWxUZW1wbGF0ZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzaG93VG90YWxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHRvdGFsLCByYW5nZTogcmFuZ2UgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0aHktcGFnaW5hdGlvbi1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLXNpemVcIiAqbmdJZj1cImNvbmZpZy5zaG93U2l6ZUNoYW5nZXJcIj5cbiAgICAgIDx0aHktY3VzdG9tLXNlbGVjdFxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdFBhZ2VTaXplXCJcbiAgICAgICAgW3RoeVNpemVdPVwic2VsZWN0U2l6ZVwiXG4gICAgICAgIFt0aHlEaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDx0aHktb3B0aW9uXG4gICAgICAgICAgY2xhc3M9XCJwYWdlLXNpemUtb3B0aW9uXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGNvbmZpZy5wYWdlU2l6ZU9wdGlvbnNcIlxuICAgICAgICAgIFt0aHlWYWx1ZV09XCJvcHRpb25cIlxuICAgICAgICAgIFt0aHlMYWJlbFRleHRdPVwib3B0aW9uICsgJyDmnaEv6aG1J1wiXG4gICAgICAgID48L3RoeS1vcHRpb24+XG4gICAgICA8L3RoeS1jdXN0b20tc2VsZWN0PlxuICAgIDwvZGl2PlxuICAgIDx1bCBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLXBhZ2VzXCI+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJ0aHktcGFnZS1pdGVtXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IHBhZ2VJbmRleCA9PT0gZmlyc3RJbmRleFwiXG4gICAgICAgICpuZ0lmPVwiY29uZmlnLmJvdW5kYXJ5TGlua3NcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGFnZShmaXJzdEluZGV4KVwiXG4gICAgICA+XG4gICAgICAgIDxhIGNsYXNzPVwidGh5LXBhZ2UtbGluayB0aHktcGFnZS1saW5rLWZpcnN0XCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcuZmlyc3RUZXh0XCI+e3sgY29uZmlnLmZpcnN0VGV4dCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcuZmlyc3RJY29uXCI+XG4gICAgICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cImNvbmZpZy5maXJzdEljb25cIj48L3RoeS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwidGh5LXBhZ2UtaXRlbVwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwYWdlSW5kZXggPT09IGZpcnN0SW5kZXhcIlxuICAgICAgICAqbmdJZj1cImNvbmZpZy5kaXJlY3Rpb25MaW5rc1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RQYWdlKHBhZ2VJbmRleCAtIDEpXCJcbiAgICAgID5cbiAgICAgICAgPGEgY2xhc3M9XCJ0aHktcGFnZS1saW5rICBwYWdlLWxpbmstcHJlXCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcucHJldmlvdXNUZXh0XCI+e3sgY29uZmlnLnByZXZpb3VzVGV4dCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcucHJldmlvdXNJY29uXCI+XG4gICAgICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cImNvbmZpZy5wcmV2aW91c0ljb25cIj48L3RoeS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwidGh5LXBhZ2UtaXRlbSB0aHktcGFnZS1udW1iZXJcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInBhZ2UuYWN0aXZlXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBhZ2UocGFnZS5pbmRleClcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgcGFnZSBvZiBwYWdlc1wiXG4gICAgICA+XG4gICAgICAgIDxhIGNsYXNzPVwidGh5LXBhZ2UtbGlua1wiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIj57eyBwYWdlLnRleHQgfX08L2E+XG4gICAgICA8L2xpPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwidGh5LXBhZ2UtaXRlbSBwYWdlLWl0ZW0tbmV4dFwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwYWdlSW5kZXggPT09IHBhZ2VDb3VudFwiXG4gICAgICAgICpuZ0lmPVwiY29uZmlnLmRpcmVjdGlvbkxpbmtzXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBhZ2UocGFnZUluZGV4ICsgMSlcIlxuICAgICAgPlxuICAgICAgICA8YSBjbGFzcz1cInRoeS1wYWdlLWxpbmsgdGh5LXBhZ2UtbGluay1uZXh0XCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcubmV4dFRleHRcIj57eyBjb25maWcubmV4dFRleHQgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLm5leHRJY29uXCI+XG4gICAgICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cImNvbmZpZy5uZXh0SWNvblwiPjwvdGh5LWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJ0aHktcGFnZS1pdGVtXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IHBhZ2VJbmRleCA9PT0gcGFnZUNvdW50XCJcbiAgICAgICAgKm5nSWY9XCJjb25maWcuYm91bmRhcnlMaW5rc1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RQYWdlKHBhZ2VDb3VudClcIlxuICAgICAgPlxuICAgICAgICA8YSBjbGFzcz1cInRoeS1wYWdlLWxpbmsgdGh5LXBhZ2UtbGluay1sYXN0XCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcubGFzdFRleHRcIj57eyBjb25maWcubGFzdFRleHQgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmxhc3RJY29uXCI+XG4gICAgICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cImNvbmZpZy5sYXN0SWNvblwiPjwvdGh5LWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnNob3dUb3RhbFBhZ2VDb3VudCAmJiBjb25maWcudG90YWxQYWdlc0Zvcm1hdFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLWNvdW50XCIgW2lubmVySFRNTF09XCJwYWdlQ291bnQgfCBwYWdpbmF0aW9uVG90YWxQYWdlc0Zvcm1hdDogY29uZmlnLnRvdGFsUGFnZXNGb3JtYXRcIj48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnNob3dRdWlja0p1bXBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLWp1bXBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGh5LXBhZ2luYXRpb24tanVtcGVyLWlucHV0XCI+XG4gICAgICAgICAg6Lez6IezXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgI2p1bXBlcklucHV0ICh0aHlFbnRlcik9XCJqdW1wUGFnZShqdW1wZXJJbnB1dClcIiAoYmx1cik9XCJqdW1wUGFnZShqdW1wZXJJbnB1dClcIiAvPlxuICAgICAgICAgIOmhtVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|