ngx-tethys 14.1.3 → 14.1.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 +27 -0
- package/comment/styles/comment.scss +1 -0
- package/esm2020/input-number/input-number.component.mjs +10 -8
- package/esm2020/layout/sidebar.component.mjs +4 -4
- package/esm2020/nav/nav.component.mjs +7 -4
- package/esm2020/resizable/resizable.directive.mjs +49 -2
- package/esm2020/resizable/resizable.service.mjs +4 -1
- package/esm2020/resizable/resize-handle.component.mjs +28 -4
- package/esm2020/resizable/resize-handles.component.mjs +24 -5
- package/esm2020/result/result.component.mjs +11 -7
- package/esm2020/shared/directives/string-or-template-outlet.directive.mjs +28 -16
- package/esm2020/version.mjs +2 -2
- package/fesm2015/ngx-tethys-input-number.mjs +9 -7
- package/fesm2015/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2015/ngx-tethys-layout.mjs +3 -3
- package/fesm2015/ngx-tethys-layout.mjs.map +1 -1
- package/fesm2015/ngx-tethys-nav.mjs +6 -3
- package/fesm2015/ngx-tethys-nav.mjs.map +1 -1
- package/fesm2015/ngx-tethys-resizable.mjs +97 -8
- package/fesm2015/ngx-tethys-resizable.mjs.map +1 -1
- package/fesm2015/ngx-tethys-result.mjs +10 -6
- package/fesm2015/ngx-tethys-result.mjs.map +1 -1
- package/fesm2015/ngx-tethys-shared.mjs +26 -14
- package/fesm2015/ngx-tethys-shared.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 +9 -7
- package/fesm2020/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2020/ngx-tethys-layout.mjs +3 -3
- package/fesm2020/ngx-tethys-layout.mjs.map +1 -1
- package/fesm2020/ngx-tethys-nav.mjs +6 -3
- package/fesm2020/ngx-tethys-nav.mjs.map +1 -1
- package/fesm2020/ngx-tethys-resizable.mjs +97 -8
- package/fesm2020/ngx-tethys-resizable.mjs.map +1 -1
- package/fesm2020/ngx-tethys-result.mjs +10 -6
- package/fesm2020/ngx-tethys-result.mjs.map +1 -1
- package/fesm2020/ngx-tethys-shared.mjs +26 -14
- package/fesm2020/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2020/ngx-tethys.mjs +1 -1
- package/fesm2020/ngx-tethys.mjs.map +1 -1
- package/form/styles/mixin.scss +1 -0
- package/layout/styles/layout.scss +5 -22
- package/nav/nav.component.d.ts +1 -1
- package/package.json +1 -1
- package/resizable/examples/line/line.component.scss +12 -0
- package/resizable/resizable.directive.d.ts +51 -0
- package/resizable/resizable.service.d.ts +3 -0
- package/resizable/resize-handle.component.d.ts +15 -1
- package/resizable/resize-handles.component.d.ts +12 -1
- package/resizable/styles/resizable.scss +25 -0
- package/result/result.component.d.ts +39 -3
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/shared/directives/string-or-template-outlet.directive.d.ts +7 -4
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,33 @@
|
|
|
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
|
+
## [14.1.5](https://github.com/atinc/ngx-tethys/compare/14.1.4...14.1.5) (2022-10-27)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **comment:** fixed the actions is displayed incorrectly in firefox #INFR-5042 ([387eb42](https://github.com/atinc/ngx-tethys/commit/387eb428cf3343908e5365d70183181c11fb31a3)), closes [#INFR-5042](https://github.com/atinc/ngx-tethys/issues/INFR-5042)
|
|
11
|
+
* **comment:** test case name optimization #INFR-4936 ([245ba34](https://github.com/atinc/ngx-tethys/commit/245ba34ca4e06d6717a4ec5e2aca86379a5afed2)), closes [#INFR-4936](https://github.com/atinc/ngx-tethys/issues/INFR-4936)
|
|
12
|
+
* **input-number:** trigger ngModel change on init only validated value is not equal ngModel and add error style #INFR-5065 ([f831bcb](https://github.com/atinc/ngx-tethys/commit/f831bcbed4ef8dffaf97a629a4c55b79ebb1d504)), closes [#INFR-5065](https://github.com/atinc/ngx-tethys/issues/INFR-5065)
|
|
13
|
+
* **resizable:** reset resizing in ngZone and update api docs to comment #INFR-4680 ([#2286](https://github.com/atinc/ngx-tethys/issues/2286)) ([7e96659](https://github.com/atinc/ngx-tethys/commit/7e96659ebcef1e60ed7f74d53208735658e2b3d4)), closes [#INFR-4680](https://github.com/atinc/ngx-tethys/issues/INFR-4680)
|
|
14
|
+
* **shared:** simplify use of thyStringOrTemplateOutlet directive when template is string #INFR-5049 ([923570a](https://github.com/atinc/ngx-tethys/commit/923570ada3f80a6db49b89f2f26a8379fdcba62a)), closes [#INFR-5049](https://github.com/atinc/ngx-tethys/issues/INFR-5049)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* **resizable:** support thyLine for thy-resize-handles and thy-resize-handle #INFR-5054 ([#2287](https://github.com/atinc/ngx-tethys/issues/2287)) ([3516fdd](https://github.com/atinc/ngx-tethys/commit/3516fdd53abe30fb690696d00d77a843ca0f7922)), closes [#INFR-5054](https://github.com/atinc/ngx-tethys/issues/INFR-5054)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## [14.1.4](https://github.com/atinc/ngx-tethys/compare/14.1.3...14.1.4) (2022-10-24)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Bug Fixes
|
|
27
|
+
|
|
28
|
+
* **nav:** fix more-operation flashes when initialized #INFR-4986 ([#2280](https://github.com/atinc/ngx-tethys/issues/2280)) ([de5fdf2](https://github.com/atinc/ngx-tethys/commit/de5fdf2db68d691c459419eab40b4c0a7112fb50)), closes [#INFR-4986](https://github.com/atinc/ngx-tethys/issues/INFR-4986)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
5
32
|
## [14.1.3](https://github.com/atinc/ngx-tethys/compare/14.1.2...14.1.3) (2022-10-24)
|
|
6
33
|
|
|
7
34
|
|
|
@@ -46,11 +46,9 @@ export class ThyInputNumberComponent {
|
|
|
46
46
|
updateValidValue(value) {
|
|
47
47
|
if (this.isNotValid(value)) {
|
|
48
48
|
this.validValue = '';
|
|
49
|
-
this.onChangeFn(this.validValue);
|
|
50
49
|
}
|
|
51
50
|
else if (this.validValue !== value) {
|
|
52
51
|
this.validValue = value;
|
|
53
|
-
this.onChangeFn(this.validValue);
|
|
54
52
|
}
|
|
55
53
|
this.disabledUp = this.disabledDown = false;
|
|
56
54
|
if (value || value === 0) {
|
|
@@ -66,7 +64,10 @@ export class ThyInputNumberComponent {
|
|
|
66
64
|
onModelChange(value) {
|
|
67
65
|
const parseValue = this.parser(value);
|
|
68
66
|
const validValue = this.getCurrentValidValue(parseValue);
|
|
69
|
-
this.
|
|
67
|
+
if (this.validValue !== validValue) {
|
|
68
|
+
this.updateValidValue(validValue);
|
|
69
|
+
this.onChangeFn(this.validValue);
|
|
70
|
+
}
|
|
70
71
|
}
|
|
71
72
|
onBlur(event) {
|
|
72
73
|
this.displayValue = this.formatterValue(this.validValue);
|
|
@@ -110,6 +111,7 @@ export class ThyInputNumberComponent {
|
|
|
110
111
|
const outOfRange = val > this.thyMax || val < this.thyMin;
|
|
111
112
|
val = this.getCurrentValidValue(val);
|
|
112
113
|
this.updateValidValue(val);
|
|
114
|
+
this.onChangeFn(this.validValue);
|
|
113
115
|
this.displayValue = this.formatterValue(val);
|
|
114
116
|
if (outOfRange) {
|
|
115
117
|
return;
|
|
@@ -184,8 +186,8 @@ export class ThyInputNumberComponent {
|
|
|
184
186
|
}
|
|
185
187
|
getCurrentValidValue(value) {
|
|
186
188
|
let val = value;
|
|
187
|
-
if (value === '') {
|
|
188
|
-
return
|
|
189
|
+
if (value === '' || value === undefined) {
|
|
190
|
+
return '';
|
|
189
191
|
}
|
|
190
192
|
val = parseFloat(value);
|
|
191
193
|
if (this.isNotValid(val)) {
|
|
@@ -227,7 +229,7 @@ ThyInputNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
|
227
229
|
useExisting: forwardRef(() => ThyInputNumberComponent),
|
|
228
230
|
multi: true
|
|
229
231
|
}
|
|
230
|
-
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"input-number-handler-wrap\" [class.input-number-disabled]=\"thyDisabled\">\n <span\n unselectable=\"unselectable\"\n class=\"input-number-handler input-number-handler-up\"\n (mousedown)=\"up($event)\"\n (mouseup)=\"stop()\"\n (mouseleave)=\"stop()\"\n [class.disabled]=\"disabledUp\"\n >\n <thy-icon thyIconName=\"angle-up\"></thy-icon>\n </span>\n <span\n unselectable=\"unselectable\"\n class=\"input-number-handler input-number-handler-down\"\n (mousedown)=\"down($event)\"\n (mouseup)=\"stop()\"\n (mouseleave)=\"stop()\"\n [class.disabled]=\"disabledDown\"\n >\n <thy-icon thyIconName=\"angle-down\"></thy-icon>\n </span>\n</div>\n<input\n thyInput\n #input\n
|
|
232
|
+
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"input-number-handler-wrap\" [class.input-number-disabled]=\"thyDisabled\">\n <span\n unselectable=\"unselectable\"\n class=\"input-number-handler input-number-handler-up\"\n (mousedown)=\"up($event)\"\n (mouseup)=\"stop()\"\n (mouseleave)=\"stop()\"\n [class.disabled]=\"disabledUp\"\n >\n <thy-icon thyIconName=\"angle-up\"></thy-icon>\n </span>\n <span\n unselectable=\"unselectable\"\n class=\"input-number-handler input-number-handler-down\"\n (mousedown)=\"down($event)\"\n (mouseup)=\"stop()\"\n (mouseleave)=\"stop()\"\n [class.disabled]=\"disabledDown\"\n >\n <thy-icon thyIconName=\"angle-down\"></thy-icon>\n </span>\n</div>\n<input\n thyInput\n #input\n autocomplete=\"off\"\n class=\"input-number-input form-control\"\n [thySize]=\"thySize\"\n [thyAutofocus]=\"thyAutoFocus\"\n [disabled]=\"thyDisabled\"\n [attr.min]=\"thyMin\"\n [attr.max]=\"thyMax\"\n [placeholder]=\"thyPlaceholder\"\n [attr.step]=\"thyStep\"\n (keydown)=\"onKeyDown($event)\"\n (keyup)=\"stop()\"\n [(ngModel)]=\"displayValue\"\n (ngModelChange)=\"onModelChange($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n/>\n", dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { 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: i2.ThyAutofocusDirective, selector: "input[thyAutofocus],textarea[thyAutofocus]", inputs: ["thyAutoSelect", "thyAutofocus"] }, { kind: "component", type: i3.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i4.ThyInputDirective, selector: "[thyInput]", inputs: ["thySize", "thyAutocomplete"] }, { kind: "directive", type: i5.ThyMinDirective, selector: "[min][formControlName],[min][formControl],[min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i5.ThyMaxDirective, selector: "[max][formControlName],[max][formControl],[max][ngModel]", inputs: ["max"] }] });
|
|
231
233
|
__decorate([
|
|
232
234
|
InputBoolean(),
|
|
233
235
|
__metadata("design:type", Boolean)
|
|
@@ -244,7 +246,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
244
246
|
useExisting: forwardRef(() => ThyInputNumberComponent),
|
|
245
247
|
multi: true
|
|
246
248
|
}
|
|
247
|
-
], template: "<div class=\"input-number-handler-wrap\" [class.input-number-disabled]=\"thyDisabled\">\n <span\n unselectable=\"unselectable\"\n class=\"input-number-handler input-number-handler-up\"\n (mousedown)=\"up($event)\"\n (mouseup)=\"stop()\"\n (mouseleave)=\"stop()\"\n [class.disabled]=\"disabledUp\"\n >\n <thy-icon thyIconName=\"angle-up\"></thy-icon>\n </span>\n <span\n unselectable=\"unselectable\"\n class=\"input-number-handler input-number-handler-down\"\n (mousedown)=\"down($event)\"\n (mouseup)=\"stop()\"\n (mouseleave)=\"stop()\"\n [class.disabled]=\"disabledDown\"\n >\n <thy-icon thyIconName=\"angle-down\"></thy-icon>\n </span>\n</div>\n<input\n thyInput\n #input\n
|
|
249
|
+
], template: "<div class=\"input-number-handler-wrap\" [class.input-number-disabled]=\"thyDisabled\">\n <span\n unselectable=\"unselectable\"\n class=\"input-number-handler input-number-handler-up\"\n (mousedown)=\"up($event)\"\n (mouseup)=\"stop()\"\n (mouseleave)=\"stop()\"\n [class.disabled]=\"disabledUp\"\n >\n <thy-icon thyIconName=\"angle-up\"></thy-icon>\n </span>\n <span\n unselectable=\"unselectable\"\n class=\"input-number-handler input-number-handler-down\"\n (mousedown)=\"down($event)\"\n (mouseup)=\"stop()\"\n (mouseleave)=\"stop()\"\n [class.disabled]=\"disabledDown\"\n >\n <thy-icon thyIconName=\"angle-down\"></thy-icon>\n </span>\n</div>\n<input\n thyInput\n #input\n autocomplete=\"off\"\n class=\"input-number-input form-control\"\n [thySize]=\"thySize\"\n [thyAutofocus]=\"thyAutoFocus\"\n [disabled]=\"thyDisabled\"\n [attr.min]=\"thyMin\"\n [attr.max]=\"thyMax\"\n [placeholder]=\"thyPlaceholder\"\n [attr.step]=\"thyStep\"\n (keydown)=\"onKeyDown($event)\"\n (keyup)=\"stop()\"\n [(ngModel)]=\"displayValue\"\n (ngModelChange)=\"onModelChange($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n/>\n" }]
|
|
248
250
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { _isInputNumber: [{
|
|
249
251
|
type: HostBinding,
|
|
250
252
|
args: ['class.thy-input-number']
|
|
@@ -274,4 +276,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
274
276
|
}], thyFocus: [{
|
|
275
277
|
type: Output
|
|
276
278
|
}] } });
|
|
277
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbnB1dC1udW1iZXIvaW5wdXQtbnVtYmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9pbnB1dC1udW1iZXIvaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7QUFJdkUsSUFBSyxJQUdKO0FBSEQsV0FBSyxJQUFJO0lBQ0wsMkJBQUUsQ0FBQTtJQUNGLCtCQUFJLENBQUE7QUFDUixDQUFDLEVBSEksSUFBSSxLQUFKLElBQUksUUFHUjtBQWFELE1BQU0sT0FBTyx1QkFBdUI7SUF5Q2hDLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBeENILG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBSXJELGVBQVUsR0FBcUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRXhELGNBQVMsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFRekMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUlaLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBSTVCLFdBQU0sR0FBVyxRQUFRLENBQUM7UUFFMUIsV0FBTSxH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RyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU07Z0JBRUcsUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IERPV05fQVJST1csIEVOVEVSLCBoZWxwZXJzLCBVUF9BUlJPVyB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5cbnR5cGUgSW5wdXRTaXplID0gJ3hzJyB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICcnO1xuXG5lbnVtIFR5cGUge1xuICAgIHVwLFxuICAgIGRvd25cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktaW5wdXQtbnVtYmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaHlJbnB1dE51bWJlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlJbnB1dE51bWJlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1pbnB1dC1udW1iZXInKSBfaXNJbnB1dE51bWJlciA9IHRydWU7XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjxhbnk+O1xuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZUZuOiAodmFsdWU6IG51bWJlciB8IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSBvblRvdWNoRm46ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHByaXZhdGUgYXV0b1N0ZXBUaW1lcjogYW55O1xuXG4gICAgdmFsaWRWYWx1ZTogbnVtYmVyIHwgc3RyaW5nOyAvLyBudW1iZXIgb3IgJydcblxuICAgIGRpc3BsYXlWYWx1ZTogbnVtYmVyIHwgc3RyaW5nO1xuXG4gICAgZGlzYWJsZWRVcCA9IGZhbHNlO1xuXG4gICAgZGlzYWJsZWREb3duID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5QXV0b0ZvY3VzOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdGh5UGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeURpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdGh5TWF4OiBudW1iZXIgPSBJbmZpbml0eTtcblxuICAgIEBJbnB1dCgpIHRoeU1pbjogbnVtYmVyID0gLUluZmluaXR5O1xuXG4gICAgQElucHV0KCkgdGh5U3RlcCA9IDE7XG5cbiAgICBASW5wdXQoKSB0aHlTaXplOiBJbnB1dFNpemU7XG5cbiAgICBASW5wdXQoKSB0aHlQcmVjaXNpb246IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHRoeVN1ZmZpeDogc3RyaW5nO1xuXG4gICAgQE91dHB1dCgpIHRoeUJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpIHRoeUZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG5nT25Jbml0KCkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXMudGh5U3VmZml4ICYmICFjaGFuZ2VzLnRoeVN1ZmZpeC5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldEN1cnJlbnRWYWxpZFZhbHVlKHRoaXMudmFsaWRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkVmFsdWUodmFsaWRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuZm9ybWF0dGVyVmFsdWUodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgX3ZhbHVlID0gdGhpcy5nZXRDdXJyZW50VmFsaWRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsaWRWYWx1ZShfdmFsdWUpO1xuICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuZm9ybWF0dGVyVmFsdWUoX3ZhbHVlKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlVmFsaWRWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTm90VmFsaWQodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkVmFsdWUgPSAnJztcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VGbih0aGlzLnZhbGlkVmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmFsaWRWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUZuKHRoaXMudmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXNhYmxlZFVwID0gdGhpcy5kaXNhYmxlZERvd24gPSBmYWxzZTtcbiAgICAgICAgaWYgKHZhbHVlIHx8IHZhbHVlID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSBOdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgaWYgKHZhbCA+PSB0aGlzLnRoeU1heCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRVcCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodmFsIDw9IHRoaXMudGh5TWluKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZERvd24gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhcnNlVmFsdWUgPSB0aGlzLnBhcnNlcih2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldEN1cnJlbnRWYWxpZFZhbHVlKHBhcnNlVmFsdWUpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkVmFsdWUodmFsaWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgb25CbHVyKGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLmZvcm1hdHRlclZhbHVlKHRoaXMudmFsaWRWYWx1ZSk7XG4gICAgICAgIHRoaXMudGh5Qmx1ci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgdGhpcy50aHlGb2N1cy5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbktleURvd24oZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZS5rZXlDb2RlID09PSBVUF9BUlJPVykge1xuICAgICAgICAgICAgdGhpcy51cChlKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGUua2V5Q29kZSA9PT0gRE9XTl9BUlJPVykge1xuICAgICAgICAgICAgdGhpcy5kb3duKGUpO1xuICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZS5rZXlDb2RlID09PSBFTlRFUikge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLmZvcm1hdHRlclZhbHVlKHRoaXMudmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdG9wKCkge1xuICAgICAgICBpZiAodGhpcy5hdXRvU3RlcFRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5hdXRvU3RlcFRpbWVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0ZXAodHlwZTogVHlwZSwgZTogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMudGh5RGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsaWRWYWx1ZSBhcyBudW1iZXI7XG4gICAgICAgIGxldCB2YWw7XG4gICAgICAgIGlmICh0eXBlID09PSBUeXBlLnVwKSB7XG4gICAgICAgICAgICB2YWwgPSB0aGlzLnVwU3RlcCh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVHlwZS5kb3duKSB7XG4gICAgICAgICAgICB2YWwgPSB0aGlzLmRvd25TdGVwKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvdXRPZlJhbmdlID0gdmFsID4gdGhpcy50aHlNYXggfHwgdmFsIDwgdGhpcy50aHlNaW47XG4gICAgICAgIHZhbCA9IHRoaXMuZ2V0Q3VycmVudFZhbGlkVmFsdWUodmFsKTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWxpZFZhbHVlKHZhbCk7XG4gICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5mb3JtYXR0ZXJWYWx1ZSh2YWwpO1xuICAgICAgICBpZiAob3V0T2ZSYW5nZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXV0b1N0ZXBUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgKHRoaXNbVHlwZVt0eXBlXV0gYXMgKGU6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KSA9PiB2b2lkKShlKTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICB9XG5cbiAgICB1cFN0ZXAodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHByZWNpc2lvbkZhY3RvciA9IHRoaXMuZ2V0UHJlY2lzaW9uRmFjdG9yKHZhbHVlKTtcbiAgICAgICAgY29uc3QgcHJlY2lzaW9uID0gdGhpcy5nZXRNYXhQcmVjaXNpb24odmFsdWUpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSAoKHByZWNpc2lvbkZhY3RvciAqIHZhbHVlICsgcHJlY2lzaW9uRmFjdG9yICogdGhpcy50aHlTdGVwKSAvIHByZWNpc2lvbkZhY3RvcikudG9GaXhlZChwcmVjaXNpb24pO1xuICAgICAgICByZXR1cm4gdGhpcy50b051bWJlcihyZXN1bHQpO1xuICAgIH1cblxuICAgIGRvd25TdGVwKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBwcmVjaXNpb25GYWN0b3IgPSB0aGlzLmdldFByZWNpc2lvbkZhY3Rvcih2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHByZWNpc2lvbiA9IE1hdGguYWJzKHRoaXMuZ2V0TWF4UHJlY2lzaW9uKHZhbHVlKSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9ICgocHJlY2lzaW9uRmFjdG9yICogdmFsdWUgLSBwcmVjaXNpb25GYWN0b3IgKiB0aGlzLnRoeVN0ZXApIC8gcHJlY2lzaW9uRmFjdG9yKS50b0ZpeGVkKHByZWNpc2lvbik7XG4gICAgICAgIHJldHVybiB0aGlzLnRvTnVtYmVyKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgZ2V0TWF4UHJlY2lzaW9uKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAoIWhlbHBlcnMuaXNVbmRlZmluZWRPck51bGwodGhpcy50aHlQcmVjaXNpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlQcmVjaXNpb247XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RlcFByZWNpc2lvbiA9IHRoaXMuZ2V0UHJlY2lzaW9uKHRoaXMudGh5U3RlcCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZVByZWNpc2lvbiA9IHRoaXMuZ2V0UHJlY2lzaW9uKHZhbHVlIGFzIG51bWJlcik7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGVwUHJlY2lzaW9uO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBNYXRoLm1heChjdXJyZW50VmFsdWVQcmVjaXNpb24sIHN0ZXBQcmVjaXNpb24pO1xuICAgIH1cblxuICAgIGdldFByZWNpc2lvbkZhY3RvcihjdXJyZW50VmFsdWU6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHByZWNpc2lvbiA9IHRoaXMuZ2V0TWF4UHJlY2lzaW9uKGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIHJldHVybiBNYXRoLnBvdygxMCwgcHJlY2lzaW9uKTtcbiAgICB9XG5cbiAgICBnZXRQcmVjaXNpb24odmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHZhbHVlU3RyaW5nID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgLy8gMC4wMDAwMDAwMDA0LnRvU3RyaW5nKCkgPSA0ZTEwICA9PiAxMFxuICAgICAgICBpZiAodmFsdWVTdHJpbmcuaW5kZXhPZignZS0nKSA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWVTdHJpbmcuc2xpY2UodmFsdWVTdHJpbmcuaW5kZXhPZignZS0nKSArIDIpLCAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHByZWNpc2lvbiA9IDA7XG4gICAgICAgIC8vIDEuMjIyMiA9PiAgNFxuICAgICAgICBpZiAodmFsdWVTdHJpbmcuaW5kZXhPZignLicpID49IDApIHtcbiAgICAgICAgICAgIHByZWNpc2lvbiA9IHZhbHVlU3RyaW5nLmxlbmd0aCAtIHZhbHVlU3RyaW5nLmluZGV4T2YoJy4nKSAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByZWNpc2lvbjtcbiAgICB9XG5cbiAgICB1cChlOiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMuc3RlcChUeXBlLnVwLCBlKTtcbiAgICB9XG5cbiAgICBkb3duKGU6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5zdGVwKFR5cGUuZG93biwgZSk7XG4gICAgfVxuXG4gICAgZm9ybWF0dGVyVmFsdWUodmFsdWU6IG51bWJlciB8IHN0cmluZykge1xuICAgICAgICBjb25zdCBwYXJzZVZhbHVlID0gdGhpcy5wYXJzZXIoYCR7dmFsdWV9YCk7XG4gICAgICAgIGlmIChwYXJzZVZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlTdWZmaXggPyBgJHtwYXJzZVZhbHVlfSAke3RoaXMudGh5U3VmZml4fWAgOiBwYXJzZVZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcGFyc2VyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAucmVwbGFjZSgv44CCL2csICcuJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXlxcd1xcLi1dKy9nLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKHRoaXMudGh5U3VmZml4LCAnJyk7XG4gICAgfVxuXG4gICAgZ2V0Q3VycmVudFZhbGlkVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB8IHN0cmluZyB7XG4gICAgICAgIGxldCB2YWwgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHZhbCA9IHBhcnNlRmxvYXQodmFsdWUgYXMgc3RyaW5nKTtcbiAgICAgICAgaWYgKHRoaXMuaXNOb3RWYWxpZCh2YWwpKSB7XG4gICAgICAgICAgICB2YWwgPSB0aGlzLnZhbGlkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCA8IHRoaXMudGh5TWluKSB7XG4gICAgICAgICAgICB2YWwgPSB0aGlzLnRoeU1pbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsID4gdGhpcy50aHlNYXgpIHtcbiAgICAgICAgICAgIHZhbCA9IHRoaXMudGh5TWF4O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudG9OdW1iZXIodmFsKTtcbiAgICB9XG4gICAgaXNOb3RWYWxpZChudW06IHN0cmluZyB8IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXNOYU4obnVtIGFzIG51bWJlcikgfHwgbnVtID09PSAnJyB8fCBudW0gPT09IG51bGwgfHwgISEobnVtICYmIG51bS50b1N0cmluZygpLmluZGV4T2YoJy4nKSA9PT0gbnVtLnRvU3RyaW5nKCkubGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgdG9OdW1iZXIobnVtOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5pc05vdFZhbGlkKG51bSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW0gYXMgbnVtYmVyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG51bVN0ciA9IFN0cmluZyhudW0pO1xuICAgICAgICBpZiAobnVtU3RyLmluZGV4T2YoJy4nKSA+PSAwICYmICFoZWxwZXJzLmlzVW5kZWZpbmVkT3JOdWxsKHRoaXMudGh5UHJlY2lzaW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihOdW1iZXIobnVtKS50b0ZpeGVkKHRoaXMudGh5UHJlY2lzaW9uKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE51bWJlcihudW0pO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoRm4gPSBmbjtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHt9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyLWhhbmRsZXItd3JhcFwiIFtjbGFzcy5pbnB1dC1udW1iZXItZGlzYWJsZWRdPVwidGh5RGlzYWJsZWRcIj5cbiAgPHNwYW5cbiAgICB1bnNlbGVjdGFibGU9XCJ1bnNlbGVjdGFibGVcIlxuICAgIGNsYXNzPVwiaW5wdXQtbnVtYmVyLWhhbmRsZXIgaW5wdXQtbnVtYmVyLWhhbmRsZXItdXBcIlxuICAgIChtb3VzZWRvd24pPVwidXAoJGV2ZW50KVwiXG4gICAgKG1vdXNldXApPVwic3RvcCgpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJzdG9wKClcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFVwXCJcbiAgPlxuICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImFuZ2xlLXVwXCI+PC90aHktaWNvbj5cbiAgPC9zcGFuPlxuICA8c3BhblxuICAgIHVuc2VsZWN0YWJsZT1cInVuc2VsZWN0YWJsZVwiXG4gICAgY2xhc3M9XCJpbnB1dC1udW1iZXItaGFuZGxlciBpbnB1dC1udW1iZXItaGFuZGxlci1kb3duXCJcbiAgICAobW91c2Vkb3duKT1cImRvd24oJGV2ZW50KVwiXG4gICAgKG1vdXNldXApPVwic3RvcCgpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJzdG9wKClcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZERvd25cIlxuICA+XG4gICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtZG93blwiPjwvdGh5LWljb24+XG4gIDwvc3Bhbj5cbjwvZGl2PlxuPGlucHV0XG4gIHRoeUlucHV0XG4gICNpbnB1dFxuICBuYW1lPVwiaW5wdXROdW1iZXJcIlxuICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICBjbGFzcz1cImlucHV0LW51bWJlci1pbnB1dCBmb3JtLWNvbnRyb2xcIlxuICBbdGh5U2l6ZV09XCJ0aHlTaXplXCJcbiAgW3RoeUF1dG9mb2N1c109XCJ0aHlBdXRvRm9jdXNcIlxuICBbZGlzYWJsZWRdPVwidGh5RGlzYWJsZWRcIlxuICBbYXR0ci5taW5dPVwidGh5TWluXCJcbiAgW2F0dHIubWF4XT1cInRoeU1heFwiXG4gIFtwbGFjZWhvbGRlcl09XCJ0aHlQbGFjZWhvbGRlclwiXG4gIFthdHRyLnN0ZXBdPVwidGh5U3RlcFwiXG4gIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgKGtleXVwKT1cInN0b3AoKVwiXG4gIFsobmdNb2RlbCldPVwiZGlzcGxheVZhbHVlXCJcbiAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCJcbiAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbi8+XG4iXX0=
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbnB1dC1udW1iZXIvaW5wdXQtbnVtYmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9pbnB1dC1udW1iZXIvaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7QUFJdkUsSUFBSyxJQUdKO0FBSEQsV0FBSyxJQUFJO0lBQ0wsMkJBQUUsQ0FBQTtJQUNGLCtCQUFJLENBQUE7QUFDUixDQUFDLEVBSEksSUFBSSxLQUFKLElBQUksUUFHUjtBQWFELE1BQU0sT0FBTyx1QkFBdUI7SUF5Q2hDLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBeENILG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBSXJELGVBQVUsR0FBcUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRXhELGNBQVMsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFRekMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUlaLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBSTVCLFdBQU0sR0FBVyxRQUFRLENBQUM7UUFFMUIsV0FBTSxH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RyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU07Z0JBRUcsUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IERPV05fQVJST1csIEVOVEVSLCBoZWxwZXJzLCBVUF9BUlJPVyB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5cbnR5cGUgSW5wdXRTaXplID0gJ3hzJyB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICcnO1xuXG5lbnVtIFR5cGUge1xuICAgIHVwLFxuICAgIGRvd25cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktaW5wdXQtbnVtYmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaHlJbnB1dE51bWJlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlJbnB1dE51bWJlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1pbnB1dC1udW1iZXInKSBfaXNJbnB1dE51bWJlciA9IHRydWU7XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjxhbnk+O1xuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZUZuOiAodmFsdWU6IG51bWJlciB8IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSBvblRvdWNoRm46ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHByaXZhdGUgYXV0b1N0ZXBUaW1lcjogYW55O1xuXG4gICAgdmFsaWRWYWx1ZTogbnVtYmVyIHwgc3RyaW5nOyAvLyBudW1iZXIgb3IgJydcblxuICAgIGRpc3BsYXlWYWx1ZTogbnVtYmVyIHwgc3RyaW5nO1xuXG4gICAgZGlzYWJsZWRVcCA9IGZhbHNlO1xuXG4gICAgZGlzYWJsZWREb3duID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5QXV0b0ZvY3VzOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdGh5UGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeURpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdGh5TWF4OiBudW1iZXIgPSBJbmZpbml0eTtcblxuICAgIEBJbnB1dCgpIHRoeU1pbjogbnVtYmVyID0gLUluZmluaXR5O1xuXG4gICAgQElucHV0KCkgdGh5U3RlcCA9IDE7XG5cbiAgICBASW5wdXQoKSB0aHlTaXplOiBJbnB1dFNpemU7XG5cbiAgICBASW5wdXQoKSB0aHlQcmVjaXNpb246IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHRoeVN1ZmZpeDogc3RyaW5nO1xuXG4gICAgQE91dHB1dCgpIHRoeUJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpIHRoeUZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG5nT25Jbml0KCkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXMudGh5U3VmZml4ICYmICFjaGFuZ2VzLnRoeVN1ZmZpeC5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldEN1cnJlbnRWYWxpZFZhbHVlKHRoaXMudmFsaWRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkVmFsdWUodmFsaWRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuZm9ybWF0dGVyVmFsdWUodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgX3ZhbHVlID0gdGhpcy5nZXRDdXJyZW50VmFsaWRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsaWRWYWx1ZShfdmFsdWUpO1xuICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuZm9ybWF0dGVyVmFsdWUoX3ZhbHVlKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlVmFsaWRWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTm90VmFsaWQodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkVmFsdWUgPSAnJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbGlkVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpc2FibGVkVXAgPSB0aGlzLmRpc2FibGVkRG93biA9IGZhbHNlO1xuICAgICAgICBpZiAodmFsdWUgfHwgdmFsdWUgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IE51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICBpZiAodmFsID49IHRoaXMudGh5TWF4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZFVwID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2YWwgPD0gdGhpcy50aHlNaW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkRG93biA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyc2VWYWx1ZSA9IHRoaXMucGFyc2VyKHZhbHVlKTtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0Q3VycmVudFZhbGlkVmFsdWUocGFyc2VWYWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLnZhbGlkVmFsdWUgIT09IHZhbGlkVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsaWRWYWx1ZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VGbih0aGlzLnZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25CbHVyKGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLmZvcm1hdHRlclZhbHVlKHRoaXMudmFsaWRWYWx1ZSk7XG4gICAgICAgIHRoaXMudGh5Qmx1ci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgdGhpcy50aHlGb2N1cy5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbktleURvd24oZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZS5rZXlDb2RlID09PSBVUF9BUlJPVykge1xuICAgICAgICAgICAgdGhpcy51cChlKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGUua2V5Q29kZSA9PT0gRE9XTl9BUlJPVykge1xuICAgICAgICAgICAgdGhpcy5kb3duKGUpO1xuICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZS5rZXlDb2RlID09PSBFTlRFUikge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLmZvcm1hdHRlclZhbHVlKHRoaXMudmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdG9wKCkge1xuICAgICAgICBpZiAodGhpcy5hdXRvU3RlcFRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5hdXRvU3RlcFRpbWVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0ZXAodHlwZTogVHlwZSwgZTogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMudGh5RGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsaWRWYWx1ZSBhcyBudW1iZXI7XG4gICAgICAgIGxldCB2YWw7XG4gICAgICAgIGlmICh0eXBlID09PSBUeXBlLnVwKSB7XG4gICAgICAgICAgICB2YWwgPSB0aGlzLnVwU3RlcCh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVHlwZS5kb3duKSB7XG4gICAgICAgICAgICB2YWwgPSB0aGlzLmRvd25TdGVwKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvdXRPZlJhbmdlID0gdmFsID4gdGhpcy50aHlNYXggfHwgdmFsIDwgdGhpcy50aHlNaW47XG4gICAgICAgIHZhbCA9IHRoaXMuZ2V0Q3VycmVudFZhbGlkVmFsdWUodmFsKTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWxpZFZhbHVlKHZhbCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2VGbih0aGlzLnZhbGlkVmFsdWUpO1xuICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuZm9ybWF0dGVyVmFsdWUodmFsKTtcbiAgICAgICAgaWYgKG91dE9mUmFuZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmF1dG9TdGVwVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICh0aGlzW1R5cGVbdHlwZV1dIGFzIChlOiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCkgPT4gdm9pZCkoZSk7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgfVxuXG4gICAgdXBTdGVwKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBwcmVjaXNpb25GYWN0b3IgPSB0aGlzLmdldFByZWNpc2lvbkZhY3Rvcih2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHByZWNpc2lvbiA9IHRoaXMuZ2V0TWF4UHJlY2lzaW9uKHZhbHVlKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gKChwcmVjaXNpb25GYWN0b3IgKiB2YWx1ZSArIHByZWNpc2lvbkZhY3RvciAqIHRoaXMudGh5U3RlcCkgLyBwcmVjaXNpb25GYWN0b3IpLnRvRml4ZWQocHJlY2lzaW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9OdW1iZXIocmVzdWx0KTtcbiAgICB9XG5cbiAgICBkb3duU3RlcCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgcHJlY2lzaW9uRmFjdG9yID0gdGhpcy5nZXRQcmVjaXNpb25GYWN0b3IodmFsdWUpO1xuICAgICAgICBjb25zdCBwcmVjaXNpb24gPSBNYXRoLmFicyh0aGlzLmdldE1heFByZWNpc2lvbih2YWx1ZSkpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSAoKHByZWNpc2lvbkZhY3RvciAqIHZhbHVlIC0gcHJlY2lzaW9uRmFjdG9yICogdGhpcy50aHlTdGVwKSAvIHByZWNpc2lvbkZhY3RvcikudG9GaXhlZChwcmVjaXNpb24pO1xuICAgICAgICByZXR1cm4gdGhpcy50b051bWJlcihyZXN1bHQpO1xuICAgIH1cblxuICAgIGdldE1heFByZWNpc2lvbih2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCFoZWxwZXJzLmlzVW5kZWZpbmVkT3JOdWxsKHRoaXMudGh5UHJlY2lzaW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGh5UHJlY2lzaW9uO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0ZXBQcmVjaXNpb24gPSB0aGlzLmdldFByZWNpc2lvbih0aGlzLnRoeVN0ZXApO1xuICAgICAgICBjb25zdCBjdXJyZW50VmFsdWVQcmVjaXNpb24gPSB0aGlzLmdldFByZWNpc2lvbih2YWx1ZSBhcyBudW1iZXIpO1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RlcFByZWNpc2lvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTWF0aC5tYXgoY3VycmVudFZhbHVlUHJlY2lzaW9uLCBzdGVwUHJlY2lzaW9uKTtcbiAgICB9XG5cbiAgICBnZXRQcmVjaXNpb25GYWN0b3IoY3VycmVudFZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBwcmVjaXNpb24gPSB0aGlzLmdldE1heFByZWNpc2lvbihjdXJyZW50VmFsdWUpO1xuICAgICAgICByZXR1cm4gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG4gICAgfVxuXG4gICAgZ2V0UHJlY2lzaW9uKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB2YWx1ZVN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIC8vIDAuMDAwMDAwMDAwNC50b1N0cmluZygpID0gNGUxMCAgPT4gMTBcbiAgICAgICAgaWYgKHZhbHVlU3RyaW5nLmluZGV4T2YoJ2UtJykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlU3RyaW5nLnNsaWNlKHZhbHVlU3RyaW5nLmluZGV4T2YoJ2UtJykgKyAyKSwgMTApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwcmVjaXNpb24gPSAwO1xuICAgICAgICAvLyAxLjIyMjIgPT4gIDRcbiAgICAgICAgaWYgKHZhbHVlU3RyaW5nLmluZGV4T2YoJy4nKSA+PSAwKSB7XG4gICAgICAgICAgICBwcmVjaXNpb24gPSB2YWx1ZVN0cmluZy5sZW5ndGggLSB2YWx1ZVN0cmluZy5pbmRleE9mKCcuJykgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcmVjaXNpb247XG4gICAgfVxuXG4gICAgdXAoZTogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB0aGlzLnN0ZXAoVHlwZS51cCwgZSk7XG4gICAgfVxuXG4gICAgZG93bihlOiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMuc3RlcChUeXBlLmRvd24sIGUpO1xuICAgIH1cblxuICAgIGZvcm1hdHRlclZhbHVlKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcGFyc2VWYWx1ZSA9IHRoaXMucGFyc2VyKGAke3ZhbHVlfWApO1xuICAgICAgICBpZiAocGFyc2VWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGh5U3VmZml4ID8gYCR7cGFyc2VWYWx1ZX0gJHt0aGlzLnRoeVN1ZmZpeH1gIDogcGFyc2VWYWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBhcnNlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnJlcGxhY2UoL+OAgi9nLCAnLicpXG4gICAgICAgICAgICAucmVwbGFjZSgvW15cXHdcXC4tXSsvZywgJycpXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLnRoeVN1ZmZpeCwgJycpO1xuICAgIH1cblxuICAgIGdldEN1cnJlbnRWYWxpZFZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIgfCBzdHJpbmcge1xuICAgICAgICBsZXQgdmFsID0gdmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIHZhbCA9IHBhcnNlRmxvYXQodmFsdWUgYXMgc3RyaW5nKTtcbiAgICAgICAgaWYgKHRoaXMuaXNOb3RWYWxpZCh2YWwpKSB7XG4gICAgICAgICAgICB2YWwgPSB0aGlzLnZhbGlkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCA8IHRoaXMudGh5TWluKSB7XG4gICAgICAgICAgICB2YWwgPSB0aGlzLnRoeU1pbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsID4gdGhpcy50aHlNYXgpIHtcbiAgICAgICAgICAgIHZhbCA9IHRoaXMudGh5TWF4O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudG9OdW1iZXIodmFsKTtcbiAgICB9XG4gICAgaXNOb3RWYWxpZChudW06IHN0cmluZyB8IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXNOYU4obnVtIGFzIG51bWJlcikgfHwgbnVtID09PSAnJyB8fCBudW0gPT09IG51bGwgfHwgISEobnVtICYmIG51bS50b1N0cmluZygpLmluZGV4T2YoJy4nKSA9PT0gbnVtLnRvU3RyaW5nKCkubGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgdG9OdW1iZXIobnVtOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5pc05vdFZhbGlkKG51bSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW0gYXMgbnVtYmVyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG51bVN0ciA9IFN0cmluZyhudW0pO1xuICAgICAgICBpZiAobnVtU3RyLmluZGV4T2YoJy4nKSA+PSAwICYmICFoZWxwZXJzLmlzVW5kZWZpbmVkT3JOdWxsKHRoaXMudGh5UHJlY2lzaW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihOdW1iZXIobnVtKS50b0ZpeGVkKHRoaXMudGh5UHJlY2lzaW9uKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE51bWJlcihudW0pO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoRm4gPSBmbjtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHt9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyLWhhbmRsZXItd3JhcFwiIFtjbGFzcy5pbnB1dC1udW1iZXItZGlzYWJsZWRdPVwidGh5RGlzYWJsZWRcIj5cbiAgPHNwYW5cbiAgICB1bnNlbGVjdGFibGU9XCJ1bnNlbGVjdGFibGVcIlxuICAgIGNsYXNzPVwiaW5wdXQtbnVtYmVyLWhhbmRsZXIgaW5wdXQtbnVtYmVyLWhhbmRsZXItdXBcIlxuICAgIChtb3VzZWRvd24pPVwidXAoJGV2ZW50KVwiXG4gICAgKG1vdXNldXApPVwic3RvcCgpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJzdG9wKClcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFVwXCJcbiAgPlxuICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImFuZ2xlLXVwXCI+PC90aHktaWNvbj5cbiAgPC9zcGFuPlxuICA8c3BhblxuICAgIHVuc2VsZWN0YWJsZT1cInVuc2VsZWN0YWJsZVwiXG4gICAgY2xhc3M9XCJpbnB1dC1udW1iZXItaGFuZGxlciBpbnB1dC1udW1iZXItaGFuZGxlci1kb3duXCJcbiAgICAobW91c2Vkb3duKT1cImRvd24oJGV2ZW50KVwiXG4gICAgKG1vdXNldXApPVwic3RvcCgpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJzdG9wKClcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZERvd25cIlxuICA+XG4gICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtZG93blwiPjwvdGh5LWljb24+XG4gIDwvc3Bhbj5cbjwvZGl2PlxuPGlucHV0XG4gIHRoeUlucHV0XG4gICNpbnB1dFxuICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICBjbGFzcz1cImlucHV0LW51bWJlci1pbnB1dCBmb3JtLWNvbnRyb2xcIlxuICBbdGh5U2l6ZV09XCJ0aHlTaXplXCJcbiAgW3RoeUF1dG9mb2N1c109XCJ0aHlBdXRvRm9jdXNcIlxuICBbZGlzYWJsZWRdPVwidGh5RGlzYWJsZWRcIlxuICBbYXR0ci5taW5dPVwidGh5TWluXCJcbiAgW2F0dHIubWF4XT1cInRoeU1heFwiXG4gIFtwbGFjZWhvbGRlcl09XCJ0aHlQbGFjZWhvbGRlclwiXG4gIFthdHRyLnN0ZXBdPVwidGh5U3RlcFwiXG4gIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgKGtleXVwKT1cInN0b3AoKVwiXG4gIFsobmdNb2RlbCldPVwiZGlzcGxheVZhbHVlXCJcbiAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCJcbiAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbi8+XG4iXX0=
|
|
@@ -133,10 +133,10 @@ ThySidebarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
|
|
|
133
133
|
*ngIf="!thyCollapsed"
|
|
134
134
|
thyDirection="right"
|
|
135
135
|
class="sidebar-resize-handle"
|
|
136
|
+
thyLine="true"
|
|
136
137
|
(mouseenter)="resizeHandleHover($event, 'enter')"
|
|
137
138
|
(mouseleave)="resizeHandleHover($event, 'leave')"
|
|
138
139
|
>
|
|
139
|
-
<div class="sidebar-resize-line"></div>
|
|
140
140
|
</thy-resize-handle>
|
|
141
141
|
</div>
|
|
142
142
|
<div *ngIf="thyCollapsible" class="sidebar-collapse-line"></div>
|
|
@@ -152,7 +152,7 @@ ThySidebarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
|
|
|
152
152
|
<thy-icon class="sidebar-collapse-icon" [thyIconName]="this.thyCollapsed ? 'indent' : 'outdent'"></thy-icon>
|
|
153
153
|
</ng-template>
|
|
154
154
|
</div>
|
|
155
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i4.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "directive", type: i5.ThyResizableDirective, selector: "[thyResizable]", inputs: ["thyBounds", "thyMaxHeight", "thyMaxWidth", "thyMinHeight", "thyMinWidth", "thyGridColumnCount", "thyMaxColumn", "thyMinColumn", "thyLockAspectRatio", "thyPreview", "thyDisabled"], outputs: ["thyResize", "thyResizeEnd", "thyResizeStart"] }, { kind: "component", type: i5.ThyResizeHandleComponent, selector: "thy-resize-handle, [thy-resize-handle]", inputs: ["thyDirection"], outputs: ["thyMouseDown"], exportAs: ["thyResizeHandle"] }] });
|
|
155
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i4.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "directive", type: i5.ThyResizableDirective, selector: "[thyResizable]", inputs: ["thyBounds", "thyMaxHeight", "thyMaxWidth", "thyMinHeight", "thyMinWidth", "thyGridColumnCount", "thyMaxColumn", "thyMinColumn", "thyLockAspectRatio", "thyPreview", "thyDisabled"], outputs: ["thyResize", "thyResizeEnd", "thyResizeStart"] }, { kind: "component", type: i5.ThyResizeHandleComponent, selector: "thy-resize-handle, [thy-resize-handle]", inputs: ["thyDirection", "thyLine"], outputs: ["thyMouseDown"], exportAs: ["thyResizeHandle"] }] });
|
|
156
156
|
__decorate([
|
|
157
157
|
InputBoolean(),
|
|
158
158
|
__metadata("design:type", Boolean)
|
|
@@ -189,10 +189,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
189
189
|
*ngIf="!thyCollapsed"
|
|
190
190
|
thyDirection="right"
|
|
191
191
|
class="sidebar-resize-handle"
|
|
192
|
+
thyLine="true"
|
|
192
193
|
(mouseenter)="resizeHandleHover($event, 'enter')"
|
|
193
194
|
(mouseleave)="resizeHandleHover($event, 'leave')"
|
|
194
195
|
>
|
|
195
|
-
<div class="sidebar-resize-line"></div>
|
|
196
196
|
</thy-resize-handle>
|
|
197
197
|
</div>
|
|
198
198
|
<div *ngIf="thyCollapsible" class="sidebar-collapse-line"></div>
|
|
@@ -266,4 +266,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
266
266
|
type: HostBinding,
|
|
267
267
|
args: ['class.remove-transition']
|
|
268
268
|
}] } });
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGF5b3V0L3NpZGViYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFdBQVcsRUFDWCxJQUFJLEVBQ0osUUFBUSxFQUVSLEtBQUssRUFFTCxVQUFVLEVBQ1YsTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7O0FBRy9DLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQztBQUNyQixNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztBQTZDbEMsTUFBTSxPQUFPLG1CQUFtQjtJQThGNUIsWUFBd0Msa0JBQXNDLEVBQVMsVUFBc0I7UUFBckUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFTLGVBQVUsR0FBVixVQUFVLENBQVk7UUE3RnBFLDBCQUFxQixHQUFHLElBQUksQ0FBQztRQUVULDBDQUFxQyxHQUFHLEtBQUssQ0FBQztRQUVqRSxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFM0IscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBWWhCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBb0JqRCxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUk5QyxlQUFVLEdBQXdDLFNBQVMsQ0FBQztRQUdyRSx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBR2pELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFdkIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFVdkMsc0JBQWlCLEdBQUcsRUFBRSxDQUFD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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXFDVDtpQkFDSjs7MEJBK0ZnQixRQUFROzswQkFBSSxJQUFJO3FFQTdGWSxxQkFBcUI7c0JBQTdELFdBQVc7dUJBQUMsMEJBQTBCO2dCQUVzQixxQ0FBcUM7c0JBQWpHLFdBQVc7dUJBQUMsOENBQThDO2dCQUVqQixpQkFBaUI7c0JBQTFELFdBQVc7dUJBQUMsMkJBQTJCO2dCQUVDLGdCQUFnQjtzQkFBeEQsV0FBVzt1QkFBQywwQkFBMEI7Z0JBSUosWUFBWTtzQkFBOUMsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBUXFCLGVBQWU7c0JBQWhFLFdBQVc7dUJBQUMsbUNBQW1DO2dCQUc1QyxRQUFRO3NCQURYLEtBQUs7dUJBQUMsVUFBVTtnQkFTYixpQkFBaUI7c0JBRHBCLEtBQUs7dUJBQUMsbUJBQW1CO2dCQU10QixXQUFXO3NCQURkLEtBQUs7dUJBQUMsYUFBYTtnQkFLSyxZQUFZO3NCQUFwQyxLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFHTixrQkFBa0I7c0JBRGpCLE1BQU07Z0JBSVAsa0JBQWtCO3NCQURqQixNQUFNO2dCQUdrQixjQUFjO3NCQUF0QyxLQUFLO2dCQUV1QixZQUFZO3NCQUF4QyxLQUFLO2dCQVFHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7Z0JBVUYsa0JBQWtCO3NCQURyQixXQUFXO3VCQUFDLDZCQUE2QjtnQkFNdEMsZ0JBQWdCO3NCQURuQixXQUFXO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3QsXG4gICAgT3B0aW9uYWwsXG4gICAgT25Jbml0LFxuICAgIElucHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL2xheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlSZXNpemVFdmVudCB9IGZyb20gJ25neC10ZXRoeXMvcmVzaXphYmxlJztcblxuY29uc3QgTEdfV0lEVEggPSAzMDA7XG5jb25zdCBTSURFQkFSX0RFRkFVTFRfV0lEVEggPSAyNDA7XG5cbmV4cG9ydCB0eXBlIFRoeVNpZGViYXJUaGVtZSA9ICd3aGl0ZScgfCAnbGlnaHQnIHwgJ2RhcmsnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktc2lkZWJhcicsXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICB0aHlSZXNpemFibGVcbiAgICAgICAgICAgIGNsYXNzPVwic2lkZWJhci1kcmFnXCJcbiAgICAgICAgICAgICpuZ0lmPVwidGh5RHJhZ2dhYmxlXCJcbiAgICAgICAgICAgIHRoeUJvdW5kcz1cIndpbmRvd1wiXG4gICAgICAgICAgICBbdGh5TWF4V2lkdGhdPVwidGh5RHJhZ01heFdpZHRoXCJcbiAgICAgICAgICAgIFt0aHlNaW5XaWR0aF09XCJ0aHlDb2xsYXBzZWRXaWR0aFwiXG4gICAgICAgICAgICAodGh5UmVzaXplKT1cInJlc2l6ZUhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAodGh5UmVzaXplU3RhcnQpPVwicmVzaXplU3RhcnQoKVwiXG4gICAgICAgICAgICAodGh5UmVzaXplRW5kKT1cInJlc2l6ZUVuZCgpXCJcbiAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIiFjb2xsYXBzZVZpc2libGUgPyAnY29udGVudHMnIDogbnVsbFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDx0aHktcmVzaXplLWhhbmRsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXRoeUNvbGxhcHNlZFwiXG4gICAgICAgICAgICAgICAgdGh5RGlyZWN0aW9uPVwicmlnaHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2lkZWJhci1yZXNpemUtaGFuZGxlXCJcbiAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJyZXNpemVIYW5kbGVIb3ZlcigkZXZlbnQsICdlbnRlcicpXCJcbiAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJyZXNpemVIYW5kbGVIb3ZlcigkZXZlbnQsICdsZWF2ZScpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZWJhci1yZXNpemUtbGluZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC90aHktcmVzaXplLWhhbmRsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJ0aHlDb2xsYXBzaWJsZVwiIGNsYXNzPVwic2lkZWJhci1jb2xsYXBzZS1saW5lXCI+PC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwidGh5Q29sbGFwc2libGUgJiYgdGh5VHJpZ2dlciAhPT0gbnVsbFwiXG4gICAgICAgICAgICBjbGFzcz1cInNpZGViYXItY29sbGFwc2VcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY29sbGFwc2UtdmlzaWJsZSc6IGNvbGxhcHNlVmlzaWJsZSwgJ2NvbGxhcHNlLWhpZGRlbic6IGNvbGxhcHNlSGlkZGVuIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKCRldmVudClcIlxuICAgICAgICAgICAgW3RoeVRvb2x0aXBdPVwiIXRoeVRyaWdnZXIgJiYgY29sbGFwc2VUaXBcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidGh5VHJpZ2dlciB8fCBkZWZhdWx0VHJpZ2dlclwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDx0aHktaWNvbiBjbGFzcz1cInNpZGViYXItY29sbGFwc2UtaWNvblwiIFt0aHlJY29uTmFtZV09XCJ0aGlzLnRoeUNvbGxhcHNlZCA/ICdpbmRlbnQnIDogJ291dGRlbnQnXCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgIGBcbn0pXG5leHBvcnQgY2xhc3MgVGh5U2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktbGF5b3V0LXNpZGViYXInKSB0aHlMYXlvdXRTaWRlYmFyQ2xhc3MgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktbGF5b3V0LXNpZGViYXItLWNsZWFyLWJvcmRlci1yaWdodCcpIHRoeUxheW91dFNpZGViYXJDbGVhckJvcmRlclJpZ2h0Q2xhc3MgPSBmYWxzZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3Muc2lkZWJhci10aGVtZS1saWdodCcpIHNpZGViYXJUaGVtZUxpZ2h0ID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNpZGViYXItdGhlbWUtZGFyaycpIHNpZGViYXJUaGVtZURhcmsgPSBmYWxzZTtcblxuICAgIHRoeUxheW91dFNpZGViYXJXaWR0aDogbnVtYmVyO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS53aWR0aC5weCcpIGdldCBzaWRlYmFyV2lkdGgoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeUNvbGxhcHNpYmxlICYmIHRoaXMudGh5Q29sbGFwc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlDb2xsYXBzZWRXaWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRoeUxheW91dFNpZGViYXJXaWR0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LWxheW91dC1zaWRlYmFyLWlzb2xhdGVkJykgc2lkZWJhcklzb2xhdGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoJ3RoeVdpZHRoJylcbiAgICBzZXQgdGh5V2lkdGgodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAodmFsdWUgPT09ICdsZycpIHtcbiAgICAgICAgICAgIHZhbHVlID0gTEdfV0lEVEg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aHlMYXlvdXRTaWRlYmFyV2lkdGggPSB2YWx1ZSB8fCBTSURFQkFSX0RFRkFVTFRfV0lEVEg7XG4gICAgfVxuXG4gICAgQElucHV0KCd0aHlIYXNCb3JkZXJSaWdodCcpXG4gICAgc2V0IHRoeUhhc0JvcmRlclJpZ2h0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy50aHlMYXlvdXRTaWRlYmFyQ2xlYXJCb3JkZXJSaWdodENsYXNzID0gIWNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCd0aHlJc29sYXRlZCcpXG4gICAgc2V0IHRoeUlzb2xhdGVkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zaWRlYmFySXNvbGF0ZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSB0aHlEcmFnZ2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHRoeURyYWdNYXhXaWR0aDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgdGh5VHJpZ2dlcjogbnVsbCB8IHVuZGVmaW5lZCB8IFRlbXBsYXRlUmVmPGFueT4gPSB1bmRlZmluZWQ7XG5cbiAgICBAT3V0cHV0KClcbiAgICB0aHlDb2xsYXBzZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICB0aHlEcmFnV2lkdGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSB0aHlDb2xsYXBzaWJsZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHNldCB0aHlDb2xsYXBzZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pc0NvbGxhcHNlZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCB0aHlDb2xsYXBzZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ29sbGFwc2VkO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHRoeUNvbGxhcHNlZFdpZHRoID0gMjA7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlUaGVtZSh2YWx1ZTogVGh5U2lkZWJhclRoZW1lKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJ2xpZ2h0Jykge1xuICAgICAgICAgICAgdGhpcy5zaWRlYmFyVGhlbWVMaWdodCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09ICdkYXJrJykge1xuICAgICAgICAgICAgdGhpcy5zaWRlYmFyVGhlbWVEYXJrID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3Muc2lkZWJhci1jb2xsYXBzZS1zaG93JylcbiAgICBnZXQgY29sbGFwc2VWaXNpYmlsaXR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlDb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yZW1vdmUtdHJhbnNpdGlvbicpXG4gICAgZ2V0IHJlbW92ZVRyYW5zaXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzUmVtb3ZlVHJhbnNpdGlvbjtcbiAgICB9XG5cbiAgICBjb2xsYXBzZVRpcDogc3RyaW5nO1xuXG4gICAgaXNDb2xsYXBzZWQgPSBmYWxzZTtcblxuICAgIG9yaWdpbldpZHRoOiBudW1iZXIgPSBTSURFQkFSX0RFRkFVTFRfV0lEVEg7XG5cbiAgICBjb2xsYXBzZVZpc2libGU6IGJvb2xlYW47XG5cbiAgICBjb2xsYXBzZUhpZGRlbjogYm9vbGVhbjtcblxuICAgIGlzUmVtb3ZlVHJhbnNpdGlvbjogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBIb3N0KCkgcHJpdmF0ZSB0aHlMYXlvdXRDb21wb25lbnQ6IFRoeUxheW91dENvbXBvbmVudCwgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5TGF5b3V0Q29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLnRoeUxheW91dENvbXBvbmVudC5oYXNTaWRlYmFyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUNvbGxhcHNlVGlwKCk7XG4gICAgfVxuXG4gICAgcmVzaXplSGFuZGxlcih7IHdpZHRoIH06IFRoeVJlc2l6ZUV2ZW50KSB7XG4gICAgICAgIGlmICh3aWR0aCA9PT0gdGhpcy50aHlMYXlvdXRTaWRlYmFyV2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50aHlDb2xsYXBzaWJsZSAmJiB3aWR0aCA8IHRoaXMudGh5Q29sbGFwc2VkV2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50aHlDb2xsYXBzaWJsZSAmJiB3aWR0aCA9PT0gdGhpcy50aHlDb2xsYXBzZWRXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy50aHlDb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZUNvbGxhcHNlVGlwKCksIDIwMCk7XG4gICAgICAgICAgICB0aGlzLnRoeUNvbGxhcHNlZENoYW5nZS5lbWl0KHRoaXMuaXNDb2xsYXBzZWQpO1xuICAgICAgICAgICAgdGhpcy50aHlMYXlvdXRTaWRlYmFyV2lkdGggPSB0aGlzLm9yaWdpbldpZHRoO1xuICAgICAgICAgICAgdGhpcy5jb2xsYXBzZVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRoeUxheW91dFNpZGViYXJXaWR0aCA9IHdpZHRoO1xuICAgICAgICB0aGlzLnRoeURyYWdXaWR0aENoYW5nZS5lbWl0KHdpZHRoKTtcbiAgICB9XG5cbiAgICByZXNpemVTdGFydCgpIHtcbiAgICAgICAgdGhpcy5vcmlnaW5XaWR0aCA9IHRoaXMudGh5TGF5b3V0U2lkZWJhcldpZHRoO1xuICAgICAgICB0aGlzLmNvbGxhcHNlSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc1JlbW92ZVRyYW5zaXRpb24gPSB0cnVlO1xuICAgIH1cblxuICAgIHJlc2l6ZUVuZCgpIHtcbiAgICAgICAgdGhpcy5jb2xsYXBzZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzUmVtb3ZlVHJhbnNpdGlvbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJlc2l6ZUhhbmRsZUhvdmVyKGV2ZW50OiBNb3VzZUV2ZW50LCB0eXBlOiAnZW50ZXInIHwgJ2xlYXZlJykge1xuICAgICAgICB0aGlzLmNvbGxhcHNlVmlzaWJsZSA9IHR5cGUgPT09ICdlbnRlcicgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDb2xsYXBzZVRpcCgpIHtcbiAgICAgICAgdGhpcy5jb2xsYXBzZVRpcCA9IHRoaXMudGh5Q29sbGFwc2VkID8gJ+WxleW8gCcgOiAn5pS26LW3JztcbiAgICB9XG5cbiAgICB0b2dnbGVDb2xsYXBzZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLnRoeUNvbGxhcHNlZCA9ICF0aGlzLnRoeUNvbGxhcHNlZDtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZUNvbGxhcHNlVGlwKCksIDIwMCk7XG4gICAgICAgIHRoaXMudGh5Q29sbGFwc2VkQ2hhbmdlLmVtaXQodGhpcy5pc0NvbGxhcHNlZCk7XG4gICAgfVxufVxuIl19
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGF5b3V0L3NpZGViYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFdBQVcsRUFDWCxJQUFJLEVBQ0osUUFBUSxFQUVSLEtBQUssRUFFTCxVQUFVLEVBQ1YsTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7O0FBRy9DLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQztBQUNyQixNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztBQTZDbEMsTUFBTSxPQUFPLG1CQUFtQjtJQThGNUIsWUFBd0Msa0JBQXNDLEVBQVMsVUFBc0I7UUFBckUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFTLGVBQVUsR0FBVixVQUFVLENBQVk7UUE3RnBFLDBCQUFxQixHQUFHLElBQUksQ0FBQztRQUVULDBDQUFxQyxHQUFHLEtBQUssQ0FBQztRQUVqRSxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFM0IscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBWWhCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBb0JqRCxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUk5QyxlQUFVLEdBQXdDLFNBQVMsQ0FBQztRQUdyRSx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBR2pELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFdkIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFVdkMsc0JBQWlCLEdBQUcsRUFBRSxDQUFD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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXFDVDtpQkFDSjs7MEJBK0ZnQixRQUFROzswQkFBSSxJQUFJO3FFQTdGWSxxQkFBcUI7c0JBQTdELFdBQVc7dUJBQUMsMEJBQTBCO2dCQUVzQixxQ0FBcUM7c0JBQWpHLFdBQVc7dUJBQUMsOENBQThDO2dCQUVqQixpQkFBaUI7c0JBQTFELFdBQVc7dUJBQUMsMkJBQTJCO2dCQUVDLGdCQUFnQjtzQkFBeEQsV0FBVzt1QkFBQywwQkFBMEI7Z0JBSUosWUFBWTtzQkFBOUMsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBUXFCLGVBQWU7c0JBQWhFLFdBQVc7dUJBQUMsbUNBQW1DO2dCQUc1QyxRQUFRO3NCQURYLEtBQUs7dUJBQUMsVUFBVTtnQkFTYixpQkFBaUI7c0JBRHBCLEtBQUs7dUJBQUMsbUJBQW1CO2dCQU10QixXQUFXO3NCQURkLEtBQUs7dUJBQUMsYUFBYTtnQkFLSyxZQUFZO3NCQUFwQyxLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFHTixrQkFBa0I7c0JBRGpCLE1BQU07Z0JBSVAsa0JBQWtCO3NCQURqQixNQUFNO2dCQUdrQixjQUFjO3NCQUF0QyxLQUFLO2dCQUV1QixZQUFZO3NCQUF4QyxLQUFLO2dCQVFHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7Z0JBVUYsa0JBQWtCO3NCQURyQixXQUFXO3VCQUFDLDZCQUE2QjtnQkFNdEMsZ0JBQWdCO3NCQURuQixXQUFXO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3QsXG4gICAgT3B0aW9uYWwsXG4gICAgT25Jbml0LFxuICAgIElucHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL2xheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlSZXNpemVFdmVudCB9IGZyb20gJ25neC10ZXRoeXMvcmVzaXphYmxlJztcblxuY29uc3QgTEdfV0lEVEggPSAzMDA7XG5jb25zdCBTSURFQkFSX0RFRkFVTFRfV0lEVEggPSAyNDA7XG5cbmV4cG9ydCB0eXBlIFRoeVNpZGViYXJUaGVtZSA9ICd3aGl0ZScgfCAnbGlnaHQnIHwgJ2RhcmsnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktc2lkZWJhcicsXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICB0aHlSZXNpemFibGVcbiAgICAgICAgICAgIGNsYXNzPVwic2lkZWJhci1kcmFnXCJcbiAgICAgICAgICAgICpuZ0lmPVwidGh5RHJhZ2dhYmxlXCJcbiAgICAgICAgICAgIHRoeUJvdW5kcz1cIndpbmRvd1wiXG4gICAgICAgICAgICBbdGh5TWF4V2lkdGhdPVwidGh5RHJhZ01heFdpZHRoXCJcbiAgICAgICAgICAgIFt0aHlNaW5XaWR0aF09XCJ0aHlDb2xsYXBzZWRXaWR0aFwiXG4gICAgICAgICAgICAodGh5UmVzaXplKT1cInJlc2l6ZUhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAodGh5UmVzaXplU3RhcnQpPVwicmVzaXplU3RhcnQoKVwiXG4gICAgICAgICAgICAodGh5UmVzaXplRW5kKT1cInJlc2l6ZUVuZCgpXCJcbiAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIiFjb2xsYXBzZVZpc2libGUgPyAnY29udGVudHMnIDogbnVsbFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDx0aHktcmVzaXplLWhhbmRsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXRoeUNvbGxhcHNlZFwiXG4gICAgICAgICAgICAgICAgdGh5RGlyZWN0aW9uPVwicmlnaHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2lkZWJhci1yZXNpemUtaGFuZGxlXCJcbiAgICAgICAgICAgICAgICB0aHlMaW5lPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwicmVzaXplSGFuZGxlSG92ZXIoJGV2ZW50LCAnZW50ZXInKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwicmVzaXplSGFuZGxlSG92ZXIoJGV2ZW50LCAnbGVhdmUnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3RoeS1yZXNpemUtaGFuZGxlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInRoeUNvbGxhcHNpYmxlXCIgY2xhc3M9XCJzaWRlYmFyLWNvbGxhcHNlLWxpbmVcIj48L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJ0aHlDb2xsYXBzaWJsZSAmJiB0aHlUcmlnZ2VyICE9PSBudWxsXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2lkZWJhci1jb2xsYXBzZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdjb2xsYXBzZS12aXNpYmxlJzogY29sbGFwc2VWaXNpYmxlLCAnY29sbGFwc2UtaGlkZGVuJzogY29sbGFwc2VIaWRkZW4gfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29sbGFwc2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbdGh5VG9vbHRpcF09XCIhdGh5VHJpZ2dlciAmJiBjb2xsYXBzZVRpcFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aHlUcmlnZ2VyIHx8IGRlZmF1bHRUcmlnZ2VyXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRyaWdnZXI+XG4gICAgICAgICAgICAgICAgPHRoeS1pY29uIGNsYXNzPVwic2lkZWJhci1jb2xsYXBzZS1pY29uXCIgW3RoeUljb25OYW1lXT1cInRoaXMudGh5Q29sbGFwc2VkID8gJ2luZGVudCcgOiAnb3V0ZGVudCdcIj48L3RoeS1pY29uPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBUaHlTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1sYXlvdXQtc2lkZWJhcicpIHRoeUxheW91dFNpZGViYXJDbGFzcyA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1sYXlvdXQtc2lkZWJhci0tY2xlYXItYm9yZGVyLXJpZ2h0JykgdGh5TGF5b3V0U2lkZWJhckNsZWFyQm9yZGVyUmlnaHRDbGFzcyA9IGZhbHNlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zaWRlYmFyLXRoZW1lLWxpZ2h0Jykgc2lkZWJhclRoZW1lTGlnaHQgPSBmYWxzZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3Muc2lkZWJhci10aGVtZS1kYXJrJykgc2lkZWJhclRoZW1lRGFyayA9IGZhbHNlO1xuXG4gICAgdGh5TGF5b3V0U2lkZWJhcldpZHRoOiBudW1iZXI7XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoLnB4JykgZ2V0IHNpZGViYXJXaWR0aCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5Q29sbGFwc2libGUgJiYgdGhpcy50aHlDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRoeUNvbGxhcHNlZFdpZHRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGh5TGF5b3V0U2lkZWJhcldpZHRoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktbGF5b3V0LXNpZGViYXItaXNvbGF0ZWQnKSBzaWRlYmFySXNvbGF0ZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgndGh5V2lkdGgnKVxuICAgIHNldCB0aHlXaWR0aCh2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJ2xnJykge1xuICAgICAgICAgICAgdmFsdWUgPSBMR19XSURUSDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRoeUxheW91dFNpZGViYXJXaWR0aCA9IHZhbHVlIHx8IFNJREVCQVJfREVGQVVMVF9XSURUSDtcbiAgICB9XG5cbiAgICBASW5wdXQoJ3RoeUhhc0JvcmRlclJpZ2h0JylcbiAgICBzZXQgdGh5SGFzQm9yZGVyUmlnaHQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnRoeUxheW91dFNpZGViYXJDbGVhckJvcmRlclJpZ2h0Q2xhc3MgPSAhY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoJ3RoeUlzb2xhdGVkJylcbiAgICBzZXQgdGh5SXNvbGF0ZWQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNpZGViYXJJc29sYXRlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeURyYWdnYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgdGh5RHJhZ01heFdpZHRoOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSB0aHlUcmlnZ2VyOiBudWxsIHwgdW5kZWZpbmVkIHwgVGVtcGxhdGVSZWY8YW55PiA9IHVuZGVmaW5lZDtcblxuICAgIEBPdXRwdXQoKVxuICAgIHRoeUNvbGxhcHNlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHRoeURyYWdXaWR0aENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeUNvbGxhcHNpYmxlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgc2V0IHRoeUNvbGxhcHNlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzQ29sbGFwc2VkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHRoeUNvbGxhcHNlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNDb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgQElucHV0KCkgdGh5Q29sbGFwc2VkV2lkdGggPSAyMDtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeVRoZW1lKHZhbHVlOiBUaHlTaWRlYmFyVGhlbWUpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSAnbGlnaHQnKSB7XG4gICAgICAgICAgICB0aGlzLnNpZGViYXJUaGVtZUxpZ2h0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gJ2RhcmsnKSB7XG4gICAgICAgICAgICB0aGlzLnNpZGViYXJUaGVtZURhcmsgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zaWRlYmFyLWNvbGxhcHNlLXNob3cnKVxuICAgIGdldCBjb2xsYXBzZVZpc2liaWxpdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoeUNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJlbW92ZS10cmFuc2l0aW9uJylcbiAgICBnZXQgcmVtb3ZlVHJhbnNpdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNSZW1vdmVUcmFuc2l0aW9uO1xuICAgIH1cblxuICAgIGNvbGxhcHNlVGlwOiBzdHJpbmc7XG5cbiAgICBpc0NvbGxhcHNlZCA9IGZhbHNlO1xuXG4gICAgb3JpZ2luV2lkdGg6IG51bWJlciA9IFNJREVCQVJfREVGQVVMVF9XSURUSDtcblxuICAgIGNvbGxhcHNlVmlzaWJsZTogYm9vbGVhbjtcblxuICAgIGNvbGxhcHNlSGlkZGVuOiBib29sZWFuO1xuXG4gICAgaXNSZW1vdmVUcmFuc2l0aW9uOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEhvc3QoKSBwcml2YXRlIHRoeUxheW91dENvbXBvbmVudDogVGh5TGF5b3V0Q29tcG9uZW50LCBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy50aHlMYXlvdXRDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudGh5TGF5b3V0Q29tcG9uZW50Lmhhc1NpZGViYXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlQ29sbGFwc2VUaXAoKTtcbiAgICB9XG5cbiAgICByZXNpemVIYW5kbGVyKHsgd2lkdGggfTogVGh5UmVzaXplRXZlbnQpIHtcbiAgICAgICAgaWYgKHdpZHRoID09PSB0aGlzLnRoeUxheW91dFNpZGViYXJXaWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnRoeUNvbGxhcHNpYmxlICYmIHdpZHRoIDwgdGhpcy50aHlDb2xsYXBzZWRXaWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnRoeUNvbGxhcHNpYmxlICYmIHdpZHRoID09PSB0aGlzLnRoeUNvbGxhcHNlZFdpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLnRoeUNvbGxhcHNlZCA9IHRydWU7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlQ29sbGFwc2VUaXAoKSwgMjAwKTtcbiAgICAgICAgICAgIHRoaXMudGh5Q29sbGFwc2VkQ2hhbmdlLmVtaXQodGhpcy5pc0NvbGxhcHNlZCk7XG4gICAgICAgICAgICB0aGlzLnRoeUxheW91dFNpZGViYXJXaWR0aCA9IHRoaXMub3JpZ2luV2lkdGg7XG4gICAgICAgICAgICB0aGlzLmNvbGxhcHNlVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGh5TGF5b3V0U2lkZWJhcldpZHRoID0gd2lkdGg7XG4gICAgICAgIHRoaXMudGh5RHJhZ1dpZHRoQ2hhbmdlLmVtaXQod2lkdGgpO1xuICAgIH1cblxuICAgIHJlc2l6ZVN0YXJ0KCkge1xuICAgICAgICB0aGlzLm9yaWdpbldpZHRoID0gdGhpcy50aHlMYXlvdXRTaWRlYmFyV2lkdGg7XG4gICAgICAgIHRoaXMuY29sbGFwc2VIaWRkZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLmlzUmVtb3ZlVHJhbnNpdGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgcmVzaXplRW5kKCkge1xuICAgICAgICB0aGlzLmNvbGxhcHNlSGlkZGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNSZW1vdmVUcmFuc2l0aW9uID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmVzaXplSGFuZGxlSG92ZXIoZXZlbnQ6IE1vdXNlRXZlbnQsIHR5cGU6ICdlbnRlcicgfCAnbGVhdmUnKSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2VWaXNpYmxlID0gdHlwZSA9PT0gJ2VudGVyJyA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUNvbGxhcHNlVGlwKCkge1xuICAgICAgICB0aGlzLmNvbGxhcHNlVGlwID0gdGhpcy50aHlDb2xsYXBzZWQgPyAn5bGV5byAJyA6ICfmlLbotbcnO1xuICAgIH1cblxuICAgIHRvZ2dsZUNvbGxhcHNlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMudGh5Q29sbGFwc2VkID0gIXRoaXMudGh5Q29sbGFwc2VkO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlQ29sbGFwc2VUaXAoKSwgMjAwKTtcbiAgICAgICAgdGhpcy50aHlDb2xsYXBzZWRDaGFuZ2UuZW1pdCh0aGlzLmlzQ29sbGFwc2VkKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -102,7 +102,9 @@ export class ThyNavComponent extends _MixinBase {
|
|
|
102
102
|
this.updateHostClass.updateClass(classNames);
|
|
103
103
|
}
|
|
104
104
|
ngOnInit() {
|
|
105
|
-
this.
|
|
105
|
+
if (!this.thyResponsive) {
|
|
106
|
+
this.initialized = true;
|
|
107
|
+
}
|
|
106
108
|
this.updateClasses();
|
|
107
109
|
}
|
|
108
110
|
ngAfterViewInit() {
|
|
@@ -176,6 +178,7 @@ export class ThyNavComponent extends _MixinBase {
|
|
|
176
178
|
item.setNavLinkHidden(true);
|
|
177
179
|
});
|
|
178
180
|
this.showMore = this.hiddenItems.length > 0;
|
|
181
|
+
this.initialized = true;
|
|
179
182
|
}
|
|
180
183
|
getShowItemsEndIndexWhenHorizontal(tabs) {
|
|
181
184
|
const tabsLength = tabs.length;
|
|
@@ -251,7 +254,7 @@ export class ThyNavComponent extends _MixinBase {
|
|
|
251
254
|
}
|
|
252
255
|
}
|
|
253
256
|
ThyNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThyNavComponent, deps: [{ token: i1.UpdateHostClassService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i2.ThyPopover }], target: i0.ɵɵFactoryTarget.Component });
|
|
254
|
-
ThyNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ThyNavComponent, selector: "thy-nav", inputs: { thyType: "thyType", thySize: "thySize", thyHorizontal: "thyHorizontal", thyVertical: "thyVertical", thyFill: "thyFill", thyResponsive: "thyResponsive", thyExtra: "thyExtra" }, host: { properties: { "class.thy-nav--vertical": "this.thyVertical", "class.thy-nav--fill": "this.thyFill" }, classAttribute: "thy-nav" }, providers: [UpdateHostClassService], queries: [{ propertyName: "moreOperation", first: true, predicate: ["more"], descendants: true }, { propertyName: "morePopover", first: true, predicate: ["morePopover"], descendants: true }, { propertyName: "extra", first: true, predicate: ["extra"], descendants: true }, { propertyName: "links", predicate: ThyNavItemDirective, descendants: true }], viewQueries: [{ propertyName: "defaultMoreOperation", first: true, predicate: ["moreOperationContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"thy-nav-list\" [ngClass]=\"horizontal ? 'justify-content-' + horizontal : ''\" #navList>\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <a\n *ngIf=\"thyResponsive\"\n href=\"javascript:;\"\n class=\"thy-nav-more-container\"\n [class.d-none]=\"!showMore\"\n #moreOperationContainer\n thyNavLink\n [thyNavLinkActive]=\"moreActive\"\n (click)=\"openMore($event, navListPopover)\"\n >\n <ng-container *ngIf=\"moreOperation; else defaultMoreOperation\" [ngTemplateOutlet]=\"moreOperation\"></ng-container>\n <ng-template #defaultMoreOperation>\n \u66F4\u591A\n <thy-icon thyIconName=\"angle-down\" class=\"thy-nav-more-icon\"></thy-icon>\n </ng-template>\n </a>\n</div>\n\n<ng-template #navListPopover>\n <ng-container\n *ngIf=\"morePopover; else default\"\n [ngTemplateOutlet]=\"morePopover\"\n [ngTemplateOutletContext]=\"{ $implicit: hiddenItems }\"\n ></ng-container>\n <ng-template #default>\n <thy-action-menu>\n <ng-container *ngFor=\"let item of hiddenItems\">\n <span\n class=\"thy-nav-item-more\"\n thyActionMenuItem\n [thyActionMenuItemActive]=\"item.isActive\"\n (click)=\"navItemClick(item)\"\n [innerHTML]=\"item.elementRef.nativeElement.innerHTML | bypassSecurityTrustHtml\"\n ></span>\n </ng-container>\n </thy-action-menu>\n </ng-template>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n\n<div *ngIf=\"thyExtra || extra\" class=\"thy-nav-extra\">\n <ng-container [ngTemplateOutlet]=\"thyExtra || extra\"></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "component", type: i5.ThyActionMenuComponent, selector: "thy-action-menu", inputs: ["thyTheme", "thyWidth"] }, { kind: "directive", type: i5.ThyActionMenuItemDirective, selector: "[thyActionMenuItem]", inputs: ["thyDisabled", "thyType"] }, { kind: "directive", type: i5.ThyActionMenuItemActiveDirective, selector: "[thyActionMenuItemActive]", inputs: ["thyActionMenuItemActive"] }, { kind: "directive", type: i6.ThyNavItemDirective, selector: "[thyNavLink],[thyNavItem]", inputs: ["thyNavItemActive", "thyNavLinkActive", "thyNavItemDisabled"] }, { kind: "pipe", type: i7.BypassSecurityTrustHtmlPipe, name: "bypassSecurityTrustHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
257
|
+
ThyNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ThyNavComponent, selector: "thy-nav", inputs: { thyType: "thyType", thySize: "thySize", thyHorizontal: "thyHorizontal", thyVertical: "thyVertical", thyFill: "thyFill", thyResponsive: "thyResponsive", thyExtra: "thyExtra" }, host: { properties: { "class.thy-nav--vertical": "this.thyVertical", "class.thy-nav--fill": "this.thyFill" }, classAttribute: "thy-nav" }, providers: [UpdateHostClassService], queries: [{ propertyName: "moreOperation", first: true, predicate: ["more"], descendants: true }, { propertyName: "morePopover", first: true, predicate: ["morePopover"], descendants: true }, { propertyName: "extra", first: true, predicate: ["extra"], descendants: true }, { propertyName: "links", predicate: ThyNavItemDirective, descendants: true }], viewQueries: [{ propertyName: "defaultMoreOperation", first: true, predicate: ["moreOperationContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"thy-nav-list\" [ngClass]=\"horizontal ? 'justify-content-' + horizontal : ''\" #navList>\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <a\n *ngIf=\"thyResponsive\"\n href=\"javascript:;\"\n class=\"thy-nav-more-container\"\n [class.d-none]=\"!showMore\"\n [class.invisible]=\"!initialized\"\n #moreOperationContainer\n thyNavLink\n [thyNavLinkActive]=\"moreActive\"\n (click)=\"openMore($event, navListPopover)\"\n >\n <ng-container *ngIf=\"moreOperation; else defaultMoreOperation\" [ngTemplateOutlet]=\"moreOperation\"></ng-container>\n <ng-template #defaultMoreOperation>\n \u66F4\u591A\n <thy-icon thyIconName=\"angle-down\" class=\"thy-nav-more-icon\"></thy-icon>\n </ng-template>\n </a>\n</div>\n\n<ng-template #navListPopover>\n <ng-container\n *ngIf=\"morePopover; else default\"\n [ngTemplateOutlet]=\"morePopover\"\n [ngTemplateOutletContext]=\"{ $implicit: hiddenItems }\"\n ></ng-container>\n <ng-template #default>\n <thy-action-menu>\n <ng-container *ngFor=\"let item of hiddenItems\">\n <span\n class=\"thy-nav-item-more\"\n thyActionMenuItem\n [thyActionMenuItemActive]=\"item.isActive\"\n (click)=\"navItemClick(item)\"\n [innerHTML]=\"item.elementRef.nativeElement.innerHTML | bypassSecurityTrustHtml\"\n ></span>\n </ng-container>\n </thy-action-menu>\n </ng-template>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n\n<div *ngIf=\"thyExtra || extra\" class=\"thy-nav-extra\">\n <ng-container [ngTemplateOutlet]=\"thyExtra || extra\"></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "component", type: i5.ThyActionMenuComponent, selector: "thy-action-menu", inputs: ["thyTheme", "thyWidth"] }, { kind: "directive", type: i5.ThyActionMenuItemDirective, selector: "[thyActionMenuItem]", inputs: ["thyDisabled", "thyType"] }, { kind: "directive", type: i5.ThyActionMenuItemActiveDirective, selector: "[thyActionMenuItemActive]", inputs: ["thyActionMenuItemActive"] }, { kind: "directive", type: i6.ThyNavItemDirective, selector: "[thyNavLink],[thyNavItem]", inputs: ["thyNavItemActive", "thyNavLinkActive", "thyNavItemDisabled"] }, { kind: "pipe", type: i7.BypassSecurityTrustHtmlPipe, name: "bypassSecurityTrustHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
255
258
|
__decorate([
|
|
256
259
|
InputBoolean(),
|
|
257
260
|
__metadata("design:type", Boolean)
|
|
@@ -268,7 +271,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
268
271
|
type: Component,
|
|
269
272
|
args: [{ selector: 'thy-nav', host: {
|
|
270
273
|
class: 'thy-nav'
|
|
271
|
-
}, providers: [UpdateHostClassService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"thy-nav-list\" [ngClass]=\"horizontal ? 'justify-content-' + horizontal : ''\" #navList>\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <a\n *ngIf=\"thyResponsive\"\n href=\"javascript:;\"\n class=\"thy-nav-more-container\"\n [class.d-none]=\"!showMore\"\n #moreOperationContainer\n thyNavLink\n [thyNavLinkActive]=\"moreActive\"\n (click)=\"openMore($event, navListPopover)\"\n >\n <ng-container *ngIf=\"moreOperation; else defaultMoreOperation\" [ngTemplateOutlet]=\"moreOperation\"></ng-container>\n <ng-template #defaultMoreOperation>\n \u66F4\u591A\n <thy-icon thyIconName=\"angle-down\" class=\"thy-nav-more-icon\"></thy-icon>\n </ng-template>\n </a>\n</div>\n\n<ng-template #navListPopover>\n <ng-container\n *ngIf=\"morePopover; else default\"\n [ngTemplateOutlet]=\"morePopover\"\n [ngTemplateOutletContext]=\"{ $implicit: hiddenItems }\"\n ></ng-container>\n <ng-template #default>\n <thy-action-menu>\n <ng-container *ngFor=\"let item of hiddenItems\">\n <span\n class=\"thy-nav-item-more\"\n thyActionMenuItem\n [thyActionMenuItemActive]=\"item.isActive\"\n (click)=\"navItemClick(item)\"\n [innerHTML]=\"item.elementRef.nativeElement.innerHTML | bypassSecurityTrustHtml\"\n ></span>\n </ng-container>\n </thy-action-menu>\n </ng-template>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n\n<div *ngIf=\"thyExtra || extra\" class=\"thy-nav-extra\">\n <ng-container [ngTemplateOutlet]=\"thyExtra || extra\"></ng-container>\n</div>\n" }]
|
|
274
|
+
}, providers: [UpdateHostClassService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"thy-nav-list\" [ngClass]=\"horizontal ? 'justify-content-' + horizontal : ''\" #navList>\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <a\n *ngIf=\"thyResponsive\"\n href=\"javascript:;\"\n class=\"thy-nav-more-container\"\n [class.d-none]=\"!showMore\"\n [class.invisible]=\"!initialized\"\n #moreOperationContainer\n thyNavLink\n [thyNavLinkActive]=\"moreActive\"\n (click)=\"openMore($event, navListPopover)\"\n >\n <ng-container *ngIf=\"moreOperation; else defaultMoreOperation\" [ngTemplateOutlet]=\"moreOperation\"></ng-container>\n <ng-template #defaultMoreOperation>\n \u66F4\u591A\n <thy-icon thyIconName=\"angle-down\" class=\"thy-nav-more-icon\"></thy-icon>\n </ng-template>\n </a>\n</div>\n\n<ng-template #navListPopover>\n <ng-container\n *ngIf=\"morePopover; else default\"\n [ngTemplateOutlet]=\"morePopover\"\n [ngTemplateOutletContext]=\"{ $implicit: hiddenItems }\"\n ></ng-container>\n <ng-template #default>\n <thy-action-menu>\n <ng-container *ngFor=\"let item of hiddenItems\">\n <span\n class=\"thy-nav-item-more\"\n thyActionMenuItem\n [thyActionMenuItemActive]=\"item.isActive\"\n (click)=\"navItemClick(item)\"\n [innerHTML]=\"item.elementRef.nativeElement.innerHTML | bypassSecurityTrustHtml\"\n ></span>\n </ng-container>\n </thy-action-menu>\n </ng-template>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n\n<div *ngIf=\"thyExtra || extra\" class=\"thy-nav-extra\">\n <ng-container [ngTemplateOutlet]=\"thyExtra || extra\"></ng-container>\n</div>\n" }]
|
|
272
275
|
}], ctorParameters: function () { return [{ type: i1.UpdateHostClassService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i2.ThyPopover }]; }, propDecorators: { thyType: [{
|
|
273
276
|
type: Input
|
|
274
277
|
}], thySize: [{
|
|
@@ -305,4 +308,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
305
308
|
type: ViewChild,
|
|
306
309
|
args: ['moreOperationContainer']
|
|
307
310
|
}] } });
|
|
308
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYXYvbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9uYXYvbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWUsWUFBWSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBa0Isc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqSSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9ELE9BQU8sRUFJSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFHTixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7O0FBRTNELE1BQU0sVUFBVSxHQUFtRCxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQU0vRixNQUFNLGlCQUFpQixHQUFHO0lBQ3RCLE1BQU0sRUFBRSxDQUFDLGdCQUFnQixDQUFDO0lBQzFCLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQztJQUN0QixLQUFLLEVBQUUsQ0FBQyxlQUFlLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDO0lBQ3RCLFVBQVU7SUFDVixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztJQUM1QixTQUFTLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztJ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QUFFO2dCQU1yQyxhQUFhO3NCQUFsQyxZQUFZO3VCQUFDLE1BQU07Z0JBTVMsV0FBVztzQkFBdkMsWUFBWTt1QkFBQyxhQUFhO2dCQU9KLEtBQUs7c0JBQTNCLFlBQVk7dUJBQUMsT0FBTztnQkFFZ0Isb0JBQW9CO3NCQUF4RCxTQUFTO3VCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdG9yLCBJbnB1dEJvb2xlYW4sIE1peGluQmFzZSwgbWl4aW5VbnN1YnNjcmliZSwgVGh5VW5zdWJzY3JpYmUsIFVwZGF0ZUhvc3RDbGFzc1NlcnZpY2UgfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudENoZWNrZWQsXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVGh5TmF2SXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vbmF2LWl0ZW0uZGlyZWN0aXZlJztcblxuY29uc3QgX01peGluQmFzZTogQ29uc3RydWN0b3I8VGh5VW5zdWJzY3JpYmU+ICYgdHlwZW9mIE1peGluQmFzZSA9IG1peGluVW5zdWJzY3JpYmUoTWl4aW5CYXNlKTtcblxuZXhwb3J0IHR5cGUgVGh5TmF2VHlwZSA9ICdwdWxsZWQnIHwgJ3RhYnMnIHwgJ3BpbGxzJyB8ICdsaXRlJyB8ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgJ3RoaXJkbHknIHwgJ3NlY29uZGFyeS1kaXZpZGVyJztcbmV4cG9ydCB0eXBlIFRoeU5hdlNpemUgPSAnbGcnIHwgJ21kJyB8ICdzbSc7XG5leHBvcnQgdHlwZSBUaHlOYXZIb3Jpem9udGFsID0gJycgfCAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJztcblxuY29uc3QgbmF2VHlwZUNsYXNzZXNNYXAgPSB7XG4gICAgcHVsbGVkOiBbJ3RoeS1uYXYtcHVsbGVkJ10sXG4gICAgdGFiczogWyd0aHktbmF2LXRhYnMnXSxcbiAgICBwaWxsczogWyd0aHktbmF2LXBpbGxzJ10sXG4gICAgbGl0ZTogWyd0aHktbmF2LWxpdGUnXSxcbiAgICAvL+WmguS4i+exu+Wei+W3sue7j+W6n+W8g1xuICAgIHByaW1hcnk6IFsndGh5LW5hdi1wcmltYXJ5J10sXG4gICAgc2Vjb25kYXJ5OiBbJ3RoeS1uYXYtc2Vjb25kYXJ5J10sXG4gICAgdGhpcmRseTogWyd0aHktbmF2LXRoaXJkbHknXSxcbiAgICAnc2Vjb25kYXJ5LWRpdmlkZXInOiBbJ3RoeS1uYXYtc2Vjb25kYXJ5LWRpdmlkZXInXVxufTtcblxuY29uc3QgbmF2U2l6ZUNsYXNzZXNNYXAgPSB7XG4gICAgbGc6ICd0aHktbmF2LWxnJyxcbiAgICBtZDogJ3RoeS1uYXYtbWQnLFxuICAgIHNtOiAndGh5LW5hdi1zbSdcbn07XG5cbmNvbnN0IHRhYkl0ZW1SaWdodCA9IDIwO1xuXG4vKipcbiAqIOWvvOiIque7hOS7tlxuICogQG5hbWUgdGh5LW5hdlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1uYXYnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uYXYuY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aHktbmF2J1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbVXBkYXRlSG9zdENsYXNzU2VydmljZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGh5TmF2Q29tcG9uZW50IGV4dGVuZHMgX01peGluQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHR5cGU6IFRoeU5hdlR5cGUgPSAncHVsbGVkJztcbiAgICBwcml2YXRlIHNpemU6IFRoeU5hdlNpemUgPSAnbWQnO1xuICAgIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBob3Jpem9udGFsOiBUaHlOYXZIb3Jpem9udGFsO1xuICAgIHB1YmxpYyB3cmFwcGVyT2Zmc2V0OiB7IGhlaWdodDogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBsZWZ0OiBudW1iZXI7IHRvcDogbnVtYmVyIH0gPSB7XG4gICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIHRvcDogMFxuICAgIH07XG5cbiAgICBwdWJsaWMgaGlkZGVuSXRlbXM6IFRoeU5hdkl0ZW1EaXJlY3RpdmVbXSA9IFtdO1xuXG4gICAgcHVibGljIG1vcmVBY3RpdmU6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgc2hvd01vcmUgPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSBtb3JlQnRuT2Zmc2V0OiB7IGhlaWdodDogbnVtYmVyOyB3aWR0aDogbnVtYmVyIH0gPSB7IGhlaWdodDogMCwgd2lkdGg6IDAgfTtcblxuICAgIC8qKlxuICAgICAqIOWvvOiIquexu+Wei1xuICAgICAqIEBkZWZhdWx0IHB1bGxlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeVR5cGUodHlwZTogVGh5TmF2VHlwZSkge1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlIHx8ICdwdWxsZWQnO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDbGFzc2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICog5a+86Iiq5aSn5bCPXG4gICAgICogQHR5cGUgXCJsZ1wiIHwgXCJtZFwiIHwgXCJzbVwiXG4gICAgICogQGRlZmF1bHQgbWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlTaXplKHNpemU6IFRoeU5hdlNpemUpIHtcbiAgICAgICAgdGhpcy5zaXplID0gc2l6ZTtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2xhc3NlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5rC05bmz5o6S5YiXXG4gICAgICogQHR5cGUgXCJzdGFydFwiIHwgXCJjZW50ZXJcIiB8IFwiZW5kXCJcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUhvcml6b250YWwoaG9yaXpvbnRhbDogVGh5TmF2SG9yaXpvbnRhbCkge1xuICAgICAgICB0aGlzLmhvcml6b250YWwgPSAoaG9yaXpvbnRhbCBhcyBzdHJpbmcpID09PSAncmlnaHQnID8gJ2VuZCcgOiBob3Jpem9udGFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWeguebtOaOkuWIl1xuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktbmF2LS12ZXJ0aWNhbCcpXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICB0aHlWZXJ0aWNhbDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOWhq+WFheaooeW8j1xuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktbmF2LS1maWxsJylcbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIHRoeUZpbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOWTjeW6lOW8j++8jOiHquWKqOiuoeeul+WuveW6puWtmOaUviB0aHlOYXZJdGVt77yM5bm25re75Yqg5pu05aSa5by55qGGXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICB0aHlSZXNwb25zaXZlOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5Y+z5L6n6aKd5aSW5Yy65Z+f5qih5p2/XG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlFeHRyYTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVGh5TmF2SXRlbURpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBsaW5rczogUXVlcnlMaXN0PFRoeU5hdkl0ZW1EaXJlY3RpdmU+O1xuXG4gICAgLyoqXG4gICAgICog5ZON5bqU5byP5qih5byP5LiL5pu05aSa5pON5L2c5qih5p2/XG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdtb3JlJykgbW9yZU9wZXJhdGlvbjogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgICAvKipcbiAgICAgKiDlk43lupTlvI/mqKHlvI/kuIvmm7TlpJrlvLnmoYbmqKHmnb9cbiAgICAgKiBAdHlwZSBUZW1wbGF0ZVJlZlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ21vcmVQb3BvdmVyJykgbW9yZVBvcG92ZXI6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gICAgLyoqXG4gICAgICog5Y+z5L6n6aKd5aSW5Yy65Z+f5qih5p2/77yM5pSv5oyBIHRoeUV4dHJhIOS8oOWPguWSjCA8bmctdGVtcGxhdGUgI2V4dHJhPjwvbmctdGVtcGxhdGU+IOaooeadv1xuICAgICAqIEBuYW1lIGV4dHJhXG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdleHRyYScpIGV4dHJhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAgIEBWaWV3Q2hpbGQoJ21vcmVPcGVyYXRpb25Db250YWluZXInKSBkZWZhdWx0TW9yZU9wZXJhdGlvbjogRWxlbWVudFJlZjxIVE1MQW5jaG9yRWxlbWVudD47XG5cbiAgICBwcml2YXRlIHVwZGF0ZUNsYXNzZXMoKSB7XG4gICAgICAgIGxldCBjbGFzc05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBpZiAobmF2VHlwZUNsYXNzZXNNYXBbdGhpcy50eXBlXSkge1xuICAgICAgICAgICAgY2xhc3NOYW1lcyA9IFsuLi5uYXZUeXBlQ2xhc3Nlc01hcFt0aGlzLnR5cGVdXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmF2U2l6ZUNsYXNzZXNNYXBbdGhpcy5zaXplXSkge1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5wdXNoKG5hdlNpemVDbGFzc2VzTWFwW3RoaXMuc2l6ZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlSG9zdENsYXNzLnVwZGF0ZUNsYXNzKGNsYXNzTmFtZXMpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHVwZGF0ZUhvc3RDbGFzczogVXBkYXRlSG9zdENsYXNzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBwb3BvdmVyOiBUaHlQb3BvdmVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudXBkYXRlSG9zdENsYXNzLmluaXRpYWxpemVFbGVtZW50KGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNsYXNzZXMoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeVJlc3BvbnNpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0TW9yZUJ0bk9mZnNldCgpO1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubGlua3MudG9BcnJheSgpLmZvckVhY2gobGluayA9PiBsaW5rLnNldE9mZnNldCgpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEhpZGRlbkl0ZW1zKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIG1lcmdlKHRoaXMubGlua3MuY2hhbmdlcywgdGhpcy5jcmVhdGVSZXNpemVPYnNlcnZlcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkucGlwZShkZWJvdW5jZVRpbWUoMTAwKSkpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U2l6ZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SGlkZGVuSXRlbXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlTW9yZUlzQWN0aXZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRoeVJlc3BvbnNpdmUpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U2l6ZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZU1vcmVJc0FjdGl2ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TW9yZUJ0bk9mZnNldCgpIHtcbiAgICAgICAgdGhpcy5tb3JlQnRuT2Zmc2V0ID0ge1xuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLmRlZmF1bHRNb3JlT3BlcmF0aW9uPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5kZWZhdWx0TW9yZU9wZXJhdGlvbj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjcmVhdGVSZXNpemVPYnNlcnZlcihlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgPyBvZihudWxsKVxuICAgICAgICAgICAgOiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXNpemUgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZW50cmllcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChlbnRyaWVzKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgcmVzaXplLm9ic2VydmUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZS5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZU1vcmVJc0FjdGl2ZSgpIHtcbiAgICAgICAgdGhpcy5tb3JlQWN0aXZlID0gdGhpcy5oaWRkZW5JdGVtcy5zb21lKGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubGlua0lzQWN0aXZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEhpZGRlbkl0ZW1zKCkge1xuICAgICAgICB0aGlzLm1vcmVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgdGFicyA9IHRoaXMubGlua3MudG9BcnJheSgpO1xuICAgICAgICBpZiAoIXRhYnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGRlbkl0ZW1zID0gW107XG4gICAgICAgICAgICB0aGlzLnNob3dNb3JlID0gdGhpcy5oaWRkZW5JdGVtcy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW5kSW5kZXggPSB0aGlzLnRoeVZlcnRpY2FsID8gdGhpcy5nZXRTaG93SXRlbXNFbmRJbmRleFdoZW5WZXJ0aWNhbCh0YWJzKSA6IHRoaXMuZ2V0U2hvd0l0ZW1zRW5kSW5kZXhXaGVuSG9yaXpvbnRhbCh0YWJzKTtcblxuICAgICAgICBjb25zdCBzaG93SXRlbXMgPSB0YWJzLnNsaWNlKDAsIGVuZEluZGV4ICsgMSk7XG4gICAgICAgIChzaG93SXRlbXMgfHwgW10pLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLnNldE5hdkxpbmtIaWRkZW4oZmFsc2UpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmhpZGRlbkl0ZW1zID0gZW5kSW5kZXggPT09IHRhYnMubGVuZ3RoIC0gMSA/IFtdIDogdGFicy5zbGljZShlbmRJbmRleCArIDEpO1xuICAgICAgICAodGhpcy5oaWRkZW5JdGVtcyB8fCBbXSkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGl0ZW0uc2V0TmF2TGlua0hpZGRlbih0cnVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zaG93TW9yZSA9IHRoaXMuaGlkZGVuSXRlbXMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNob3dJdGVtc0VuZEluZGV4V2hlbkhvcml6b250YWwodGFiczogVGh5TmF2SXRlbURpcmVjdGl2ZVtdKSB7XG4gICAgICAgIGNvbnN0IHRhYnNMZW5ndGggPSB0YWJzLmxlbmd0aDtcbiAgICAgICAgbGV0IGVuZEluZGV4ID0gdGFic0xlbmd0aDtcbiAgICAgICAgbGV0IHRvdGFsV2lkdGggPSAwO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFic0xlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBjb25zdCBfdG90YWxXaWR0aCA9IGkgPT09IHRhYnNMZW5ndGggLSAxID8gdG90YWxXaWR0aCArIHRhYnNbaV0ub2Zmc2V0LndpZHRoIDogdG90YWxXaWR0aCArIHRhYnNbaV0ub2Zmc2V0LndpZHRoICsgdGFiSXRlbVJpZ2h0O1xuICAgICAgICAgICAgaWYgKF90b3RhbFdpZHRoID4gdGhpcy53cmFwcGVyT2Zmc2V0LndpZHRoKSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vcmVPcGVyYXRpb25XaWR0aCA9IHRoaXMubW9yZUJ0bk9mZnNldC53aWR0aDtcbiAgICAgICAgICAgICAgICBpZiAodG90YWxXaWR0aCArIG1vcmVPcGVyYXRpb25XaWR0aCA8PSB0aGlzLndyYXBwZXJPZmZzZXQud2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBpIC0gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlbmRJbmRleCA9IGkgLSAyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdG90YWxXaWR0aCA9IF90b3RhbFdpZHRoO1xuICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW5kSW5kZXg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTaG93SXRlbXNFbmRJbmRleFdoZW5WZXJ0aWNhbCh0YWJzOiBUaHlOYXZJdGVtRGlyZWN0aXZlW10pIHtcbiAgICAgICAgY29uc3QgdGFic0xlbmd0aCA9IHRhYnMubGVuZ3RoO1xuICAgICAgICBsZXQgZW5kSW5kZXggPSB0YWJzTGVuZ3RoO1xuICAgICAgICBsZXQgdG90YWxIZWlnaHQgPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYnNMZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgY29uc3QgX3RvdGFsSGVpZ2h0ID0gdG90YWxIZWlnaHQgKyB0YWJzW2ldLm9mZnNldC5oZWlnaHQ7XG4gICAgICAgICAgICBpZiAoX3RvdGFsSGVpZ2h0ID4gdGhpcy53cmFwcGVyT2Zmc2V0LmhlaWdodCkge1xuICAgICAgICAgICAgICAgIGxldCBtb3JlT3BlcmF0aW9uSGVpZ2h0ID0gdGhpcy5tb3JlQnRuT2Zmc2V0LmhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAodG90YWxIZWlnaHQgKyBtb3JlT3BlcmF0aW9uSGVpZ2h0IDw9IHRoaXMud3JhcHBlck9mZnNldC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBpIC0gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlbmRJbmRleCA9IGkgLSAyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdG90YWxIZWlnaHQgPSBfdG90YWxIZWlnaHQ7XG4gICAgICAgICAgICAgICAgZW5kSW5kZXggPSBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbmRJbmRleDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0U2l6ZXMoKSB7XG4gICAgICAgIHRoaXMud3JhcHBlck9mZnNldCA9IHtcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDAsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMCxcbiAgICAgICAgICAgIGxlZnQ6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQgfHwgMCxcbiAgICAgICAgICAgIHRvcDogdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wIHx8IDBcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBvcGVuTW9yZShldmVudDogRXZlbnQsIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIHRoaXMucG9wb3Zlci5vcGVuKHRlbXBsYXRlLCB7XG4gICAgICAgICAgICBvcmlnaW46IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xvc2FibGU6IHRydWUsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiAndGh5LW5hdi1saXN0LXBvcG92ZXInLFxuICAgICAgICAgICAgb3JpZ2luQWN0aXZlQ2xhc3M6ICd0aHktbmF2LW9yaWdpbi1hY3RpdmUnXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5hdkl0ZW1DbGljayhpdGVtOiBUaHlOYXZJdGVtRGlyZWN0aXZlKSB7XG4gICAgICAgIGl0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRoeS1uYXYtbGlzdFwiIFtuZ0NsYXNzXT1cImhvcml6b250YWwgPyAnanVzdGlmeS1jb250ZW50LScgKyBob3Jpem9udGFsIDogJydcIiAjbmF2TGlzdD5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gIDxhXG4gICAgKm5nSWY9XCJ0aHlSZXNwb25zaXZlXCJcbiAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICBjbGFzcz1cInRoeS1uYXYtbW9yZS1jb250YWluZXJcIlxuICAgIFtjbGFzcy5kLW5vbmVdPVwiIXNob3dNb3JlXCJcbiAgICAjbW9yZU9wZXJhdGlvbkNvbnRhaW5lclxuICAgIHRoeU5hdkxpbmtcbiAgICBbdGh5TmF2TGlua0FjdGl2ZV09XCJtb3JlQWN0aXZlXCJcbiAgICAoY2xpY2spPVwib3Blbk1vcmUoJGV2ZW50LCBuYXZMaXN0UG9wb3ZlcilcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vcmVPcGVyYXRpb247IGVsc2UgZGVmYXVsdE1vcmVPcGVyYXRpb25cIiBbbmdUZW1wbGF0ZU91dGxldF09XCJtb3JlT3BlcmF0aW9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TW9yZU9wZXJhdGlvbj5cbiAgICAgIOabtOWkmlxuICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtZG93blwiIGNsYXNzPVwidGh5LW5hdi1tb3JlLWljb25cIj48L3RoeS1pY29uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvYT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI25hdkxpc3RQb3BvdmVyPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJtb3JlUG9wb3ZlcjsgZWxzZSBkZWZhdWx0XCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJtb3JlUG9wb3ZlclwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBoaWRkZW5JdGVtcyB9XCJcbiAgPjwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHQ+XG4gICAgPHRoeS1hY3Rpb24tbWVudT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaGlkZGVuSXRlbXNcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInRoeS1uYXYtaXRlbS1tb3JlXCJcbiAgICAgICAgICB0aHlBY3Rpb25NZW51SXRlbVxuICAgICAgICAgIFt0aHlBY3Rpb25NZW51SXRlbUFjdGl2ZV09XCJpdGVtLmlzQWN0aXZlXCJcbiAgICAgICAgICAoY2xpY2spPVwibmF2SXRlbUNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCB8IGJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGh5LWFjdGlvbi1tZW51PlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50PlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48ZGl2ICpuZ0lmPVwidGh5RXh0cmEgfHwgZXh0cmFcIiBjbGFzcz1cInRoeS1uYXYtZXh0cmFcIj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aHlFeHRyYSB8fCBleHRyYVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|
|
311
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYXYvbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9uYXYvbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWUsWUFBWSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBa0Isc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqSSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9ELE9BQU8sRUFJSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFHTixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7O0FBRTNELE1BQU0sVUFBVSxHQUFtRCxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQU0vRixNQUFNLGlCQUFpQixHQUFHO0lBQ3RCLE1BQU0sRUFBRSxDQUFDLGdCQUFnQixDQUFDO0lBQzFCLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQztJQUN0QixLQUFLLEVBQUUsQ0FBQyxlQUFlLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDO0lBQ3RCLFVBQVU7SUFDVixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztJQUM1QixTQUFTLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztJ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UTtzQkFBaEIsS0FBSztnQkFLdUQsS0FBSztzQkFBakUsZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBTXJDLGFBQWE7c0JBQWxDLFlBQVk7dUJBQUMsTUFBTTtnQkFNUyxXQUFXO3NCQUF2QyxZQUFZO3VCQUFDLGFBQWE7Z0JBT0osS0FBSztzQkFBM0IsWUFBWTt1QkFBQyxPQUFPO2dCQUVnQixvQkFBb0I7c0JBQXhELFNBQVM7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0b3IsIElucHV0Qm9vbGVhbiwgTWl4aW5CYXNlLCBtaXhpblVuc3Vic2NyaWJlLCBUaHlVbnN1YnNjcmliZSwgVXBkYXRlSG9zdENsYXNzU2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyIH0gZnJvbSAnbmd4LXRldGh5cy9wb3BvdmVyJztcbmltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUaHlOYXZJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9uYXYtaXRlbS5kaXJlY3RpdmUnO1xuXG5jb25zdCBfTWl4aW5CYXNlOiBDb25zdHJ1Y3RvcjxUaHlVbnN1YnNjcmliZT4gJiB0eXBlb2YgTWl4aW5CYXNlID0gbWl4aW5VbnN1YnNjcmliZShNaXhpbkJhc2UpO1xuXG5leHBvcnQgdHlwZSBUaHlOYXZUeXBlID0gJ3B1bGxlZCcgfCAndGFicycgfCAncGlsbHMnIHwgJ2xpdGUnIHwgJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAndGhpcmRseScgfCAnc2Vjb25kYXJ5LWRpdmlkZXInO1xuZXhwb3J0IHR5cGUgVGh5TmF2U2l6ZSA9ICdsZycgfCAnbWQnIHwgJ3NtJztcbmV4cG9ydCB0eXBlIFRoeU5hdkhvcml6b250YWwgPSAnJyB8ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuXG5jb25zdCBuYXZUeXBlQ2xhc3Nlc01hcCA9IHtcbiAgICBwdWxsZWQ6IFsndGh5LW5hdi1wdWxsZWQnXSxcbiAgICB0YWJzOiBbJ3RoeS1uYXYtdGFicyddLFxuICAgIHBpbGxzOiBbJ3RoeS1uYXYtcGlsbHMnXSxcbiAgICBsaXRlOiBbJ3RoeS1uYXYtbGl0ZSddLFxuICAgIC8v5aaC5LiL57G75Z6L5bey57uP5bqf5byDXG4gICAgcHJpbWFyeTogWyd0aHktbmF2LXByaW1hcnknXSxcbiAgICBzZWNvbmRhcnk6IFsndGh5LW5hdi1zZWNvbmRhcnknXSxcbiAgICB0aGlyZGx5OiBbJ3RoeS1uYXYtdGhpcmRseSddLFxuICAgICdzZWNvbmRhcnktZGl2aWRlcic6IFsndGh5LW5hdi1zZWNvbmRhcnktZGl2aWRlciddXG59O1xuXG5jb25zdCBuYXZTaXplQ2xhc3Nlc01hcCA9IHtcbiAgICBsZzogJ3RoeS1uYXYtbGcnLFxuICAgIG1kOiAndGh5LW5hdi1tZCcsXG4gICAgc206ICd0aHktbmF2LXNtJ1xufTtcblxuY29uc3QgdGFiSXRlbVJpZ2h0ID0gMjA7XG5cbi8qKlxuICog5a+86Iiq57uE5Lu2XG4gKiBAbmFtZSB0aHktbmF2XG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LW5hdicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25hdi5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoeS1uYXYnXG4gICAgfSxcbiAgICBwcm92aWRlcnM6IFtVcGRhdGVIb3N0Q2xhc3NTZXJ2aWNlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaHlOYXZDb21wb25lbnQgZXh0ZW5kcyBfTWl4aW5CYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlckNvbnRlbnRDaGVja2VkLCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgdHlwZTogVGh5TmF2VHlwZSA9ICdwdWxsZWQnO1xuICAgIHByaXZhdGUgc2l6ZTogVGh5TmF2U2l6ZSA9ICdtZCc7XG4gICAgcHVibGljIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaG9yaXpvbnRhbDogVGh5TmF2SG9yaXpvbnRhbDtcbiAgICBwdWJsaWMgd3JhcHBlck9mZnNldDogeyBoZWlnaHQ6IG51bWJlcjsgd2lkdGg6IG51bWJlcjsgbGVmdDogbnVtYmVyOyB0b3A6IG51bWJlciB9ID0ge1xuICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgIHdpZHRoOiAwLFxuICAgICAgICBsZWZ0OiAwLFxuICAgICAgICB0b3A6IDBcbiAgICB9O1xuXG4gICAgcHVibGljIGhpZGRlbkl0ZW1zOiBUaHlOYXZJdGVtRGlyZWN0aXZlW10gPSBbXTtcblxuICAgIHB1YmxpYyBtb3JlQWN0aXZlOiBib29sZWFuO1xuXG4gICAgcHVibGljIHNob3dNb3JlID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgbW9yZUJ0bk9mZnNldDogeyBoZWlnaHQ6IG51bWJlcjsgd2lkdGg6IG51bWJlciB9ID0geyBoZWlnaHQ6IDAsIHdpZHRoOiAwIH07XG5cbiAgICAvKipcbiAgICAgKiDlr7zoiKrnsbvlnotcbiAgICAgKiBAZGVmYXVsdCBwdWxsZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlUeXBlKHR5cGU6IFRoeU5hdlR5cGUpIHtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZSB8fCAncHVsbGVkJztcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2xhc3NlcygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOWvvOiIquWkp+Wwj1xuICAgICAqIEB0eXBlIFwibGdcIiB8IFwibWRcIiB8IFwic21cIlxuICAgICAqIEBkZWZhdWx0IG1kXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5U2l6ZShzaXplOiBUaHlOYXZTaXplKSB7XG4gICAgICAgIHRoaXMuc2l6ZSA9IHNpemU7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNsYXNzZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOawtOW5s+aOkuWIl1xuICAgICAqIEB0eXBlIFwic3RhcnRcIiB8IFwiY2VudGVyXCIgfCBcImVuZFwiXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlIb3Jpem9udGFsKGhvcml6b250YWw6IFRoeU5hdkhvcml6b250YWwpIHtcbiAgICAgICAgdGhpcy5ob3Jpem9udGFsID0gKGhvcml6b250YWwgYXMgc3RyaW5nKSA9PT0gJ3JpZ2h0JyA/ICdlbmQnIDogaG9yaXpvbnRhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblnoLnm7TmjpLliJdcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LW5hdi0tdmVydGljYWwnKVxuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgdGh5VmVydGljYWw6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDloavlhYXmqKHlvI9cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LW5hdi0tZmlsbCcpXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICB0aHlGaWxsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDlk43lupTlvI/vvIzoh6rliqjorqHnrpflrr3luqblrZjmlL4gdGh5TmF2SXRlbe+8jOW5tua3u+WKoOabtOWkmuW8ueahhlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgdGh5UmVzcG9uc2l2ZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOWPs+S+p+mineWkluWMuuWfn+aooeadv1xuICAgICAqIEB0eXBlIFRlbXBsYXRlUmVmXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5RXh0cmE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFRoeU5hdkl0ZW1EaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgbGlua3M6IFF1ZXJ5TGlzdDxUaHlOYXZJdGVtRGlyZWN0aXZlPjtcblxuICAgIC8qKlxuICAgICAqIOWTjeW6lOW8j+aooeW8j+S4i+abtOWkmuaTjeS9nOaooeadv1xuICAgICAqIEB0eXBlIFRlbXBsYXRlUmVmXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbW9yZScpIG1vcmVPcGVyYXRpb246IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gICAgLyoqXG4gICAgICog5ZON5bqU5byP5qih5byP5LiL5pu05aSa5by55qGG5qih5p2/XG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdtb3JlUG9wb3ZlcicpIG1vcmVQb3BvdmVyOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAgIC8qKlxuICAgICAqIOWPs+S+p+mineWkluWMuuWfn+aooeadv++8jOaUr+aMgSB0aHlFeHRyYSDkvKDlj4LlkowgPG5nLXRlbXBsYXRlICNleHRyYT48L25nLXRlbXBsYXRlPiDmqKHmnb9cbiAgICAgKiBAbmFtZSBleHRyYVxuICAgICAqIEB0eXBlIFRlbXBsYXRlUmVmXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZXh0cmEnKSBleHRyYTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgICBAVmlld0NoaWxkKCdtb3JlT3BlcmF0aW9uQ29udGFpbmVyJykgZGVmYXVsdE1vcmVPcGVyYXRpb246IEVsZW1lbnRSZWY8SFRNTEFuY2hvckVsZW1lbnQ+O1xuXG4gICAgcHJpdmF0ZSB1cGRhdGVDbGFzc2VzKCkge1xuICAgICAgICBsZXQgY2xhc3NOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKG5hdlR5cGVDbGFzc2VzTWFwW3RoaXMudHlwZV0pIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMgPSBbLi4ubmF2VHlwZUNsYXNzZXNNYXBbdGhpcy50eXBlXV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hdlNpemVDbGFzc2VzTWFwW3RoaXMuc2l6ZV0pIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaChuYXZTaXplQ2xhc3Nlc01hcFt0aGlzLnNpemVdKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUhvc3RDbGFzcy51cGRhdGVDbGFzcyhjbGFzc05hbWVzKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB1cGRhdGVIb3N0Q2xhc3M6IFVwZGF0ZUhvc3RDbGFzc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcG9wb3ZlcjogVGh5UG9wb3ZlclxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnVwZGF0ZUhvc3RDbGFzcy5pbml0aWFsaXplRWxlbWVudChlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMudGh5UmVzcG9uc2l2ZSkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUNsYXNzZXMoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeVJlc3BvbnNpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0TW9yZUJ0bk9mZnNldCgpO1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubGlua3MudG9BcnJheSgpLmZvckVhY2gobGluayA9PiBsaW5rLnNldE9mZnNldCgpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEhpZGRlbkl0ZW1zKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIG1lcmdlKHRoaXMubGlua3MuY2hhbmdlcywgdGhpcy5jcmVhdGVSZXNpemVPYnNlcnZlcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkucGlwZShkZWJvdW5jZVRpbWUoMTAwKSkpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U2l6ZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SGlkZGVuSXRlbXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlTW9yZUlzQWN0aXZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRoeVJlc3BvbnNpdmUpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U2l6ZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZU1vcmVJc0FjdGl2ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TW9yZUJ0bk9mZnNldCgpIHtcbiAgICAgICAgdGhpcy5tb3JlQnRuT2Zmc2V0ID0ge1xuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLmRlZmF1bHRNb3JlT3BlcmF0aW9uPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5kZWZhdWx0TW9yZU9wZXJhdGlvbj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjcmVhdGVSZXNpemVPYnNlcnZlcihlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgPyBvZihudWxsKVxuICAgICAgICAgICAgOiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXNpemUgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZW50cmllcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChlbnRyaWVzKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgcmVzaXplLm9ic2VydmUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZS5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZU1vcmVJc0FjdGl2ZSgpIHtcbiAgICAgICAgdGhpcy5tb3JlQWN0aXZlID0gdGhpcy5oaWRkZW5JdGVtcy5zb21lKGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubGlua0lzQWN0aXZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEhpZGRlbkl0ZW1zKCkge1xuICAgICAgICB0aGlzLm1vcmVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgdGFicyA9IHRoaXMubGlua3MudG9BcnJheSgpO1xuICAgICAgICBpZiAoIXRhYnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGRlbkl0ZW1zID0gW107XG4gICAgICAgICAgICB0aGlzLnNob3dNb3JlID0gdGhpcy5oaWRkZW5JdGVtcy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW5kSW5kZXggPSB0aGlzLnRoeVZlcnRpY2FsID8gdGhpcy5nZXRTaG93SXRlbXNFbmRJbmRleFdoZW5WZXJ0aWNhbCh0YWJzKSA6IHRoaXMuZ2V0U2hvd0l0ZW1zRW5kSW5kZXhXaGVuSG9yaXpvbnRhbCh0YWJzKTtcblxuICAgICAgICBjb25zdCBzaG93SXRlbXMgPSB0YWJzLnNsaWNlKDAsIGVuZEluZGV4ICsgMSk7XG4gICAgICAgIChzaG93SXRlbXMgfHwgW10pLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLnNldE5hdkxpbmtIaWRkZW4oZmFsc2UpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmhpZGRlbkl0ZW1zID0gZW5kSW5kZXggPT09IHRhYnMubGVuZ3RoIC0gMSA/IFtdIDogdGFicy5zbGljZShlbmRJbmRleCArIDEpO1xuICAgICAgICAodGhpcy5oaWRkZW5JdGVtcyB8fCBbXSkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGl0ZW0uc2V0TmF2TGlua0hpZGRlbih0cnVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zaG93TW9yZSA9IHRoaXMuaGlkZGVuSXRlbXMubGVuZ3RoID4gMDtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTaG93SXRlbXNFbmRJbmRleFdoZW5Ib3Jpem9udGFsKHRhYnM6IFRoeU5hdkl0ZW1EaXJlY3RpdmVbXSkge1xuICAgICAgICBjb25zdCB0YWJzTGVuZ3RoID0gdGFicy5sZW5ndGg7XG4gICAgICAgIGxldCBlbmRJbmRleCA9IHRhYnNMZW5ndGg7XG4gICAgICAgIGxldCB0b3RhbFdpZHRoID0gMDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYnNMZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgY29uc3QgX3RvdGFsV2lkdGggPSBpID09PSB0YWJzTGVuZ3RoIC0gMSA/IHRvdGFsV2lkdGggKyB0YWJzW2ldLm9mZnNldC53aWR0aCA6IHRvdGFsV2lkdGggKyB0YWJzW2ldLm9mZnNldC53aWR0aCArIHRhYkl0ZW1SaWdodDtcbiAgICAgICAgICAgIGlmIChfdG90YWxXaWR0aCA+IHRoaXMud3JhcHBlck9mZnNldC53aWR0aCkge1xuICAgICAgICAgICAgICAgIGxldCBtb3JlT3BlcmF0aW9uV2lkdGggPSB0aGlzLm1vcmVCdG5PZmZzZXQud2lkdGg7XG4gICAgICAgICAgICAgICAgaWYgKHRvdGFsV2lkdGggKyBtb3JlT3BlcmF0aW9uV2lkdGggPD0gdGhpcy53cmFwcGVyT2Zmc2V0LndpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gaSAtIDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBpIC0gMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvdGFsV2lkdGggPSBfdG90YWxXaWR0aDtcbiAgICAgICAgICAgICAgICBlbmRJbmRleCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVuZEluZGV4O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2hvd0l0ZW1zRW5kSW5kZXhXaGVuVmVydGljYWwodGFiczogVGh5TmF2SXRlbURpcmVjdGl2ZVtdKSB7XG4gICAgICAgIGNvbnN0IHRhYnNMZW5ndGggPSB0YWJzLmxlbmd0aDtcbiAgICAgICAgbGV0IGVuZEluZGV4ID0gdGFic0xlbmd0aDtcbiAgICAgICAgbGV0IHRvdGFsSGVpZ2h0ID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWJzTGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IF90b3RhbEhlaWdodCA9IHRvdGFsSGVpZ2h0ICsgdGFic1tpXS5vZmZzZXQuaGVpZ2h0O1xuICAgICAgICAgICAgaWYgKF90b3RhbEhlaWdodCA+IHRoaXMud3JhcHBlck9mZnNldC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBsZXQgbW9yZU9wZXJhdGlvbkhlaWdodCA9IHRoaXMubW9yZUJ0bk9mZnNldC5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKHRvdGFsSGVpZ2h0ICsgbW9yZU9wZXJhdGlvbkhlaWdodCA8PSB0aGlzLndyYXBwZXJPZmZzZXQuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gaSAtIDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBpIC0gMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvdGFsSGVpZ2h0ID0gX3RvdGFsSGVpZ2h0O1xuICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW5kSW5kZXg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldFNpemVzKCkge1xuICAgICAgICB0aGlzLndyYXBwZXJPZmZzZXQgPSB7XG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCB8fCAwLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIHx8IDAsXG4gICAgICAgICAgICBsZWZ0OiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IHx8IDAsXG4gICAgICAgICAgICB0b3A6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcCB8fCAwXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb3Blbk1vcmUoZXZlbnQ6IEV2ZW50LCB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLnBvcG92ZXIub3Blbih0ZW1wbGF0ZSwge1xuICAgICAgICAgICAgb3JpZ2luOiBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgICBiYWNrZHJvcENsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaW5zaWRlQ2xvc2FibGU6IHRydWUsXG4gICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3RoeS1uYXYtbGlzdC1wb3BvdmVyJyxcbiAgICAgICAgICAgIG9yaWdpbkFjdGl2ZUNsYXNzOiAndGh5LW5hdi1vcmlnaW4tYWN0aXZlJ1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuYXZJdGVtQ2xpY2soaXRlbTogVGh5TmF2SXRlbURpcmVjdGl2ZSkge1xuICAgICAgICBpdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0aHktbmF2LWxpc3RcIiBbbmdDbGFzc109XCJob3Jpem9udGFsID8gJ2p1c3RpZnktY29udGVudC0nICsgaG9yaXpvbnRhbCA6ICcnXCIgI25hdkxpc3Q+XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICA8YVxuICAgICpuZ0lmPVwidGh5UmVzcG9uc2l2ZVwiXG4gICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgY2xhc3M9XCJ0aHktbmF2LW1vcmUtY29udGFpbmVyXCJcbiAgICBbY2xhc3MuZC1ub25lXT1cIiFzaG93TW9yZVwiXG4gICAgW2NsYXNzLmludmlzaWJsZV09XCIhaW5pdGlhbGl6ZWRcIlxuICAgICNtb3JlT3BlcmF0aW9uQ29udGFpbmVyXG4gICAgdGh5TmF2TGlua1xuICAgIFt0aHlOYXZMaW5rQWN0aXZlXT1cIm1vcmVBY3RpdmVcIlxuICAgIChjbGljayk9XCJvcGVuTW9yZSgkZXZlbnQsIG5hdkxpc3RQb3BvdmVyKVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9yZU9wZXJhdGlvbjsgZWxzZSBkZWZhdWx0TW9yZU9wZXJhdGlvblwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1vcmVPcGVyYXRpb25cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRNb3JlT3BlcmF0aW9uPlxuICAgICAg5pu05aSaXG4gICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJhbmdsZS1kb3duXCIgY2xhc3M9XCJ0aHktbmF2LW1vcmUtaWNvblwiPjwvdGh5LWljb24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9hPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbmF2TGlzdFBvcG92ZXI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIm1vcmVQb3BvdmVyOyBlbHNlIGRlZmF1bHRcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1vcmVQb3BvdmVyXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGhpZGRlbkl0ZW1zIH1cIlxuICA+PC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdD5cbiAgICA8dGh5LWFjdGlvbi1tZW51PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBoaWRkZW5JdGVtc1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwidGh5LW5hdi1pdGVtLW1vcmVcIlxuICAgICAgICAgIHRoeUFjdGlvbk1lbnVJdGVtXG4gICAgICAgICAgW3RoeUFjdGlvbk1lbnVJdGVtQWN0aXZlXT1cIml0ZW0uaXNBY3RpdmVcIlxuICAgICAgICAgIChjbGljayk9XCJuYXZJdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgIFtpbm5lckhUTUxdPVwiaXRlbS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MIHwgYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWxcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90aHktYWN0aW9uLW1lbnU+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgKm5nSWY9XCJ0aHlFeHRyYSB8fCBleHRyYVwiIGNsYXNzPVwidGh5LW5hdi1leHRyYVwiPlxuICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRoeUV4dHJhIHx8IGV4dHJhXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|