@taiga-ui/kit 2.78.0 → 2.80.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/taiga-ui-kit-components-input-count.umd.js +22 -2
- package/bundles/taiga-ui-kit-components-input-count.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-count.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-input-count.umd.min.js.map +1 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.js +0 -3
- package/bundles/taiga-ui-kit-components-tabs.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.min.js.map +1 -1
- package/components/input-count/input-count.component.d.ts +2 -0
- package/components/input-count/taiga-ui-kit-components-input-count.metadata.json +1 -1
- package/esm2015/components/input-count/input-count.component.js +20 -4
- package/esm2015/components/tabs/tabs-with-more/tabs-with-more.component.js +1 -4
- package/esm5/components/input-count/input-count.component.js +24 -4
- package/esm5/components/tabs/tabs-with-more/tabs-with-more.component.js +1 -4
- package/fesm2015/taiga-ui-kit-components-input-count.js +19 -3
- package/fesm2015/taiga-ui-kit-components-input-count.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-tabs.js +0 -3
- package/fesm2015/taiga-ui-kit-components-tabs.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-input-count.js +23 -3
- package/fesm5/taiga-ui-kit-components-input-count.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-tabs.js +0 -3
- package/fesm5/taiga-ui-kit-components-tabs.js.map +1 -1
- package/package.json +4 -4
|
@@ -3,7 +3,7 @@ import { __decorate, __param } from "tslib";
|
|
|
3
3
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, HostBinding, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';
|
|
4
4
|
import { NgControl } from '@angular/forms';
|
|
5
5
|
import { AbstractTuiControl, AbstractTuiNullableControl, clamp, isNativeFocused, isPresent, setNativeFocused, TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_MOBILE, tuiDefaultProp, tuiPure, } from '@taiga-ui/cdk';
|
|
6
|
-
import { formatNumber, TUI_NUMBER_FORMAT, TUI_TEXTFIELD_APPEARANCE, TUI_TEXTFIELD_SIZE, tuiCreateNumberMask, TuiNumberFormatSettings, TuiPrimitiveTextfieldComponent, TuiSizeL, TuiSizeS, TuiTextfieldSizeDirective, TuiTextMaskOptions, TuiWithOptionalMinMax, } from '@taiga-ui/core';
|
|
6
|
+
import { formatNumber, TUI_NUMBER_FORMAT, TUI_TEXTFIELD_APPEARANCE, TUI_TEXTFIELD_SIZE, tuiCreateNumberMask, tuiMaskedNumberStringToNumber, TuiNumberFormatSettings, TuiPrimitiveTextfieldComponent, TuiSizeL, TuiSizeS, TuiTextfieldSizeDirective, TuiTextMaskOptions, TuiWithOptionalMinMax, } from '@taiga-ui/core';
|
|
7
7
|
import { TUI_PLUS_MINUS_TEXTS } from '@taiga-ui/kit/tokens';
|
|
8
8
|
import { Observable } from 'rxjs';
|
|
9
9
|
import { TUI_INPUT_COUNT_OPTIONS } from './input-count-options';
|
|
@@ -17,6 +17,7 @@ let TuiInputCountComponent = TuiInputCountComponent_1 = class TuiInputCountCompo
|
|
|
17
17
|
this.isMobile = isMobile;
|
|
18
18
|
this.options = options;
|
|
19
19
|
this.numberFormat = numberFormat;
|
|
20
|
+
this.unfinishedValue = '';
|
|
20
21
|
this.step = this.options.step;
|
|
21
22
|
this.min = this.options.min;
|
|
22
23
|
this.max = this.options.max;
|
|
@@ -87,6 +88,11 @@ let TuiInputCountComponent = TuiInputCountComponent_1 = class TuiInputCountCompo
|
|
|
87
88
|
this.updatePressed(pressed);
|
|
88
89
|
}
|
|
89
90
|
onValueChange() {
|
|
91
|
+
if (this.isNativeValueNotFinished) {
|
|
92
|
+
this.unfinishedValue = this.nativeValue;
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
this.unfinishedValue = null;
|
|
90
96
|
const capped = this.capValue(this.nativeNumberValue);
|
|
91
97
|
if (this.isNotNumber(capped)) {
|
|
92
98
|
this.updateValue(null);
|
|
@@ -150,11 +156,15 @@ let TuiInputCountComponent = TuiInputCountComponent_1 = class TuiInputCountCompo
|
|
|
150
156
|
return Number.isNaN(capped) || capped < this.min ? null : capped;
|
|
151
157
|
}
|
|
152
158
|
onBlur() {
|
|
153
|
-
|
|
159
|
+
const nativeNumberValue = this.unfinishedValue
|
|
160
|
+
? tuiMaskedNumberStringToNumber(this.unfinishedValue, this.numberFormat.decimalSeparator, this.numberFormat.thousandSeparator)
|
|
161
|
+
: this.nativeNumberValue;
|
|
162
|
+
this.unfinishedValue = null;
|
|
163
|
+
if (this.isNotNumber(nativeNumberValue)) {
|
|
154
164
|
this.updateValue(null);
|
|
155
165
|
return;
|
|
156
166
|
}
|
|
157
|
-
const value = Math.max(
|
|
167
|
+
const value = Math.max(nativeNumberValue || 0, this.min);
|
|
158
168
|
const formattedValue = this.formatNumber(value);
|
|
159
169
|
this.nativeValue = formattedValue;
|
|
160
170
|
this.updateValue(value);
|
|
@@ -170,6 +180,12 @@ let TuiInputCountComponent = TuiInputCountComponent_1 = class TuiInputCountCompo
|
|
|
170
180
|
isNotNumber(value) {
|
|
171
181
|
return !isPresent(value) || Number.isNaN(value);
|
|
172
182
|
}
|
|
183
|
+
get isNativeValueNotFinished() {
|
|
184
|
+
const { nativeNumberValue } = this;
|
|
185
|
+
return nativeNumberValue < 0
|
|
186
|
+
? nativeNumberValue > this.max
|
|
187
|
+
: nativeNumberValue < this.min;
|
|
188
|
+
}
|
|
173
189
|
};
|
|
174
190
|
TuiInputCountComponent.ctorParameters = () => [
|
|
175
191
|
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NgControl,] }] },
|
|
@@ -246,4 +262,4 @@ TuiInputCountComponent = TuiInputCountComponent_1 = __decorate([
|
|
|
246
262
|
__param(7, Inject(TUI_NUMBER_FORMAT))
|
|
247
263
|
], TuiInputCountComponent);
|
|
248
264
|
export { TuiInputCountComponent };
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY291bnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2lucHV0LWNvdW50LyIsInNvdXJjZXMiOlsiaW5wdXQtY291bnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUNILGtCQUFrQixFQUNsQiwwQkFBMEIsRUFDMUIsS0FBSyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLDJCQUEyQixFQUMzQixhQUFhLEVBQ2IsY0FBYyxFQUVkLE9BQU8sR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsWUFBWSxFQUNaLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDdkIsOEJBQThCLEVBQzlCLFFBQVEsRUFDUixRQUFRLEVBQ1IseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixxQkFBcUIsR0FDeEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUcxRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBQyx1QkFBdUIsRUFBdUIsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRixXQUFXO0FBaUJYLElBQWEsc0JBQXNCLDhCQUFuQyxNQUFhLHNCQUNULFNBQVEsMEJBQWtDO0lBOEIxQyxZQUlJLE9BQXlCLEVBQ0UsaUJBQW9DLEVBRTlDLFVB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U0E3UFksc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUdWlDb250cm9sLFxuICAgIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sLFxuICAgIGNsYW1wLFxuICAgIGlzTmF0aXZlRm9jdXNlZCxcbiAgICBpc1ByZXNlbnQsXG4gICAgc2V0TmF0aXZlRm9jdXNlZCxcbiAgICBUVUlfRk9DVVNBQkxFX0lURU1fQUNDRVNTT1IsXG4gICAgVFVJX0lTX01PQklMRSxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgdHVpUHVyZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIGZvcm1hdE51bWJlcixcbiAgICBUVUlfTlVNQkVSX0ZPUk1BVCxcbiAgICBUVUlfVEVYVEZJRUxEX0FQUEVBUkFOQ0UsXG4gICAgVFVJX1RFWFRGSUVMRF9TSVpFLFxuICAgIHR1aUNyZWF0ZU51bWJlck1hc2ssXG4gICAgVHVpTnVtYmVyRm9ybWF0U2V0dGluZ3MsXG4gICAgVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50LFxuICAgIFR1aVNpemVMLFxuICAgIFR1aVNpemVTLFxuICAgIFR1aVRleHRmaWVsZFNpemVEaXJlY3RpdmUsXG4gICAgVHVpVGV4dE1hc2tPcHRpb25zLFxuICAgIFR1aVdpdGhPcHRpb25hbE1pbk1heCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUVUlfUExVU19NSU5VU19URVhUU30gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtUZXh0TWFza0NvbmZpZ30gZnJvbSAnYW5ndWxhcjItdGV4dC1tYXNrJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7VFVJX0lOUFVUX0NPVU5UX09QVElPTlMsIFR1aUlucHV0Q291bnRPcHRpb25zfSBmcm9tICcuL2lucHV0LWNvdW50LW9wdGlvbnMnO1xuXG4vLyBAZHluYW1pY1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtY291bnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1jb3VudC50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1jb3VudC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRVSV9GT0NVU0FCTEVfSVRFTV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR1aUlucHV0Q291bnRDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBYnN0cmFjdFR1aUNvbnRyb2wsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUdWlJbnB1dENvdW50Q29tcG9uZW50KSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dENvdW50Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbDxudW1iZXI+XG4gICAgaW1wbGVtZW50cyBUdWlXaXRoT3B0aW9uYWxNaW5NYXg8bnVtYmVyPiwgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZChUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmltaXRpdmVUZXh0ZmllbGQ/OiBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQ7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgc3RlcCA9IHRoaXMub3B0aW9ucy5zdGVwO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1pbiA9IHRoaXMub3B0aW9ucy5taW47XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbWF4ID0gdGhpcy5vcHRpb25zLm1heDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBoaWRlQnV0dG9ucyA9IHRoaXMub3B0aW9ucy5oaWRlQnV0dG9ucztcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBwcmVmaXggPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBwb3N0Zml4ID0gdGhpcy5vcHRpb25zLnBvc3RmaXg7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfQVBQRUFSQU5DRSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhcHBlYXJhbmNlOiBzdHJpbmcsXG4gICAgICAgIEBJbmplY3QoVFVJX1RFWFRGSUVMRF9TSVpFKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZFNpemU6IFR1aVRleHRmaWVsZFNpemVEaXJlY3RpdmUsXG4gICAgICAgIEBJbmplY3QoVFVJX1BMVVNfTUlOVVNfVEVYVFMpXG4gICAgICAgIHJlYWRvbmx5IG1pbnVzVGV4dHMkOiBPYnNlcnZhYmxlPFtzdHJpbmcsIHN0cmluZ10+LFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX0NPVU5UX09QVElPTlMpXG4gICAgICAgIHJlYWRvbmx5IG9wdGlvbnM6IFR1aUlucHV0Q291bnRPcHRpb25zLFxuICAgICAgICBASW5qZWN0KFRVSV9OVU1CRVJfRk9STUFUKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG51bWJlckZvcm1hdDogVHVpTnVtYmVyRm9ybWF0U2V0dGluZ3MsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNvbnRyb2wsIGNoYW5nZURldGVjdG9yUmVmKTtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIGdldE1hc2soYWxsb3dOZWdhdGl2ZTogYm9vbGVhbik6IFRleHRNYXNrQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1hc2s6IHR1aUNyZWF0ZU51bWJlck1hc2soe1xuICAgICAgICAgICAgICAgIGFsbG93TmVnYXRpdmUsXG4gICAgICAgICAgICAgICAgZGVjaW1hbFN5bWJvbDogdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICB0aG91c2FuZFN5bWJvbDogdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGd1aWRlOiBmYWxzZSxcbiAgICAgICAgfSBhcyBUdWlUZXh0TWFza09wdGlvbnMgYXMgdW5rbm93biBhcyBUZXh0TWFza0NvbmZpZztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiAzLjAgUmVtb3ZlIGluIHYuM1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuX2hpZGUtYnV0dG9ucycpXG4gICAgZ2V0IGJ1dHRvbnNIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhpZGVCdXR0b25zIHx8IHRoaXMuYXBwZWFyYW5jZSA9PT0gJ3RhYmxlJztcbiAgICB9XG5cbiAgICBnZXQgaWNvblVwKCk6IFBvbHltb3JwaGV1c0NvbnRlbnQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29ucy51cDtcbiAgICB9XG5cbiAgICBnZXQgaWNvbkRvd24oKTogUG9seW1vcnBoZXVzQ29udGVudDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmljb25zLmRvd247XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gIXRoaXMucHJpbWl0aXZlVGV4dGZpZWxkIHx8IHRoaXMuY29tcHV0ZWREaXNhYmxlZFxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IHRoaXMucHJpbWl0aXZlVGV4dGZpZWxkLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2l6ZScpXG4gICAgZ2V0IHNpemUoKTogVHVpU2l6ZUwgfCBUdWlTaXplUyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZFNpemUuc2l6ZTtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzTmF0aXZlRm9jdXNlZCh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBleGFtcGxlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHRoaXMubWluKTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2VkID8gdGhpcy5uYXRpdmVWYWx1ZSA6IHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIGdldCBtaW51c0J1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaW50ZXJhY3RpdmUgfHwgKGlzUHJlc2VudCh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlIDw9IHRoaXMubWluKTtcbiAgICB9XG5cbiAgICBnZXQgcGx1c0J1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaW50ZXJhY3RpdmUgfHwgKGlzUHJlc2VudCh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlID49IHRoaXMubWF4KTtcbiAgICB9XG5cbiAgICBvbkJ1dHRvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCwgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8fCB0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgb25Gb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFmb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9uQmx1cigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuICAgIH1cblxuICAgIG9uSG92ZXJlZChob3ZlcmVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlSG92ZXJlZChob3ZlcmVkKTtcbiAgICB9XG5cbiAgICBvblByZXNzZWQocHJlc3NlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVByZXNzZWQocHJlc3NlZCk7XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2FwcGVkID0gdGhpcy5jYXBWYWx1ZSh0aGlzLm5hdGl2ZU51bWJlclZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5pc05vdE51bWJlcihjYXBwZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZm9ybWF0TnVtYmVyKGNhcHBlZCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlVmFsdWUgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGNhcHBlZCk7XG4gICAgfVxuXG4gICAgZGVjcmVhc2VWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gKHRoaXMudmFsdWUgfHwgMCkgLSB0aGlzLnN0ZXA7XG5cbiAgICAgICAgdGhpcy5zYWZlVXBkYXRlVmFsdWUobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIGluY3JlYXNlVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9ICh0aGlzLnZhbHVlIHx8IDApICsgdGhpcy5zdGVwO1xuXG4gICAgICAgIHRoaXMuc2FmZVVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgY2FzZSAnVXAnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVhc2VWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnRG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5kZWNyZWFzZVZhbHVlKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBuYXRpdmVOdW1iZXJWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoXG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlLnNwbGl0KHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yKS5qb2luKCcnKSxcbiAgICAgICAgICAgIDEwLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG5hdGl2ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldCBuYXRpdmVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNhZmVVcGRhdGVWYWx1ZShuZXdWYWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gY2xhbXAobmV3VmFsdWUsIHRoaXMubWluLCB0aGlzLm1heCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYXBWYWx1ZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGNhcHBlZCA9IE1hdGgubWluKHZhbHVlLCB0aGlzLm1heCk7XG5cbiAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTihjYXBwZWQpIHx8IGNhcHBlZCA8IHRoaXMubWluID8gbnVsbCA6IGNhcHBlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNOb3ROdW1iZXIodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gTWF0aC5tYXgodGhpcy5uYXRpdmVOdW1iZXJWYWx1ZSB8fCAwLCB0aGlzLm1pbik7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5mb3JtYXROdW1iZXIodmFsdWUpO1xuXG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMucHJpbWl0aXZlVGV4dGZpZWxkKSB7XG4gICAgICAgICAgICB0aGlzLnByaW1pdGl2ZVRleHRmaWVsZC52YWx1ZSA9IGZvcm1hdHRlZFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlciB8IG51bGwpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc05vdE51bWJlcih2YWx1ZSlcbiAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgIDogZm9ybWF0TnVtYmVyKFxuICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNOb3ROdW1iZXIodmFsdWU6IG51bWJlciB8IG51bGwpOiB2YWx1ZSBpcyBudWxsIHtcbiAgICAgICAgcmV0dXJuICFpc1ByZXNlbnQodmFsdWUpIHx8IE51bWJlci5pc05hTih2YWx1ZSk7XG4gICAgfVxufVxuIl19
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY291bnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2lucHV0LWNvdW50LyIsInNvdXJjZXMiOlsiaW5wdXQtY291bnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUNILGtCQUFrQixFQUNsQiwwQkFBMEIsRUFDMUIsS0FBSyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLDJCQUEyQixFQUMzQixhQUFhLEVBQ2IsY0FBYyxFQUVkLE9BQU8sR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsWUFBWSxFQUNaLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQiw2QkFBNkIsRUFDN0IsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUM5QixRQUFRLEVBQ1IsUUFBUSxFQUNSLHlCQUF5QixFQUN6QixrQkFBa0IsRUFDbEIscUJBQXFCLEdBQ3hCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFHMUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVoQyxPQUFPLEVBQUMsdUJBQXVCLEVBQXVCLE1BQU0sdUJBQXVCLENBQUM7QUFFcEYsV0FBVztBQWlCWCxJQUFhLHNCQUFzQiw4QkFBbkMsTUFBYSxzQkFDVCxTQUFRLDBCQUFrQztJQWdDMUMsWUFJSSxPQUF5QixFQUNFLGlC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UyxFQUFFO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLDJCQUEyQjtnQkFDcEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBc0IsQ0FBQzthQUN4RDtZQUNEO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXNCLENBQUM7YUFDeEQ7U0FDSjs7S0FDSixDQUFDO0lBbUNPLFdBQUEsUUFBUSxFQUFFLENBQUE7SUFDVixXQUFBLElBQUksRUFBRSxDQUFBO0lBQ04sV0FBQSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7SUFFakIsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUN6QixXQUFBLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO0lBRWhDLFdBQUEsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFFMUIsV0FBQSxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUU1QixXQUFBLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUNyQixXQUFBLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO0lBRS9CLFdBQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7R0FoRHJCLHNCQUFzQixDQXlSbEM7U0F6Ulksc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUdWlDb250cm9sLFxuICAgIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sLFxuICAgIGNsYW1wLFxuICAgIGlzTmF0aXZlRm9jdXNlZCxcbiAgICBpc1ByZXNlbnQsXG4gICAgc2V0TmF0aXZlRm9jdXNlZCxcbiAgICBUVUlfRk9DVVNBQkxFX0lURU1fQUNDRVNTT1IsXG4gICAgVFVJX0lTX01PQklMRSxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgdHVpUHVyZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIGZvcm1hdE51bWJlcixcbiAgICBUVUlfTlVNQkVSX0ZPUk1BVCxcbiAgICBUVUlfVEVYVEZJRUxEX0FQUEVBUkFOQ0UsXG4gICAgVFVJX1RFWFRGSUVMRF9TSVpFLFxuICAgIHR1aUNyZWF0ZU51bWJlck1hc2ssXG4gICAgdHVpTWFza2VkTnVtYmVyU3RyaW5nVG9OdW1iZXIsXG4gICAgVHVpTnVtYmVyRm9ybWF0U2V0dGluZ3MsXG4gICAgVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50LFxuICAgIFR1aVNpemVMLFxuICAgIFR1aVNpemVTLFxuICAgIFR1aVRleHRmaWVsZFNpemVEaXJlY3RpdmUsXG4gICAgVHVpVGV4dE1hc2tPcHRpb25zLFxuICAgIFR1aVdpdGhPcHRpb25hbE1pbk1heCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUVUlfUExVU19NSU5VU19URVhUU30gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtUZXh0TWFza0NvbmZpZ30gZnJvbSAnYW5ndWxhcjItdGV4dC1tYXNrJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7VFVJX0lOUFVUX0NPVU5UX09QVElPTlMsIFR1aUlucHV0Q291bnRPcHRpb25zfSBmcm9tICcuL2lucHV0LWNvdW50LW9wdGlvbnMnO1xuXG4vLyBAZHluYW1pY1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtY291bnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1jb3VudC50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1jb3VudC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRVSV9GT0NVU0FCTEVfSVRFTV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR1aUlucHV0Q291bnRDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBYnN0cmFjdFR1aUNvbnRyb2wsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUdWlJbnB1dENvdW50Q29tcG9uZW50KSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dENvdW50Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbDxudW1iZXI+XG4gICAgaW1wbGVtZW50cyBUdWlXaXRoT3B0aW9uYWxNaW5NYXg8bnVtYmVyPiwgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZChUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmltaXRpdmVUZXh0ZmllbGQ/OiBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQ7XG5cbiAgICBwcml2YXRlIHVuZmluaXNoZWRWYWx1ZTogc3RyaW5nIHwgbnVsbCA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHN0ZXAgPSB0aGlzLm9wdGlvbnMuc3RlcDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtaW4gPSB0aGlzLm9wdGlvbnMubWluO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1heCA9IHRoaXMub3B0aW9ucy5tYXg7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgaGlkZUJ1dHRvbnMgPSB0aGlzLm9wdGlvbnMuaGlkZUJ1dHRvbnM7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgcHJlZml4ID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgcG9zdGZpeCA9IHRoaXMub3B0aW9ucy5wb3N0Zml4O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfVEVYVEZJRUxEX0FQUEVBUkFOQ0UpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwZWFyYW5jZTogc3RyaW5nLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfU0laRSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGRTaXplOiBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgICAgICBASW5qZWN0KFRVSV9QTFVTX01JTlVTX1RFWFRTKVxuICAgICAgICByZWFkb25seSBtaW51c1RleHRzJDogT2JzZXJ2YWJsZTxbc3RyaW5nLCBzdHJpbmddPixcbiAgICAgICAgQEluamVjdChUVUlfSVNfTU9CSUxFKSBwcml2YXRlIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9DT1VOVF9PUFRJT05TKVxuICAgICAgICByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dENvdW50T3B0aW9ucyxcbiAgICAgICAgQEluamVjdChUVUlfTlVNQkVSX0ZPUk1BVClcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBudW1iZXJGb3JtYXQ6IFR1aU51bWJlckZvcm1hdFNldHRpbmdzLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBnZXRNYXNrKGFsbG93TmVnYXRpdmU6IGJvb2xlYW4pOiBUZXh0TWFza0NvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtYXNrOiB0dWlDcmVhdGVOdW1iZXJNYXNrKHtcbiAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlLFxuICAgICAgICAgICAgICAgIGRlY2ltYWxTeW1ib2w6IHRoaXMubnVtYmVyRm9ybWF0LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgdGhvdXNhbmRTeW1ib2w6IHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBndWlkZTogZmFsc2UsXG4gICAgICAgIH0gYXMgVHVpVGV4dE1hc2tPcHRpb25zIGFzIHVua25vd24gYXMgVGV4dE1hc2tDb25maWc7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogMy4wIFJlbW92ZSBpbiB2LjNcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl9oaWRlLWJ1dHRvbnMnKVxuICAgIGdldCBidXR0b25zSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oaWRlQnV0dG9ucyB8fCB0aGlzLmFwcGVhcmFuY2UgPT09ICd0YWJsZSc7XG4gICAgfVxuXG4gICAgZ2V0IGljb25VcCgpOiBQb2x5bW9ycGhldXNDb250ZW50PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaWNvbnMudXA7XG4gICAgfVxuXG4gICAgZ2V0IGljb25Eb3duKCk6IFBvbHltb3JwaGV1c0NvbnRlbnQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29ucy5kb3duO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnByaW1pdGl2ZVRleHRmaWVsZCB8fCB0aGlzLmNvbXB1dGVkRGlzYWJsZWRcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB0aGlzLnByaW1pdGl2ZVRleHRmaWVsZC5uYXRpdmVGb2N1c2FibGVFbGVtZW50O1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNpemUnKVxuICAgIGdldCBzaXplKCk6IFR1aVNpemVMIHwgVHVpU2l6ZVMge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0ZmllbGRTaXplLnNpemU7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc05hdGl2ZUZvY3VzZWQodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBnZXQgZXhhbXBsZVRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyh0aGlzLm1pbik7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9jdXNlZCA/IHRoaXMubmF0aXZlVmFsdWUgOiB0aGlzLmZvcm1hdE51bWJlcih0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgbWludXNCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmludGVyYWN0aXZlIHx8IChpc1ByZXNlbnQodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZSA8PSB0aGlzLm1pbik7XG4gICAgfVxuXG4gICAgZ2V0IHBsdXNCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmludGVyYWN0aXZlIHx8IChpc1ByZXNlbnQodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZSA+PSB0aGlzLm1heCk7XG4gICAgfVxuXG4gICAgb25CdXR0b25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQsIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGRpc2FibGVkIHx8ICF0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgfHwgdGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgc2V0TmF0aXZlRm9jdXNlZCh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uRm9jdXNlZChmb2N1c2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5vbkJsdXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChmb2N1c2VkKTtcbiAgICB9XG5cbiAgICBvbkhvdmVyZWQoaG92ZXJlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUhvdmVyZWQoaG92ZXJlZCk7XG4gICAgfVxuXG4gICAgb25QcmVzc2VkKHByZXNzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVQcmVzc2VkKHByZXNzZWQpO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTmF0aXZlVmFsdWVOb3RGaW5pc2hlZCkge1xuICAgICAgICAgICAgdGhpcy51bmZpbmlzaGVkVmFsdWUgPSB0aGlzLm5hdGl2ZVZhbHVlO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVuZmluaXNoZWRWYWx1ZSA9IG51bGw7XG5cbiAgICAgICAgY29uc3QgY2FwcGVkID0gdGhpcy5jYXBWYWx1ZSh0aGlzLm5hdGl2ZU51bWJlclZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5pc05vdE51bWJlcihjYXBwZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZm9ybWF0TnVtYmVyKGNhcHBlZCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlVmFsdWUgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGNhcHBlZCk7XG4gICAgfVxuXG4gICAgZGVjcmVhc2VWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gKHRoaXMudmFsdWUgfHwgMCkgLSB0aGlzLnN0ZXA7XG5cbiAgICAgICAgdGhpcy5zYWZlVXBkYXRlVmFsdWUobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIGluY3JlYXNlVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9ICh0aGlzLnZhbHVlIHx8IDApICsgdGhpcy5zdGVwO1xuXG4gICAgICAgIHRoaXMuc2FmZVVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgY2FzZSAnVXAnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVhc2VWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnRG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5kZWNyZWFzZVZhbHVlKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBuYXRpdmVOdW1iZXJWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoXG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlLnNwbGl0KHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yKS5qb2luKCcnKSxcbiAgICAgICAgICAgIDEwLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG5hdGl2ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldCBuYXRpdmVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNhZmVVcGRhdGVWYWx1ZShuZXdWYWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gY2xhbXAobmV3VmFsdWUsIHRoaXMubWluLCB0aGlzLm1heCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYXBWYWx1ZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGNhcHBlZCA9IE1hdGgubWluKHZhbHVlLCB0aGlzLm1heCk7XG5cbiAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTihjYXBwZWQpIHx8IGNhcHBlZCA8IHRoaXMubWluID8gbnVsbCA6IGNhcHBlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmF0aXZlTnVtYmVyVmFsdWUgPSB0aGlzLnVuZmluaXNoZWRWYWx1ZVxuICAgICAgICAgICAgPyB0dWlNYXNrZWROdW1iZXJTdHJpbmdUb051bWJlcihcbiAgICAgICAgICAgICAgICAgIHRoaXMudW5maW5pc2hlZFZhbHVlLFxuICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHRoaXMubmF0aXZlTnVtYmVyVmFsdWU7XG5cbiAgICAgICAgdGhpcy51bmZpbmlzaGVkVmFsdWUgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTm90TnVtYmVyKG5hdGl2ZU51bWJlclZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShudWxsKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFsdWUgPSBNYXRoLm1heChuYXRpdmVOdW1iZXJWYWx1ZSB8fCAwLCB0aGlzLm1pbik7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5mb3JtYXROdW1iZXIodmFsdWUpO1xuXG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMucHJpbWl0aXZlVGV4dGZpZWxkKSB7XG4gICAgICAgICAgICB0aGlzLnByaW1pdGl2ZVRleHRmaWVsZC52YWx1ZSA9IGZvcm1hdHRlZFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlciB8IG51bGwpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc05vdE51bWJlcih2YWx1ZSlcbiAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgIDogZm9ybWF0TnVtYmVyKFxuICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNOb3ROdW1iZXIodmFsdWU6IG51bWJlciB8IG51bGwpOiB2YWx1ZSBpcyBudWxsIHtcbiAgICAgICAgcmV0dXJuICFpc1ByZXNlbnQodmFsdWUpIHx8IE51bWJlci5pc05hTih2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNOYXRpdmVWYWx1ZU5vdEZpbmlzaGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7bmF0aXZlTnVtYmVyVmFsdWV9ID0gdGhpcztcblxuICAgICAgICByZXR1cm4gbmF0aXZlTnVtYmVyVmFsdWUgPCAwXG4gICAgICAgICAgICA/IG5hdGl2ZU51bWJlclZhbHVlID4gdGhpcy5tYXhcbiAgICAgICAgICAgIDogbmF0aXZlTnVtYmVyVmFsdWUgPCB0aGlzLm1pbjtcbiAgICB9XG59XG4iXX0=
|
|
@@ -143,9 +143,6 @@ let TuiTabsWithMoreComponent = class TuiTabsWithMoreComponent {
|
|
|
143
143
|
return -1;
|
|
144
144
|
}
|
|
145
145
|
updateActiveItemIndex(activeItemIndex) {
|
|
146
|
-
if (this.activeItemIndex === activeItemIndex) {
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
146
|
this.activeItemIndex = activeItemIndex;
|
|
150
147
|
this.activeItemIndexChange.emit(activeItemIndex);
|
|
151
148
|
this.maxIndex = this.getMaxIndex();
|
|
@@ -205,4 +202,4 @@ TuiTabsWithMoreComponent = __decorate([
|
|
|
205
202
|
__param(5, Inject(TUI_MORE_WORD))
|
|
206
203
|
], TuiTabsWithMoreComponent);
|
|
207
204
|
export { TuiTabsWithMoreComponent };
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy13aXRoLW1vcmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL3RhYnMvIiwic291cmNlcyI6WyJ0YWJzLXdpdGgtbW9yZS90YWJzLXdpdGgtbW9yZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsS0FBSyxFQUVMLHNCQUFzQixFQUN0QixRQUFRLEVBRVIsY0FBYyxHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsYUFBYSxFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsY0FBYyxFQUFFLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXhFLFdBQVc7QUFRWCxJQUFhLHdCQUF3QixHQUFyQyxNQUFhLHdCQUF3QjtJQW9DakMsWUFDK0MsT0FBdUIsRUFDekIsTUFBYyxFQUNoQixRQUE2QixF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QUksRUFBRSxXQUFXLEVBQUMsQ0FBQzt1REFDd0I7QUFoQ3JFLHdCQUF3QjtJQVBwQyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsMENBQTBDO1FBQ3BELGk5RUFBNkM7UUFFN0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07UUFDL0MsU0FBUyxFQUFFLGNBQWM7O0tBQzVCLENBQUM7SUFzQ08sV0FBQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUN4QixXQUFBLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUN0QixXQUFBLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNwQixXQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNsQixXQUFBLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3pCLFdBQUEsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0dBMUNqQix3QkFBd0IsQ0FpTnBDO1NBak5ZLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEVNUFRZX1FVRVJZLFxuICAgIGdldENsb3Nlc3RGb2N1c2FibGUsXG4gICAgaXNOYXRpdmVGb2N1c2VkLFxuICAgIHNldE5hdGl2ZUZvY3VzZWQsXG4gICAgdG9JbnQsXG4gICAgVHVpQWN0aXZlWm9uZURpcmVjdGl2ZSxcbiAgICB0dWlBc3NlcnRJc0hUTUxFbGVtZW50LFxuICAgIHR1aUNsYW1wLFxuICAgIFR1aUNvbnRleHRXaXRoSW1wbGljaXQsXG4gICAgdHVpRGVmYXVsdFByb3AsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtUVUlfTU9SRV9XT1JELCBUVUlfVEFCX01BUkdJTn0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtUdWlUYWJEaXJlY3RpdmV9IGZyb20gJy4uL3RhYi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtUdWlUYWJDb21wb25lbnR9IGZyb20gJy4uL3RhYi90YWIuY29tcG9uZW50JztcbmltcG9ydCB7VFVJX1RBQlNfT1BUSU9OUywgVHVpVGFic09wdGlvbnN9IGZyb20gJy4uL3RhYnMtb3B0aW9ucyc7XG5pbXBvcnQge1RBQlNfUFJPVklERVJTLCBUQUJTX1JFRlJFU0h9IGZyb20gJy4vdGFicy13aXRoLW1vcmUucHJvdmlkZXJzJztcblxuLy8gQGR5bmFtaWNcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLXRhYnMtd2l0aC1tb3JlLCBuYXZbdHVpVGFic1dpdGhNb3JlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYnMtd2l0aC1tb3JlLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RhYnMtd2l0aC1tb3JlLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFRBQlNfUFJPVklERVJTLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlUYWJzV2l0aE1vcmVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKFR1aVRhYkNvbXBvbmVudCwge3JlYWQ6IEVsZW1lbnRSZWZ9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9yZUJ1dHRvbj86IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gICAgcHJpdmF0ZSBtYXhJbmRleCA9IEluZmluaXR5O1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1vcmVDb250ZW50OiBQb2x5bW9ycGhldXNDb250ZW50ID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgZHJvcGRvd25Db250ZW50OiBQb2x5bW9ycGhldXNDb250ZW50PFR1aUNvbnRleHRXaXRoSW1wbGljaXQ8VHVpQWN0aXZlWm9uZURpcmVjdGl2ZT4+ID1cbiAgICAgICAgJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuX3VuZGVybGluZScpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICB1bmRlcmxpbmUgPSB0aGlzLm9wdGlvbnMudW5kZXJsaW5lO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGFjdGl2ZUl0ZW1JbmRleCA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgaXRlbXNMaW1pdCA9IHRoaXMub3B0aW9ucy5pdGVtc0xpbWl0O1xuXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgYWN0aXZlSXRlbUluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFR1aVRhYkRpcmVjdGl2ZSwge3JlYWQ6IFRlbXBsYXRlUmVmfSlcbiAgICByZWFkb25seSBpdGVtczogUXVlcnlMaXN0PFRlbXBsYXRlUmVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj4gPSBFTVBUWV9RVUVSWTtcblxuICAgIG9wZW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFRVSV9UQUJTX09QVElPTlMpIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogVHVpVGFic09wdGlvbnMsXG4gICAgICAgIEBJbmplY3QoVFVJX1RBQl9NQVJHSU4pIHByaXZhdGUgcmVhZG9ubHkgbWFyZ2luOiBudW1iZXIsXG4gICAgICAgIEBJbmplY3QoVEFCU19SRUZSRVNIKSBwcml2YXRlIHJlYWRvbmx5IHJlZnJlc2gkOiBPYnNlcnZhYmxlPHVua25vd24+LFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9NT1JFX1dPUkQpIHJlYWRvbmx5IG1vcmVXb3JkJDogT2JzZXJ2YWJsZTxzdHJpbmc+LFxuICAgICkge31cblxuICAgIC8vIFRPRE86IEltcHJvdmUgcGVyZm9ybWFuY2VcbiAgICBnZXQgdGFicygpOiByZWFkb25seSBIVE1MRWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb208SFRNTEVsZW1lbnQ+KFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW3R1aVRhYl0nKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgYWN0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgICAgICBjb25zdCB7dGFic30gPSB0aGlzO1xuICAgICAgICBjb25zdCBzYWZlQWN0aXZlSW5kZXggPSB0dWlDbGFtcCh0aGlzLmFjdGl2ZUl0ZW1JbmRleCB8fCAwLCAwLCB0YWJzLmxlbmd0aCAtIDIpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZXhwb3NlQWN0aXZlIHx8IHRoaXMubGFzdFZpc2libGVJbmRleCA+PSBzYWZlQWN0aXZlSW5kZXhcbiAgICAgICAgICAgID8gdGFic1tzYWZlQWN0aXZlSW5kZXhdIHx8IG51bGxcbiAgICAgICAgICAgIDogdGhpcy5tb3JlQnV0dG9uPy5uYXRpdmVFbGVtZW50IHx8IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGlzTW9yZVZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhc3RWaXNpYmxlSW5kZXggPCB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XG4gICAgfVxuXG4gICAgZ2V0IGlzTW9yZUZvY3VzYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5tb3JlQnV0dG9uICYmIGlzTmF0aXZlRm9jdXNlZCh0aGlzLm1vcmVCdXR0b24ubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0IGlzTW9yZUFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMub3BlbiB8fFxuICAgICAgICAgICAgKCF0aGlzLm9wdGlvbnMuZXhwb3NlQWN0aXZlICYmIHRoaXMubGFzdFZpc2libGVJbmRleCA8IHRoaXMuYWN0aXZlSXRlbUluZGV4KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBpc01vcmVBbG9uZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFZpc2libGVJbmRleCA8IDAgJiYgIXRoaXMub3B0aW9ucy5leHBvc2VBY3RpdmU7XG4gICAgfVxuXG4gICAgZ2V0IGxhc3RWaXNpYmxlSW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuaXRlbXNMaW1pdCArIDEgPj0gdGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1heEluZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb2Zmc2V0ID1cbiAgICAgICAgICAgIHRoaXMuaXRlbXNMaW1pdCAtIDEgPiB0aGlzLmFjdGl2ZUl0ZW1JbmRleCB8fCAhdGhpcy5vcHRpb25zLmV4cG9zZUFjdGl2ZVxuICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgIDogMjtcblxuICAgICAgICByZXR1cm4gTWF0aC5taW4odGhpcy5pdGVtc0xpbWl0IC0gb2Zmc2V0LCB0aGlzLm1heEluZGV4KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVmcmVzaCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmdldE1heEluZGV4KCkpLFxuICAgICAgICAgICAgICAgIGZpbHRlcihtYXhJbmRleCA9PiB0aGlzLm1heEluZGV4ICE9PSBtYXhJbmRleCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKG1heEluZGV4ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1heEluZGV4ID0gbWF4SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkFjdGl2ZUl0ZW1JbmRleENoYW5nZShhY3RpdmVJdGVtSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZUl0ZW1JbmRleChhY3RpdmVJdGVtSW5kZXgpO1xuICAgIH1cblxuICAgIG9uQ2xpY2soaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb2N1c01vcmUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVJdGVtSW5kZXgoaW5kZXgpO1xuICAgIH1cblxuICAgIG9uQXJyb3dSaWdodChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdHVpQXNzZXJ0SXNIVE1MRWxlbWVudChldmVudC50YXJnZXQpO1xuXG4gICAgICAgIGlmIChpc05hdGl2ZUZvY3VzZWQoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c01vcmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQXJyb3dMZWZ0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7dGFic30gPSB0aGlzO1xuICAgICAgICBsZXQgaW5kZXggPSB0YWJzLmxlbmd0aCAtIDI7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHNldE5hdGl2ZUZvY3VzZWQodGFic1tpbmRleF0pO1xuXG4gICAgICAgICAgICBpZiAoaXNOYXRpdmVGb2N1c2VkKHRhYnNbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5kZXgtLTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uV3JhcHBlckFycm93KGV2ZW50OiBFdmVudCwgd3JhcHBlcjogSFRNTEVsZW1lbnQsIHByZXY6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnV0dG9uOiBIVE1MQnV0dG9uRWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0Q2xvc2VzdEZvY3VzYWJsZShidXR0b24sIHByZXYsIHdyYXBwZXIpO1xuXG4gICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICAgIHNldE5hdGl2ZUZvY3VzZWQodGFyZ2V0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzT3ZlcmZsb3duKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ICE9PSB0aGlzLmFjdGl2ZUl0ZW1JbmRleCB8fCAhdGhpcy5vcHRpb25zLmV4cG9zZUFjdGl2ZTtcbiAgICB9XG5cbiAgICBzaG91bGRTaG93KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gdGhpcy5sYXN0VmlzaWJsZUluZGV4ICYmIHRoaXMuaXNPdmVyZmxvd24oaW5kZXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNNb3JlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb3JlQnV0dG9uKSB7XG4gICAgICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRoaXMubW9yZUJ1dHRvbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWF4SW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qge3RhYnMsIGFjdGl2ZUl0ZW1JbmRleCwgbWFyZ2lufSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHRhYnMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7ZXhwb3NlQWN0aXZlLCBtaW5Nb3JlV2lkdGh9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICBjb25zdCB7Y2xpZW50V2lkdGh9ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVdpZHRoID0gdGFic1thY3RpdmVJdGVtSW5kZXhdID8gdGFic1thY3RpdmVJdGVtSW5kZXhdLnNjcm9sbFdpZHRoIDogMDtcbiAgICAgICAgY29uc3QgbW9yZVdpZHRoID0gTWF0aC5tYXgodGFic1t0YWJzLmxlbmd0aCAtIDFdLnNjcm9sbFdpZHRoLCBtaW5Nb3JlV2lkdGgpO1xuICAgICAgICBsZXQgbWF4SW5kZXggPSB0YWJzLmxlbmd0aCAtIDI7XG4gICAgICAgIGxldCB0b3RhbCA9XG4gICAgICAgICAgICB0YWJzLnJlZHVjZSgoYWNjLCB7c2Nyb2xsV2lkdGh9KSA9PiBhY2MgKyBzY3JvbGxXaWR0aCwgMCkgK1xuICAgICAgICAgICAgbWF4SW5kZXggKiBtYXJnaW4gLVxuICAgICAgICAgICAgdGFic1t0YWJzLmxlbmd0aCAtIDFdLnNjcm9sbFdpZHRoO1xuXG4gICAgICAgIGlmICh0b3RhbCA8PSBjbGllbnRXaWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuIEluZmluaXR5O1xuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKG1heEluZGV4KSB7XG4gICAgICAgICAgICB0b3RhbCAtPSB0YWJzW21heEluZGV4XS5zY3JvbGxXaWR0aCArIG1hcmdpbjtcbiAgICAgICAgICAgIG1heEluZGV4LS07XG5cbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZURpc3BsYWNlZCA9IGV4cG9zZUFjdGl2ZSAmJiBhY3RpdmVJdGVtSW5kZXggPiBtYXhJbmRleDtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZU9mZnNldCA9IGFjdGl2ZURpc3BsYWNlZCA/IGFjdGl2ZVdpZHRoICsgbWFyZ2luIDogMDtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRXaWR0aCA9IHRvdGFsICsgYWN0aXZlT2Zmc2V0ICsgbW9yZVdpZHRoICsgbWFyZ2luO1xuICAgICAgICAgICAgLy8gTmVlZGVkIGZvciBkaWZmZXJlbnQgcm91bmRpbmcgb2YgdmlzaWJsZSBhbmQgaGlkZGVuIGVsZW1lbnRzIHNjcm9sbFdpZHRoXG4gICAgICAgICAgICBjb25zdCBzYWZldHlPZmZzZXQgPSB0b0ludCh0aGlzLm1heEluZGV4ID09PSBtYXhJbmRleCAtIDEpO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudFdpZHRoICsgc2FmZXR5T2Zmc2V0IDwgY2xpZW50V2lkdGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF4SW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVBY3RpdmVJdGVtSW5kZXgoYWN0aXZlSXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlSXRlbUluZGV4ID09PSBhY3RpdmVJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlSXRlbUluZGV4ID0gYWN0aXZlSXRlbUluZGV4O1xuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1JbmRleENoYW5nZS5lbWl0KGFjdGl2ZUl0ZW1JbmRleCk7XG4gICAgICAgIHRoaXMubWF4SW5kZXggPSB0aGlzLmdldE1heEluZGV4KCk7XG4gICAgfVxufVxuIl19
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy13aXRoLW1vcmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL3RhYnMvIiwic291cmNlcyI6WyJ0YWJzLXdpdGgtbW9yZS90YWJzLXdpdGgtbW9yZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsS0FBSyxFQUVMLHNCQUFzQixFQUN0QixRQUFRLEVBRVIsY0FBYyxHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsYUFBYSxFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsY0FBYyxFQUFFLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXhFLFdBQVc7QUFRWCxJQUFhLHdCQUF3QixHQUFyQyxNQUFhLHdCQUF3QjtJQW9DakMsWUFDK0MsT0FBdUIsRUFDekIsTUFBYyxFQUNoQixRQUE2QixF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QUFDO1FBQ1AsUUFBUSxFQUFFLDBDQUEwQztRQUNwRCxpOUVBQTZDO1FBRTdDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1FBQy9DLFNBQVMsRUFBRSxjQUFjOztLQUM1QixDQUFDO0lBc0NPLFdBQUEsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDeEIsV0FBQSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDdEIsV0FBQSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDcEIsV0FBQSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDbEIsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUN6QixXQUFBLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtHQTFDakIsd0JBQXdCLENBNk1wQztTQTdNWSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBFTVBUWV9RVUVSWSxcbiAgICBnZXRDbG9zZXN0Rm9jdXNhYmxlLFxuICAgIGlzTmF0aXZlRm9jdXNlZCxcbiAgICBzZXROYXRpdmVGb2N1c2VkLFxuICAgIHRvSW50LFxuICAgIFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUsXG4gICAgdHVpQXNzZXJ0SXNIVE1MRWxlbWVudCxcbiAgICB0dWlDbGFtcCxcbiAgICBUdWlDb250ZXh0V2l0aEltcGxpY2l0LFxuICAgIHR1aURlZmF1bHRQcm9wLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7VFVJX01PUkVfV09SRCwgVFVJX1RBQl9NQVJHSU59IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7VHVpVGFiRGlyZWN0aXZlfSBmcm9tICcuLi90YWIuZGlyZWN0aXZlJztcbmltcG9ydCB7VHVpVGFiQ29tcG9uZW50fSBmcm9tICcuLi90YWIvdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQge1RVSV9UQUJTX09QVElPTlMsIFR1aVRhYnNPcHRpb25zfSBmcm9tICcuLi90YWJzLW9wdGlvbnMnO1xuaW1wb3J0IHtUQUJTX1BST1ZJREVSUywgVEFCU19SRUZSRVNIfSBmcm9tICcuL3RhYnMtd2l0aC1tb3JlLnByb3ZpZGVycyc7XG5cbi8vIEBkeW5hbWljXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS10YWJzLXdpdGgtbW9yZSwgbmF2W3R1aVRhYnNXaXRoTW9yZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJzLXdpdGgtbW9yZS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90YWJzLXdpdGgtbW9yZS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBUQUJTX1BST1ZJREVSUyxcbn0pXG5leHBvcnQgY2xhc3MgVHVpVGFic1dpdGhNb3JlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQFZpZXdDaGlsZChUdWlUYWJDb21wb25lbnQsIHtyZWFkOiBFbGVtZW50UmVmfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vcmVCdXR0b24/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcblxuICAgIHByaXZhdGUgbWF4SW5kZXggPSBJbmZpbml0eTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtb3JlQ29udGVudDogUG9seW1vcnBoZXVzQ29udGVudCA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGRyb3Bkb3duQ29udGVudDogUG9seW1vcnBoZXVzQ29udGVudDxUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmU+PiA9XG4gICAgICAgICcnO1xuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl91bmRlcmxpbmUnKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgdW5kZXJsaW5lID0gdGhpcy5vcHRpb25zLnVuZGVybGluZTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBhY3RpdmVJdGVtSW5kZXggPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGl0ZW1zTGltaXQgPSB0aGlzLm9wdGlvbnMuaXRlbXNMaW1pdDtcblxuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGFjdGl2ZUl0ZW1JbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUdWlUYWJEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZn0pXG4gICAgcmVhZG9ubHkgaXRlbXM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+ID0gRU1QVFlfUVVFUlk7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChUVUlfVEFCU19PUFRJT05TKSBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFR1aVRhYnNPcHRpb25zLFxuICAgICAgICBASW5qZWN0KFRVSV9UQUJfTUFSR0lOKSBwcml2YXRlIHJlYWRvbmx5IG1hcmdpbjogbnVtYmVyLFxuICAgICAgICBASW5qZWN0KFRBQlNfUkVGUkVTSCkgcHJpdmF0ZSByZWFkb25seSByZWZyZXNoJDogT2JzZXJ2YWJsZTx1bmtub3duPixcbiAgICAgICAgQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfTU9SRV9XT1JEKSByZWFkb25seSBtb3JlV29yZCQ6IE9ic2VydmFibGU8c3RyaW5nPixcbiAgICApIHt9XG5cbiAgICAvLyBUT0RPOiBJbXByb3ZlIHBlcmZvcm1hbmNlXG4gICAgZ2V0IHRhYnMoKTogcmVhZG9ubHkgSFRNTEVsZW1lbnRbXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tPEhUTUxFbGVtZW50PihcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1t0dWlUYWJdJyksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGFjdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgY29uc3Qge3RhYnN9ID0gdGhpcztcbiAgICAgICAgY29uc3Qgc2FmZUFjdGl2ZUluZGV4ID0gdHVpQ2xhbXAodGhpcy5hY3RpdmVJdGVtSW5kZXggfHwgMCwgMCwgdGFicy5sZW5ndGggLSAyKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4cG9zZUFjdGl2ZSB8fCB0aGlzLmxhc3RWaXNpYmxlSW5kZXggPj0gc2FmZUFjdGl2ZUluZGV4XG4gICAgICAgICAgICA/IHRhYnNbc2FmZUFjdGl2ZUluZGV4XSB8fCBudWxsXG4gICAgICAgICAgICA6IHRoaXMubW9yZUJ1dHRvbj8ubmF0aXZlRWxlbWVudCB8fCBudWxsO1xuICAgIH1cblxuICAgIGdldCBpc01vcmVWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXN0VmlzaWJsZUluZGV4IDwgdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xuICAgIH1cblxuICAgIGdldCBpc01vcmVGb2N1c2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMubW9yZUJ1dHRvbiAmJiBpc05hdGl2ZUZvY3VzZWQodGhpcy5tb3JlQnV0dG9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBpc01vcmVBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm9wZW4gfHxcbiAgICAgICAgICAgICghdGhpcy5vcHRpb25zLmV4cG9zZUFjdGl2ZSAmJiB0aGlzLmxhc3RWaXNpYmxlSW5kZXggPCB0aGlzLmFjdGl2ZUl0ZW1JbmRleClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaXNNb3JlQWxvbmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhc3RWaXNpYmxlSW5kZXggPCAwICYmICF0aGlzLm9wdGlvbnMuZXhwb3NlQWN0aXZlO1xuICAgIH1cblxuICAgIGdldCBsYXN0VmlzaWJsZUluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLml0ZW1zTGltaXQgKyAxID49IHRoaXMuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXhJbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9mZnNldCA9XG4gICAgICAgICAgICB0aGlzLml0ZW1zTGltaXQgLSAxID4gdGhpcy5hY3RpdmVJdGVtSW5kZXggfHwgIXRoaXMub3B0aW9ucy5leHBvc2VBY3RpdmVcbiAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICA6IDI7XG5cbiAgICAgICAgcmV0dXJuIE1hdGgubWluKHRoaXMuaXRlbXNMaW1pdCAtIG9mZnNldCwgdGhpcy5tYXhJbmRleCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlZnJlc2gkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5nZXRNYXhJbmRleCgpKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIobWF4SW5kZXggPT4gdGhpcy5tYXhJbmRleCAhPT0gbWF4SW5kZXgpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShtYXhJbmRleCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXhJbmRleCA9IG1heEluZGV4O1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25BY3RpdmVJdGVtSW5kZXhDaGFuZ2UoYWN0aXZlSXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVJdGVtSW5kZXgoYWN0aXZlSXRlbUluZGV4KTtcbiAgICB9XG5cbiAgICBvbkNsaWNrKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9jdXNNb3JlKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQWN0aXZlSXRlbUluZGV4KGluZGV4KTtcbiAgICB9XG5cbiAgICBvbkFycm93UmlnaHQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHR1aUFzc2VydElzSFRNTEVsZW1lbnQoZXZlbnQudGFyZ2V0KTtcblxuICAgICAgICBpZiAoaXNOYXRpdmVGb2N1c2VkKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNNb3JlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFycm93TGVmdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge3RhYnN9ID0gdGhpcztcbiAgICAgICAgbGV0IGluZGV4ID0gdGFicy5sZW5ndGggLSAyO1xuXG4gICAgICAgIHdoaWxlIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRhYnNbaW5kZXhdKTtcblxuICAgICAgICAgICAgaWYgKGlzTmF0aXZlRm9jdXNlZCh0YWJzW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGluZGV4LS07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbldyYXBwZXJBcnJvdyhldmVudDogRXZlbnQsIHdyYXBwZXI6IEhUTUxFbGVtZW50LCBwcmV2OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGdldENsb3Nlc3RGb2N1c2FibGUoYnV0dG9uLCBwcmV2LCB3cmFwcGVyKTtcblxuICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc092ZXJmbG93bihpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpbmRleCAhPT0gdGhpcy5hY3RpdmVJdGVtSW5kZXggfHwgIXRoaXMub3B0aW9ucy5leHBvc2VBY3RpdmU7XG4gICAgfVxuXG4gICAgc2hvdWxkU2hvdyhpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpbmRleCA+IHRoaXMubGFzdFZpc2libGVJbmRleCAmJiB0aGlzLmlzT3ZlcmZsb3duKGluZGV4KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzTW9yZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9yZUJ1dHRvbikge1xuICAgICAgICAgICAgc2V0TmF0aXZlRm9jdXNlZCh0aGlzLm1vcmVCdXR0b24ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1heEluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHt0YWJzLCBhY3RpdmVJdGVtSW5kZXgsIG1hcmdpbn0gPSB0aGlzO1xuXG4gICAgICAgIGlmICh0YWJzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge2V4cG9zZUFjdGl2ZSwgbWluTW9yZVdpZHRofSA9IHRoaXMub3B0aW9ucztcbiAgICAgICAgY29uc3Qge2NsaWVudFdpZHRofSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBhY3RpdmVXaWR0aCA9IHRhYnNbYWN0aXZlSXRlbUluZGV4XSA/IHRhYnNbYWN0aXZlSXRlbUluZGV4XS5zY3JvbGxXaWR0aCA6IDA7XG4gICAgICAgIGNvbnN0IG1vcmVXaWR0aCA9IE1hdGgubWF4KHRhYnNbdGFicy5sZW5ndGggLSAxXS5zY3JvbGxXaWR0aCwgbWluTW9yZVdpZHRoKTtcbiAgICAgICAgbGV0IG1heEluZGV4ID0gdGFicy5sZW5ndGggLSAyO1xuICAgICAgICBsZXQgdG90YWwgPVxuICAgICAgICAgICAgdGFicy5yZWR1Y2UoKGFjYywge3Njcm9sbFdpZHRofSkgPT4gYWNjICsgc2Nyb2xsV2lkdGgsIDApICtcbiAgICAgICAgICAgIG1heEluZGV4ICogbWFyZ2luIC1cbiAgICAgICAgICAgIHRhYnNbdGFicy5sZW5ndGggLSAxXS5zY3JvbGxXaWR0aDtcblxuICAgICAgICBpZiAodG90YWwgPD0gY2xpZW50V2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBJbmZpbml0eTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChtYXhJbmRleCkge1xuICAgICAgICAgICAgdG90YWwgLT0gdGFic1ttYXhJbmRleF0uc2Nyb2xsV2lkdGggKyBtYXJnaW47XG4gICAgICAgICAgICBtYXhJbmRleC0tO1xuXG4gICAgICAgICAgICBjb25zdCBhY3RpdmVEaXNwbGFjZWQgPSBleHBvc2VBY3RpdmUgJiYgYWN0aXZlSXRlbUluZGV4ID4gbWF4SW5kZXg7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVPZmZzZXQgPSBhY3RpdmVEaXNwbGFjZWQgPyBhY3RpdmVXaWR0aCArIG1hcmdpbiA6IDA7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50V2lkdGggPSB0b3RhbCArIGFjdGl2ZU9mZnNldCArIG1vcmVXaWR0aCArIG1hcmdpbjtcbiAgICAgICAgICAgIC8vIE5lZWRlZCBmb3IgZGlmZmVyZW50IHJvdW5kaW5nIG9mIHZpc2libGUgYW5kIGhpZGRlbiBlbGVtZW50cyBzY3JvbGxXaWR0aFxuICAgICAgICAgICAgY29uc3Qgc2FmZXR5T2Zmc2V0ID0gdG9JbnQodGhpcy5tYXhJbmRleCA9PT0gbWF4SW5kZXggLSAxKTtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRXaWR0aCArIHNhZmV0eU9mZnNldCA8IGNsaWVudFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1heEluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQWN0aXZlSXRlbUluZGV4KGFjdGl2ZUl0ZW1JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlSXRlbUluZGV4ID0gYWN0aXZlSXRlbUluZGV4O1xuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1JbmRleENoYW5nZS5lbWl0KGFjdGl2ZUl0ZW1JbmRleCk7XG4gICAgICAgIHRoaXMubWF4SW5kZXggPSB0aGlzLmdldE1heEluZGV4KCk7XG4gICAgfVxufVxuIl19
|
|
@@ -2,7 +2,7 @@ import { __decorate, __extends, __param } from "tslib";
|
|
|
2
2
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, HostBinding, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';
|
|
3
3
|
import { NgControl } from '@angular/forms';
|
|
4
4
|
import { AbstractTuiControl, AbstractTuiNullableControl, clamp, isNativeFocused, isPresent, setNativeFocused, TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_MOBILE, tuiDefaultProp, tuiPure, } from '@taiga-ui/cdk';
|
|
5
|
-
import { formatNumber, TUI_NUMBER_FORMAT, TUI_TEXTFIELD_APPEARANCE, TUI_TEXTFIELD_SIZE, tuiCreateNumberMask, TuiNumberFormatSettings, TuiPrimitiveTextfieldComponent, TuiSizeL, TuiSizeS, TuiTextfieldSizeDirective, TuiTextMaskOptions, TuiWithOptionalMinMax, } from '@taiga-ui/core';
|
|
5
|
+
import { formatNumber, TUI_NUMBER_FORMAT, TUI_TEXTFIELD_APPEARANCE, TUI_TEXTFIELD_SIZE, tuiCreateNumberMask, tuiMaskedNumberStringToNumber, TuiNumberFormatSettings, TuiPrimitiveTextfieldComponent, TuiSizeL, TuiSizeS, TuiTextfieldSizeDirective, TuiTextMaskOptions, TuiWithOptionalMinMax, } from '@taiga-ui/core';
|
|
6
6
|
import { TUI_PLUS_MINUS_TEXTS } from '@taiga-ui/kit/tokens';
|
|
7
7
|
import { Observable } from 'rxjs';
|
|
8
8
|
import { TUI_INPUT_COUNT_OPTIONS } from './input-count-options';
|
|
@@ -17,6 +17,7 @@ var TuiInputCountComponent = /** @class */ (function (_super) {
|
|
|
17
17
|
_this.isMobile = isMobile;
|
|
18
18
|
_this.options = options;
|
|
19
19
|
_this.numberFormat = numberFormat;
|
|
20
|
+
_this.unfinishedValue = '';
|
|
20
21
|
_this.step = _this.options.step;
|
|
21
22
|
_this.min = _this.options.min;
|
|
22
23
|
_this.max = _this.options.max;
|
|
@@ -130,6 +131,11 @@ var TuiInputCountComponent = /** @class */ (function (_super) {
|
|
|
130
131
|
this.updatePressed(pressed);
|
|
131
132
|
};
|
|
132
133
|
TuiInputCountComponent.prototype.onValueChange = function () {
|
|
134
|
+
if (this.isNativeValueNotFinished) {
|
|
135
|
+
this.unfinishedValue = this.nativeValue;
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
this.unfinishedValue = null;
|
|
133
139
|
var capped = this.capValue(this.nativeNumberValue);
|
|
134
140
|
if (this.isNotNumber(capped)) {
|
|
135
141
|
this.updateValue(null);
|
|
@@ -201,11 +207,15 @@ var TuiInputCountComponent = /** @class */ (function (_super) {
|
|
|
201
207
|
return Number.isNaN(capped) || capped < this.min ? null : capped;
|
|
202
208
|
};
|
|
203
209
|
TuiInputCountComponent.prototype.onBlur = function () {
|
|
204
|
-
|
|
210
|
+
var nativeNumberValue = this.unfinishedValue
|
|
211
|
+
? tuiMaskedNumberStringToNumber(this.unfinishedValue, this.numberFormat.decimalSeparator, this.numberFormat.thousandSeparator)
|
|
212
|
+
: this.nativeNumberValue;
|
|
213
|
+
this.unfinishedValue = null;
|
|
214
|
+
if (this.isNotNumber(nativeNumberValue)) {
|
|
205
215
|
this.updateValue(null);
|
|
206
216
|
return;
|
|
207
217
|
}
|
|
208
|
-
var value = Math.max(
|
|
218
|
+
var value = Math.max(nativeNumberValue || 0, this.min);
|
|
209
219
|
var formattedValue = this.formatNumber(value);
|
|
210
220
|
this.nativeValue = formattedValue;
|
|
211
221
|
this.updateValue(value);
|
|
@@ -221,6 +231,16 @@ var TuiInputCountComponent = /** @class */ (function (_super) {
|
|
|
221
231
|
TuiInputCountComponent.prototype.isNotNumber = function (value) {
|
|
222
232
|
return !isPresent(value) || Number.isNaN(value);
|
|
223
233
|
};
|
|
234
|
+
Object.defineProperty(TuiInputCountComponent.prototype, "isNativeValueNotFinished", {
|
|
235
|
+
get: function () {
|
|
236
|
+
var nativeNumberValue = this.nativeNumberValue;
|
|
237
|
+
return nativeNumberValue < 0
|
|
238
|
+
? nativeNumberValue > this.max
|
|
239
|
+
: nativeNumberValue < this.min;
|
|
240
|
+
},
|
|
241
|
+
enumerable: true,
|
|
242
|
+
configurable: true
|
|
243
|
+
});
|
|
224
244
|
var TuiInputCountComponent_1;
|
|
225
245
|
TuiInputCountComponent.ctorParameters = function () { return [
|
|
226
246
|
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NgControl,] }] },
|
|
@@ -299,4 +319,4 @@ var TuiInputCountComponent = /** @class */ (function (_super) {
|
|
|
299
319
|
return TuiInputCountComponent;
|
|
300
320
|
}(AbstractTuiNullableControl));
|
|
301
321
|
export { TuiInputCountComponent };
|
|
302
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY291bnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2lucHV0LWNvdW50LyIsInNvdXJjZXMiOlsiaW5wdXQtY291bnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLDBCQUEwQixFQUMxQixLQUFLLEVBQ0wsZUFBZSxFQUNmLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsMkJBQTJCLEVBQzNCLGFBQWEsRUFDYixjQUFjLEVBRWQsT0FBTyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsUUFBUSxFQUNSLFFBQVEsRUFDUix5QkFBeUIsRUFDekIsa0JBQWtCLEVBQ2xCLHFCQUFxQixHQUN4QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRzFELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFaEMsT0FBTyxFQUFDLHVCQUF1QixFQUF1QixNQUFNLHVCQUF1QixDQUFDO0FBRXBGLFdBQVc7QUFpQlg7SUFDWSwwQ0FBa0M7SUE4QjFDLGdDQUlJLE9BQXlCLEVBQ0UsaUJBQW9DLEVBRTlDLFVBQWtCLEVBRWxCLGFBQXdDLEVBRWhELFdBQXlDLEVB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QixXQUFBLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQ3pCLFdBQUEsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFFaEMsV0FBQSxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtRQUUxQixXQUFBLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBRTVCLFdBQUEsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQ3JCLFdBQUEsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUE7UUFFL0IsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtPQTlDckIsc0JBQXNCLENBNlBsQztJQUFELDZCQUFDO0NBQUEsQUE3UEQsQ0FDWSwwQkFBMEIsR0E0UHJDO1NBN1BZLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpQ29udHJvbCxcbiAgICBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbCxcbiAgICBjbGFtcCxcbiAgICBpc05hdGl2ZUZvY3VzZWQsXG4gICAgaXNQcmVzZW50LFxuICAgIHNldE5hdGl2ZUZvY3VzZWQsXG4gICAgVFVJX0ZPQ1VTQUJMRV9JVEVNX0FDQ0VTU09SLFxuICAgIFRVSV9JU19NT0JJTEUsXG4gICAgdHVpRGVmYXVsdFByb3AsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIHR1aVB1cmUsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBmb3JtYXROdW1iZXIsXG4gICAgVFVJX05VTUJFUl9GT1JNQVQsXG4gICAgVFVJX1RFWFRGSUVMRF9BUFBFQVJBTkNFLFxuICAgIFRVSV9URVhURklFTERfU0laRSxcbiAgICB0dWlDcmVhdGVOdW1iZXJNYXNrLFxuICAgIFR1aU51bWJlckZvcm1hdFNldHRpbmdzLFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudCxcbiAgICBUdWlTaXplTCxcbiAgICBUdWlTaXplUyxcbiAgICBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgIFR1aVRleHRNYXNrT3B0aW9ucyxcbiAgICBUdWlXaXRoT3B0aW9uYWxNaW5NYXgsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7VFVJX1BMVVNfTUlOVVNfVEVYVFN9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7VGV4dE1hc2tDb25maWd9IGZyb20gJ2FuZ3VsYXIyLXRleHQtbWFzayc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1RVSV9JTlBVVF9DT1VOVF9PUFRJT05TLCBUdWlJbnB1dENvdW50T3B0aW9uc30gZnJvbSAnLi9pbnB1dC1jb3VudC1vcHRpb25zJztcblxuLy8gQGR5bmFtaWNcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLWlucHV0LWNvdW50JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtY291bnQudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtY291bnQuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUVUlfRk9DVVNBQkxFX0lURU1fQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUdWlJbnB1dENvdW50Q29tcG9uZW50KSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQWJzdHJhY3RUdWlDb250cm9sLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVHVpSW5wdXRDb3VudENvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRDb3VudENvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2w8bnVtYmVyPlxuICAgIGltcGxlbWVudHMgVHVpV2l0aE9wdGlvbmFsTWluTWF4PG51bWJlcj4sIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3Nvclxue1xuICAgIEBWaWV3Q2hpbGQoVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJpbWl0aXZlVGV4dGZpZWxkPzogVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50O1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHN0ZXAgPSB0aGlzLm9wdGlvbnMuc3RlcDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtaW4gPSB0aGlzLm9wdGlvbnMubWluO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1heCA9IHRoaXMub3B0aW9ucy5tYXg7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgaGlkZUJ1dHRvbnMgPSB0aGlzLm9wdGlvbnMuaGlkZUJ1dHRvbnM7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgcHJlZml4ID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgcG9zdGZpeCA9IHRoaXMub3B0aW9ucy5wb3N0Zml4O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfVEVYVEZJRUxEX0FQUEVBUkFOQ0UpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwZWFyYW5jZTogc3RyaW5nLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfU0laRSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGRTaXplOiBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgICAgICBASW5qZWN0KFRVSV9QTFVTX01JTlVTX1RFWFRTKVxuICAgICAgICByZWFkb25seSBtaW51c1RleHRzJDogT2JzZXJ2YWJsZTxbc3RyaW5nLCBzdHJpbmddPixcbiAgICAgICAgQEluamVjdChUVUlfSVNfTU9CSUxFKSBwcml2YXRlIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9DT1VOVF9PUFRJT05TKVxuICAgICAgICByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dENvdW50T3B0aW9ucyxcbiAgICAgICAgQEluamVjdChUVUlfTlVNQkVSX0ZPUk1BVClcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBudW1iZXJGb3JtYXQ6IFR1aU51bWJlckZvcm1hdFNldHRpbmdzLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBnZXRNYXNrKGFsbG93TmVnYXRpdmU6IGJvb2xlYW4pOiBUZXh0TWFza0NvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtYXNrOiB0dWlDcmVhdGVOdW1iZXJNYXNrKHtcbiAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlLFxuICAgICAgICAgICAgICAgIGRlY2ltYWxTeW1ib2w6IHRoaXMubnVtYmVyRm9ybWF0LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgdGhvdXNhbmRTeW1ib2w6IHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBndWlkZTogZmFsc2UsXG4gICAgICAgIH0gYXMgVHVpVGV4dE1hc2tPcHRpb25zIGFzIHVua25vd24gYXMgVGV4dE1hc2tDb25maWc7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogMy4wIFJlbW92ZSBpbiB2LjNcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl9oaWRlLWJ1dHRvbnMnKVxuICAgIGdldCBidXR0b25zSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oaWRlQnV0dG9ucyB8fCB0aGlzLmFwcGVhcmFuY2UgPT09ICd0YWJsZSc7XG4gICAgfVxuXG4gICAgZ2V0IGljb25VcCgpOiBQb2x5bW9ycGhldXNDb250ZW50PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaWNvbnMudXA7XG4gICAgfVxuXG4gICAgZ2V0IGljb25Eb3duKCk6IFBvbHltb3JwaGV1c0NvbnRlbnQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29ucy5kb3duO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnByaW1pdGl2ZVRleHRmaWVsZCB8fCB0aGlzLmNvbXB1dGVkRGlzYWJsZWRcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB0aGlzLnByaW1pdGl2ZVRleHRmaWVsZC5uYXRpdmVGb2N1c2FibGVFbGVtZW50O1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNpemUnKVxuICAgIGdldCBzaXplKCk6IFR1aVNpemVMIHwgVHVpU2l6ZVMge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0ZmllbGRTaXplLnNpemU7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc05hdGl2ZUZvY3VzZWQodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBnZXQgZXhhbXBsZVRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyh0aGlzLm1pbik7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9jdXNlZCA/IHRoaXMubmF0aXZlVmFsdWUgOiB0aGlzLmZvcm1hdE51bWJlcih0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgbWludXNCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmludGVyYWN0aXZlIHx8IChpc1ByZXNlbnQodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZSA8PSB0aGlzLm1pbik7XG4gICAgfVxuXG4gICAgZ2V0IHBsdXNCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmludGVyYWN0aXZlIHx8IChpc1ByZXNlbnQodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZSA+PSB0aGlzLm1heCk7XG4gICAgfVxuXG4gICAgb25CdXR0b25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQsIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGRpc2FibGVkIHx8ICF0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgfHwgdGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgc2V0TmF0aXZlRm9jdXNlZCh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uRm9jdXNlZChmb2N1c2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5vbkJsdXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChmb2N1c2VkKTtcbiAgICB9XG5cbiAgICBvbkhvdmVyZWQoaG92ZXJlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUhvdmVyZWQoaG92ZXJlZCk7XG4gICAgfVxuXG4gICAgb25QcmVzc2VkKHByZXNzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVQcmVzc2VkKHByZXNzZWQpO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNhcHBlZCA9IHRoaXMuY2FwVmFsdWUodGhpcy5uYXRpdmVOdW1iZXJWYWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNOb3ROdW1iZXIoY2FwcGVkKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShudWxsKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlcihjYXBwZWQpO1xuXG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZVZhbHVlICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShjYXBwZWQpO1xuICAgIH1cblxuICAgIGRlY3JlYXNlVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9ICh0aGlzLnZhbHVlIHx8IDApIC0gdGhpcy5zdGVwO1xuXG4gICAgICAgIHRoaXMuc2FmZVVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBpbmNyZWFzZVZhbHVlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSAodGhpcy52YWx1ZSB8fCAwKSArIHRoaXMuc3RlcDtcblxuICAgICAgICB0aGlzLnNhZmVVcGRhdGVWYWx1ZShuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgIGNhc2UgJ1VwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluY3JlYXNlVmFsdWUoKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgIGNhc2UgJ0Rvd24nOlxuICAgICAgICAgICAgICAgIHRoaXMuZGVjcmVhc2VWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgbmF0aXZlTnVtYmVyVmFsdWUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KFxuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZS5zcGxpdCh0aGlzLm51bWJlckZvcm1hdC50aG91c2FuZFNlcGFyYXRvcikuam9pbignJyksXG4gICAgICAgICAgICAxMCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBuYXRpdmVWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50ID8gdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LnZhbHVlIDogJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXQgbmF0aXZlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYWZlVXBkYXRlVmFsdWUobmV3VmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGNsYW1wKG5ld1ZhbHVlLCB0aGlzLm1pbiwgdGhpcy5tYXgpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gdGhpcy5mb3JtYXROdW1iZXIodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FwVmFsdWUodmFsdWU6IG51bWJlcik6IG51bWJlciB8IG51bGwge1xuICAgICAgICBjb25zdCBjYXBwZWQgPSBNYXRoLm1pbih2YWx1ZSwgdGhpcy5tYXgpO1xuXG4gICAgICAgIHJldHVybiBOdW1iZXIuaXNOYU4oY2FwcGVkKSB8fCBjYXBwZWQgPCB0aGlzLm1pbiA/IG51bGwgOiBjYXBwZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTm90TnVtYmVyKHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZSA9IE1hdGgubWF4KHRoaXMubmF0aXZlTnVtYmVyVmFsdWUgfHwgMCwgdGhpcy5taW4pO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlKTtcblxuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gZm9ybWF0dGVkVmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLnByaW1pdGl2ZVRleHRmaWVsZCkge1xuICAgICAgICAgICAgdGhpcy5wcmltaXRpdmVUZXh0ZmllbGQudmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0TnVtYmVyKHZhbHVlOiBudW1iZXIgfCBudWxsKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNOb3ROdW1iZXIodmFsdWUpXG4gICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICA6IGZvcm1hdE51bWJlcihcbiAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC50aG91c2FuZFNlcGFyYXRvcixcbiAgICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTm90TnVtYmVyKHZhbHVlOiBudW1iZXIgfCBudWxsKTogdmFsdWUgaXMgbnVsbCB7XG4gICAgICAgIHJldHVybiAhaXNQcmVzZW50KHZhbHVlKSB8fCBOdW1iZXIuaXNOYU4odmFsdWUpO1xuICAgIH1cbn1cbiJdfQ==
|
|
322
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY291bnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2lucHV0LWNvdW50LyIsInNvdXJjZXMiOlsiaW5wdXQtY291bnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLDBCQUEwQixFQUMxQixLQUFLLEVBQ0wsZUFBZSxFQUNmLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsMkJBQTJCLEVBQzNCLGFBQWEsRUFDYixjQUFjLEVBRWQsT0FBTyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLDZCQUE2QixFQUM3Qix1QkFBdUIsRUFDdkIsOEJBQThCLEVBQzlCLFFBQVEsRUFDUixRQUFRLEVBQ1IseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixxQkFBcUIsR0FDeEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUcxRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBQyx1QkFBdUIsRUFBdUIsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRixXQUFXO0FBaUJYO0lBQ1ksMENBQWtDO0lBZ0MxQyxnQ0FJSSxPQUF5QixFQUNFLGlCQUFvQyxFQUU5QyxVQUFrQixFQUVsQixhQUF3QyxF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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aUNvbnRyb2wsXG4gICAgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2wsXG4gICAgY2xhbXAsXG4gICAgaXNOYXRpdmVGb2N1c2VkLFxuICAgIGlzUHJlc2VudCxcbiAgICBzZXROYXRpdmVGb2N1c2VkLFxuICAgIFRVSV9GT0NVU0FCTEVfSVRFTV9BQ0NFU1NPUixcbiAgICBUVUlfSVNfTU9CSUxFLFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICB0dWlQdXJlLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7XG4gICAgZm9ybWF0TnVtYmVyLFxuICAgIFRVSV9OVU1CRVJfRk9STUFULFxuICAgIFRVSV9URVhURklFTERfQVBQRUFSQU5DRSxcbiAgICBUVUlfVEVYVEZJRUxEX1NJWkUsXG4gICAgdHVpQ3JlYXRlTnVtYmVyTWFzayxcbiAgICB0dWlNYXNrZWROdW1iZXJTdHJpbmdUb051bWJlcixcbiAgICBUdWlOdW1iZXJGb3JtYXRTZXR0aW5ncyxcbiAgICBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQsXG4gICAgVHVpU2l6ZUwsXG4gICAgVHVpU2l6ZVMsXG4gICAgVHVpVGV4dGZpZWxkU2l6ZURpcmVjdGl2ZSxcbiAgICBUdWlUZXh0TWFza09wdGlvbnMsXG4gICAgVHVpV2l0aE9wdGlvbmFsTWluTWF4LFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1RVSV9QTFVTX01JTlVTX1RFWFRTfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQge1RleHRNYXNrQ29uZmlnfSBmcm9tICdhbmd1bGFyMi10ZXh0LW1hc2snO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUVUlfSU5QVVRfQ09VTlRfT1BUSU9OUywgVHVpSW5wdXRDb3VudE9wdGlvbnN9IGZyb20gJy4vaW5wdXQtY291bnQtb3B0aW9ucyc7XG5cbi8vIEBkeW5hbWljXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1jb3VudCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWNvdW50LnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LWNvdW50LnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVFVJX0ZPQ1VTQUJMRV9JVEVNX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVHVpSW5wdXRDb3VudENvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEFic3RyYWN0VHVpQ29udHJvbCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR1aUlucHV0Q291bnRDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0Q291bnRDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sPG51bWJlcj5cbiAgICBpbXBsZW1lbnRzIFR1aVdpdGhPcHRpb25hbE1pbk1heDxudW1iZXI+LCBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3JcbntcbiAgICBAVmlld0NoaWxkKFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByaW1pdGl2ZVRleHRmaWVsZD86IFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudDtcblxuICAgIHByaXZhdGUgdW5maW5pc2hlZFZhbHVlOiBzdHJpbmcgfCBudWxsID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgc3RlcCA9IHRoaXMub3B0aW9ucy5zdGVwO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1pbiA9IHRoaXMub3B0aW9ucy5taW47XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbWF4ID0gdGhpcy5vcHRpb25zLm1heDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBoaWRlQnV0dG9ucyA9IHRoaXMub3B0aW9ucy5oaWRlQnV0dG9ucztcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBwcmVmaXggPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBwb3N0Zml4ID0gdGhpcy5vcHRpb25zLnBvc3RmaXg7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfQVBQRUFSQU5DRSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhcHBlYXJhbmNlOiBzdHJpbmcsXG4gICAgICAgIEBJbmplY3QoVFVJX1RFWFRGSUVMRF9TSVpFKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZFNpemU6IFR1aVRleHRmaWVsZFNpemVEaXJlY3RpdmUsXG4gICAgICAgIEBJbmplY3QoVFVJX1BMVVNfTUlOVVNfVEVYVFMpXG4gICAgICAgIHJlYWRvbmx5IG1pbnVzVGV4dHMkOiBPYnNlcnZhYmxlPFtzdHJpbmcsIHN0cmluZ10+LFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX0NPVU5UX09QVElPTlMpXG4gICAgICAgIHJlYWRvbmx5IG9wdGlvbnM6IFR1aUlucHV0Q291bnRPcHRpb25zLFxuICAgICAgICBASW5qZWN0KFRVSV9OVU1CRVJfRk9STUFUKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG51bWJlckZvcm1hdDogVHVpTnVtYmVyRm9ybWF0U2V0dGluZ3MsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNvbnRyb2wsIGNoYW5nZURldGVjdG9yUmVmKTtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIGdldE1hc2soYWxsb3dOZWdhdGl2ZTogYm9vbGVhbik6IFRleHRNYXNrQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1hc2s6IHR1aUNyZWF0ZU51bWJlck1hc2soe1xuICAgICAgICAgICAgICAgIGFsbG93TmVnYXRpdmUsXG4gICAgICAgICAgICAgICAgZGVjaW1hbFN5bWJvbDogdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICB0aG91c2FuZFN5bWJvbDogdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGd1aWRlOiBmYWxzZSxcbiAgICAgICAgfSBhcyBUdWlUZXh0TWFza09wdGlvbnMgYXMgdW5rbm93biBhcyBUZXh0TWFza0NvbmZpZztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiAzLjAgUmVtb3ZlIGluIHYuM1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuX2hpZGUtYnV0dG9ucycpXG4gICAgZ2V0IGJ1dHRvbnNIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhpZGVCdXR0b25zIHx8IHRoaXMuYXBwZWFyYW5jZSA9PT0gJ3RhYmxlJztcbiAgICB9XG5cbiAgICBnZXQgaWNvblVwKCk6IFBvbHltb3JwaGV1c0NvbnRlbnQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29ucy51cDtcbiAgICB9XG5cbiAgICBnZXQgaWNvbkRvd24oKTogUG9seW1vcnBoZXVzQ29udGVudDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmljb25zLmRvd247XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gIXRoaXMucHJpbWl0aXZlVGV4dGZpZWxkIHx8IHRoaXMuY29tcHV0ZWREaXNhYmxlZFxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IHRoaXMucHJpbWl0aXZlVGV4dGZpZWxkLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2l6ZScpXG4gICAgZ2V0IHNpemUoKTogVHVpU2l6ZUwgfCBUdWlTaXplUyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZFNpemUuc2l6ZTtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzTmF0aXZlRm9jdXNlZCh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBleGFtcGxlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHRoaXMubWluKTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2VkID8gdGhpcy5uYXRpdmVWYWx1ZSA6IHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIGdldCBtaW51c0J1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaW50ZXJhY3RpdmUgfHwgKGlzUHJlc2VudCh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlIDw9IHRoaXMubWluKTtcbiAgICB9XG5cbiAgICBnZXQgcGx1c0J1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaW50ZXJhY3RpdmUgfHwgKGlzUHJlc2VudCh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlID49IHRoaXMubWF4KTtcbiAgICB9XG5cbiAgICBvbkJ1dHRvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCwgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8fCB0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgb25Gb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFmb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9uQmx1cigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuICAgIH1cblxuICAgIG9uSG92ZXJlZChob3ZlcmVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlSG92ZXJlZChob3ZlcmVkKTtcbiAgICB9XG5cbiAgICBvblByZXNzZWQocHJlc3NlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVByZXNzZWQocHJlc3NlZCk7XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNOYXRpdmVWYWx1ZU5vdEZpbmlzaGVkKSB7XG4gICAgICAgICAgICB0aGlzLnVuZmluaXNoZWRWYWx1ZSA9IHRoaXMubmF0aXZlVmFsdWU7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudW5maW5pc2hlZFZhbHVlID0gbnVsbDtcblxuICAgICAgICBjb25zdCBjYXBwZWQgPSB0aGlzLmNhcFZhbHVlKHRoaXMubmF0aXZlTnVtYmVyVmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTm90TnVtYmVyKGNhcHBlZCkpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5mb3JtYXROdW1iZXIoY2FwcGVkKTtcblxuICAgICAgICBpZiAodGhpcy5uYXRpdmVWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUoY2FwcGVkKTtcbiAgICB9XG5cbiAgICBkZWNyZWFzZVZhbHVlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSAodGhpcy52YWx1ZSB8fCAwKSAtIHRoaXMuc3RlcDtcblxuICAgICAgICB0aGlzLnNhZmVVcGRhdGVWYWx1ZShuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgaW5jcmVhc2VWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gKHRoaXMudmFsdWUgfHwgMCkgKyB0aGlzLnN0ZXA7XG5cbiAgICAgICAgdGhpcy5zYWZlVXBkYXRlVmFsdWUobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICBjYXNlICdVcCc6XG4gICAgICAgICAgICAgICAgdGhpcy5pbmNyZWFzZVZhbHVlKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICBjYXNlICdEb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRlY3JlYXNlVmFsdWUoKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG5hdGl2ZU51bWJlclZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBwYXJzZUludChcbiAgICAgICAgICAgIHRoaXMubmF0aXZlVmFsdWUuc3BsaXQodGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IpLmpvaW4oJycpLFxuICAgICAgICAgICAgMTAsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgbmF0aXZlVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCA/IHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC52YWx1ZSA6ICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0IG5hdGl2ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2FmZVVwZGF0ZVZhbHVlKG5ld1ZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBjbGFtcChuZXdWYWx1ZSwgdGhpcy5taW4sIHRoaXMubWF4KTtcblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhcFZhbHVlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgY29uc3QgY2FwcGVkID0gTWF0aC5taW4odmFsdWUsIHRoaXMubWF4KTtcblxuICAgICAgICByZXR1cm4gTnVtYmVyLmlzTmFOKGNhcHBlZCkgfHwgY2FwcGVkIDwgdGhpcy5taW4gPyBudWxsIDogY2FwcGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25CbHVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBuYXRpdmVOdW1iZXJWYWx1ZSA9IHRoaXMudW5maW5pc2hlZFZhbHVlXG4gICAgICAgICAgICA/IHR1aU1hc2tlZE51bWJlclN0cmluZ1RvTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgdGhpcy51bmZpbmlzaGVkVmFsdWUsXG4gICAgICAgICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogdGhpcy5uYXRpdmVOdW1iZXJWYWx1ZTtcblxuICAgICAgICB0aGlzLnVuZmluaXNoZWRWYWx1ZSA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNOb3ROdW1iZXIobmF0aXZlTnVtYmVyVmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZSA9IE1hdGgubWF4KG5hdGl2ZU51bWJlclZhbHVlIHx8IDAsIHRoaXMubWluKTtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlcih2YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IGZvcm1hdHRlZFZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5wcmltaXRpdmVUZXh0ZmllbGQpIHtcbiAgICAgICAgICAgIHRoaXMucHJpbWl0aXZlVGV4dGZpZWxkLnZhbHVlID0gZm9ybWF0dGVkVmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdE51bWJlcih2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTm90TnVtYmVyKHZhbHVlKVxuICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgOiBmb3JtYXROdW1iZXIoXG4gICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc05vdE51bWJlcih2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IHZhbHVlIGlzIG51bGwge1xuICAgICAgICByZXR1cm4gIWlzUHJlc2VudCh2YWx1ZSkgfHwgTnVtYmVyLmlzTmFOKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpc05hdGl2ZVZhbHVlTm90RmluaXNoZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHtuYXRpdmVOdW1iZXJWYWx1ZX0gPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiBuYXRpdmVOdW1iZXJWYWx1ZSA8IDBcbiAgICAgICAgICAgID8gbmF0aXZlTnVtYmVyVmFsdWUgPiB0aGlzLm1heFxuICAgICAgICAgICAgOiBuYXRpdmVOdW1iZXJWYWx1ZSA8IHRoaXMubWluO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -175,9 +175,6 @@ var TuiTabsWithMoreComponent = /** @class */ (function () {
|
|
|
175
175
|
return -1;
|
|
176
176
|
};
|
|
177
177
|
TuiTabsWithMoreComponent.prototype.updateActiveItemIndex = function (activeItemIndex) {
|
|
178
|
-
if (this.activeItemIndex === activeItemIndex) {
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
178
|
this.activeItemIndex = activeItemIndex;
|
|
182
179
|
this.activeItemIndexChange.emit(activeItemIndex);
|
|
183
180
|
this.maxIndex = this.getMaxIndex();
|
|
@@ -238,4 +235,4 @@ var TuiTabsWithMoreComponent = /** @class */ (function () {
|
|
|
238
235
|
return TuiTabsWithMoreComponent;
|
|
239
236
|
}());
|
|
240
237
|
export { TuiTabsWithMoreComponent };
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy13aXRoLW1vcmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL3RhYnMvIiwic291cmNlcyI6WyJ0YWJzLXdpdGgtbW9yZS90YWJzLXdpdGgtbW9yZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsS0FBSyxFQUVMLHNCQUFzQixFQUN0QixRQUFRLEVBRVIsY0FBYyxHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsYUFBYSxFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsY0FBYyxFQUFFLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXhFLFdBQVc7QUFRWDtJQW9DSSxrQ0FDK0MsT0FBdUIsRUFDekIsTUFBYyxFQUNoQixRQUE2QixFQUMvQixVQUFtQyxFQUM1QixpQkFBb0MsRUFDaEQs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RUFBRTtnRUFDb0I7SUFHckM7UUFEQyxNQUFNLEVBQUU7MkVBQ21EO0lBRzVEO1FBREMsZUFBZSxDQUFDLGVBQWUsRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUMsQ0FBQzsyREFDd0I7SUFoQ3JFLHdCQUF3QjtRQVBwQyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsMENBQTBDO1lBQ3BELGk5RUFBNkM7WUFFN0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07WUFDL0MsU0FBUyxFQUFFLGNBQWM7O1NBQzVCLENBQUM7UUFzQ08sV0FBQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUN4QixXQUFBLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUN0QixXQUFBLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNwQixXQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNsQixXQUFBLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQ3pCLFdBQUEsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO09BMUNqQix3QkFBd0IsQ0FpTnBDO0lBQUQsK0JBQUM7Q0FBQSxBQWpORCxJQWlOQztTQWpOWSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBFTVBUWV9RVUVSWSxcbiAgICBnZXRDbG9zZXN0Rm9jdXNhYmxlLFxuICAgIGlzTmF0aXZlRm9jdXNlZCxcbiAgICBzZXROYXRpdmVGb2N1c2VkLFxuICAgIHRvSW50LFxuICAgIFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUsXG4gICAgdHVpQXNzZXJ0SXNIVE1MRWxlbWVudCxcbiAgICB0dWlDbGFtcCxcbiAgICBUdWlDb250ZXh0V2l0aEltcGxpY2l0LFxuICAgIHR1aURlZmF1bHRQcm9wLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7VFVJX01PUkVfV09SRCwgVFVJX1RBQl9NQVJHSU59IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7VHVpVGFiRGlyZWN0aXZlfSBmcm9tICcuLi90YWIuZGlyZWN0aXZlJztcbmltcG9ydCB7VHVpVGFiQ29tcG9uZW50fSBmcm9tICcuLi90YWIvdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQge1RVSV9UQUJTX09QVElPTlMsIFR1aVRhYnNPcHRpb25zfSBmcm9tICcuLi90YWJzLW9wdGlvbnMnO1xuaW1wb3J0IHtUQUJTX1BST1ZJREVSUywgVEFCU19SRUZSRVNIfSBmcm9tICcuL3RhYnMtd2l0aC1tb3JlLnByb3ZpZGVycyc7XG5cbi8vIEBkeW5hbWljXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS10YWJzLXdpdGgtbW9yZSwgbmF2W3R1aVRhYnNXaXRoTW9yZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJzLXdpdGgtbW9yZS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90YWJzLXdpdGgtbW9yZS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBUQUJTX1BST1ZJREVSUyxcbn0pXG5leHBvcnQgY2xhc3MgVHVpVGFic1dpdGhNb3JlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQFZpZXdDaGlsZChUdWlUYWJDb21wb25lbnQsIHtyZWFkOiBFbGVtZW50UmVmfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vcmVCdXR0b24/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcblxuICAgIHByaXZhdGUgbWF4SW5kZXggPSBJbmZpbml0eTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtb3JlQ29udGVudDogUG9seW1vcnBoZXVzQ29udGVudCA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGRyb3Bkb3duQ29udGVudDogUG9seW1vcnBoZXVzQ29udGVudDxUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmU+PiA9XG4gICAgICAgICcnO1xuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl91bmRlcmxpbmUnKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgdW5kZXJsaW5lID0gdGhpcy5vcHRpb25zLnVuZGVybGluZTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBhY3RpdmVJdGVtSW5kZXggPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGl0ZW1zTGltaXQgPSB0aGlzLm9wdGlvbnMuaXRlbXNMaW1pdDtcblxuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGFjdGl2ZUl0ZW1JbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUdWlUYWJEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZn0pXG4gICAgcmVhZG9ubHkgaXRlbXM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+ID0gRU1QVFlfUVVFUlk7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChUVUlfVEFCU19PUFRJT05TKSBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFR1aVRhYnNPcHRpb25zLFxuICAgICAgICBASW5qZWN0KFRVSV9UQUJfTUFSR0lOKSBwcml2YXRlIHJlYWRvbmx5IG1hcmdpbjogbnVtYmVyLFxuICAgICAgICBASW5qZWN0KFRBQlNfUkVGUkVTSCkgcHJpdmF0ZSByZWFkb25seSByZWZyZXNoJDogT2JzZXJ2YWJsZTx1bmtub3duPixcbiAgICAgICAgQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfTU9SRV9XT1JEKSByZWFkb25seSBtb3JlV29yZCQ6IE9ic2VydmFibGU8c3RyaW5nPixcbiAgICApIHt9XG5cbiAgICAvLyBUT0RPOiBJbXByb3ZlIHBlcmZvcm1hbmNlXG4gICAgZ2V0IHRhYnMoKTogcmVhZG9ubHkgSFRNTEVsZW1lbnRbXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tPEhUTUxFbGVtZW50PihcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1t0dWlUYWJdJyksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGFjdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgY29uc3Qge3RhYnN9ID0gdGhpcztcbiAgICAgICAgY29uc3Qgc2FmZUFjdGl2ZUluZGV4ID0gdHVpQ2xhbXAodGhpcy5hY3RpdmVJdGVtSW5kZXggfHwgMCwgMCwgdGFicy5sZW5ndGggLSAyKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4cG9zZUFjdGl2ZSB8fCB0aGlzLmxhc3RWaXNpYmxlSW5kZXggPj0gc2FmZUFjdGl2ZUluZGV4XG4gICAgICAgICAgICA/IHRhYnNbc2FmZUFjdGl2ZUluZGV4XSB8fCBudWxsXG4gICAgICAgICAgICA6IHRoaXMubW9yZUJ1dHRvbj8ubmF0aXZlRWxlbWVudCB8fCBudWxsO1xuICAgIH1cblxuICAgIGdldCBpc01vcmVWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXN0VmlzaWJsZUluZGV4IDwgdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xuICAgIH1cblxuICAgIGdldCBpc01vcmVGb2N1c2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMubW9yZUJ1dHRvbiAmJiBpc05hdGl2ZUZvY3VzZWQodGhpcy5tb3JlQnV0dG9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBpc01vcmVBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm9wZW4gfHxcbiAgICAgICAgICAgICghdGhpcy5vcHRpb25zLmV4cG9zZUFjdGl2ZSAmJiB0aGlzLmxhc3RWaXNpYmxlSW5kZXggPCB0aGlzLmFjdGl2ZUl0ZW1JbmRleClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaXNNb3JlQWxvbmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhc3RWaXNpYmxlSW5kZXggPCAwICYmICF0aGlzLm9wdGlvbnMuZXhwb3NlQWN0aXZlO1xuICAgIH1cblxuICAgIGdldCBsYXN0VmlzaWJsZUluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLml0ZW1zTGltaXQgKyAxID49IHRoaXMuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXhJbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9mZnNldCA9XG4gICAgICAgICAgICB0aGlzLml0ZW1zTGltaXQgLSAxID4gdGhpcy5hY3RpdmVJdGVtSW5kZXggfHwgIXRoaXMub3B0aW9ucy5leHBvc2VBY3RpdmVcbiAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICA6IDI7XG5cbiAgICAgICAgcmV0dXJuIE1hdGgubWluKHRoaXMuaXRlbXNMaW1pdCAtIG9mZnNldCwgdGhpcy5tYXhJbmRleCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlZnJlc2gkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5nZXRNYXhJbmRleCgpKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIobWF4SW5kZXggPT4gdGhpcy5tYXhJbmRleCAhPT0gbWF4SW5kZXgpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShtYXhJbmRleCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXhJbmRleCA9IG1heEluZGV4O1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25BY3RpdmVJdGVtSW5kZXhDaGFuZ2UoYWN0aXZlSXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVJdGVtSW5kZXgoYWN0aXZlSXRlbUluZGV4KTtcbiAgICB9XG5cbiAgICBvbkNsaWNrKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9jdXNNb3JlKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQWN0aXZlSXRlbUluZGV4KGluZGV4KTtcbiAgICB9XG5cbiAgICBvbkFycm93UmlnaHQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHR1aUFzc2VydElzSFRNTEVsZW1lbnQoZXZlbnQudGFyZ2V0KTtcblxuICAgICAgICBpZiAoaXNOYXRpdmVGb2N1c2VkKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNNb3JlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFycm93TGVmdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge3RhYnN9ID0gdGhpcztcbiAgICAgICAgbGV0IGluZGV4ID0gdGFicy5sZW5ndGggLSAyO1xuXG4gICAgICAgIHdoaWxlIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRhYnNbaW5kZXhdKTtcblxuICAgICAgICAgICAgaWYgKGlzTmF0aXZlRm9jdXNlZCh0YWJzW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGluZGV4LS07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbldyYXBwZXJBcnJvdyhldmVudDogRXZlbnQsIHdyYXBwZXI6IEhUTUxFbGVtZW50LCBwcmV2OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGdldENsb3Nlc3RGb2N1c2FibGUoYnV0dG9uLCBwcmV2LCB3cmFwcGVyKTtcblxuICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc092ZXJmbG93bihpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpbmRleCAhPT0gdGhpcy5hY3RpdmVJdGVtSW5kZXggfHwgIXRoaXMub3B0aW9ucy5leHBvc2VBY3RpdmU7XG4gICAgfVxuXG4gICAgc2hvdWxkU2hvdyhpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpbmRleCA+IHRoaXMubGFzdFZpc2libGVJbmRleCAmJiB0aGlzLmlzT3ZlcmZsb3duKGluZGV4KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzTW9yZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9yZUJ1dHRvbikge1xuICAgICAgICAgICAgc2V0TmF0aXZlRm9jdXNlZCh0aGlzLm1vcmVCdXR0b24ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1heEluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHt0YWJzLCBhY3RpdmVJdGVtSW5kZXgsIG1hcmdpbn0gPSB0aGlzO1xuXG4gICAgICAgIGlmICh0YWJzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge2V4cG9zZUFjdGl2ZSwgbWluTW9yZVdpZHRofSA9IHRoaXMub3B0aW9ucztcbiAgICAgICAgY29uc3Qge2NsaWVudFdpZHRofSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBhY3RpdmVXaWR0aCA9IHRhYnNbYWN0aXZlSXRlbUluZGV4XSA/IHRhYnNbYWN0aXZlSXRlbUluZGV4XS5zY3JvbGxXaWR0aCA6IDA7XG4gICAgICAgIGNvbnN0IG1vcmVXaWR0aCA9IE1hdGgubWF4KHRhYnNbdGFicy5sZW5ndGggLSAxXS5zY3JvbGxXaWR0aCwgbWluTW9yZVdpZHRoKTtcbiAgICAgICAgbGV0IG1heEluZGV4ID0gdGFicy5sZW5ndGggLSAyO1xuICAgICAgICBsZXQgdG90YWwgPVxuICAgICAgICAgICAgdGFicy5yZWR1Y2UoKGFjYywge3Njcm9sbFdpZHRofSkgPT4gYWNjICsgc2Nyb2xsV2lkdGgsIDApICtcbiAgICAgICAgICAgIG1heEluZGV4ICogbWFyZ2luIC1cbiAgICAgICAgICAgIHRhYnNbdGFicy5sZW5ndGggLSAxXS5zY3JvbGxXaWR0aDtcblxuICAgICAgICBpZiAodG90YWwgPD0gY2xpZW50V2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBJbmZpbml0eTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChtYXhJbmRleCkge1xuICAgICAgICAgICAgdG90YWwgLT0gdGFic1ttYXhJbmRleF0uc2Nyb2xsV2lkdGggKyBtYXJnaW47XG4gICAgICAgICAgICBtYXhJbmRleC0tO1xuXG4gICAgICAgICAgICBjb25zdCBhY3RpdmVEaXNwbGFjZWQgPSBleHBvc2VBY3RpdmUgJiYgYWN0aXZlSXRlbUluZGV4ID4gbWF4SW5kZXg7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVPZmZzZXQgPSBhY3RpdmVEaXNwbGFjZWQgPyBhY3RpdmVXaWR0aCArIG1hcmdpbiA6IDA7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50V2lkdGggPSB0b3RhbCArIGFjdGl2ZU9mZnNldCArIG1vcmVXaWR0aCArIG1hcmdpbjtcbiAgICAgICAgICAgIC8vIE5lZWRlZCBmb3IgZGlmZmVyZW50IHJvdW5kaW5nIG9mIHZpc2libGUgYW5kIGhpZGRlbiBlbGVtZW50cyBzY3JvbGxXaWR0aFxuICAgICAgICAgICAgY29uc3Qgc2FmZXR5T2Zmc2V0ID0gdG9JbnQodGhpcy5tYXhJbmRleCA9PT0gbWF4SW5kZXggLSAxKTtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRXaWR0aCArIHNhZmV0eU9mZnNldCA8IGNsaWVudFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1heEluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQWN0aXZlSXRlbUluZGV4KGFjdGl2ZUl0ZW1JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZUl0ZW1JbmRleCA9PT0gYWN0aXZlSXRlbUluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1JbmRleCA9IGFjdGl2ZUl0ZW1JbmRleDtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtSW5kZXhDaGFuZ2UuZW1pdChhY3RpdmVJdGVtSW5kZXgpO1xuICAgICAgICB0aGlzLm1heEluZGV4ID0gdGhpcy5nZXRNYXhJbmRleCgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy13aXRoLW1vcmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL3RhYnMvIiwic291cmNlcyI6WyJ0YWJzLXdpdGgtbW9yZS90YWJzLXdpdGgtbW9yZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsS0FBSyxFQUVMLHNCQUFzQixFQUN0QixRQUFRLEVBRVIsY0FBYyxHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsYUFBYSxFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsY0FBYyxFQUFFLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXhFLFdBQVc7QUFRWDtJQW9DSSxrQ0FDK0MsT0FBdUIsRUFDekIsTUFBYyxFQUNoQixRQUE2QixFQUMvQixVQUFtQyxFQUM1QixpQkFBb0MsRUFDaEQsU0FBNkI7UUFMbEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDekIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQUMvQixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUM1QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ2hELGNBQVMsR0FBVCxTQUFTLENBQW9CO1FBdEN6RCxhQUFRLEdBQUcsUUFBUSxDQUFDO1FBSTVCLGdCQUFXLEdBQXdCLEVBQUUsQ0FBQztRQUl0QyxvQkFBZSxHQUNYLEVBQUUsQ0FBQztRQUtQLGNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUluQyxvQkFBZSxHQUFHLENBQUMsQ0FBQztRQUlwQixlQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFHNUIsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUduRCxVQUFLLEdBQW9ELFdBQVcsQ0FBQztRQUU5RSxTQUFJLEdBQUcsS0FBSyxDQUFDO0lBU1YsQ0FBQztJQUdKLHNCQUFJLDBDQUFJO1FBRFIsNEJBQTRCO2FBQzVCO1lBQ0ksT0FBTyxLQUFLLENBQUMsSUFBSSxDQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUM3RCxDQUFDO1FBQ04sQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxtREFBYTthQUFqQjs7WUFDVyxJQUFBLGdCQUFJLENBQVM7WUFDcEIsSUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRWhGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLGVBQWU7Z0JBQ3hFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSTtnQkFDL0IsQ0FBQyxDQUFDLE9BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsYUFBYSxLQUFJLElBQUksQ0FBQztRQUNqRCxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLG1EQUFhO2FBQWpCO1lBQ0ksT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELENBQUM7OztPQUFBO0lBRUQsc0JBQUkscURBQWU7YUFBbkI7WUFDSSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9FLENBQUM7OztPQUFBO0lBRUQsc0JBQUksa0RBQVk7YUFBaEI7WUFDSSxPQUFPLENBQ0gsSUFBSSxDQUFDLElBQUk7Z0JBQ1QsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQy9FLENBQUM7UUFDTixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLGlEQUFXO2FBQWY7WUFDSSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUNuRSxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHNEQUFnQjthQUFwQjtZQUNJLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQzFDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUN4QjtZQUVELElBQU0sTUFBTSxHQUNSLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7Z0JBQ3BFLENBQUMsQ0FBQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFWixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdELENBQUM7OztPQUFBO0lBRUQsa0RBQWUsR0FBZjtRQUFBLGlCQVVDO1FBVEcsSUFBSSxDQUFDLFFBQVE7YUFDUixJQUFJLENBQ0QsR0FBRyxDQUFDLGNBQU0sT0FBQSxLQUFJLENBQUMsV0FBVyxFQUFFLEVBQWxCLENBQWtCLENBQUMsRUFDN0IsTUFBTSxDQUFDLFVBQUEsUUFBUSxJQUFJLE9BQUEsS0FBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQTFCLENBQTBCLENBQUMsQ0FDakQ7YUFDQSxTQUFTLENBQUMsVUFBQSxRQUFRO1lBQ2YsS0FBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDekIsS0FBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELDBEQUF1QixHQUF2QixVQUF3QixlQUF1QjtRQUMzQyxJQUFJLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELDBDQUFPLEdBQVAsVUFBUSxLQUFhO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELCtDQUFZLEdBQVosVUFBYSxLQUFZO1FBQ3JCLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVyQyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztJQUVELDhDQUFXLEdBQVg7UUFDVyxJQUFBLGdCQUFJLENBQVM7UUFDcEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFNUIsT0FBTyxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ2YsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFFOUIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQzlCLE9BQU87YUFDVjtZQUVELEtBQUssRUFBRSxDQUFDO1NBQ1g7SUFDTCxDQUFDO0lBRUQsaURBQWMsR0FBZCxVQUFlLEtBQVksRUFBRSxPQUFvQixFQUFFLElBQWE7UUFDNUQsSUFBTSxNQUFNLEdBQXNCLEtBQUssQ0FBQyxNQUEyQixDQUFDO1FBQ3BFLElBQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFMUQsSUFBSSxNQUFNLEVBQUU7WUFDUixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QjtJQUNMLENBQUM7SUFFRCw4Q0FBVyxHQUFYLFVBQVksS0FBYTtRQUNyQixPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7SUFDeEUsQ0FBQztJQUVELDZDQUFVLEdBQVYsVUFBVyxLQUFhO1FBQ3BCLE9BQU8sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTyw0Q0FBUyxHQUFqQjtRQUNJLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ25EO0lBQ0wsQ0FBQztJQUVPLDhDQUFXLEdBQW5CO1FBQ1UsSUFBQSxTQUFzQyxFQUFyQyxjQUFJLEVBQUUsb0NBQWUsRUFBRSxrQkFBYyxDQUFDO1FBRTdDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakIsT0FBTyxDQUFDLENBQUM7U0FDWjtRQUVLLElBQUEsaUJBQTJDLEVBQTFDLDhCQUFZLEVBQUUsOEJBQTRCLENBQUM7UUFDM0MsSUFBQSx1REFBVyxDQUFrQztRQUNwRCxJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRixJQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM1RSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLEtBQUssR0FDTCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQUMsR0FBRyxFQUFFLEVBQWE7Z0JBQVosNEJBQVc7WUFBTSxPQUFBLEdBQUcsR0FBRyxXQUFXO1FBQWpCLENBQWlCLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELFFBQVEsR0FBRyxNQUFNO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUV0QyxJQUFJLEtBQUssSUFBSSxXQUFXLEVBQUU7WUFDdEIsT0FBTyxRQUFRLENBQUM7U0FDbkI7UUFFRCxPQUFPLFFBQVEsRUFBRTtZQUNiLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztZQUM3QyxRQUFRLEVBQUUsQ0FBQztZQUVYLElBQU0sZUFBZSxHQUFHLFlBQVksSUFBSSxlQUFlLEdBQUcsUUFBUSxDQUFDO1lBQ25FLElBQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLElBQU0sWUFBWSxHQUFHLEtBQUssR0FBRyxZQUFZLEdBQUcsU0FBUyxHQUFHLE1BQU0sQ0FBQztZQUMvRCwyRUFBMkU7WUFDM0UsSUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRTNELElBQUksWUFBWSxHQUFHLFlBQVksR0FBRyxXQUFXLEVBQUU7Z0JBQzNDLE9BQU8sUUFBUSxDQUFDO2FBQ25CO1NBQ0o7UUFFRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVPLHdEQUFxQixHQUE3QixVQUE4QixlQUF1QjtRQUNqRCxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN2QyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7O2dEQXZLSSxNQUFNLFNBQUMsZ0JBQWdCOzZDQUN2QixNQUFNLFNBQUMsY0FBYztnQkFDMkIsVUFBVSx1QkFBMUQsTUFBTSxTQUFDLFlBQVk7Z0JBQzZCLFVBQVUsdUJBQTFELE1BQU0sU0FBQyxVQUFVO2dCQUM2QyxpQkFBaUIsdUJBQS9FLE1BQU0sU0FBQyxpQkFBaUI7Z0JBQ2tCLFVBQVUsdUJBQXBELE1BQU0sU0FBQyxhQUFhOztJQXhDekI7UUFEQyxTQUFTLENBQUMsZUFBZSxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQyxDQUFDO2dFQUNhO0lBTTVEO1FBRkMsS0FBSyxFQUFFO1FBQ1AsY0FBYyxFQUFFO2lFQUNxQjtJQUl0QztRQUZDLEtBQUssRUFBRTtRQUNQLGNBQWMsRUFBRTtxRUFFVjtJQUtQO1FBSEMsS0FBSyxFQUFFO1FBQ1AsV0FBVyxDQUFDLGtCQUFrQixDQUFDO1FBQy9CLGNBQWMsRUFBRTsrREFDa0I7SUFJbkM7UUFGQyxLQUFLLEVBQUU7UUFDUCxjQUFjLEVBQUU7cUVBQ0c7SUFJcEI7UUFGQyxLQUFLLEVBQUU7UUFDUCxjQUFjLEVBQUU7Z0VBQ29CO0lBR3JDO1FBREMsTUFBTSxFQUFFOzJFQUNtRDtJQUc1RDtRQURDLGVBQWUsQ0FBQyxlQUFlLEVBQUUsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFDLENBQUM7MkRBQ3dCO0lBaENyRSx3QkFBd0I7UUFQcEMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLDBDQUEwQztZQUNwRCxpOUVBQTZDO1lBRTdDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1lBQy9DLFNBQVMsRUFBRSxjQUFjOztTQUM1QixDQUFDO1FBc0NPLFdBQUEsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDeEIsV0FBQSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDdEIsV0FBQSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDcEIsV0FBQSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDbEIsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUN6QixXQUFBLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtPQTFDakIsd0JBQXdCLENBNk1wQztJQUFELCtCQUFDO0NBQUEsQUE3TUQsSUE2TUM7U0E3TVksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgRU1QVFlfUVVFUlksXG4gICAgZ2V0Q2xvc2VzdEZvY3VzYWJsZSxcbiAgICBpc05hdGl2ZUZvY3VzZWQsXG4gICAgc2V0TmF0aXZlRm9jdXNlZCxcbiAgICB0b0ludCxcbiAgICBUdWlBY3RpdmVab25lRGlyZWN0aXZlLFxuICAgIHR1aUFzc2VydElzSFRNTEVsZW1lbnQsXG4gICAgdHVpQ2xhbXAsXG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdCxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1RVSV9NT1JFX1dPUkQsIFRVSV9UQUJfTUFSR0lOfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1R1aVRhYkRpcmVjdGl2ZX0gZnJvbSAnLi4vdGFiLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1R1aVRhYkNvbXBvbmVudH0gZnJvbSAnLi4vdGFiL3RhYi5jb21wb25lbnQnO1xuaW1wb3J0IHtUVUlfVEFCU19PUFRJT05TLCBUdWlUYWJzT3B0aW9uc30gZnJvbSAnLi4vdGFicy1vcHRpb25zJztcbmltcG9ydCB7VEFCU19QUk9WSURFUlMsIFRBQlNfUkVGUkVTSH0gZnJvbSAnLi90YWJzLXdpdGgtbW9yZS5wcm92aWRlcnMnO1xuXG4vLyBAZHluYW1pY1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktdGFicy13aXRoLW1vcmUsIG5hdlt0dWlUYWJzV2l0aE1vcmVdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFicy13aXRoLW1vcmUudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFicy13aXRoLW1vcmUuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogVEFCU19QUk9WSURFUlMsXG59KVxuZXhwb3J0IGNsYXNzIFR1aVRhYnNXaXRoTW9yZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIEBWaWV3Q2hpbGQoVHVpVGFiQ29tcG9uZW50LCB7cmVhZDogRWxlbWVudFJlZn0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb3JlQnV0dG9uPzogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG5cbiAgICBwcml2YXRlIG1heEluZGV4ID0gSW5maW5pdHk7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbW9yZUNvbnRlbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQgPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBkcm9wZG93bkNvbnRlbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQ8VHVpQ29udGV4dFdpdGhJbXBsaWNpdDxUdWlBY3RpdmVab25lRGlyZWN0aXZlPj4gPVxuICAgICAgICAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5fdW5kZXJsaW5lJylcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHVuZGVybGluZSA9IHRoaXMub3B0aW9ucy51bmRlcmxpbmU7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgYWN0aXZlSXRlbUluZGV4ID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBpdGVtc0xpbWl0ID0gdGhpcy5vcHRpb25zLml0ZW1zTGltaXQ7XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBhY3RpdmVJdGVtSW5kZXhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oVHVpVGFiRGlyZWN0aXZlLCB7cmVhZDogVGVtcGxhdGVSZWZ9KVxuICAgIHJlYWRvbmx5IGl0ZW1zOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+PiA9IEVNUFRZX1FVRVJZO1xuXG4gICAgb3BlbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoVFVJX1RBQlNfT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBUdWlUYWJzT3B0aW9ucyxcbiAgICAgICAgQEluamVjdChUVUlfVEFCX01BUkdJTikgcHJpdmF0ZSByZWFkb25seSBtYXJnaW46IG51bWJlcixcbiAgICAgICAgQEluamVjdChUQUJTX1JFRlJFU0gpIHByaXZhdGUgcmVhZG9ubHkgcmVmcmVzaCQ6IE9ic2VydmFibGU8dW5rbm93bj4sXG4gICAgICAgIEBJbmplY3QoRWxlbWVudFJlZikgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoVFVJX01PUkVfV09SRCkgcmVhZG9ubHkgbW9yZVdvcmQkOiBPYnNlcnZhYmxlPHN0cmluZz4sXG4gICAgKSB7fVxuXG4gICAgLy8gVE9ETzogSW1wcm92ZSBwZXJmb3JtYW5jZVxuICAgIGdldCB0YWJzKCk6IHJlYWRvbmx5IEhUTUxFbGVtZW50W10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbTxIVE1MRWxlbWVudD4oXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbdHVpVGFiXScpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBhY3RpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHt0YWJzfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHNhZmVBY3RpdmVJbmRleCA9IHR1aUNsYW1wKHRoaXMuYWN0aXZlSXRlbUluZGV4IHx8IDAsIDAsIHRhYnMubGVuZ3RoIC0gMik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5leHBvc2VBY3RpdmUgfHwgdGhpcy5sYXN0VmlzaWJsZUluZGV4ID49IHNhZmVBY3RpdmVJbmRleFxuICAgICAgICAgICAgPyB0YWJzW3NhZmVBY3RpdmVJbmRleF0gfHwgbnVsbFxuICAgICAgICAgICAgOiB0aGlzLm1vcmVCdXR0b24/Lm5hdGl2ZUVsZW1lbnQgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgaXNNb3JlVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFZpc2libGVJbmRleCA8IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcbiAgICB9XG5cbiAgICBnZXQgaXNNb3JlRm9jdXNhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLm1vcmVCdXR0b24gJiYgaXNOYXRpdmVGb2N1c2VkKHRoaXMubW9yZUJ1dHRvbi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBnZXQgaXNNb3JlQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5vcGVuIHx8XG4gICAgICAgICAgICAoIXRoaXMub3B0aW9ucy5leHBvc2VBY3RpdmUgJiYgdGhpcy5sYXN0VmlzaWJsZUluZGV4IDwgdGhpcy5hY3RpdmVJdGVtSW5kZXgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGlzTW9yZUFsb25lKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXN0VmlzaWJsZUluZGV4IDwgMCAmJiAhdGhpcy5vcHRpb25zLmV4cG9zZUFjdGl2ZTtcbiAgICB9XG5cbiAgICBnZXQgbGFzdFZpc2libGVJbmRleCgpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5pdGVtc0xpbWl0ICsgMSA+PSB0aGlzLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWF4SW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvZmZzZXQgPVxuICAgICAgICAgICAgdGhpcy5pdGVtc0xpbWl0IC0gMSA+IHRoaXMuYWN0aXZlSXRlbUluZGV4IHx8ICF0aGlzLm9wdGlvbnMuZXhwb3NlQWN0aXZlXG4gICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgOiAyO1xuXG4gICAgICAgIHJldHVybiBNYXRoLm1pbih0aGlzLml0ZW1zTGltaXQgLSBvZmZzZXQsIHRoaXMubWF4SW5kZXgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMuZ2V0TWF4SW5kZXgoKSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKG1heEluZGV4ID0+IHRoaXMubWF4SW5kZXggIT09IG1heEluZGV4KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUobWF4SW5kZXggPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWF4SW5kZXggPSBtYXhJbmRleDtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQWN0aXZlSXRlbUluZGV4Q2hhbmdlKGFjdGl2ZUl0ZW1JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlQWN0aXZlSXRlbUluZGV4KGFjdGl2ZUl0ZW1JbmRleCk7XG4gICAgfVxuXG4gICAgb25DbGljayhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvY3VzTW9yZSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZUl0ZW1JbmRleChpbmRleCk7XG4gICAgfVxuXG4gICAgb25BcnJvd1JpZ2h0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0dWlBc3NlcnRJc0hUTUxFbGVtZW50KGV2ZW50LnRhcmdldCk7XG5cbiAgICAgICAgaWYgKGlzTmF0aXZlRm9jdXNlZChldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzTW9yZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BcnJvd0xlZnQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHt0YWJzfSA9IHRoaXM7XG4gICAgICAgIGxldCBpbmRleCA9IHRhYnMubGVuZ3RoIC0gMjtcblxuICAgICAgICB3aGlsZSAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgc2V0TmF0aXZlRm9jdXNlZCh0YWJzW2luZGV4XSk7XG5cbiAgICAgICAgICAgIGlmIChpc05hdGl2ZUZvY3VzZWQodGFic1tpbmRleF0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbmRleC0tO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25XcmFwcGVyQXJyb3coZXZlbnQ6IEV2ZW50LCB3cmFwcGVyOiBIVE1MRWxlbWVudCwgcHJldjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBidXR0b246IEhUTUxCdXR0b25FbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxCdXR0b25FbGVtZW50O1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRDbG9zZXN0Rm9jdXNhYmxlKGJ1dHRvbiwgcHJldiwgd3JhcHBlcik7XG5cbiAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgICAgc2V0TmF0aXZlRm9jdXNlZCh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNPdmVyZmxvd24oaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaW5kZXggIT09IHRoaXMuYWN0aXZlSXRlbUluZGV4IHx8ICF0aGlzLm9wdGlvbnMuZXhwb3NlQWN0aXZlO1xuICAgIH1cblxuICAgIHNob3VsZFNob3coaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaW5kZXggPiB0aGlzLmxhc3RWaXNpYmxlSW5kZXggJiYgdGhpcy5pc092ZXJmbG93bihpbmRleCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c01vcmUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vcmVCdXR0b24pIHtcbiAgICAgICAgICAgIHNldE5hdGl2ZUZvY3VzZWQodGhpcy5tb3JlQnV0dG9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNYXhJbmRleCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB7dGFicywgYWN0aXZlSXRlbUluZGV4LCBtYXJnaW59ID0gdGhpcztcblxuICAgICAgICBpZiAodGFicy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtleHBvc2VBY3RpdmUsIG1pbk1vcmVXaWR0aH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgIGNvbnN0IHtjbGllbnRXaWR0aH0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgYWN0aXZlV2lkdGggPSB0YWJzW2FjdGl2ZUl0ZW1JbmRleF0gPyB0YWJzW2FjdGl2ZUl0ZW1JbmRleF0uc2Nyb2xsV2lkdGggOiAwO1xuICAgICAgICBjb25zdCBtb3JlV2lkdGggPSBNYXRoLm1heCh0YWJzW3RhYnMubGVuZ3RoIC0gMV0uc2Nyb2xsV2lkdGgsIG1pbk1vcmVXaWR0aCk7XG4gICAgICAgIGxldCBtYXhJbmRleCA9IHRhYnMubGVuZ3RoIC0gMjtcbiAgICAgICAgbGV0IHRvdGFsID1cbiAgICAgICAgICAgIHRhYnMucmVkdWNlKChhY2MsIHtzY3JvbGxXaWR0aH0pID0+IGFjYyArIHNjcm9sbFdpZHRoLCAwKSArXG4gICAgICAgICAgICBtYXhJbmRleCAqIG1hcmdpbiAtXG4gICAgICAgICAgICB0YWJzW3RhYnMubGVuZ3RoIC0gMV0uc2Nyb2xsV2lkdGg7XG5cbiAgICAgICAgaWYgKHRvdGFsIDw9IGNsaWVudFdpZHRoKSB7XG4gICAgICAgICAgICByZXR1cm4gSW5maW5pdHk7XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAobWF4SW5kZXgpIHtcbiAgICAgICAgICAgIHRvdGFsIC09IHRhYnNbbWF4SW5kZXhdLnNjcm9sbFdpZHRoICsgbWFyZ2luO1xuICAgICAgICAgICAgbWF4SW5kZXgtLTtcblxuICAgICAgICAgICAgY29uc3QgYWN0aXZlRGlzcGxhY2VkID0gZXhwb3NlQWN0aXZlICYmIGFjdGl2ZUl0ZW1JbmRleCA+IG1heEluZGV4O1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlT2Zmc2V0ID0gYWN0aXZlRGlzcGxhY2VkID8gYWN0aXZlV2lkdGggKyBtYXJnaW4gOiAwO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFdpZHRoID0gdG90YWwgKyBhY3RpdmVPZmZzZXQgKyBtb3JlV2lkdGggKyBtYXJnaW47XG4gICAgICAgICAgICAvLyBOZWVkZWQgZm9yIGRpZmZlcmVudCByb3VuZGluZyBvZiB2aXNpYmxlIGFuZCBoaWRkZW4gZWxlbWVudHMgc2Nyb2xsV2lkdGhcbiAgICAgICAgICAgIGNvbnN0IHNhZmV0eU9mZnNldCA9IHRvSW50KHRoaXMubWF4SW5kZXggPT09IG1heEluZGV4IC0gMSk7XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50V2lkdGggKyBzYWZldHlPZmZzZXQgPCBjbGllbnRXaWR0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXhJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUFjdGl2ZUl0ZW1JbmRleChhY3RpdmVJdGVtSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1JbmRleCA9IGFjdGl2ZUl0ZW1JbmRleDtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtSW5kZXhDaGFuZ2UuZW1pdChhY3RpdmVJdGVtSW5kZXgpO1xuICAgICAgICB0aGlzLm1heEluZGV4ID0gdGhpcy5nZXRNYXhJbmRleCgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -2,7 +2,7 @@ import { __decorate, __param } from 'tslib';
|
|
|
2
2
|
import { InjectionToken, Optional, Self, Inject, ChangeDetectorRef, ViewChild, Input, HostBinding, Component, ChangeDetectionStrategy, forwardRef, Directive, NgModule } from '@angular/core';
|
|
3
3
|
import { NgControl } from '@angular/forms';
|
|
4
4
|
import { AbstractTuiNullableControl, isNativeFocused, isPresent, setNativeFocused, clamp, TUI_IS_MOBILE, tuiDefaultProp, tuiPure, TUI_FOCUSABLE_ITEM_ACCESSOR, AbstractTuiControl } from '@taiga-ui/cdk';
|
|
5
|
-
import { tuiCreateNumberMask, formatNumber, TUI_TEXTFIELD_APPEARANCE, TuiTextfieldSizeDirective, TUI_TEXTFIELD_SIZE, TUI_NUMBER_FORMAT, TuiPrimitiveTextfieldComponent, TuiAbstractTextfieldHost, TUI_TEXTFIELD_HOST, TuiButtonModule, TuiPrimitiveTextfieldModule, TuiTextfieldControllerModule, TuiTextfieldComponent } from '@taiga-ui/core';
|
|
5
|
+
import { tuiCreateNumberMask, tuiMaskedNumberStringToNumber, formatNumber, TUI_TEXTFIELD_APPEARANCE, TuiTextfieldSizeDirective, TUI_TEXTFIELD_SIZE, TUI_NUMBER_FORMAT, TuiPrimitiveTextfieldComponent, TuiAbstractTextfieldHost, TUI_TEXTFIELD_HOST, TuiButtonModule, TuiPrimitiveTextfieldModule, TuiTextfieldControllerModule, TuiTextfieldComponent } from '@taiga-ui/core';
|
|
6
6
|
import { TUI_PLUS_MINUS_TEXTS } from '@taiga-ui/kit/tokens';
|
|
7
7
|
import { Observable } from 'rxjs';
|
|
8
8
|
import { CommonModule } from '@angular/common';
|
|
@@ -45,6 +45,7 @@ let TuiInputCountComponent = TuiInputCountComponent_1 = class TuiInputCountCompo
|
|
|
45
45
|
this.isMobile = isMobile;
|
|
46
46
|
this.options = options;
|
|
47
47
|
this.numberFormat = numberFormat;
|
|
48
|
+
this.unfinishedValue = '';
|
|
48
49
|
this.step = this.options.step;
|
|
49
50
|
this.min = this.options.min;
|
|
50
51
|
this.max = this.options.max;
|
|
@@ -115,6 +116,11 @@ let TuiInputCountComponent = TuiInputCountComponent_1 = class TuiInputCountCompo
|
|
|
115
116
|
this.updatePressed(pressed);
|
|
116
117
|
}
|
|
117
118
|
onValueChange() {
|
|
119
|
+
if (this.isNativeValueNotFinished) {
|
|
120
|
+
this.unfinishedValue = this.nativeValue;
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
this.unfinishedValue = null;
|
|
118
124
|
const capped = this.capValue(this.nativeNumberValue);
|
|
119
125
|
if (this.isNotNumber(capped)) {
|
|
120
126
|
this.updateValue(null);
|
|
@@ -178,11 +184,15 @@ let TuiInputCountComponent = TuiInputCountComponent_1 = class TuiInputCountCompo
|
|
|
178
184
|
return Number.isNaN(capped) || capped < this.min ? null : capped;
|
|
179
185
|
}
|
|
180
186
|
onBlur() {
|
|
181
|
-
|
|
187
|
+
const nativeNumberValue = this.unfinishedValue
|
|
188
|
+
? tuiMaskedNumberStringToNumber(this.unfinishedValue, this.numberFormat.decimalSeparator, this.numberFormat.thousandSeparator)
|
|
189
|
+
: this.nativeNumberValue;
|
|
190
|
+
this.unfinishedValue = null;
|
|
191
|
+
if (this.isNotNumber(nativeNumberValue)) {
|
|
182
192
|
this.updateValue(null);
|
|
183
193
|
return;
|
|
184
194
|
}
|
|
185
|
-
const value = Math.max(
|
|
195
|
+
const value = Math.max(nativeNumberValue || 0, this.min);
|
|
186
196
|
const formattedValue = this.formatNumber(value);
|
|
187
197
|
this.nativeValue = formattedValue;
|
|
188
198
|
this.updateValue(value);
|
|
@@ -198,6 +208,12 @@ let TuiInputCountComponent = TuiInputCountComponent_1 = class TuiInputCountCompo
|
|
|
198
208
|
isNotNumber(value) {
|
|
199
209
|
return !isPresent(value) || Number.isNaN(value);
|
|
200
210
|
}
|
|
211
|
+
get isNativeValueNotFinished() {
|
|
212
|
+
const { nativeNumberValue } = this;
|
|
213
|
+
return nativeNumberValue < 0
|
|
214
|
+
? nativeNumberValue > this.max
|
|
215
|
+
: nativeNumberValue < this.min;
|
|
216
|
+
}
|
|
201
217
|
};
|
|
202
218
|
TuiInputCountComponent.ctorParameters = () => [
|
|
203
219
|
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NgControl,] }] },
|