@taiga-ui/kit 3.27.0-dev.main-aafa41b → 3.28.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-date-range.umd.js +43 -48
- package/bundles/taiga-ui-kit-components-input-date-range.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-inline.umd.js +8 -1
- package/bundles/taiga-ui-kit-components-input-inline.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-tag.umd.js +1 -1
- package/bundles/taiga-ui-kit-components-input-tag.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-text-area.umd.js +38 -15
- package/bundles/taiga-ui-kit-components-text-area.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-utils-mask.umd.js +6 -0
- package/bundles/taiga-ui-kit-utils-mask.umd.js.map +1 -1
- package/components/input-date-range/input-date-range.component.d.ts +4 -4
- package/components/input-date-range/input-date-range.module.d.ts +3 -2
- package/components/input-inline/input-inline.component.d.ts +2 -0
- package/components/text-area/text-area.component.d.ts +5 -2
- package/esm2015/components/input-date-range/input-date-range.component.js +33 -37
- package/esm2015/components/input-date-range/input-date-range.module.js +6 -5
- package/esm2015/components/input-inline/input-inline.component.js +9 -2
- package/esm2015/components/input-tag/input-tag.component.js +2 -2
- package/esm2015/components/text-area/text-area.component.js +23 -12
- package/esm2015/utils/mask/create-auto-corrected-date-range-pipe.js +3 -1
- package/esm2015/utils/mask/create-date-range-mask.js +5 -1
- package/fesm2015/taiga-ui-kit-components-input-date-range.js +37 -40
- package/fesm2015/taiga-ui-kit-components-input-date-range.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-inline.js +8 -1
- package/fesm2015/taiga-ui-kit-components-input-inline.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-tag.js +1 -1
- package/fesm2015/taiga-ui-kit-components-input-tag.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-text-area.js +22 -11
- package/fesm2015/taiga-ui-kit-components-text-area.js.map +1 -1
- package/fesm2015/taiga-ui-kit-utils-mask.js +6 -0
- package/fesm2015/taiga-ui-kit-utils-mask.js.map +1 -1
- package/package.json +4 -4
- package/utils/mask/create-auto-corrected-date-range-pipe.d.ts +2 -0
- package/utils/mask/create-date-range-mask.d.ts +4 -0
|
@@ -24,19 +24,22 @@ export declare class TuiTextAreaComponent extends AbstractTuiControl<string> imp
|
|
|
24
24
|
get focused(): boolean;
|
|
25
25
|
get appearance(): string;
|
|
26
26
|
get size(): TuiSizeL | TuiSizeS;
|
|
27
|
-
get
|
|
27
|
+
get borderStart(): number;
|
|
28
|
+
get borderEnd(): number;
|
|
28
29
|
get hasCleaner(): boolean;
|
|
29
30
|
get hasTooltip(): boolean;
|
|
30
31
|
get hasValue(): boolean;
|
|
31
32
|
get hasCounter(): boolean;
|
|
32
33
|
get hasPlaceholder(): boolean;
|
|
34
|
+
get hasCustomContent(): boolean;
|
|
35
|
+
get iconLeftContent(): PolymorpheusContent<TuiContextWithImplicit<TuiSizeL | TuiSizeS>>;
|
|
36
|
+
get iconContent(): PolymorpheusContent<TuiContextWithImplicit<TuiSizeL | TuiSizeS>>;
|
|
33
37
|
get iconCleaner(): PolymorpheusContent<TuiContextWithImplicit<TuiSizeL | TuiSizeS>>;
|
|
34
38
|
get hasExampleText(): boolean;
|
|
35
39
|
get computeMaxHeight(): number | null;
|
|
36
40
|
get placeholderRaised(): boolean;
|
|
37
41
|
get fittedContent(): string;
|
|
38
42
|
get extraContent(): string;
|
|
39
|
-
get showHint(): boolean;
|
|
40
43
|
onFocused(focused: boolean): void;
|
|
41
44
|
onValueChange(value: string): void;
|
|
42
45
|
onMouseDown(event: MouseEvent): void;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, Inject, Injector, Input, Optional, Self, ViewChild, } from '@angular/core';
|
|
3
3
|
import { NgControl } from '@angular/forms';
|
|
4
|
-
import {
|
|
4
|
+
import { MASKITO_DEFAULT_OPTIONS } from '@maskito/core';
|
|
5
|
+
import { maskitoDateRangeOptionsGenerator } from '@maskito/kit';
|
|
6
|
+
import { AbstractTuiNullableControl, ALWAYS_FALSE_HANDLER, changeDateSeparator, DATE_FILLER_LENGTH, DATE_RANGE_FILLER_LENGTH, RANGE_SEPARATOR_CHAR, TUI_DATE_FORMAT, TUI_DATE_SEPARATOR, TUI_IS_MOBILE, tuiAsControl, tuiAsFocusableItemAccessor, TuiDayRange, tuiDefaultProp, tuiIsPresent, TuiMonth, tuiNullableSame, tuiPure, } from '@taiga-ui/cdk';
|
|
5
7
|
import { TUI_DEFAULT_MARKER_HANDLER, TUI_TEXTFIELD_SIZE, TuiDialogService, TuiPrimitiveTextfieldComponent, } from '@taiga-ui/core';
|
|
6
|
-
import {
|
|
8
|
+
import { MAX_DAY_RANGE_LENGTH_MAPPER, TUI_DATE_MODE_MASKITO_ADAPTER, } from '@taiga-ui/kit/constants';
|
|
7
9
|
import { TUI_DATE_RANGE_VALUE_TRANSFORMER, TUI_DATE_TEXTS, TUI_INPUT_DATE_OPTIONS, TUI_MOBILE_CALENDAR, tuiDateStreamWithTransformer, } from '@taiga-ui/kit/tokens';
|
|
8
|
-
import { tuiCreateAutoCorrectedDateRangePipe, tuiCreateDateRangeMask, } from '@taiga-ui/kit/utils/mask';
|
|
9
10
|
import { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus';
|
|
10
11
|
import { map, takeUntil } from 'rxjs/operators';
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
@@ -13,10 +14,11 @@ import * as i1 from "@taiga-ui/core";
|
|
|
13
14
|
import * as i2 from "@taiga-ui/kit/components/calendar-range";
|
|
14
15
|
import * as i3 from "@taiga-ui/cdk";
|
|
15
16
|
import * as i4 from "@taiga-ui/kit/directives";
|
|
16
|
-
import * as i5 from "@angular
|
|
17
|
-
import * as i6 from "@
|
|
18
|
-
import * as i7 from "@
|
|
19
|
-
import * as i8 from "
|
|
17
|
+
import * as i5 from "@maskito/angular";
|
|
18
|
+
import * as i6 from "@angular/common";
|
|
19
|
+
import * as i7 from "@tinkoff/ng-polymorpheus";
|
|
20
|
+
import * as i8 from "@angular/forms";
|
|
21
|
+
import * as i9 from "rxjs";
|
|
20
22
|
export class TuiInputDateRangeComponent extends AbstractTuiNullableControl {
|
|
21
23
|
constructor(control, cdr, injector, isMobile, dialogs, mobileCalendar, textfieldSize, dateFormat, dateSeparator, dateTexts$, valueTransformer, options) {
|
|
22
24
|
super(control, cdr, valueTransformer);
|
|
@@ -30,11 +32,6 @@ export class TuiInputDateRangeComponent extends AbstractTuiNullableControl {
|
|
|
30
32
|
this.dateTexts$ = dateTexts$;
|
|
31
33
|
this.valueTransformer = valueTransformer;
|
|
32
34
|
this.options = options;
|
|
33
|
-
this.textMaskOptions = {
|
|
34
|
-
mask: tuiCreateDateRangeMask(this.dateFormat, this.dateSeparator),
|
|
35
|
-
pipe: tuiCreateAutoCorrectedDateRangePipe(this),
|
|
36
|
-
guide: false,
|
|
37
|
-
};
|
|
38
35
|
this.disabledItemHandler = ALWAYS_FALSE_HANDLER;
|
|
39
36
|
this.markerHandler = TUI_DEFAULT_MARKER_HANDLER;
|
|
40
37
|
this.defaultViewedMonth = TuiMonth.currentLocal();
|
|
@@ -69,7 +66,9 @@ export class TuiInputDateRangeComponent extends AbstractTuiNullableControl {
|
|
|
69
66
|
: '';
|
|
70
67
|
}
|
|
71
68
|
get computedMask() {
|
|
72
|
-
return this.activePeriod
|
|
69
|
+
return this.activePeriod
|
|
70
|
+
? MASKITO_DEFAULT_OPTIONS
|
|
71
|
+
: this.calculateMask(this.dateFormat, this.dateSeparator, this.min, this.max, this.minLength || {}, this.maxLength || {});
|
|
73
72
|
}
|
|
74
73
|
get activePeriod() {
|
|
75
74
|
return (this.items.find(item => tuiNullableSame(this.value, item.range, (a, b) => a.from.daySame(b.from.dayLimit(this.min, this.max)) &&
|
|
@@ -150,15 +149,10 @@ export class TuiInputDateRangeComponent extends AbstractTuiNullableControl {
|
|
|
150
149
|
if (!value) {
|
|
151
150
|
this.onOpenChange(true);
|
|
152
151
|
}
|
|
153
|
-
if (value.length !== DATE_RANGE_FILLER_LENGTH) {
|
|
154
|
-
this.value = null;
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
const parsedValue = TuiDayRange.normalizeParse(value, this.dateFormat);
|
|
158
152
|
this.value =
|
|
159
|
-
|
|
160
|
-
?
|
|
161
|
-
:
|
|
153
|
+
value.length === DATE_RANGE_FILLER_LENGTH
|
|
154
|
+
? TuiDayRange.normalizeParse(value, this.dateFormat)
|
|
155
|
+
: null;
|
|
162
156
|
}
|
|
163
157
|
onRangeChange(range) {
|
|
164
158
|
this.toggle();
|
|
@@ -198,6 +192,16 @@ export class TuiInputDateRangeComponent extends AbstractTuiNullableControl {
|
|
|
198
192
|
valueIdenticalComparator(oldValue, newValue) {
|
|
199
193
|
return tuiNullableSame(oldValue, newValue, (a, b) => a.daySame(b));
|
|
200
194
|
}
|
|
195
|
+
calculateMask(dateFormat, separator, min, max, minLength, maxLength) {
|
|
196
|
+
return maskitoDateRangeOptionsGenerator({
|
|
197
|
+
separator,
|
|
198
|
+
mode: TUI_DATE_MODE_MASKITO_ADAPTER[dateFormat],
|
|
199
|
+
min: min.toLocalNativeDate(),
|
|
200
|
+
max: max.toLocalNativeDate(),
|
|
201
|
+
minLength,
|
|
202
|
+
maxLength,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
201
205
|
get itemSelected() {
|
|
202
206
|
return this.items.findIndex(item => String(item) === this.nativeValue) !== -1;
|
|
203
207
|
}
|
|
@@ -209,17 +213,6 @@ export class TuiInputDateRangeComponent extends AbstractTuiNullableControl {
|
|
|
209
213
|
this.nativeFocusableElement.focus({ preventScroll });
|
|
210
214
|
}
|
|
211
215
|
}
|
|
212
|
-
clampValue(value) {
|
|
213
|
-
const clampedBottom = this.minLength && value.from.append(this.minLength).dayAfter(value.to)
|
|
214
|
-
? new TuiDayRange(value.from, value.from.append(this.minLength).append({ day: -1 }))
|
|
215
|
-
: value;
|
|
216
|
-
const availableMax = this.maxLength
|
|
217
|
-
? clampedBottom.from.append(this.maxLength).append({ day: -1 })
|
|
218
|
-
: this.max;
|
|
219
|
-
return clampedBottom.to.dayAfter(availableMax)
|
|
220
|
-
? new TuiDayRange(clampedBottom.from, availableMax)
|
|
221
|
-
: clampedBottom;
|
|
222
|
-
}
|
|
223
216
|
getDateRangeFiller(dateFiller) {
|
|
224
217
|
return `${dateFiller}${RANGE_SEPARATOR_CHAR}${dateFiller}`;
|
|
225
218
|
}
|
|
@@ -229,7 +222,7 @@ TuiInputDateRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
|
|
|
229
222
|
tuiAsFocusableItemAccessor(TuiInputDateRangeComponent),
|
|
230
223
|
tuiAsControl(TuiInputDateRangeComponent),
|
|
231
224
|
tuiDateStreamWithTransformer(TUI_DATE_RANGE_VALUE_TRANSFORMER),
|
|
232
|
-
], viewQueries: [{ propertyName: "textfield", first: true, predicate: TuiPrimitiveTextfieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-hosted-dropdown\n class=\"t-hosted\"\n [canOpen]=\"canOpen\"\n [content]=\"dropdown\"\n [open]=\"open && canOpen\"\n (openChange)=\"onOpenChange($event)\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-primitive-textfield\n *tuiLet=\"dateFiller$ | async as dateFiller\"\n automation-id=\"tui-input-date-range__textfield\"\n tuiValueAccessor\n class=\"t-textfield\"\n [tuiTextfieldIcon]=\"calendarIcon && iconContent\"\n [tuiTextfieldFiller]=\"getComputedRangeFiller(dateFiller || '')\"\n [pseudoFocus]=\"innerPseudoFocused\"\n [pseudoHover]=\"pseudoHover\"\n [pseudoActive]=\"pseudoActive\"\n [invalid]=\"computedInvalid\"\n [nativeId]=\"nativeId\"\n [readOnly]=\"readOnly\"\n [disabled]=\"computedDisabled\"\n [
|
|
225
|
+
], viewQueries: [{ propertyName: "textfield", first: true, predicate: TuiPrimitiveTextfieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-hosted-dropdown\n class=\"t-hosted\"\n [canOpen]=\"canOpen\"\n [content]=\"dropdown\"\n [open]=\"open && canOpen\"\n (openChange)=\"onOpenChange($event)\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-primitive-textfield\n *tuiLet=\"dateFiller$ | async as dateFiller\"\n automation-id=\"tui-input-date-range__textfield\"\n tuiValueAccessor\n class=\"t-textfield\"\n [tuiTextfieldIcon]=\"calendarIcon && iconContent\"\n [tuiTextfieldFiller]=\"getComputedRangeFiller(dateFiller || '')\"\n [pseudoFocus]=\"innerPseudoFocused\"\n [pseudoHover]=\"pseudoHover\"\n [pseudoActive]=\"pseudoActive\"\n [invalid]=\"computedInvalid\"\n [nativeId]=\"nativeId\"\n [readOnly]=\"readOnly\"\n [disabled]=\"computedDisabled\"\n [maskito]=\"computedMask\"\n [value]=\"computedValue\"\n (valueChange)=\"onValueChange($event)\"\n >\n <ng-content></ng-content>\n <ng-content\n select=\"input\"\n ngProjectAs=\"input\"\n ></ng-content>\n\n <div\n *ngIf=\"showValueTemplate\"\n ngProjectAs=\"tuiContent\"\n class=\"t-value\"\n >\n <ng-container *polymorpheusOutlet=\"computedContent as text; context: {$implicit: value}\">\n {{ text }}\n </ng-container>\n </div>\n </tui-primitive-textfield>\n\n <ng-template #iconContent>\n <tui-svg\n *polymorpheusOutlet=\"calendarIcon as src; context: {$implicit: size}\"\n tuiWrapper\n appearance=\"icon\"\n automation-id=\"tui-input-date-range__icon\"\n [class.t-icon]=\"!computedDisabled\"\n [src]=\"src\"\n (click)=\"onIconClick()\"\n ></tui-svg>\n </ng-template>\n\n <ng-template #dropdown>\n <tui-calendar-range\n [defaultViewedMonth]=\"defaultViewedMonth\"\n [disabledItemHandler]=\"disabledItemHandler\"\n [items]=\"items\"\n [min]=\"min\"\n [max]=\"max\"\n [markerHandler]=\"markerHandler\"\n [minLength]=\"minLength\"\n [maxLength]=\"maxLength\"\n [value]=\"value\"\n (valueChange)=\"onRangeChange($event)\"\n ></tui-calendar-range>\n </ng-template>\n</tui-hosted-dropdown>\n", styles: [":host{display:block;border-radius:var(--tui-radius-m);text-align:left}:host._disabled{pointer-events:none}.t-hosted{display:block;border-radius:inherit}.t-textfield{border-radius:inherit;text-align:inherit}.t-icon{pointer-events:auto}.t-value{display:flex;width:100%;align-items:center}\n"], components: [{ type: i1.TuiHostedDropdownComponent, selector: "tui-hosted-dropdown", inputs: ["content", "sided", "canOpen", "open"], outputs: ["openChange", "focusedChange"] }, { type: i1.TuiPrimitiveTextfieldComponent, selector: "tui-primitive-textfield", inputs: ["editable", "filler", "iconCleaner", "readOnly", "invalid", "disabled", "prefix", "postfix", "value"], outputs: ["valueChange"] }, { type: i1.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { type: i2.TuiCalendarRangeComponent, selector: "tui-calendar-range", inputs: ["defaultViewedMonth", "disabledItemHandler", "markerHandler", "items", "min", "max", "minLength", "maxLength", "value"], outputs: ["valueChange"] }], directives: [{ type: i3.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i3.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { type: i1.TuiPrimitiveTextfieldDirective, selector: "tui-primitive-textfield" }, { type: i4.TuiValueAccessorDirective, selector: "[tuiValueAccessor]" }, { type: i1.TuiTextfieldIconDirective, selector: "[tuiTextfieldIcon]", inputs: ["tuiTextfieldIcon"] }, { type: i1.TuiTextfieldFillerDirective, selector: "[tuiTextfieldFiller]", inputs: ["tuiTextfieldFiller"] }, { type: i5.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: i1.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }], pipes: { "async": i6.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
233
226
|
__decorate([
|
|
234
227
|
tuiDefaultProp()
|
|
235
228
|
], TuiInputDateRangeComponent.prototype, "disabledItemHandler", void 0);
|
|
@@ -254,6 +247,9 @@ __decorate([
|
|
|
254
247
|
__decorate([
|
|
255
248
|
tuiDefaultProp()
|
|
256
249
|
], TuiInputDateRangeComponent.prototype, "maxLength", void 0);
|
|
250
|
+
__decorate([
|
|
251
|
+
tuiPure
|
|
252
|
+
], TuiInputDateRangeComponent.prototype, "calculateMask", null);
|
|
257
253
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputDateRangeComponent, decorators: [{
|
|
258
254
|
type: Component,
|
|
259
255
|
args: [{
|
|
@@ -267,7 +263,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
267
263
|
tuiDateStreamWithTransformer(TUI_DATE_RANGE_VALUE_TRANSFORMER),
|
|
268
264
|
],
|
|
269
265
|
}]
|
|
270
|
-
}], ctorParameters: function () { return [{ type:
|
|
266
|
+
}], ctorParameters: function () { return [{ type: i8.NgControl, decorators: [{
|
|
271
267
|
type: Optional
|
|
272
268
|
}, {
|
|
273
269
|
type: Self
|
|
@@ -300,7 +296,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
300
296
|
}] }, { type: undefined, decorators: [{
|
|
301
297
|
type: Inject,
|
|
302
298
|
args: [TUI_DATE_SEPARATOR]
|
|
303
|
-
}] }, { type:
|
|
299
|
+
}] }, { type: i9.Observable, decorators: [{
|
|
304
300
|
type: Inject,
|
|
305
301
|
args: [TUI_DATE_TEXTS]
|
|
306
302
|
}] }, { type: i3.AbstractTuiValueTransformer, decorators: [{
|
|
@@ -333,5 +329,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
333
329
|
}], onClick: [{
|
|
334
330
|
type: HostListener,
|
|
335
331
|
args: ['click']
|
|
336
|
-
}] } });
|
|
337
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1kYXRlLXJhbmdlL2lucHV0LWRhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZGF0ZS1yYW5nZS9pbnB1dC1kYXRlLXJhbmdlLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFFSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCwwQkFBMEIsRUFFMUIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixZQUFZLEVBQ1osMEJBQTBCLEVBSzFCLFdBQVcsRUFDWCxjQUFjLEVBRWQsWUFBWSxFQUVaLFFBQVEsRUFDUixlQUFlLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUVoQiw4QkFBOEIsR0FNakMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUMsVUFBVSxFQUFFLDJCQUEyQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDaEYsT0FBTyxFQUNILGdDQUFnQyxFQUNoQyxjQUFjLEVBQ2Qsc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUNuQiw0QkFBNEIsR0FFL0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0gsbUNBQW1DLEVBQ25DLHNCQUFzQixHQUN6QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBQyxxQkFBcUIsRUFBc0IsTUFBTSwwQkFBMEIsQ0FBQztBQUVwRixPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBYTlDLE1BQU0sT0FBTywwQkFDVCxTQUFRLDBCQUF1QztJQXFEL0MsWUFJSSxPQUF5QixFQUNFLEdBQXNCLEVBQ2QsUUFBa0IsRUFDYixRQUFpQixFQUNkLE9BQXlCLEVBR25ELGNBQWdELEVBRWhELGFBQXdDLEVBQ3ZCLFVBQXVCLEVBQ3BCLGFBQXFCLEVBRWpELFVBQW1ELEVBRzFDLGdCQUF3RSxFQUV6RSxPQUE0QjtRQUU3QyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBbEJILGFBQVEsR0FBUixRQUFRLENBQVU7UUFDYixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFHbkQsbUJBQWMsR0FBZCxjQUFjLENBQWtDO1FBRWhELGtCQUFhLEdBQWIsYUFBYSxDQUEyQjtRQUN2QixlQUFVLEdBQVYsVUFBVSxDQUFhO1FBQ3BCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBRWpELGVBQVUsR0FBVixVQUFVLENBQXlDO1FBRzFDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBd0Q7UUFFekUsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFyRWhDLG9CQUFlLEdBQXVCO1lBQ25ELElBQUksRUFBRSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDakUsSUFBSSxFQUFFLG1DQUFtQyxDQUFDLElBQUksQ0FBQztZQUMvQyxLQUFLLEVBQUUsS0FBSztTQUNmLENBQUM7UUFJRix3QkFBbUIsR0FBOEIsb0JBQW9CLENBQUM7UUFJdEUsa0JBQWEsR0FBcUIsMEJBQTBCLENBQUM7UUFJN0QsdUJBQWtCLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBSTdDLFVBQUssR0FBaUMsRUFBRSxDQUFDO1FBSXpDLFFBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUl2QixRQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFJdkIsY0FBUyxHQUFzQixJQUFJLENBQUM7UUFJcEMsY0FBUyxHQUFzQixJQUFJLENBQUM7UUFFcEMsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUVKLG9CQUFlLEdBQThCLDJCQUEyQixDQUFDO1FBQ3pFLGdCQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3ZDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUNaLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUN0RSxDQUNKLENBQUM7SUEyQkYsQ0FBQztJQUVELElBQUksc0JBQXNCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3pFLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksbUJBQW1COztRQUNuQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUNwQixDQUFDLENBQUMsQ0FBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsc0JBQXNCLDBDQUFFLFdBQVcsS0FBSSxFQUFFO1lBQzNELENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDYixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDakUsQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLE9BQU8sQ0FDSCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNuQixlQUFlLENBQ1gsSUFBSSxDQUFDLEtBQUssRUFDVixJQUFJLENBQUMsS0FBSyxFQUNWLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ0wsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDdEQsQ0FDSixJQUFJLElBQUksQ0FDWixDQUFDO0lBQ04sQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE1BQU0sRUFBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBQyxHQUFHLElBQUksQ0FBQztRQUVoRCxJQUFJLFlBQVksRUFBRTtZQUNkLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQy9CO1FBRUQsT0FBTyxLQUFLO1lBQ1IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDakUsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDakIsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxlQUFlOztRQUNmLE9BQU8sQ0FBQSxNQUFBLElBQUksQ0FBQyxZQUFZLDBDQUFFLE9BQU8sS0FBSSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNsQixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssS0FBSyxFQUFFO1lBQzVCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDbkMsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hGLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDOUIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUdELE9BQU87UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDakI7SUFDTCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsVUFBa0I7UUFDckMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUM5QyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsT0FBTzthQUNQLElBQUksQ0FDRCxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUM3RDtZQUNJLElBQUksRUFBRSxZQUFZO1lBQ2xCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLElBQUksRUFBRTtnQkFDRixNQUFNLEVBQUUsS0FBSztnQkFDYixHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FDckIsSUFBSSxDQUFDLEdBQUcsRUFDUixJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUNQO2dCQUNELEdBQUcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUNyQixJQUFJLENBQUMsR0FBRyxFQUNSLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLFNBQVMsRUFDZCxLQUFLLENBQ1I7Z0JBQ0QsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjthQUNoRDtTQUNKLENBQ0o7YUFDQSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBYTtRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDdkIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1NBQzNEO1FBRUQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0I7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssd0JBQXdCLEVBQUU7WUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFFbEIsT0FBTztTQUNWO1FBRUQsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXZFLElBQUksQ0FBQyxLQUFLO1lBQ04sQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7Z0JBQzlCLENBQUMsQ0FBQyxXQUFXO2dCQUNiLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBeUI7UUFDbkMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxCLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztTQUN6QjtRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBZ0M7UUFDekMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxCLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFckQsT0FBTztTQUNWO1FBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRTtZQUM1QixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWdCO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFNUIsSUFDSSxDQUFDLE9BQU87WUFDUixDQUFDLElBQUksQ0FBQyxZQUFZO1lBQ2xCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssa0JBQWtCO2dCQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU07b0JBQ25CLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUMzRDtZQUNFLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM5RTtJQUNMLENBQUM7SUFFUSxVQUFVLENBQUMsS0FBeUI7UUFDekMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFa0Isd0JBQXdCLENBQ3ZDLFFBQTRCLEVBQzVCLFFBQTRCO1FBRTVCLE9BQU8sZUFBZSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELElBQVksWUFBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRU8sTUFBTTtRQUNWLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFTyxVQUFVLENBQUMsZ0JBQXlCLEtBQUs7UUFDN0MsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDN0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxFQUFDLGFBQWEsRUFBQyxDQUFDLENBQUM7U0FDdEQ7SUFDTCxDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQWtCO1FBQ2pDLE1BQU0sYUFBYSxHQUNmLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FDWCxLQUFLLENBQUMsSUFBSSxFQUNWLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUN0RDtZQUNILENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFaEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVM7WUFDL0IsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQztZQUM3RCxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUVmLE9BQU8sYUFBYSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQzFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQztZQUNuRCxDQUFDLENBQUMsYUFBYSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxVQUFrQjtRQUN6QyxPQUFPLEdBQUcsVUFBVSxHQUFHLG9CQUFvQixHQUFHLFVBQVUsRUFBRSxDQUFDO0lBQy9ELENBQUM7O3dIQS9VUSwwQkFBMEIsa0JBeUR2QixTQUFTLHlDQUVULGlCQUFpQixhQUNqQixRQUFRLGFBQ1IsYUFBYSxhQUNiLGdCQUFnQixhQUVoQixtQkFBbUIsNkJBRW5CLGtCQUFrQixhQUVsQixlQUFlLGFBQ2Ysa0JBQWtCLGFBQ2xCLGNBQWMsYUFHZCxnQ0FBZ0MsNkJBRWhDLHNCQUFzQjs0R0EzRXpCLDBCQUEwQix3VEFOeEI7UUFDUCwwQkFBMEIsQ0FBQywwQkFBMEIsQ0FBQztRQUN0RCxZQUFZLENBQUMsMEJBQTBCLENBQUM7UUFDeEMsNEJBQTRCLENBQUMsZ0NBQWdDLENBQUM7S0FDakUscUVBTVUsOEJBQThCLHVFQ3BGN0MsazNFQXNFQTtBRHlCSTtJQURDLGNBQWMsRUFBRTt1RUFDcUQ7QUFJdEU7SUFEQyxjQUFjLEVBQUU7aUVBQzRDO0FBSTdEO0lBREMsY0FBYyxFQUFFO3NFQUM0QjtBQUk3QztJQURDLGNBQWMsRUFBRTt5REFDd0I7QUFJekM7SUFEQyxjQUFjLEVBQUU7dURBQ007QUFJdkI7SUFEQyxjQUFjLEVBQUU7dURBQ007QUFJdkI7SUFEQyxjQUFjLEVBQUU7NkRBQ21CO0FBSXBDO0lBREMsY0FBYyxFQUFFOzZEQUNtQjs0RkEzQzNCLDBCQUEwQjtrQkFYdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxXQUFXLEVBQUUsa0NBQWtDO29CQUMvQyxTQUFTLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztvQkFDNUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFNBQVMsRUFBRTt3QkFDUCwwQkFBMEIsNEJBQTRCO3dCQUN0RCxZQUFZLDRCQUE0Qjt3QkFDeEMsNEJBQTRCLENBQUMsZ0NBQWdDLENBQUM7cUJBQ2pFO2lCQUNKOzswQkF3RFEsUUFBUTs7MEJBQ1IsSUFBSTs7MEJBQ0osTUFBTTsyQkFBQyxTQUFTOzswQkFFaEIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsYUFBYTs7MEJBQ3BCLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUUxQixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBRXpCLE1BQU07MkJBQUMsZUFBZTs7MEJBQ3RCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxjQUFjOzswQkFFckIsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxnQ0FBZ0M7OzBCQUV2QyxNQUFNOzJCQUFDLHNCQUFzQjs0Q0F0RWpCLFNBQVM7c0JBRHpCLFNBQVM7dUJBQUMsOEJBQThCO2dCQVd6QyxtQkFBbUI7c0JBRmxCLEtBQUs7Z0JBTU4sYUFBYTtzQkFGWixLQUFLO2dCQU1OLGtCQUFrQjtzQkFGakIsS0FBSztnQkFNTixLQUFLO3NCQUZKLEtBQUs7Z0JBTU4sR0FBRztzQkFGRixLQUFLO2dCQU1OLEdBQUc7c0JBRkYsS0FBSztnQkFNTixTQUFTO3NCQUZSLEtBQUs7Z0JBTU4sU0FBUztzQkFGUixLQUFLO2dCQXFJTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBUeXBlLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbCxcbiAgICBBYnN0cmFjdFR1aVZhbHVlVHJhbnNmb3JtZXIsXG4gICAgQUxXQVlTX0ZBTFNFX0hBTkRMRVIsXG4gICAgY2hhbmdlRGF0ZVNlcGFyYXRvcixcbiAgICBEQVRFX0ZJTExFUl9MRU5HVEgsXG4gICAgREFURV9SQU5HRV9GSUxMRVJfTEVOR1RILFxuICAgIFJBTkdFX1NFUEFSQVRPUl9DSEFSLFxuICAgIFRVSV9EQVRFX0ZPUk1BVCxcbiAgICBUVUlfREFURV9TRVBBUkFUT1IsXG4gICAgVFVJX0lTX01PQklMRSxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgVHVpQm9vbGVhbkhhbmRsZXIsXG4gICAgVHVpRGF0ZU1vZGUsXG4gICAgVHVpRGF5LFxuICAgIFR1aURheUxpa2UsXG4gICAgVHVpRGF5UmFuZ2UsXG4gICAgdHVpRGVmYXVsdFByb3AsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIHR1aUlzUHJlc2VudCxcbiAgICBUdWlNYXBwZXIsXG4gICAgVHVpTW9udGgsXG4gICAgdHVpTnVsbGFibGVTYW1lLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7XG4gICAgVFVJX0RFRkFVTFRfTUFSS0VSX0hBTkRMRVIsXG4gICAgVFVJX1RFWFRGSUVMRF9TSVpFLFxuICAgIFR1aURpYWxvZ1NlcnZpY2UsXG4gICAgVHVpTWFya2VySGFuZGxlcixcbiAgICBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQsXG4gICAgVHVpU2l6ZUwsXG4gICAgVHVpU2l6ZVMsXG4gICAgVHVpVGV4dGZpZWxkU2l6ZURpcmVjdGl2ZSxcbiAgICBUdWlUZXh0TWFza09wdGlvbnMsXG4gICAgVHVpV2l0aE9wdGlvbmFsTWluTWF4LFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aURheVJhbmdlUGVyaW9kfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NsYXNzZXMnO1xuaW1wb3J0IHtFTVBUWV9NQVNLLCBNQVhfREFZX1JBTkdFX0xFTkdUSF9NQVBQRVJ9IGZyb20gJ0B0YWlnYS11aS9raXQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gICAgVFVJX0RBVEVfUkFOR0VfVkFMVUVfVFJBTlNGT1JNRVIsXG4gICAgVFVJX0RBVEVfVEVYVFMsXG4gICAgVFVJX0lOUFVUX0RBVEVfT1BUSU9OUyxcbiAgICBUVUlfTU9CSUxFX0NBTEVOREFSLFxuICAgIHR1aURhdGVTdHJlYW1XaXRoVHJhbnNmb3JtZXIsXG4gICAgVHVpSW5wdXREYXRlT3B0aW9ucyxcbn0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHtcbiAgICB0dWlDcmVhdGVBdXRvQ29ycmVjdGVkRGF0ZVJhbmdlUGlwZSxcbiAgICB0dWlDcmVhdGVEYXRlUmFuZ2VNYXNrLFxufSBmcm9tICdAdGFpZ2EtdWkva2l0L3V0aWxzL21hc2snO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb21wb25lbnQsIFBvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1kYXRlLXJhbmdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtZGF0ZS1yYW5nZS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1kYXRlLXJhbmdlLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IoVHVpSW5wdXREYXRlUmFuZ2VDb21wb25lbnQpLFxuICAgICAgICB0dWlBc0NvbnRyb2woVHVpSW5wdXREYXRlUmFuZ2VDb21wb25lbnQpLFxuICAgICAgICB0dWlEYXRlU3RyZWFtV2l0aFRyYW5zZm9ybWVyKFRVSV9EQVRFX1JBTkdFX1ZBTFVFX1RSQU5TRk9STUVSKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dERhdGVSYW5nZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2w8VHVpRGF5UmFuZ2U+XG4gICAgaW1wbGVtZW50cyBUdWlXaXRoT3B0aW9uYWxNaW5NYXg8VHVpRGF5PiwgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZChUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGQ/OiBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQ7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRNYXNrT3B0aW9uczogVHVpVGV4dE1hc2tPcHRpb25zID0ge1xuICAgICAgICBtYXNrOiB0dWlDcmVhdGVEYXRlUmFuZ2VNYXNrKHRoaXMuZGF0ZUZvcm1hdCwgdGhpcy5kYXRlU2VwYXJhdG9yKSxcbiAgICAgICAgcGlwZTogdHVpQ3JlYXRlQXV0b0NvcnJlY3RlZERhdGVSYW5nZVBpcGUodGhpcyksXG4gICAgICAgIGd1aWRlOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4gPSBBTFdBWVNfRkFMU0VfSEFORExFUjtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtYXJrZXJIYW5kbGVyOiBUdWlNYXJrZXJIYW5kbGVyID0gVFVJX0RFRkFVTFRfTUFSS0VSX0hBTkRMRVI7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgZGVmYXVsdFZpZXdlZE1vbnRoID0gVHVpTW9udGguY3VycmVudExvY2FsKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgaXRlbXM6IHJlYWRvbmx5IFR1aURheVJhbmdlUGVyaW9kW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtaW4gPSB0aGlzLm9wdGlvbnMubWluO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1heCA9IHRoaXMub3B0aW9ucy5tYXg7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbWluTGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbWF4TGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICByZWFkb25seSBtYXhMZW5ndGhNYXBwZXI6IFR1aU1hcHBlcjxUdWlEYXksIFR1aURheT4gPSBNQVhfREFZX1JBTkdFX0xFTkdUSF9NQVBQRVI7XG4gICAgcmVhZG9ubHkgZGF0ZUZpbGxlciQgPSB0aGlzLmRhdGVUZXh0cyQucGlwZShcbiAgICAgICAgbWFwKGRhdGVUZXh0cyA9PlxuICAgICAgICAgICAgY2hhbmdlRGF0ZVNlcGFyYXRvcihkYXRlVGV4dHNbdGhpcy5kYXRlRm9ybWF0XSwgdGhpcy5kYXRlU2VwYXJhdG9yKSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoSW5qZWN0b3IpIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoVHVpRGlhbG9nU2VydmljZSkgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dzOiBUdWlEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRVSV9NT0JJTEVfQ0FMRU5EQVIpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbW9iaWxlQ2FsZW5kYXI6IFR5cGU8UmVjb3JkPHN0cmluZywgYW55Pj4gfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfU0laRSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGRTaXplOiBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgICAgICBASW5qZWN0KFRVSV9EQVRFX0ZPUk1BVCkgcmVhZG9ubHkgZGF0ZUZvcm1hdDogVHVpRGF0ZU1vZGUsXG4gICAgICAgIEBJbmplY3QoVFVJX0RBVEVfU0VQQVJBVE9SKSByZWFkb25seSBkYXRlU2VwYXJhdG9yOiBzdHJpbmcsXG4gICAgICAgIEBJbmplY3QoVFVJX0RBVEVfVEVYVFMpXG4gICAgICAgIHJlYWRvbmx5IGRhdGVUZXh0cyQ6IE9ic2VydmFibGU8UmVjb3JkPFR1aURhdGVNb2RlLCBzdHJpbmc+PixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChUVUlfREFURV9SQU5HRV9WQUxVRV9UUkFOU0ZPUk1FUilcbiAgICAgICAgb3ZlcnJpZGUgcmVhZG9ubHkgdmFsdWVUcmFuc2Zvcm1lcjogQWJzdHJhY3RUdWlWYWx1ZVRyYW5zZm9ybWVyPFR1aURheVJhbmdlIHwgbnVsbD4gfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9EQVRFX09QVElPTlMpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogVHVpSW5wdXREYXRlT3B0aW9ucyxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2RyLCB2YWx1ZVRyYW5zZm9ybWVyKTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZCA/IHRoaXMudGV4dGZpZWxkLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnRleHRmaWVsZCAmJiB0aGlzLnRleHRmaWVsZC5mb2N1c2VkO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZE1vYmlsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgJiYgISF0aGlzLm1vYmlsZUNhbGVuZGFyO1xuICAgIH1cblxuICAgIGdldCBjYWxlbmRhckljb24oKTogVHVpSW5wdXREYXRlT3B0aW9uc1snaWNvbiddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29uO1xuICAgIH1cblxuICAgIGdldCBjYW5PcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcmFjdGl2ZSAmJiAhdGhpcy5jb21wdXRlZE1vYmlsZTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRFeGFtcGxlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5sZW5ndGhcbiAgICAgICAgICAgID8gdGhpcy50ZXh0ZmllbGQ/Lm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ/LnBsYWNlaG9sZGVyIHx8ICcnXG4gICAgICAgICAgICA6ICcnO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZE1hc2soKTogVHVpVGV4dE1hc2tPcHRpb25zIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlUGVyaW9kID8gRU1QVFlfTUFTSyA6IHRoaXMudGV4dE1hc2tPcHRpb25zO1xuICAgIH1cblxuICAgIGdldCBhY3RpdmVQZXJpb2QoKTogVHVpRGF5UmFuZ2VQZXJpb2QgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaXRlbXMuZmluZChpdGVtID0+XG4gICAgICAgICAgICAgICAgdHVpTnVsbGFibGVTYW1lKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJhbmdlLFxuICAgICAgICAgICAgICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGEuZnJvbS5kYXlTYW1lKGIuZnJvbS5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYS50by5kYXlTYW1lKGIudG8uZGF5TGltaXQodGhpcy5taW4sIHRoaXMubWF4KSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICkgfHwgbnVsbFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZFZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHt2YWx1ZSwgbmF0aXZlVmFsdWUsIGFjdGl2ZVBlcmlvZH0gPSB0aGlzO1xuXG4gICAgICAgIGlmIChhY3RpdmVQZXJpb2QpIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcoYWN0aXZlUGVyaW9kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgPyB2YWx1ZS5nZXRGb3JtYXR0ZWREYXlSYW5nZSh0aGlzLmRhdGVGb3JtYXQsIHRoaXMuZGF0ZVNlcGFyYXRvcilcbiAgICAgICAgICAgIDogbmF0aXZlVmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dWYWx1ZVRlbXBsYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHVpSXNQcmVzZW50KHRoaXMudmFsdWUpICYmICF0aGlzLmZvY3VzZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkQ29udGVudCgpOiBQb2x5bW9ycGhldXNDb250ZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlUGVyaW9kPy5jb250ZW50IHx8IHRoaXMuY29tcHV0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgaW5uZXJQc2V1ZG9Gb2N1c2VkKCk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMucHNldWRvRm9jdXMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vcGVuIHx8IHRoaXMuY29tcHV0ZWRGb2N1c2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50ID8gdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LnZhbHVlIDogJyc7XG4gICAgfVxuXG4gICAgc2V0IG5hdGl2ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBzaXplKCk6IFR1aVNpemVMIHwgVHVpU2l6ZVMge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0ZmllbGRTaXplLnNpemU7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldENvbXB1dGVkUmFuZ2VGaWxsZXIoZGF0ZUZpbGxlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlUGVyaW9kID8gJycgOiB0aGlzLmdldERhdGVSYW5nZUZpbGxlcihkYXRlRmlsbGVyKTtcbiAgICB9XG5cbiAgICBvbkljb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbXB1dGVkTW9iaWxlIHx8ICF0aGlzLm1vYmlsZUNhbGVuZGFyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRpYWxvZ3NcbiAgICAgICAgICAgIC5vcGVuPFR1aURheVJhbmdlPihcbiAgICAgICAgICAgICAgICBuZXcgUG9seW1vcnBoZXVzQ29tcG9uZW50KHRoaXMubW9iaWxlQ2FsZW5kYXIsIHRoaXMuaW5qZWN0b3IpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ2Z1bGxzY3JlZW4nLFxuICAgICAgICAgICAgICAgICAgICBjbG9zZWFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWluOiB0aGlzLm1heExlbmd0aE1hcHBlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1pbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF4TGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLm1heExlbmd0aE1hcHBlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1heCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF4TGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkSXRlbUhhbmRsZXI6IHRoaXMuZGlzYWJsZWRJdGVtSGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25PcGVuQ2hhbmdlKG9wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gb3BlbjtcbiAgICB9XG5cbiAgICBvblZhbHVlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMub25PcGVuQ2hhbmdlKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCAhPT0gREFURV9SQU5HRV9GSUxMRVJfTEVOR1RIKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyc2VkVmFsdWUgPSBUdWlEYXlSYW5nZS5ub3JtYWxpemVQYXJzZSh2YWx1ZSwgdGhpcy5kYXRlRm9ybWF0KTtcblxuICAgICAgICB0aGlzLnZhbHVlID1cbiAgICAgICAgICAgICF0aGlzLm1pbkxlbmd0aCAmJiAhdGhpcy5tYXhMZW5ndGhcbiAgICAgICAgICAgICAgICA/IHBhcnNlZFZhbHVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLmNsYW1wVmFsdWUocGFyc2VkVmFsdWUpO1xuICAgIH1cblxuICAgIG9uUmFuZ2VDaGFuZ2UocmFuZ2U6IFR1aURheVJhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcblxuICAgICAgICBpZiAoIXJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID0gcmFuZ2U7XG4gICAgfVxuXG4gICAgb25JdGVtU2VsZWN0KGl0ZW06IFR1aURheVJhbmdlUGVyaW9kIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuXG4gICAgICAgIGlmICh0eXBlb2YgaXRlbSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBpdGVtLnJhbmdlLmRheUxpbWl0KHRoaXMubWluLCB0aGlzLm1heCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZVBlcmlvZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBvbkFjdGl2ZVpvbmUoZm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzZWQoZm9jdXNlZCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWZvY3VzZWQgJiZcbiAgICAgICAgICAgICF0aGlzLml0ZW1TZWxlY3RlZCAmJlxuICAgICAgICAgICAgKHRoaXMubmF0aXZlVmFsdWUubGVuZ3RoID09PSBEQVRFX0ZJTExFUl9MRU5HVEggfHxcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlLmxlbmd0aCA9PT1cbiAgICAgICAgICAgICAgICAgICAgREFURV9GSUxMRVJfTEVOR1RIICsgUkFOR0VfU0VQQVJBVE9SX0NIQVIubGVuZ3RoKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBUdWlEYXlSYW5nZS5ub3JtYWxpemVQYXJzZSh0aGlzLm5hdGl2ZVZhbHVlLCB0aGlzLmRhdGVGb3JtYXQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogVHVpRGF5UmFuZ2UgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gdmFsdWUgPyB0aGlzLmNvbXB1dGVkVmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdmFsdWVJZGVudGljYWxDb21wYXJhdG9yKFxuICAgICAgICBvbGRWYWx1ZTogVHVpRGF5UmFuZ2UgfCBudWxsLFxuICAgICAgICBuZXdWYWx1ZTogVHVpRGF5UmFuZ2UgfCBudWxsLFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHVpTnVsbGFibGVTYW1lKG9sZFZhbHVlLCBuZXdWYWx1ZSwgKGEsIGIpID0+IGEuZGF5U2FtZShiKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXRlbVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBTdHJpbmcoaXRlbSkgPT09IHRoaXMubmF0aXZlVmFsdWUpICE9PSAtMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzSW5wdXQocHJldmVudFNjcm9sbDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC5mb2N1cyh7cHJldmVudFNjcm9sbH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGFtcFZhbHVlKHZhbHVlOiBUdWlEYXlSYW5nZSk6IFR1aURheVJhbmdlIHtcbiAgICAgICAgY29uc3QgY2xhbXBlZEJvdHRvbSA9XG4gICAgICAgICAgICB0aGlzLm1pbkxlbmd0aCAmJiB2YWx1ZS5mcm9tLmFwcGVuZCh0aGlzLm1pbkxlbmd0aCkuZGF5QWZ0ZXIodmFsdWUudG8pXG4gICAgICAgICAgICAgICAgPyBuZXcgVHVpRGF5UmFuZ2UoXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUuZnJvbSxcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5mcm9tLmFwcGVuZCh0aGlzLm1pbkxlbmd0aCkuYXBwZW5kKHtkYXk6IC0xfSksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiB2YWx1ZTtcblxuICAgICAgICBjb25zdCBhdmFpbGFibGVNYXggPSB0aGlzLm1heExlbmd0aFxuICAgICAgICAgICAgPyBjbGFtcGVkQm90dG9tLmZyb20uYXBwZW5kKHRoaXMubWF4TGVuZ3RoKS5hcHBlbmQoe2RheTogLTF9KVxuICAgICAgICAgICAgOiB0aGlzLm1heDtcblxuICAgICAgICByZXR1cm4gY2xhbXBlZEJvdHRvbS50by5kYXlBZnRlcihhdmFpbGFibGVNYXgpXG4gICAgICAgICAgICA/IG5ldyBUdWlEYXlSYW5nZShjbGFtcGVkQm90dG9tLmZyb20sIGF2YWlsYWJsZU1heClcbiAgICAgICAgICAgIDogY2xhbXBlZEJvdHRvbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERhdGVSYW5nZUZpbGxlcihkYXRlRmlsbGVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7ZGF0ZUZpbGxlcn0ke1JBTkdFX1NFUEFSQVRPUl9DSEFSfSR7ZGF0ZUZpbGxlcn1gO1xuICAgIH1cbn1cbiIsIjx0dWktaG9zdGVkLWRyb3Bkb3duXG4gICAgY2xhc3M9XCJ0LWhvc3RlZFwiXG4gICAgW2Nhbk9wZW5dPVwiY2FuT3BlblwiXG4gICAgW2NvbnRlbnRdPVwiZHJvcGRvd25cIlxuICAgIFtvcGVuXT1cIm9wZW4gJiYgY2FuT3BlblwiXG4gICAgKG9wZW5DaGFuZ2UpPVwib25PcGVuQ2hhbmdlKCRldmVudClcIlxuICAgICh0dWlBY3RpdmVab25lQ2hhbmdlKT1cIm9uQWN0aXZlWm9uZSgkZXZlbnQpXCJcbj5cbiAgICA8dHVpLXByaW1pdGl2ZS10ZXh0ZmllbGRcbiAgICAgICAgKnR1aUxldD1cImRhdGVGaWxsZXIkIHwgYXN5bmMgYXMgZGF0ZUZpbGxlclwiXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtZGF0ZS1yYW5nZV9fdGV4dGZpZWxkXCJcbiAgICAgICAgdHVpVmFsdWVBY2Nlc3NvclxuICAgICAgICBjbGFzcz1cInQtdGV4dGZpZWxkXCJcbiAgICAgICAgW3R1aVRleHRmaWVsZEljb25dPVwiY2FsZW5kYXJJY29uICYmIGljb25Db250ZW50XCJcbiAgICAgICAgW3R1aVRleHRmaWVsZEZpbGxlcl09XCJnZXRDb21wdXRlZFJhbmdlRmlsbGVyKGRhdGVGaWxsZXIgfHwgJycpXCJcbiAgICAgICAgW3BzZXVkb0ZvY3VzXT1cImlubmVyUHNldWRvRm9jdXNlZFwiXG4gICAgICAgIFtwc2V1ZG9Ib3Zlcl09XCJwc2V1ZG9Ib3ZlclwiXG4gICAgICAgIFtwc2V1ZG9BY3RpdmVdPVwicHNldWRvQWN0aXZlXCJcbiAgICAgICAgW2ludmFsaWRdPVwiY29tcHV0ZWRJbnZhbGlkXCJcbiAgICAgICAgW25hdGl2ZUlkXT1cIm5hdGl2ZUlkXCJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICBbdGV4dE1hc2tdPVwiY29tcHV0ZWRNYXNrXCJcbiAgICAgICAgW3ZhbHVlXT1cImNvbXB1dGVkVmFsdWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgIHNlbGVjdD1cImlucHV0XCJcbiAgICAgICAgICAgIG5nUHJvamVjdEFzPVwiaW5wdXRcIlxuICAgICAgICA+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1ZhbHVlVGVtcGxhdGVcIlxuICAgICAgICAgICAgbmdQcm9qZWN0QXM9XCJ0dWlDb250ZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwidC12YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImNvbXB1dGVkQ29udGVudCBhcyB0ZXh0OyBjb250ZXh0OiB7JGltcGxpY2l0OiB2YWx1ZX1cIj5cbiAgICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC90dWktcHJpbWl0aXZlLXRleHRmaWVsZD5cblxuICAgIDxuZy10ZW1wbGF0ZSAjaWNvbkNvbnRlbnQ+XG4gICAgICAgIDx0dWktc3ZnXG4gICAgICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiY2FsZW5kYXJJY29uIGFzIHNyYzsgY29udGV4dDogeyRpbXBsaWNpdDogc2l6ZX1cIlxuICAgICAgICAgICAgdHVpV3JhcHBlclxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cImljb25cIlxuICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1kYXRlLXJhbmdlX19pY29uXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWljb25dPVwiIWNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICAgICAgW3NyY109XCJzcmNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSWNvbkNsaWNrKClcIlxuICAgICAgICA+PC90dWktc3ZnPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duPlxuICAgICAgICA8dHVpLWNhbGVuZGFyLXJhbmdlXG4gICAgICAgICAgICBbZGVmYXVsdFZpZXdlZE1vbnRoXT1cImRlZmF1bHRWaWV3ZWRNb250aFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJpdGVtc1wiXG4gICAgICAgICAgICBbbWluXT1cIm1pblwiXG4gICAgICAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgICAgICBbbWFya2VySGFuZGxlcl09XCJtYXJrZXJIYW5kbGVyXCJcbiAgICAgICAgICAgIFttaW5MZW5ndGhdPVwibWluTGVuZ3RoXCJcbiAgICAgICAgICAgIFttYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25SYW5nZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvdHVpLWNhbGVuZGFyLXJhbmdlPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3R1aS1ob3N0ZWQtZHJvcGRvd24+XG4iXX0=
|
|
332
|
+
}], calculateMask: [] } });
|
|
333
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1kYXRlLXJhbmdlL2lucHV0LWRhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZGF0ZS1yYW5nZS9pbnB1dC1kYXRlLXJhbmdlLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFFSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyx1QkFBdUIsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzlELE9BQU8sRUFDSCwwQkFBMEIsRUFFMUIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixZQUFZLEVBQ1osMEJBQTBCLEVBSzFCLFdBQVcsRUFDWCxjQUFjLEVBRWQsWUFBWSxFQUVaLFFBQVEsRUFDUixlQUFlLEVBQ2YsT0FBTyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUVoQiw4QkFBOEIsR0FLakMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0gsMkJBQTJCLEVBQzNCLDZCQUE2QixHQUNoQyxN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RixLQUFLO2dCQU1OLFNBQVM7c0JBRlIsS0FBSztnQkFNTixTQUFTO3NCQUZSLEtBQUs7Z0JBOElOLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPO2dCQXlIYixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFR5cGUsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01BU0tJVE9fREVGQVVMVF9PUFRJT05TLCBNYXNraXRvT3B0aW9uc30gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQge21hc2tpdG9EYXRlUmFuZ2VPcHRpb25zR2VuZXJhdG9yfSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbCxcbiAgICBBYnN0cmFjdFR1aVZhbHVlVHJhbnNmb3JtZXIsXG4gICAgQUxXQVlTX0ZBTFNFX0hBTkRMRVIsXG4gICAgY2hhbmdlRGF0ZVNlcGFyYXRvcixcbiAgICBEQVRFX0ZJTExFUl9MRU5HVEgsXG4gICAgREFURV9SQU5HRV9GSUxMRVJfTEVOR1RILFxuICAgIFJBTkdFX1NFUEFSQVRPUl9DSEFSLFxuICAgIFRVSV9EQVRFX0ZPUk1BVCxcbiAgICBUVUlfREFURV9TRVBBUkFUT1IsXG4gICAgVFVJX0lTX01PQklMRSxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgVHVpQm9vbGVhbkhhbmRsZXIsXG4gICAgVHVpRGF0ZU1vZGUsXG4gICAgVHVpRGF5LFxuICAgIFR1aURheUxpa2UsXG4gICAgVHVpRGF5UmFuZ2UsXG4gICAgdHVpRGVmYXVsdFByb3AsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIHR1aUlzUHJlc2VudCxcbiAgICBUdWlNYXBwZXIsXG4gICAgVHVpTW9udGgsXG4gICAgdHVpTnVsbGFibGVTYW1lLFxuICAgIHR1aVB1cmUsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBUVUlfREVGQVVMVF9NQVJLRVJfSEFORExFUixcbiAgICBUVUlfVEVYVEZJRUxEX1NJWkUsXG4gICAgVHVpRGlhbG9nU2VydmljZSxcbiAgICBUdWlNYXJrZXJIYW5kbGVyLFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudCxcbiAgICBUdWlTaXplTCxcbiAgICBUdWlTaXplUyxcbiAgICBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgIFR1aVdpdGhPcHRpb25hbE1pbk1heCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUdWlEYXlSYW5nZVBlcmlvZH0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jbGFzc2VzJztcbmltcG9ydCB7XG4gICAgTUFYX0RBWV9SQU5HRV9MRU5HVEhfTUFQUEVSLFxuICAgIFRVSV9EQVRFX01PREVfTUFTS0lUT19BREFQVEVSLFxufSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICAgIFRVSV9EQVRFX1JBTkdFX1ZBTFVFX1RSQU5TRk9STUVSLFxuICAgIFRVSV9EQVRFX1RFWFRTLFxuICAgIFRVSV9JTlBVVF9EQVRFX09QVElPTlMsXG4gICAgVFVJX01PQklMRV9DQUxFTkRBUixcbiAgICB0dWlEYXRlU3RyZWFtV2l0aFRyYW5zZm9ybWVyLFxuICAgIFR1aUlucHV0RGF0ZU9wdGlvbnMsXG59IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29tcG9uZW50LCBQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtZGF0ZS1yYW5nZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWRhdGUtcmFuZ2UudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtZGF0ZS1yYW5nZS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aUlucHV0RGF0ZVJhbmdlQ29tcG9uZW50KSxcbiAgICAgICAgdHVpQXNDb250cm9sKFR1aUlucHV0RGF0ZVJhbmdlQ29tcG9uZW50KSxcbiAgICAgICAgdHVpRGF0ZVN0cmVhbVdpdGhUcmFuc2Zvcm1lcihUVUlfREFURV9SQU5HRV9WQUxVRV9UUkFOU0ZPUk1FUiksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXREYXRlUmFuZ2VDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sPFR1aURheVJhbmdlPlxuICAgIGltcGxlbWVudHMgVHVpV2l0aE9wdGlvbmFsTWluTWF4PFR1aURheT4sIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3Nvclxue1xuICAgIEBWaWV3Q2hpbGQoVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkPzogVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50O1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4gPSBBTFdBWVNfRkFMU0VfSEFORExFUjtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtYXJrZXJIYW5kbGVyOiBUdWlNYXJrZXJIYW5kbGVyID0gVFVJX0RFRkFVTFRfTUFSS0VSX0hBTkRMRVI7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgZGVmYXVsdFZpZXdlZE1vbnRoID0gVHVpTW9udGguY3VycmVudExvY2FsKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgaXRlbXM6IHJlYWRvbmx5IFR1aURheVJhbmdlUGVyaW9kW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtaW4gPSB0aGlzLm9wdGlvbnMubWluO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1heCA9IHRoaXMub3B0aW9ucy5tYXg7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbWluTGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbWF4TGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICByZWFkb25seSBtYXhMZW5ndGhNYXBwZXI6IFR1aU1hcHBlcjxUdWlEYXksIFR1aURheT4gPSBNQVhfREFZX1JBTkdFX0xFTkdUSF9NQVBQRVI7XG4gICAgcmVhZG9ubHkgZGF0ZUZpbGxlciQgPSB0aGlzLmRhdGVUZXh0cyQucGlwZShcbiAgICAgICAgbWFwKGRhdGVUZXh0cyA9PlxuICAgICAgICAgICAgY2hhbmdlRGF0ZVNlcGFyYXRvcihkYXRlVGV4dHNbdGhpcy5kYXRlRm9ybWF0XSwgdGhpcy5kYXRlU2VwYXJhdG9yKSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoSW5qZWN0b3IpIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoVHVpRGlhbG9nU2VydmljZSkgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dzOiBUdWlEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRVSV9NT0JJTEVfQ0FMRU5EQVIpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbW9iaWxlQ2FsZW5kYXI6IFR5cGU8UmVjb3JkPHN0cmluZywgYW55Pj4gfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfU0laRSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGRTaXplOiBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgICAgICBASW5qZWN0KFRVSV9EQVRFX0ZPUk1BVCkgcmVhZG9ubHkgZGF0ZUZvcm1hdDogVHVpRGF0ZU1vZGUsXG4gICAgICAgIEBJbmplY3QoVFVJX0RBVEVfU0VQQVJBVE9SKSByZWFkb25seSBkYXRlU2VwYXJhdG9yOiBzdHJpbmcsXG4gICAgICAgIEBJbmplY3QoVFVJX0RBVEVfVEVYVFMpXG4gICAgICAgIHJlYWRvbmx5IGRhdGVUZXh0cyQ6IE9ic2VydmFibGU8UmVjb3JkPFR1aURhdGVNb2RlLCBzdHJpbmc+PixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChUVUlfREFURV9SQU5HRV9WQUxVRV9UUkFOU0ZPUk1FUilcbiAgICAgICAgb3ZlcnJpZGUgcmVhZG9ubHkgdmFsdWVUcmFuc2Zvcm1lcjogQWJzdHJhY3RUdWlWYWx1ZVRyYW5zZm9ybWVyPFR1aURheVJhbmdlIHwgbnVsbD4gfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9EQVRFX09QVElPTlMpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogVHVpSW5wdXREYXRlT3B0aW9ucyxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2RyLCB2YWx1ZVRyYW5zZm9ybWVyKTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZCA/IHRoaXMudGV4dGZpZWxkLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnRleHRmaWVsZCAmJiB0aGlzLnRleHRmaWVsZC5mb2N1c2VkO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZE1vYmlsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgJiYgISF0aGlzLm1vYmlsZUNhbGVuZGFyO1xuICAgIH1cblxuICAgIGdldCBjYWxlbmRhckljb24oKTogVHVpSW5wdXREYXRlT3B0aW9uc1snaWNvbiddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29uO1xuICAgIH1cblxuICAgIGdldCBjYW5PcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcmFjdGl2ZSAmJiAhdGhpcy5jb21wdXRlZE1vYmlsZTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRFeGFtcGxlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5sZW5ndGhcbiAgICAgICAgICAgID8gdGhpcy50ZXh0ZmllbGQ/Lm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ/LnBsYWNlaG9sZGVyIHx8ICcnXG4gICAgICAgICAgICA6ICcnO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZE1hc2soKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVQZXJpb2RcbiAgICAgICAgICAgID8gTUFTS0lUT19ERUZBVUxUX09QVElPTlNcbiAgICAgICAgICAgIDogdGhpcy5jYWxjdWxhdGVNYXNrKFxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgICAgdGhpcy5taW4sXG4gICAgICAgICAgICAgICAgICB0aGlzLm1heCxcbiAgICAgICAgICAgICAgICAgIHRoaXMubWluTGVuZ3RoIHx8IHt9LFxuICAgICAgICAgICAgICAgICAgdGhpcy5tYXhMZW5ndGggfHwge30sXG4gICAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGFjdGl2ZVBlcmlvZCgpOiBUdWlEYXlSYW5nZVBlcmlvZCB8IG51bGwge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5pdGVtcy5maW5kKGl0ZW0gPT5cbiAgICAgICAgICAgICAgICB0dWlOdWxsYWJsZVNhbWUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgYS5mcm9tLmRheVNhbWUoYi5mcm9tLmRheUxpbWl0KHRoaXMubWluLCB0aGlzLm1heCkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhLnRvLmRheVNhbWUoYi50by5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSB8fCBudWxsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qge3ZhbHVlLCBuYXRpdmVWYWx1ZSwgYWN0aXZlUGVyaW9kfSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKGFjdGl2ZVBlcmlvZCkge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhhY3RpdmVQZXJpb2QpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICA/IHZhbHVlLmdldEZvcm1hdHRlZERheVJhbmdlKHRoaXMuZGF0ZUZvcm1hdCwgdGhpcy5kYXRlU2VwYXJhdG9yKVxuICAgICAgICAgICAgOiBuYXRpdmVWYWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgc2hvd1ZhbHVlVGVtcGxhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0dWlJc1ByZXNlbnQodGhpcy52YWx1ZSkgJiYgIXRoaXMuZm9jdXNlZDtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRDb250ZW50KCk6IFBvbHltb3JwaGV1c0NvbnRlbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVQZXJpb2Q/LmNvbnRlbnQgfHwgdGhpcy5jb21wdXRlZFZhbHVlO1xuICAgIH1cblxuICAgIGdldCBpbm5lclBzZXVkb0ZvY3VzZWQoKTogYm9vbGVhbiB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5wc2V1ZG9Gb2N1cyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wZW4gfHwgdGhpcy5jb21wdXRlZEZvY3VzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBzZXQgbmF0aXZlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHNpemUoKTogVHVpU2l6ZUwgfCBUdWlTaXplUyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZFNpemUuc2l6ZTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Q29tcHV0ZWRSYW5nZUZpbGxlcihkYXRlRmlsbGVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVQZXJpb2QgPyAnJyA6IHRoaXMuZ2V0RGF0ZVJhbmdlRmlsbGVyKGRhdGVGaWxsZXIpO1xuICAgIH1cblxuICAgIG9uSWNvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY29tcHV0ZWRNb2JpbGUgfHwgIXRoaXMubW9iaWxlQ2FsZW5kYXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlhbG9nc1xuICAgICAgICAgICAgLm9wZW48VHVpRGF5UmFuZ2U+KFxuICAgICAgICAgICAgICAgIG5ldyBQb2x5bW9ycGhldXNDb21wb25lbnQodGhpcy5tb2JpbGVDYWxlbmRhciwgdGhpcy5pbmplY3RvciksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzaXplOiAnZnVsbHNjcmVlbicsXG4gICAgICAgICAgICAgICAgICAgIGNsb3NlYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW46IHRoaXMubWF4TGVuZ3RoTWFwcGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWluLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXhMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMubWF4TGVuZ3RoTWFwcGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXhMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRJdGVtSGFuZGxlcjogdGhpcy5kaXNhYmxlZEl0ZW1IYW5kbGVyLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk9wZW5DaGFuZ2Uob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBvcGVuO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vbk9wZW5DaGFuZ2UodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID1cbiAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA9PT0gREFURV9SQU5HRV9GSUxMRVJfTEVOR1RIXG4gICAgICAgICAgICAgICAgPyBUdWlEYXlSYW5nZS5ub3JtYWxpemVQYXJzZSh2YWx1ZSwgdGhpcy5kYXRlRm9ybWF0KVxuICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBvblJhbmdlQ2hhbmdlKHJhbmdlOiBUdWlEYXlSYW5nZSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG5cbiAgICAgICAgaWYgKCFyYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHJhbmdlO1xuICAgIH1cblxuICAgIG9uSXRlbVNlbGVjdChpdGVtOiBUdWlEYXlSYW5nZVBlcmlvZCB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcblxuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gaXRlbS5yYW5nZS5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVQZXJpb2QgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgb25BY3RpdmVab25lKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFmb2N1c2VkICYmXG4gICAgICAgICAgICAhdGhpcy5pdGVtU2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICh0aGlzLm5hdGl2ZVZhbHVlLmxlbmd0aCA9PT0gREFURV9GSUxMRVJfTEVOR1RIIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZS5sZW5ndGggPT09XG4gICAgICAgICAgICAgICAgICAgIERBVEVfRklMTEVSX0xFTkdUSCArIFJBTkdFX1NFUEFSQVRPUl9DSEFSLmxlbmd0aClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gVHVpRGF5UmFuZ2Uubm9ybWFsaXplUGFyc2UodGhpcy5uYXRpdmVWYWx1ZSwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IHZhbHVlID8gdGhpcy5jb21wdXRlZFZhbHVlIDogJyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbHVlSWRlbnRpY2FsQ29tcGFyYXRvcihcbiAgICAgICAgb2xkVmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCxcbiAgICAgICAgbmV3VmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCxcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR1aU51bGxhYmxlU2FtZShvbGRWYWx1ZSwgbmV3VmFsdWUsIChhLCBiKSA9PiBhLmRheVNhbWUoYikpO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVNYXNrKFxuICAgICAgICBkYXRlRm9ybWF0OiBUdWlEYXRlTW9kZSxcbiAgICAgICAgc2VwYXJhdG9yOiBzdHJpbmcsXG4gICAgICAgIG1pbjogVHVpRGF5LFxuICAgICAgICBtYXg6IFR1aURheSxcbiAgICAgICAgbWluTGVuZ3RoOiBUdWlEYXlMaWtlLFxuICAgICAgICBtYXhMZW5ndGg6IFR1aURheUxpa2UsXG4gICAgKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICByZXR1cm4gbWFza2l0b0RhdGVSYW5nZU9wdGlvbnNHZW5lcmF0b3Ioe1xuICAgICAgICAgICAgc2VwYXJhdG9yLFxuICAgICAgICAgICAgbW9kZTogVFVJX0RBVEVfTU9ERV9NQVNLSVRPX0FEQVBURVJbZGF0ZUZvcm1hdF0sXG4gICAgICAgICAgICBtaW46IG1pbi50b0xvY2FsTmF0aXZlRGF0ZSgpLFxuICAgICAgICAgICAgbWF4OiBtYXgudG9Mb2NhbE5hdGl2ZURhdGUoKSxcbiAgICAgICAgICAgIG1pbkxlbmd0aCxcbiAgICAgICAgICAgIG1heExlbmd0aCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXRlbVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBTdHJpbmcoaXRlbSkgPT09IHRoaXMubmF0aXZlVmFsdWUpICE9PSAtMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzSW5wdXQocHJldmVudFNjcm9sbDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC5mb2N1cyh7cHJldmVudFNjcm9sbH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRlUmFuZ2VGaWxsZXIoZGF0ZUZpbGxlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2RhdGVGaWxsZXJ9JHtSQU5HRV9TRVBBUkFUT1JfQ0hBUn0ke2RhdGVGaWxsZXJ9YDtcbiAgICB9XG59XG4iLCI8dHVpLWhvc3RlZC1kcm9wZG93blxuICAgIGNsYXNzPVwidC1ob3N0ZWRcIlxuICAgIFtjYW5PcGVuXT1cImNhbk9wZW5cIlxuICAgIFtjb250ZW50XT1cImRyb3Bkb3duXCJcbiAgICBbb3Blbl09XCJvcGVuICYmIGNhbk9wZW5cIlxuICAgIChvcGVuQ2hhbmdlKT1cIm9uT3BlbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAodHVpQWN0aXZlWm9uZUNoYW5nZSk9XCJvbkFjdGl2ZVpvbmUoJGV2ZW50KVwiXG4+XG4gICAgPHR1aS1wcmltaXRpdmUtdGV4dGZpZWxkXG4gICAgICAgICp0dWlMZXQ9XCJkYXRlRmlsbGVyJCB8IGFzeW5jIGFzIGRhdGVGaWxsZXJcIlxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWRhdGUtcmFuZ2VfX3RleHRmaWVsZFwiXG4gICAgICAgIHR1aVZhbHVlQWNjZXNzb3JcbiAgICAgICAgY2xhc3M9XCJ0LXRleHRmaWVsZFwiXG4gICAgICAgIFt0dWlUZXh0ZmllbGRJY29uXT1cImNhbGVuZGFySWNvbiAmJiBpY29uQ29udGVudFwiXG4gICAgICAgIFt0dWlUZXh0ZmllbGRGaWxsZXJdPVwiZ2V0Q29tcHV0ZWRSYW5nZUZpbGxlcihkYXRlRmlsbGVyIHx8ICcnKVwiXG4gICAgICAgIFtwc2V1ZG9Gb2N1c109XCJpbm5lclBzZXVkb0ZvY3VzZWRcIlxuICAgICAgICBbcHNldWRvSG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgICAgICBbcHNldWRvQWN0aXZlXT1cInBzZXVkb0FjdGl2ZVwiXG4gICAgICAgIFtpbnZhbGlkXT1cImNvbXB1dGVkSW52YWxpZFwiXG4gICAgICAgIFtuYXRpdmVJZF09XCJuYXRpdmVJZFwiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgW21hc2tpdG9dPVwiY29tcHV0ZWRNYXNrXCJcbiAgICAgICAgW3ZhbHVlXT1cImNvbXB1dGVkVmFsdWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgIHNlbGVjdD1cImlucHV0XCJcbiAgICAgICAgICAgIG5nUHJvamVjdEFzPVwiaW5wdXRcIlxuICAgICAgICA+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1ZhbHVlVGVtcGxhdGVcIlxuICAgICAgICAgICAgbmdQcm9qZWN0QXM9XCJ0dWlDb250ZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwidC12YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImNvbXB1dGVkQ29udGVudCBhcyB0ZXh0OyBjb250ZXh0OiB7JGltcGxpY2l0OiB2YWx1ZX1cIj5cbiAgICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC90dWktcHJpbWl0aXZlLXRleHRmaWVsZD5cblxuICAgIDxuZy10ZW1wbGF0ZSAjaWNvbkNvbnRlbnQ+XG4gICAgICAgIDx0dWktc3ZnXG4gICAgICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiY2FsZW5kYXJJY29uIGFzIHNyYzsgY29udGV4dDogeyRpbXBsaWNpdDogc2l6ZX1cIlxuICAgICAgICAgICAgdHVpV3JhcHBlclxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cImljb25cIlxuICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1kYXRlLXJhbmdlX19pY29uXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWljb25dPVwiIWNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICAgICAgW3NyY109XCJzcmNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSWNvbkNsaWNrKClcIlxuICAgICAgICA+PC90dWktc3ZnPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duPlxuICAgICAgICA8dHVpLWNhbGVuZGFyLXJhbmdlXG4gICAgICAgICAgICBbZGVmYXVsdFZpZXdlZE1vbnRoXT1cImRlZmF1bHRWaWV3ZWRNb250aFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJpdGVtc1wiXG4gICAgICAgICAgICBbbWluXT1cIm1pblwiXG4gICAgICAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgICAgICBbbWFya2VySGFuZGxlcl09XCJtYXJrZXJIYW5kbGVyXCJcbiAgICAgICAgICAgIFttaW5MZW5ndGhdPVwibWluTGVuZ3RoXCJcbiAgICAgICAgICAgIFttYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25SYW5nZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvdHVpLWNhbGVuZGFyLXJhbmdlPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3R1aS1ob3N0ZWQtZHJvcGRvd24+XG4iXX0=
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
|
+
import { MaskitoModule } from '@maskito/angular';
|
|
3
4
|
import { TuiActiveZoneModule, TuiLetModule } from '@taiga-ui/cdk';
|
|
4
5
|
import { TuiHostedDropdownModule, TuiPrimitiveTextfieldModule, TuiSvgModule, TuiTextfieldComponent, TuiTextfieldControllerModule, TuiWrapperModule, } from '@taiga-ui/core';
|
|
5
6
|
import { TuiCalendarRangeModule } from '@taiga-ui/kit/components/calendar-range';
|
|
6
|
-
import {
|
|
7
|
+
import { TuiValueAccessorModule } from '@taiga-ui/kit/directives';
|
|
7
8
|
import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
|
|
8
9
|
import { TuiInputDateRangeComponent } from './input-date-range.component';
|
|
9
10
|
import { TuiInputDateRangeDirective } from './input-date-range.directive';
|
|
@@ -12,7 +13,7 @@ export class TuiInputDateRangeModule {
|
|
|
12
13
|
}
|
|
13
14
|
TuiInputDateRangeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputDateRangeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
14
15
|
TuiInputDateRangeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputDateRangeModule, declarations: [TuiInputDateRangeComponent, TuiInputDateRangeDirective], imports: [CommonModule,
|
|
15
|
-
|
|
16
|
+
MaskitoModule,
|
|
16
17
|
TuiActiveZoneModule,
|
|
17
18
|
TuiLetModule,
|
|
18
19
|
PolymorpheusModule,
|
|
@@ -27,7 +28,7 @@ TuiInputDateRangeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
|
|
|
27
28
|
TuiTextfieldComponent] });
|
|
28
29
|
TuiInputDateRangeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputDateRangeModule, imports: [[
|
|
29
30
|
CommonModule,
|
|
30
|
-
|
|
31
|
+
MaskitoModule,
|
|
31
32
|
TuiActiveZoneModule,
|
|
32
33
|
TuiLetModule,
|
|
33
34
|
PolymorpheusModule,
|
|
@@ -44,7 +45,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
44
45
|
args: [{
|
|
45
46
|
imports: [
|
|
46
47
|
CommonModule,
|
|
47
|
-
|
|
48
|
+
MaskitoModule,
|
|
48
49
|
TuiActiveZoneModule,
|
|
49
50
|
TuiLetModule,
|
|
50
51
|
PolymorpheusModule,
|
|
@@ -64,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
64
65
|
],
|
|
65
66
|
}]
|
|
66
67
|
}] });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS1yYW5nZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1kYXRlLXJhbmdlL2lucHV0LWRhdGUtcmFuZ2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsMkJBQTJCLEVBQzNCLFlBQVksRUFDWixxQkFBcUIsRUFDckIsNEJBQTRCLEVBQzVCLGdCQUFnQixHQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRTVELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDhCQUE4QixDQUFDOztBQXdCeEUsTUFBTSxPQUFPLHVCQUF1Qjs7cUhBQXZCLHVCQUF1QjtzSEFBdkIsdUJBQXVCLGlCQVBqQiwwQkFBMEIsRUFBRSwwQkFBMEIsYUFiakUsWUFBWTtRQUNaLGFBQWE7UUFDYixtQkFBbUI7UUFDbkIsWUFBWTtRQUNaLGtCQUFrQjtRQUNsQixnQkFBZ0I7UUFDaEIsMkJBQTJCO1FBQzNCLDRCQUE0QjtRQUM1Qix1QkFBdUI7UUFDdkIsWUFBWTtRQUNaLHNCQUFzQjtRQUN0QixzQkFBc0IsYUFJdEIsMEJBQTBCO1FBQzFCLDBCQUEwQjtRQUMxQixxQkFBcUI7c0hBR2hCLHVCQUF1QixZQXJCdkI7WUFDTCxZQUFZO1lBQ1osYUFBYTtZQUNiLG1CQUFtQjtZQUNuQixZQUFZO1lBQ1osa0JBQWtCO1lBQ2xCLGdCQUFnQjtZQUNoQiwyQkFBMkI7WUFDM0IsNEJBQTRCO1lBQzVCLHVCQUF1QjtZQUN2QixZQUFZO1lBQ1osc0JBQXNCO1lBQ3RCLHNCQUFzQjtTQUN6Qjs0RkFRUSx1QkFBdUI7a0JBdEJuQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQiwyQkFBMkI7d0JBQzNCLDRCQUE0Qjt3QkFDNUIsdUJBQXVCO3dCQUN2QixZQUFZO3dCQUNaLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3FCQUN6QjtvQkFDRCxZQUFZLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSwwQkFBMEIsQ0FBQztvQkFDdEUsT0FBTyxFQUFFO3dCQUNMLDBCQUEwQjt3QkFDMUIsMEJBQTBCO3dCQUMxQixxQkFBcUI7cUJBQ3hCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWFza2l0b01vZHVsZX0gZnJvbSAnQG1hc2tpdG8vYW5ndWxhcic7XG5pbXBvcnQge1R1aUFjdGl2ZVpvbmVNb2R1bGUsIFR1aUxldE1vZHVsZX0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFR1aUhvc3RlZERyb3Bkb3duTW9kdWxlLFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZE1vZHVsZSxcbiAgICBUdWlTdmdNb2R1bGUsXG4gICAgVHVpVGV4dGZpZWxkQ29tcG9uZW50LFxuICAgIFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGUsXG4gICAgVHVpV3JhcHBlck1vZHVsZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUdWlDYWxlbmRhclJhbmdlTW9kdWxlfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvY2FsZW5kYXItcmFuZ2UnO1xuaW1wb3J0IHtUdWlWYWx1ZUFjY2Vzc29yTW9kdWxlfSBmcm9tICdAdGFpZ2EtdWkva2l0L2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNNb2R1bGV9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5cbmltcG9ydCB7VHVpSW5wdXREYXRlUmFuZ2VDb21wb25lbnR9IGZyb20gJy4vaW5wdXQtZGF0ZS1yYW5nZS5jb21wb25lbnQnO1xuaW1wb3J0IHtUdWlJbnB1dERhdGVSYW5nZURpcmVjdGl2ZX0gZnJvbSAnLi9pbnB1dC1kYXRlLXJhbmdlLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE1hc2tpdG9Nb2R1bGUsXG4gICAgICAgIFR1aUFjdGl2ZVpvbmVNb2R1bGUsXG4gICAgICAgIFR1aUxldE1vZHVsZSxcbiAgICAgICAgUG9seW1vcnBoZXVzTW9kdWxlLFxuICAgICAgICBUdWlXcmFwcGVyTW9kdWxlLFxuICAgICAgICBUdWlQcmltaXRpdmVUZXh0ZmllbGRNb2R1bGUsXG4gICAgICAgIFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGUsXG4gICAgICAgIFR1aUhvc3RlZERyb3Bkb3duTW9kdWxlLFxuICAgICAgICBUdWlTdmdNb2R1bGUsXG4gICAgICAgIFR1aUNhbGVuZGFyUmFuZ2VNb2R1bGUsXG4gICAgICAgIFR1aVZhbHVlQWNjZXNzb3JNb2R1bGUsXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtUdWlJbnB1dERhdGVSYW5nZUNvbXBvbmVudCwgVHVpSW5wdXREYXRlUmFuZ2VEaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgVHVpSW5wdXREYXRlUmFuZ2VDb21wb25lbnQsXG4gICAgICAgIFR1aUlucHV0RGF0ZVJhbmdlRGlyZWN0aXZlLFxuICAgICAgICBUdWlUZXh0ZmllbGRDb21wb25lbnQsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXREYXRlUmFuZ2VNb2R1bGUge31cbiJdfQ==
|
|
@@ -12,6 +12,7 @@ export class TuiInputInlineComponent extends AbstractTuiControl {
|
|
|
12
12
|
constructor(control, cdr) {
|
|
13
13
|
super(control, cdr);
|
|
14
14
|
this.maxLength = null;
|
|
15
|
+
this.indent = -1;
|
|
15
16
|
}
|
|
16
17
|
get nativeFocusableElement() {
|
|
17
18
|
return !this.native ? null : this.native.nativeElement;
|
|
@@ -29,6 +30,12 @@ export class TuiInputInlineComponent extends AbstractTuiControl {
|
|
|
29
30
|
onFocused(focused) {
|
|
30
31
|
this.updateFocused(focused);
|
|
31
32
|
}
|
|
33
|
+
onScroll() {
|
|
34
|
+
var _a;
|
|
35
|
+
const indent = ((_a = this.native) === null || _a === void 0 ? void 0 : _a.nativeElement.scrollLeft) || 0;
|
|
36
|
+
// -1 for Safari (see styles)
|
|
37
|
+
this.indent = -1 - indent;
|
|
38
|
+
}
|
|
32
39
|
getFallbackValue() {
|
|
33
40
|
return '';
|
|
34
41
|
}
|
|
@@ -37,7 +44,7 @@ TuiInputInlineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0",
|
|
|
37
44
|
TuiInputInlineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputInlineComponent, selector: "tui-input-inline", inputs: { maxLength: "maxLength" }, providers: [
|
|
38
45
|
TUI_VALUE_ACCESSOR_PROVIDER,
|
|
39
46
|
tuiAsFocusableItemAccessor(TuiInputInlineComponent),
|
|
40
|
-
], viewQueries: [{ propertyName: "native", first: true, predicate: ["native"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span
|
|
47
|
+
], viewQueries: [{ propertyName: "native", first: true, predicate: ["native"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span\n class=\"t-before\"\n [style.text-indent.px]=\"indent\"\n [textContent]=\"value\"\n></span>\n\n<span\n *ngIf=\"!hasValue\"\n automation-id=\"tui-input-inline__placeholder\"\n class=\"t-placeholder\"\n>\n <ng-content></ng-content>\n</span>\n\n<input\n #native\n automation-id=\"tui-input-inline__native\"\n type=\"text\"\n tuiMaskAccessor\n class=\"t-native\"\n [attr.maxLength]=\"maxLength\"\n [id]=\"id\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [tuiFocusable]=\"focusable\"\n [(ngModel)]=\"value\"\n (scroll)=\"onScroll()\"\n (tuiFocusedChange)=\"onFocused($event)\"\n/>\n", styles: [":host{position:relative;display:inline-block;overflow:hidden;white-space:nowrap;box-sizing:border-box}.t-before{display:block;padding-right:.02em;margin-left:1px;overflow:hidden;white-space:pre}.t-placeholder{margin-left:-1px}.t-native{position:absolute;top:0;left:0;background-color:transparent;padding:inherit;font:inherit;color:transparent;caret-color:#7d7d7d;box-sizing:border-box;width:100%;height:100%;border-width:0;text-align:inherit;letter-spacing:inherit;text-indent:inherit;text-transform:inherit;outline:none;mix-blend-mode:difference}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.TuiMaskAccessorDirective, selector: "input[tuiMaskAccessor]" }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.TuiFocusableDirective, selector: "[tuiFocusable]", inputs: ["tuiFocusable"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.TuiFocusedDirective, selector: "[tuiFocusedChange]", outputs: ["tuiFocusedChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
41
48
|
__decorate([
|
|
42
49
|
tuiDefaultProp()
|
|
43
50
|
], TuiInputInlineComponent.prototype, "maxLength", void 0);
|
|
@@ -69,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
69
76
|
}], maxLength: [{
|
|
70
77
|
type: Input
|
|
71
78
|
}] } });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtaW5saW5lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LWlubGluZS9pbnB1dC1pbmxpbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtaW5saW5lL2lucHV0LWlubGluZS50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUNILGtCQUFrQixFQUNsQiwwQkFBMEIsRUFDMUIsY0FBYyxFQUVkLGtCQUFrQixHQUVyQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7O0FBWXBFLE1BQU0sT0FBTyx1QkFDVCxTQUFRLGtCQUFtQztJQVkzQyxZQUlJLE9BQXlCLEVBQ0UsR0FBc0I7UUFFakQsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQVh4QixjQUFTLEdBQWtCLElBQUksQ0FBQztRQUVoQyxXQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFVWixDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELHFDQUFxQztJQUNyQyxhQUFhLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQWdCO1FBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFFBQVE7O1FBQ0osTUFBTSxNQUFNLEdBQUcsQ0FBQSxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLGFBQWEsQ0FBQyxVQUFVLEtBQUksQ0FBQyxDQUFDO1FBRTFELDZCQUE2QjtRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUM5QixDQUFDO0lBRVMsZ0JBQWdCO1FBQ3RCLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQzs7cUhBckRRLHVCQUF1QixrQkFnQnBCLFNBQVMseUNBRVQsaUJBQWlCO3lHQWxCcEIsdUJBQXVCLCtFQUxyQjtRQUNQLDJCQUEyQjtRQUMzQiwwQkFBMEIsQ0FBQyx1QkFBdUIsQ0FBQztLQUN0RCxtSkM5Qkwsd3BCQTZCQTtBRFlJO0lBREMsY0FBYyxFQUFFOzBEQUNlOzRGQVR2Qix1QkFBdUI7a0JBVm5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsV0FBVyxFQUFFLDhCQUE4QjtvQkFDM0MsU0FBUyxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQ3hDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUU7d0JBQ1AsMkJBQTJCO3dCQUMzQiwwQkFBMEIseUJBQXlCO3FCQUN0RDtpQkFDSjs7MEJBZVEsUUFBUTs7MEJBQ1IsSUFBSTs7MEJBQ0osTUFBTTsyQkFBQyxTQUFTOzswQkFFaEIsTUFBTTsyQkFBQyxpQkFBaUI7NENBYlosTUFBTTtzQkFEdEIsU0FBUzt1QkFBQyxRQUFRO2dCQUtuQixTQUFTO3NCQUZSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aUNvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgdHVpRGVmYXVsdFByb3AsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIHR1aUlzTmF0aXZlRm9jdXNlZCxcbiAgICBUdWlOYXRpdmVGb2N1c2FibGVFbGVtZW50LFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7VFVJX1ZBTFVFX0FDQ0VTU09SX1BST1ZJREVSfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Byb3ZpZGVycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLWlucHV0LWlubGluZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWlubGluZS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1pbmxpbmUuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBUVUlfVkFMVUVfQUNDRVNTT1JfUFJPVklERVIsXG4gICAgICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aUlucHV0SW5saW5lQ29tcG9uZW50KSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dElubGluZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlDb250cm9sPG51bWJlciB8IHN0cmluZz5cbiAgICBpbXBsZW1lbnRzIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3Nvclxue1xuICAgIEBWaWV3Q2hpbGQoJ25hdGl2ZScpXG4gICAgcHJpdmF0ZSByZWFkb25seSBuYXRpdmU/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1heExlbmd0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBpbmRlbnQgPSAtMTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjZHIpO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IFR1aU5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLm5hdGl2ZSA/IG51bGwgOiB0aGlzLm5hdGl2ZS5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHVpSXNOYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0IGhhc1ZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSAhPT0gJyc7XG4gICAgfVxuXG4gICAgLyoqIEBkZXByZWNhdGVkIHVzZSAndmFsdWUnIHNldHRlciAqL1xuICAgIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgb25Gb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuICAgIH1cblxuICAgIG9uU2Nyb2xsKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRlbnQgPSB0aGlzLm5hdGl2ZT8ubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0IHx8IDA7XG5cbiAgICAgICAgLy8gLTEgZm9yIFNhZmFyaSAoc2VlIHN0eWxlcylcbiAgICAgICAgdGhpcy5pbmRlbnQgPSAtMSAtIGluZGVudDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RmFsbGJhY2tWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxufVxuIiwiPHNwYW5cbiAgICBjbGFzcz1cInQtYmVmb3JlXCJcbiAgICBbc3R5bGUudGV4dC1pbmRlbnQucHhdPVwiaW5kZW50XCJcbiAgICBbdGV4dENvbnRlbnRdPVwidmFsdWVcIlxuPjwvc3Bhbj5cblxuPHNwYW5cbiAgICAqbmdJZj1cIiFoYXNWYWx1ZVwiXG4gICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1pbmxpbmVfX3BsYWNlaG9sZGVyXCJcbiAgICBjbGFzcz1cInQtcGxhY2Vob2xkZXJcIlxuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvc3Bhbj5cblxuPGlucHV0XG4gICAgI25hdGl2ZVxuICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtaW5saW5lX19uYXRpdmVcIlxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICB0dWlNYXNrQWNjZXNzb3JcbiAgICBjbGFzcz1cInQtbmF0aXZlXCJcbiAgICBbYXR0ci5tYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICBbaWRdPVwiaWRcIlxuICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgIFt0dWlGb2N1c2FibGVdPVwiZm9jdXNhYmxlXCJcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAoc2Nyb2xsKT1cIm9uU2Nyb2xsKClcIlxuICAgICh0dWlGb2N1c2VkQ2hhbmdlKT1cIm9uRm9jdXNlZCgkZXZlbnQpXCJcbi8+XG4iXX0=
|