@firestitch/filter 18.2.94 → 18.2.98
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/app/components/filter-chips/filter-chips.component.d.ts +8 -3
- package/app/components/filters-item/date-range/date-range.component.d.ts +1 -0
- package/app/helpers/create-filter-item.d.ts +1 -1
- package/app/models/items/base-item.d.ts +1 -0
- package/esm2022/app/components/filter-chips/filter-chips.component.mjs +57 -10
- package/esm2022/app/components/filters-item/date-range/date-range.component.mjs +14 -10
- package/esm2022/app/directives/focus-to-item.directive.mjs +4 -2
- package/esm2022/app/models/items/base-item.mjs +4 -1
- package/esm2022/app/services/filter-controller.service.mjs +11 -1
- package/fesm2022/firestitch-filter.mjs +87 -20
- package/fesm2022/firestitch-filter.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { OnInit, QueryList } from '@angular/core';
|
|
2
|
-
import { MatSelectChange } from '@angular/material/select';
|
|
3
2
|
import { FsChipComponent } from '@firestitch/chip';
|
|
4
3
|
import { Observable } from 'rxjs';
|
|
5
4
|
import { ItemType } from '../../enums';
|
|
@@ -24,12 +23,15 @@ export declare class FsFilterChipsComponent implements OnInit {
|
|
|
24
23
|
private _elementRef;
|
|
25
24
|
private _hasSecondaryValue$;
|
|
26
25
|
get items(): BaseItem<IFilterConfigItem>[];
|
|
27
|
-
addFilter(
|
|
26
|
+
addFilter(item: BaseItem<IFilterConfigItem>): void;
|
|
28
27
|
get hasSecondaryValue$(): Observable<boolean>;
|
|
29
28
|
get savedFilterController(): SavedFilterController;
|
|
30
29
|
get hasSecondaryValue(): boolean;
|
|
31
30
|
ngOnInit(): void;
|
|
31
|
+
private _initSecondaryItems;
|
|
32
|
+
private _updateSecondaryItems;
|
|
32
33
|
clear(): void;
|
|
34
|
+
handleChipClick(item: BaseItem<IFilterConfigItem>, name?: string): void;
|
|
33
35
|
openChip(item: BaseItem<IFilterConfigItem>, name?: string): void;
|
|
34
36
|
getNestedElement(el: any, className: string): any;
|
|
35
37
|
saveActiveFilter(): void;
|
|
@@ -41,7 +43,10 @@ export declare class FsFilterChipsComponent implements OnInit {
|
|
|
41
43
|
name?: string;
|
|
42
44
|
value: string;
|
|
43
45
|
label: string;
|
|
44
|
-
}
|
|
46
|
+
}, event?: {
|
|
47
|
+
event: MouseEvent;
|
|
48
|
+
data: any;
|
|
49
|
+
} | Event): void;
|
|
45
50
|
removeItem(item: BaseItem<IFilterConfigItem>): void;
|
|
46
51
|
private _attachContainer;
|
|
47
52
|
private _createInjector;
|
|
@@ -12,4 +12,4 @@ import { RangeItem } from '../models/items/range-item';
|
|
|
12
12
|
import { SelectItem } from '../models/items/select-item';
|
|
13
13
|
import { TextItem } from '../models/items/text-item';
|
|
14
14
|
import { WeekItem } from '../models/items/week-item';
|
|
15
|
-
export declare function createFilterItem(item: IFilterConfigItem, filter: FilterComponent):
|
|
15
|
+
export declare function createFilterItem(item: IFilterConfigItem, filter: FilterComponent): SelectItem | ChipsItem | RangeItem | DateRangeItem | DateTimeRangeItem | DateItem | WeekItem | DateTimeItem | AutocompleteItem | AutocompleteChipsItem | CheckboxItem | TextItem;
|
|
@@ -53,6 +53,7 @@ export declare abstract class BaseItem<T extends IFilterConfigItem> {
|
|
|
53
53
|
get destroy$(): Observable<void>;
|
|
54
54
|
get type(): T['type'];
|
|
55
55
|
get hasValue(): boolean;
|
|
56
|
+
get allowSecondary(): boolean;
|
|
56
57
|
get notValue$(): Observable<boolean>;
|
|
57
58
|
get hasValue$(): Observable<boolean>;
|
|
58
59
|
get chips$(): Observable<{
|
|
@@ -7,6 +7,7 @@ import { MatButtonModule } from '@angular/material/button';
|
|
|
7
7
|
import { MatDialog } from '@angular/material/dialog';
|
|
8
8
|
import { MatOption, MatSelect } from '@angular/material/select';
|
|
9
9
|
import { FsChipComponent, FsChipModule } from '@firestitch/chip';
|
|
10
|
+
import { FsChipSelectTriggerDirective } from '@firestitch/chip/app/components/chip-select/chip-select-trigger.directive';
|
|
10
11
|
import { FsButtonDirective } from '@firestitch/form';
|
|
11
12
|
import { FsMessage } from '@firestitch/message';
|
|
12
13
|
import { FsSelectButtonModule } from '@firestitch/selectbutton';
|
|
@@ -20,8 +21,6 @@ import { FilterItemDialogComponent } from '../filter-item-dialog';
|
|
|
20
21
|
import { FsFilterSavedFilterManageComponent } from '../saved-filter/saved-filter-manage/saved-filter-manage.component';
|
|
21
22
|
import * as i0 from "@angular/core";
|
|
22
23
|
import * as i1 from "@firestitch/chip";
|
|
23
|
-
import * as i2 from "@firestitch/selectbutton";
|
|
24
|
-
import * as i3 from "@angular/material/button";
|
|
25
24
|
export class FsFilterChipsComponent {
|
|
26
25
|
chips;
|
|
27
26
|
ItemType = ItemType;
|
|
@@ -41,9 +40,16 @@ export class FsFilterChipsComponent {
|
|
|
41
40
|
get items() {
|
|
42
41
|
return this._filterController.items;
|
|
43
42
|
}
|
|
44
|
-
addFilter(
|
|
45
|
-
|
|
43
|
+
addFilter(item) {
|
|
44
|
+
// For checkbox items, set to checked when adding from "More filters"
|
|
45
|
+
if (item.isTypeCheckbox && !item.hasValue) {
|
|
46
|
+
item.setValue(true);
|
|
47
|
+
}
|
|
46
48
|
item.secondaryShow();
|
|
49
|
+
// Don't open overlay for secondary checkbox items
|
|
50
|
+
if (item.isTypeCheckbox && !item.primary) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
47
53
|
this.chips.changes
|
|
48
54
|
.pipe(take(1), delay(100), tap(() => {
|
|
49
55
|
this.openChip(item);
|
|
@@ -61,12 +67,41 @@ export class FsFilterChipsComponent {
|
|
|
61
67
|
.some((item) => item.hasValue && item.visible && !item.primary);
|
|
62
68
|
}
|
|
63
69
|
ngOnInit() {
|
|
64
|
-
this.
|
|
65
|
-
.filter((item) => !item.primary);
|
|
70
|
+
this._initSecondaryItems();
|
|
66
71
|
this._initHasSecondaryValue();
|
|
67
72
|
this._initMoreFilterItems();
|
|
68
73
|
this._initClearFiltersVisible();
|
|
69
74
|
}
|
|
75
|
+
_initSecondaryItems() {
|
|
76
|
+
this._updateSecondaryItems();
|
|
77
|
+
merge(...this.items
|
|
78
|
+
.reduce((accum, item) => {
|
|
79
|
+
return [
|
|
80
|
+
...accum,
|
|
81
|
+
item.hasValue$
|
|
82
|
+
.pipe(skip(1)),
|
|
83
|
+
item.visible$
|
|
84
|
+
.pipe(skip(1)),
|
|
85
|
+
];
|
|
86
|
+
}, []))
|
|
87
|
+
.pipe(tap(() => {
|
|
88
|
+
this._updateSecondaryItems();
|
|
89
|
+
}), takeUntilDestroyed(this._destroyRef))
|
|
90
|
+
.subscribe();
|
|
91
|
+
}
|
|
92
|
+
_updateSecondaryItems() {
|
|
93
|
+
this.secondaryItems = this.items
|
|
94
|
+
.filter((item) => {
|
|
95
|
+
if (!item.allowSecondary) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
// Exclude checkbox items without values from secondary filters
|
|
99
|
+
if (item.isTypeCheckbox && !item.hasValue) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
return true;
|
|
103
|
+
});
|
|
104
|
+
}
|
|
70
105
|
clear() {
|
|
71
106
|
this._filterController.items
|
|
72
107
|
.filter((item) => item.clearable)
|
|
@@ -79,6 +114,13 @@ export class FsFilterChipsComponent {
|
|
|
79
114
|
this._filterController.change();
|
|
80
115
|
this._savedFilterController.setActiveFilter(null);
|
|
81
116
|
}
|
|
117
|
+
handleChipClick(item, name = null) {
|
|
118
|
+
// For secondary checkbox items, don't open overlay - clearing is done via remove button
|
|
119
|
+
if (item.isTypeCheckbox && !item.primary) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
this.openChip(item, name);
|
|
123
|
+
}
|
|
82
124
|
openChip(item, name = null) {
|
|
83
125
|
this._destroyOverlay();
|
|
84
126
|
const el = this._elementRef.nativeElement
|
|
@@ -165,7 +207,11 @@ export class FsFilterChipsComponent {
|
|
|
165
207
|
this._overlayRef = null;
|
|
166
208
|
}
|
|
167
209
|
}
|
|
168
|
-
removeChip(item, chip) {
|
|
210
|
+
removeChip(item, chip, event) {
|
|
211
|
+
if (event) {
|
|
212
|
+
const mouseEvent = 'event' in event ? event.event : event;
|
|
213
|
+
mouseEvent.stopPropagation();
|
|
214
|
+
}
|
|
169
215
|
if (!item.secondary) {
|
|
170
216
|
item.secondaryHide();
|
|
171
217
|
}
|
|
@@ -247,7 +293,7 @@ export class FsFilterChipsComponent {
|
|
|
247
293
|
.subscribe();
|
|
248
294
|
}
|
|
249
295
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterChipsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
250
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterChipsComponent, isStandalone: true, selector: "fs-filter-chips", viewQueries: [{ propertyName: "chips", predicate: FsChipComponent, descendants: true }], ngImport: i0, template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async)) {\n @if ((item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"
|
|
296
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterChipsComponent, isStandalone: true, selector: "fs-filter-chips", viewQueries: [{ propertyName: "chips", predicate: FsChipComponent, descendants: true }], ngImport: i0, template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async)) {\n @if ((item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"handleChipClick(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip, $event)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"handleChipClick(item)\"\n [outlined]=\"true\"\n [outlineDash]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\">\n </ng-template>\n </fs-chip>\n }\n }\n }\n @if (moreFilterItems().length > 0) {\n <fs-chip-select\n [outlined]=\"true\"\n (select)=\"addFilter($event)\">\n <fs-chip-select-trigger>\n More filters\n </fs-chip-select-trigger>\n @for (item of moreFilterItems(); track item.name) {\n <fs-chip-select-option [value]=\"item\">\n {{ item.mergedLabel }}\n </fs-chip-select-option>\n }\n </fs-chip-select>\n }\n @if (savedFilterController.enabled) {\n <fs-chip-select [outlined]=\"true\">\n <fs-chip-select-trigger>\n {{ (savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel }}\n </fs-chip-select-trigger>\n @if (savedFilterController.activeFilter$ | async) {\n <fs-chip-select-option (click)=\"saveActiveFilter()\">\n Update filters\n </fs-chip-select-option>\n <fs-chip-select-option (click)=\"saveAs()\">\n Save as new\n </fs-chip-select-option>\n } @else {\n <fs-chip-select-option (click)=\"createSavedFilter()\">\n Create new\n </fs-chip-select-option>\n }\n <fs-chip-select-option (click)=\"manageSavedFilters()\">\n View all\n </fs-chip-select-option>\n </fs-chip-select>\n }\n @if (clearFiltersVisible()) {\n <fs-chip\n [outlined]=\"true\"\n (click)=\"clear()\">\n Clear filters\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\">\n </ng-template>\n </fs-chip>\n }\n}", styles: [":host{display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:100%;margin-top:6px;z-index:999}.saved-filters-select,.more-filters-select,.clear{display:flex;height:30px;font-size:90%}.saved-filters-select.clear,.more-filters-select.clear,.clear.clear{padding:0 10px}.saved-filters-select ::ng-deep .mat-mdc-select-value,.more-filters-select ::ng-deep .mat-mdc-select-value,.clear ::ng-deep .mat-mdc-select-value{padding:0 5px}.saved-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.more-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.clear ::ng-deep .mat-mdc-select-arrow-wrapper{padding-right:10px}::ng-deep .mat-mdc-select-panel.fs-filter-no-initial-focus .mat-mdc-option-active:not(:hover){background:transparent!important}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FsChipModule }, { kind: "component", type: i1.FsChipComponent, selector: "fs-chip", inputs: ["selectable", "removable", "value", "maxWidth", "width", "backgroundColor", "borderColor", "color", "shape", "outlined", "outlineDash", "icon", "image", "selected", "padding", "contrastColor", "size"], outputs: ["selectedToggled", "removed", "click"] }, { kind: "directive", type: i1.FsChipSuffixDirective, selector: "[fsChipSuffix]", inputs: ["icon", "link", "linkTarget", "color", "data", "tooltip"], outputs: ["click"] }, { kind: "component", type: i1.FsChipSelectComponent, selector: "fs-chip-select", inputs: ["size", "backgroundColor", "borderColor", "color", "shape", "outlined", "outlineDash"], outputs: ["select"] }, { kind: "component", type: i1.FsChipSelectTriggerDirective, selector: "fs-chip-select-trigger" }, { kind: "component", type: i1.FsChipSelectOptionComponent, selector: "fs-chip-select-option", inputs: ["value"], outputs: ["select"] }, { kind: "ngmodule", type: FsSelectButtonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
251
297
|
}
|
|
252
298
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterChipsComponent, decorators: [{
|
|
253
299
|
type: Component,
|
|
@@ -260,9 +306,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
260
306
|
MatButtonModule,
|
|
261
307
|
FsButtonDirective,
|
|
262
308
|
FormsModule,
|
|
263
|
-
|
|
309
|
+
FsChipSelectTriggerDirective,
|
|
310
|
+
], template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async)) {\n @if ((item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"handleChipClick(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip, $event)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"handleChipClick(item)\"\n [outlined]=\"true\"\n [outlineDash]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\">\n </ng-template>\n </fs-chip>\n }\n }\n }\n @if (moreFilterItems().length > 0) {\n <fs-chip-select\n [outlined]=\"true\"\n (select)=\"addFilter($event)\">\n <fs-chip-select-trigger>\n More filters\n </fs-chip-select-trigger>\n @for (item of moreFilterItems(); track item.name) {\n <fs-chip-select-option [value]=\"item\">\n {{ item.mergedLabel }}\n </fs-chip-select-option>\n }\n </fs-chip-select>\n }\n @if (savedFilterController.enabled) {\n <fs-chip-select [outlined]=\"true\">\n <fs-chip-select-trigger>\n {{ (savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel }}\n </fs-chip-select-trigger>\n @if (savedFilterController.activeFilter$ | async) {\n <fs-chip-select-option (click)=\"saveActiveFilter()\">\n Update filters\n </fs-chip-select-option>\n <fs-chip-select-option (click)=\"saveAs()\">\n Save as new\n </fs-chip-select-option>\n } @else {\n <fs-chip-select-option (click)=\"createSavedFilter()\">\n Create new\n </fs-chip-select-option>\n }\n <fs-chip-select-option (click)=\"manageSavedFilters()\">\n View all\n </fs-chip-select-option>\n </fs-chip-select>\n }\n @if (clearFiltersVisible()) {\n <fs-chip\n [outlined]=\"true\"\n (click)=\"clear()\">\n Clear filters\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\">\n </ng-template>\n </fs-chip>\n }\n}", styles: [":host{display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:100%;margin-top:6px;z-index:999}.saved-filters-select,.more-filters-select,.clear{display:flex;height:30px;font-size:90%}.saved-filters-select.clear,.more-filters-select.clear,.clear.clear{padding:0 10px}.saved-filters-select ::ng-deep .mat-mdc-select-value,.more-filters-select ::ng-deep .mat-mdc-select-value,.clear ::ng-deep .mat-mdc-select-value{padding:0 5px}.saved-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.more-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.clear ::ng-deep .mat-mdc-select-arrow-wrapper{padding-right:10px}::ng-deep .mat-mdc-select-panel.fs-filter-no-initial-focus .mat-mdc-option-active:not(:hover){background:transparent!important}\n"] }]
|
|
264
311
|
}], propDecorators: { chips: [{
|
|
265
312
|
type: ViewChildren,
|
|
266
313
|
args: [FsChipComponent]
|
|
267
314
|
}] } });
|
|
268
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXItY2hpcHMvZmlsdGVyLWNoaXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXItY2hpcHMvZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLFNBQVMsRUFBa0IsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEssT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBcUIsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxl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O1FBQ3hELENBQUMsQ0FBQyxFQUNGLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDckM7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO3dHQTFTVSxzQkFBc0I7NEZBQXRCLHNCQUFzQixxR0FFbkIsZUFBZSxnRENoRC9CLDhtR0FnR0Msc3lCRDVERyxTQUFTLDZDQUNULFlBQVkscWhCQUNaLFNBQVMsd2VBQ1QsU0FBUyxvSkFDVCxvQkFBb0IsMk1BQ3BCLGVBQWUsNE1BQ2YsaUJBQWlCLG9KQUNqQixXQUFXOzs0RkFHRixzQkFBc0I7a0JBakJsQyxTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxTQUFTO3dCQUNULFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxTQUFTO3dCQUNULG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLFdBQVc7cUJBQ1o7OEJBS00sS0FBSztzQkFEWCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGVzdHJveVJlZiwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIE9uSW5pdCwgUXVlcnlMaXN0LCBTdGF0aWNQcm92aWRlciwgVmlld0NoaWxkcmVuLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdE9wdGlvbiwgTWF0U2VsZWN0LCBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuXG5pbXBvcnQgeyBGc0NoaXBDb21wb25lbnQsIEZzQ2hpcE1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2NoaXAnO1xuaW1wb3J0IHsgRnNCdXR0b25EaXJlY3RpdmUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgRnNTZWxlY3RCdXR0b25Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9zZWxlY3RidXR0b24nO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGRlbGF5LCBtZXJnZSwgc2tpcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuaW1wb3J0IHsgSXRlbVR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBGSUxURVJfRFJBV0VSX0RBVEEgfSBmcm9tICcuLi8uLi9pbmplY3RvcnMnO1xuaW1wb3J0IHsgSUZpbHRlckNvbmZpZ0l0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJhc2VJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2l0ZW1zL2Jhc2UtaXRlbSc7XG5pbXBvcnQgeyBTYXZlZEZpbHRlckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBGaWx0ZXJDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmlsdGVyLWNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGaWx0ZXJJdGVtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZmlsdGVyLWl0ZW0tZGlhbG9nJztcbmltcG9ydCB7IEZzRmlsdGVyU2F2ZWRGaWx0ZXJNYW5hZ2VDb21wb25lbnQgfSBmcm9tICcuLi9zYXZlZC1maWx0ZXIvc2F2ZWQtZmlsdGVyLW1hbmFnZS9zYXZlZC1maWx0ZXItbWFuYWdlLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtZmlsdGVyLWNoaXBzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1jaGlwcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbHRlci1jaGlwcy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBGc0NoaXBNb2R1bGUsXG4gICAgTWF0U2VsZWN0LFxuICAgIE1hdE9wdGlvbixcbiAgICBGc1NlbGVjdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgRnNCdXR0b25EaXJlY3RpdmUsXG4gICAgRm9ybXNNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzRmlsdGVyQ2hpcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGRyZW4oRnNDaGlwQ29tcG9uZW50KSBcbiAgcHVibGljIGNoaXBzOiBRdWVyeUxpc3Q8RnNDaGlwQ29tcG9uZW50PjtcblxuICBwdWJsaWMgSXRlbVR5cGUgPSBJdGVtVHlwZTtcbiAgcHVibGljIHNlY29uZGFyeUl0ZW1zOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT5bXSA9IFtdO1xuICBwdWJsaWMgbW9yZUZpbHRlckl0ZW1zID0gc2lnbmFsPEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPltdPihbXSk7XG4gIHB1YmxpYyBjbGVhckZpbHRlcnNWaXNpYmxlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIF9maWx0ZXJDb250cm9sbGVyID0gaW5qZWN0KEZpbHRlckNvbnRyb2xsZXIpO1xuICBwcml2YXRlIF9kaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcbiAgcHJpdmF0ZSBfbWVzc2FnZSA9IGluamVjdChGc01lc3NhZ2UpO1xuICBwcml2YXRlIF9zYXZlZEZpbHRlckNvbnRyb2xsZXIgPSBpbmplY3QoU2F2ZWRGaWx0ZXJDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIF9vdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmO1xuICBwcml2YXRlIF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIF9lbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIF9oYXNTZWNvbmRhcnlWYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwdWJsaWMgZ2V0IGl0ZW1zKCk6IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPltdIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyQ29udHJvbGxlci5pdGVtcztcbiAgfVxuXG4gIHB1YmxpYyBhZGRGaWx0ZXIoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSkge1xuICAgIGNvbnN0IGl0ZW06IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPiA9IGV2ZW50LnZhbHVlO1xuICAgIGl0ZW0uc2Vjb25kYXJ5U2hvdygpO1xuXG4gICAgdGhpcy5jaGlwcy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgZGVsYXkoMTAwKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm9wZW5DaGlwKGl0ZW0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNTZWNvbmRhcnlWYWx1ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc1NlY29uZGFyeVZhbHVlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2F2ZWRGaWx0ZXJDb250cm9sbGVyKCk6IFNhdmVkRmlsdGVyQ29udHJvbGxlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzU2Vjb25kYXJ5VmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckNvbnRyb2xsZXIuaXRlbXNcbiAgICAgIC5zb21lKChpdGVtKSA9PiBpdGVtLmhhc1ZhbHVlICYmIGl0ZW0udmlzaWJsZSAmJiAhaXRlbS5wcmltYXJ5KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlY29uZGFyeUl0ZW1zID0gdGhpcy5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0ucHJpbWFyeSk7XG5cbiAgICB0aGlzLl9pbml0SGFzU2Vjb25kYXJ5VmFsdWUoKTtcbiAgICB0aGlzLl9pbml0TW9yZUZpbHRlckl0ZW1zKCk7XG4gICAgdGhpcy5faW5pdENsZWFyRmlsdGVyc1Zpc2libGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICB0aGlzLl9maWx0ZXJDb250cm9sbGVyLml0ZW1zXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmNsZWFyYWJsZSlcbiAgICAgIC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGlmKCFpdGVtLnNlY29uZGFyeSkge1xuICAgICAgICAgIGl0ZW0uc2Vjb25kYXJ5SGlkZSgpO1xuICAgICAgICB9XG4gICAgICAgIGl0ZW0uY2xlYXIoZmFsc2UpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9maWx0ZXJDb250cm9sbGVyLmNoYW5nZSgpO1xuICAgIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5zZXRBY3RpdmVGaWx0ZXIobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgb3BlbkNoaXAoaXRlbTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+LCBuYW1lOiBzdHJpbmcgPSBudWxsKSB7XG4gICAgdGhpcy5fZGVzdHJveU92ZXJsYXkoKTtcbiAgICBjb25zdCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWZpbHRlci1pdGVtPVwiJHtpdGVtLm5hbWV9XCJdYCk7XG5cbiAgICBjb25zdCBwb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10gPSBbXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICBvZmZzZXRZOiBlbC5vZmZzZXRIZWlnaHQgKyAyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBzdHJhdGVneSA9IHRoaXMuX292ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhlbClcbiAgICAgIC53aXRoUG9zaXRpb25zKHBvc2l0aW9ucyk7XG4gICAgXG4gICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHN0cmF0ZWd5LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpLFxuICAgICAgZGlzcG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgIHBhbmVsQ2xhc3M6ICdmcy1zaWRlbmF2LW1lbnUtb3ZlcmxheS1wYW5lJyxcbiAgICB9KTtcblxuICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKTtcblxuICAgIHRoaXMuX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnBpcGUoXG4gICAgICB0YWtlKDEpLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5fZGVzdHJveU92ZXJsYXkoKTtcbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICkuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9hdHRhY2hDb250YWluZXIodGhpcy5fb3ZlcmxheVJlZiwgaXRlbSwgbmFtZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TmVzdGVkRWxlbWVudChlbDogYW55LCBjbGFzc05hbWU6IHN0cmluZykge1xuICAgIGlmKGVsKSB7XG4gICAgICBpZihlbC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSkge1xuICAgICAgICByZXR1cm4gZWw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmdldE5lc3RlZEVsZW1lbnQoZWwucGFyZW50RWxlbWVudCwgY2xhc3NOYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBcbiAgcHVibGljIHNhdmVBY3RpdmVGaWx0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyXG4gICAgICAuc2F2ZSh0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuYWN0aXZlRmlsdGVyKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKGBTYXZlZCAke3RoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5zaW5ndWxhckxhYmVsfWApO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVTYXZlZEZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuY3JlYXRlKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2VcbiAgICAgICAgICAgIC5zdWNjZXNzKGBDcmVhdGVkICR7dGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNpbmd1bGFyTGFiZWx9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHNhdmVBcygpOiB2b2lkIHtcbiAgICB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXJcbiAgICAgIC5zYXZlQXMoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKGBTYXZlZCAke3RoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5zaW5ndWxhckxhYmVsfWApO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfSBcblxuICBwdWJsaWMgbWFuYWdlU2F2ZWRGaWx0ZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuX2RpYWxvZ1xuICAgICAgLm9wZW4oRnNGaWx0ZXJTYXZlZEZpbHRlck1hbmFnZUNvbXBvbmVudCwge1xuICAgICAgICBpbmplY3RvcjogdGhpcy5faW5qZWN0b3IsXG4gICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBfZGVzdHJveU92ZXJsYXkoKSB7XG4gICAgaWYodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2hCYWNrZHJvcCgpO1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbW92ZUNoaXAoXG4gICAgaXRlbTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+LCBcbiAgICBjaGlwOiB7IG5hbWU/OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcgfSxcbiAgKSB7XG4gICAgaWYoIWl0ZW0uc2Vjb25kYXJ5KSB7XG4gICAgICBpdGVtLnNlY29uZGFyeUhpZGUoKTtcbiAgICB9XG5cbiAgICBpZihjaGlwLm5hbWUpIHtcbiAgICAgIGl0ZW0uY2xlYXJCeU5hbWUoY2hpcC5uYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbS5jbGVhcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVJdGVtKGl0ZW06IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPikge1xuICAgIGl0ZW0uc2Vjb25kYXJ5SGlkZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXR0YWNoQ29udGFpbmVyKG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYsIGl0ZW06IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPiwgbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLl9jcmVhdGVJbmplY3RvcihpdGVtLCBuYW1lKTtcbiAgICBjb25zdCBjb250YWluZXJQb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKEZpbHRlckl0ZW1EaWFsb2dDb21wb25lbnQsIHVuZGVmaW5lZCwgaW5qZWN0b3IpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IG92ZXJsYXlSZWYuYXR0YWNoPEZpbHRlckl0ZW1EaWFsb2dDb21wb25lbnQ+KGNvbnRhaW5lclBvcnRhbCk7XG5cbiAgICByZXR1cm4gY29udGFpbmVyUmVmLmluc3RhbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlSW5qZWN0b3IoaXRlbTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+LCBhdXRvZm9jdXNOYW1lOiBzdHJpbmcpOiBJbmplY3RvciB7XG4gICAgY29uc3QgcHJvdmlkZXJzOiBTdGF0aWNQcm92aWRlcltdID0gW1xuICAgICAgeyBwcm92aWRlOiBGSUxURVJfRFJBV0VSX0RBVEEsIHVzZVZhbHVlOiB7IGl0ZW0sIGF1dG9mb2N1c05hbWUsIG92ZXJsYXlSZWY6IHRoaXMuX292ZXJsYXlSZWYgfSB9LFxuICAgIF07XG4gIFxuICAgIHJldHVybiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzLFxuICAgICAgcGFyZW50OiB0aGlzLl9pbmplY3RvcixcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRNb3JlRmlsdGVySXRlbXMoKSB7XG4gICAgbWVyZ2UoXG4gICAgICAuLi50aGlzLml0ZW1zXG4gICAgICAgIC5yZWR1Y2UoKGFjY3VtLCBpdGVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLmFjY3VtLCBcbiAgICAgICAgICAgIGl0ZW0udmlzaWJsZSRcbiAgICAgICAgICAgICAgLnBpcGUoc2tpcCgxKSksXG4gICAgICAgICAgICBpdGVtLnNlY29uZGFyeVZpc2libGUkXG4gICAgICAgICAgICAgIC5waXBlKHNraXAoMSkpLFxuICAgICAgICAgIF07XG4gICAgICAgIH0sIFtdKSxcbiAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl91cGRhdGVNb3JlRmlsdGVySXRlbXMoKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX3VwZGF0ZU1vcmVGaWx0ZXJJdGVtcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdENsZWFyRmlsdGVyc1Zpc2libGUoKSB7XG4gICAgbWVyZ2UoXG4gICAgICAuLi50aGlzLml0ZW1zXG4gICAgICAgIC5yZWR1Y2UoKGFjY3VtLCBpdGVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLmFjY3VtLCBcbiAgICAgICAgICAgIGl0ZW0udmlzaWJsZSRcbiAgICAgICAgICAgICAgLnBpcGUoc2tpcCgxKSksXG4gICAgICAgICAgICBpdGVtLmhhc1ZhbHVlJFxuICAgICAgICAgICAgICAucGlwZShza2lwKDEpKSxcbiAgICAgICAgICBdO1xuICAgICAgICB9LCBbXSksXG4gICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fdXBkYXRlQ2xlYXJJdGVtcygpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fdXBkYXRlQ2xlYXJJdGVtcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlTW9yZUZpbHRlckl0ZW1zKCkge1xuICAgIHRoaXMubW9yZUZpbHRlckl0ZW1zXG4gICAgICAuc2V0KHRoaXMuaXRlbXNcbiAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0ucHJpbWFyeSAmJiBpdGVtLnZpc2libGUgJiYgIWl0ZW0uc2Vjb25kYXJ5VmlzaWJsZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQ2xlYXJJdGVtcygpIHtcbiAgICB0aGlzLmNsZWFyRmlsdGVyc1Zpc2libGVcbiAgICAgIC5zZXQodGhpcy5pdGVtc1xuICAgICAgICAuc29tZSgoaXRlbSkgPT4gaXRlbS5jbGVhcmFibGUgJiYgaXRlbS5oYXNWYWx1ZSAmJiBpdGVtLnZpc2libGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRIYXNTZWNvbmRhcnlWYWx1ZSgpIHtcbiAgICB0aGlzLl9oYXNTZWNvbmRhcnlWYWx1ZSQubmV4dCh0aGlzLmhhc1NlY29uZGFyeVZhbHVlKTtcblxuICAgIHRoaXMuX2ZpbHRlckNvbnRyb2xsZXIuY2hhbmdlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5faGFzU2Vjb25kYXJ5VmFsdWUkLm5leHQodGhpcy5oYXNTZWNvbmRhcnlWYWx1ZSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxufVxuIiwiQGlmIChpdGVtcy5sZW5ndGggIT09IDApIHtcbiAgQGZvciAoaXRlbSBvZiBzZWNvbmRhcnlJdGVtczsgdHJhY2sgaXRlbS5uYW1lKSB7XG4gICAgQGlmICgoaXRlbS52aXNpYmxlJCB8IGFzeW5jKSkge1xuICAgICAgQGlmICgoaXRlbS5oYXNWYWx1ZSQgfCBhc3luYykpIHtcbiAgICAgICAgQGZvciAoY2hpcCBvZiBpdGVtLmNoaXBzJCB8IGFzeW5jOyB0cmFjayBjaGlwLmxhYmVsKSB7XG4gICAgICAgICAgPGZzLWNoaXBcbiAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItY2hpcCBzZWxlY3RlZFwiXG4gICAgICAgICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcbiAgICAgICAgICAgICAgW2JvcmRlckNvbG9yXT1cIicjZGRkJ1wiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtZmlsdGVyLWl0ZW1dPVwiaXRlbS5uYW1lXCJcbiAgICAgICAgICAgICAgW291dGxpbmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNoaXAoaXRlbSwgY2hpcC5uYW1lKVwiPlxuICAgICAgICAgICAgQGlmIChjaGlwLnZhbHVlKSB7XG4gICAgICAgICAgICAgIHt7IGNoaXAubGFiZWwgfX06XG4gICAgICAgICAgICAgIDxhPlxuICAgICAgICAgICAgICAgIHt7IGNoaXAudmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIHt7IGNoaXAubGFiZWwgfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBmc0NoaXBTdWZmaXhcbiAgICAgICAgICAgICAgW2ljb25dPVwiJ2NhbmNlbF9jaXJjbGVfb3V0bGluZSdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ2hpcChpdGVtLCBjaGlwKVwiPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2ZzLWNoaXA+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpZiAoKGl0ZW0ubm90VmFsdWUkIHwgYXN5bmMpICYmIChpdGVtLnNlY29uZGFyeVZpc2libGUkIHwgYXN5bmMpKSB7XG4gICAgICAgIDxmcy1jaGlwXG4gICAgICAgICAgICBjbGFzcz1cImZpbHRlci1jaGlwXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtZmlsdGVyLWl0ZW1dPVwiaXRlbS5uYW1lXCJcbiAgICAgICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcbiAgICAgICAgICAgIFtib3JkZXJDb2xvcl09XCInI2RkZCdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5DaGlwKGl0ZW0pXCJcbiAgICAgICAgICAgIFtvdXRsaW5lZF09XCJ0cnVlXCI+XG4gICAgICAgICAge3sgaXRlbS5tZXJnZWRMYWJlbCB9fVxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgZnNDaGlwU3VmZml4XG4gICAgICAgICAgICBbaWNvbl09XCInYWRkX2NpcmNsZV9vdXRsaW5lJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbkNoaXAoaXRlbSlcIj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2ZzLWNoaXA+XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBpZiAobW9yZUZpbHRlckl0ZW1zKCkubGVuZ3RoID4gMCkge1xuICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIGNsYXNzPVwibW9yZS1maWx0ZXJzLXNlbGVjdCBtYXQtbWRjLWJ1dHRvbi1iYXNlXCJcbiAgICAgICAgW2J1dHRvblR5cGVdPVwiJ2Jhc2ljJ1wiXG4gICAgICAgIGZzU2VsZWN0QnV0dG9uXG4gICAgICAgIFtkaXNhYmxlT3B0aW9uQ2VudGVyaW5nXT1cInRydWVcIlxuICAgICAgICBbcGFuZWxDbGFzc109XCInZnMtZmlsdGVyLW5vLWluaXRpYWwtZm9jdXMnXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidNb3JlIGZpbHRlcnMnXCJcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJhZGRGaWx0ZXIoJGV2ZW50KVwiXG4gICAgICAgIFtkZXNlbGVjdE9uQ2hhbmdlXT1cInRydWVcIj5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgbW9yZUZpbHRlckl0ZW1zKCk7IHRyYWNrIGl0ZW0ubmFtZSkge1xuICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbVwiPlxuICAgICAgICAgIHt7IGl0ZW0ubWVyZ2VkTGFiZWwgfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgfVxuICAgIDwvbWF0LXNlbGVjdD5cbiAgfVxuICBAaWYgKHNhdmVkRmlsdGVyQ29udHJvbGxlci5lbmFibGVkKSB7XG4gICAgPG1hdC1zZWxlY3RcbiAgICAgICAgY2xhc3M9XCJzYXZlZC1maWx0ZXJzLXNlbGVjdCBtYXQtbWRjLWJ1dHRvbi1iYXNlXCJcbiAgICAgICAgW2J1dHRvblR5cGVdPVwiJ2Jhc2ljJ1wiXG4gICAgICAgIGZzU2VsZWN0QnV0dG9uXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCIoc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmFjdGl2ZUZpbHRlciQgfCBhc3luYykgPyBzYXZlZEZpbHRlckNvbnRyb2xsZXIuc2luZ3VsYXJMYWJlbCArICc6ICcgKyAoc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmFjdGl2ZUZpbHRlciQgfCBhc3luYykubmFtZSA6IHNhdmVkRmlsdGVyQ29udHJvbGxlci5wbHVyYWxMYWJlbFwiXG4gICAgICAgIFtkZXNlbGVjdE9uQ2hhbmdlXT1cInRydWVcIj5cbiAgICAgIEBpZiAoc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmFjdGl2ZUZpbHRlciQgfCBhc3luYykge1xuICAgICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwic2F2ZUFjdGl2ZUZpbHRlcigpXCI+XG4gICAgICAgICAgVXBkYXRlIGZpbHRlcnNcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwic2F2ZUFzKClcIj5cbiAgICAgICAgICBTYXZlIGFzIG5ld1xuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPG1hdC1vcHRpb24gKGNsaWNrKT1cImNyZWF0ZVNhdmVkRmlsdGVyKClcIj5cbiAgICAgICAgICBDcmVhdGUgbmV3XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIH1cbiAgICAgIDxtYXQtb3B0aW9uIChjbGljayk9XCJtYW5hZ2VTYXZlZEZpbHRlcnMoKVwiPlxuICAgICAgICBWaWV3IGFsbFxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgIDwvbWF0LXNlbGVjdD5cbiAgfVxuICBAaWYgKGNsZWFyRmlsdGVyc1Zpc2libGUoKSkge1xuICAgIDxhXG4gICAgICAgIGNsYXNzPVwiY2xlYXJcIlxuICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIChjbGljayk9XCJjbGVhcigpXCI+XG4gICAgICBDbGVhciBmaWx0ZXJzXG4gICAgPC9hPlxuICB9XG59Il19
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXItY2hpcHMvZmlsdGVyLWNoaXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXItY2hpcHMvZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLFNBQVMsRUFBa0IsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEssT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBcUIsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9C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TyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLG1CQUFtQjthQUNyQixHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUs7YUFDWixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFdEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU87YUFDM0IsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxFQUNGLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDckM7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO3dHQXZXVSxzQkFBc0I7NEZBQXRCLHNCQUFzQixxR0FFbkIsZUFBZSxnRENsRC9CLCtqR0E2RkMsc3lCRHhERyxTQUFTLDZDQUNULFlBQVksdThCQUdaLG9CQUFvQiw4QkFDcEIsZUFBZSw4QkFFZixXQUFXOzs0RkFJRixzQkFBc0I7a0JBbEJsQyxTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxTQUFTO3dCQUNULFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxTQUFTO3dCQUNULG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLFdBQVc7d0JBQ1gsNEJBQTRCO3FCQUM3Qjs4QkFLTSxLQUFLO3NCQURYLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBFbGVtZW50UmVmLCBJbmplY3RvciwgT25Jbml0LCBRdWVyeUxpc3QsIFN0YXRpY1Byb3ZpZGVyLCBWaWV3Q2hpbGRyZW4sIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0T3B0aW9uLCBNYXRTZWxlY3QgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuXG5pbXBvcnQgeyBGc0NoaXBDb21wb25lbnQsIEZzQ2hpcE1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2NoaXAnO1xuaW1wb3J0IHsgRnNDaGlwU2VsZWN0VHJpZ2dlckRpcmVjdGl2ZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2NoaXAvYXBwL2NvbXBvbmVudHMvY2hpcC1zZWxlY3QvY2hpcC1zZWxlY3QtdHJpZ2dlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNCdXR0b25EaXJlY3RpdmUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgRnNTZWxlY3RCdXR0b25Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9zZWxlY3RidXR0b24nO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGRlbGF5LCBtZXJnZSwgc2tpcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuaW1wb3J0IHsgSXRlbVR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBGSUxURVJfRFJBV0VSX0RBVEEgfSBmcm9tICcuLi8uLi9pbmplY3RvcnMnO1xuaW1wb3J0IHsgSUZpbHRlckNvbmZpZ0l0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJhc2VJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2l0ZW1zL2Jhc2UtaXRlbSc7XG5pbXBvcnQgeyBTYXZlZEZpbHRlckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBGaWx0ZXJDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmlsdGVyLWNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGaWx0ZXJJdGVtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZmlsdGVyLWl0ZW0tZGlhbG9nJztcbmltcG9ydCB7IEZzRmlsdGVyU2F2ZWRGaWx0ZXJNYW5hZ2VDb21wb25lbnQgfSBmcm9tICcuLi9zYXZlZC1maWx0ZXIvc2F2ZWQtZmlsdGVyLW1hbmFnZS9zYXZlZC1maWx0ZXItbWFuYWdlLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtZmlsdGVyLWNoaXBzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1jaGlwcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbHRlci1jaGlwcy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBGc0NoaXBNb2R1bGUsXG4gICAgTWF0U2VsZWN0LFxuICAgIE1hdE9wdGlvbixcbiAgICBGc1NlbGVjdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgRnNCdXR0b25EaXJlY3RpdmUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRnNDaGlwU2VsZWN0VHJpZ2dlckRpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNGaWx0ZXJDaGlwc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFZpZXdDaGlsZHJlbihGc0NoaXBDb21wb25lbnQpIFxuICBwdWJsaWMgY2hpcHM6IFF1ZXJ5TGlzdDxGc0NoaXBDb21wb25lbnQ+O1xuXG4gIHB1YmxpYyBJdGVtVHlwZSA9IEl0ZW1UeXBlO1xuICBwdWJsaWMgc2Vjb25kYXJ5SXRlbXM6IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPltdID0gW107XG4gIHB1YmxpYyBtb3JlRmlsdGVySXRlbXMgPSBzaWduYWw8QmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+W10+KFtdKTtcbiAgcHVibGljIGNsZWFyRmlsdGVyc1Zpc2libGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgX2ZpbHRlckNvbnRyb2xsZXIgPSBpbmplY3QoRmlsdGVyQ29udHJvbGxlcik7XG4gIHByaXZhdGUgX2RpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuICBwcml2YXRlIF9tZXNzYWdlID0gaW5qZWN0KEZzTWVzc2FnZSk7XG4gIHByaXZhdGUgX3NhdmVkRmlsdGVyQ29udHJvbGxlciA9IGluamVjdChTYXZlZEZpbHRlckNvbnRyb2xsZXIpO1xuICBwcml2YXRlIF9pbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgX292ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XG4gIHByaXZhdGUgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgX2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgX2hhc1NlY29uZGFyeVZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHB1YmxpYyBnZXQgaXRlbXMoKTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+W10ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLml0ZW1zO1xuICB9XG5cbiAgcHVibGljIGFkZEZpbHRlcihpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4pIHtcbiAgICAvLyBGb3IgY2hlY2tib3ggaXRlbXMsIHNldCB0byBjaGVja2VkIHdoZW4gYWRkaW5nIGZyb20gXCJNb3JlIGZpbHRlcnNcIlxuICAgIGlmIChpdGVtLmlzVHlwZUNoZWNrYm94ICYmICFpdGVtLmhhc1ZhbHVlKSB7XG4gICAgICBpdGVtLnNldFZhbHVlKHRydWUpO1xuICAgIH1cbiAgICBcbiAgICBpdGVtLnNlY29uZGFyeVNob3coKTtcblxuICAgIC8vIERvbid0IG9wZW4gb3ZlcmxheSBmb3Igc2Vjb25kYXJ5IGNoZWNrYm94IGl0ZW1zXG4gICAgaWYgKGl0ZW0uaXNUeXBlQ2hlY2tib3ggJiYgIWl0ZW0ucHJpbWFyeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2hpcHMuY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIGRlbGF5KDEwMCksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5vcGVuQ2hpcChpdGVtKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzU2Vjb25kYXJ5VmFsdWUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9oYXNTZWNvbmRhcnlWYWx1ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNhdmVkRmlsdGVyQ29udHJvbGxlcigpOiBTYXZlZEZpbHRlckNvbnRyb2xsZXIge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1NlY29uZGFyeVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLml0ZW1zXG4gICAgICAuc29tZSgoaXRlbSkgPT4gaXRlbS5oYXNWYWx1ZSAmJiBpdGVtLnZpc2libGUgJiYgIWl0ZW0ucHJpbWFyeSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5faW5pdFNlY29uZGFyeUl0ZW1zKCk7XG4gICAgdGhpcy5faW5pdEhhc1NlY29uZGFyeVZhbHVlKCk7XG4gICAgdGhpcy5faW5pdE1vcmVGaWx0ZXJJdGVtcygpO1xuICAgIHRoaXMuX2luaXRDbGVhckZpbHRlcnNWaXNpYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0U2Vjb25kYXJ5SXRlbXMoKSB7XG4gICAgdGhpcy5fdXBkYXRlU2Vjb25kYXJ5SXRlbXMoKTtcblxuICAgIG1lcmdlKFxuICAgICAgLi4udGhpcy5pdGVtc1xuICAgICAgICAucmVkdWNlKChhY2N1bSwgaXRlbSkgPT4ge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi5hY2N1bSwgXG4gICAgICAgICAgICBpdGVtLmhhc1ZhbHVlJFxuICAgICAgICAgICAgICAucGlwZShza2lwKDEpKSxcbiAgICAgICAgICAgIGl0ZW0udmlzaWJsZSRcbiAgICAgICAgICAgICAgLnBpcGUoc2tpcCgxKSksXG4gICAgICAgICAgXTtcbiAgICAgICAgfSwgW10pLFxuICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZVNlY29uZGFyeUl0ZW1zKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTZWNvbmRhcnlJdGVtcygpIHtcbiAgICB0aGlzLnNlY29uZGFyeUl0ZW1zID0gdGhpcy5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoIWl0ZW0uYWxsb3dTZWNvbmRhcnkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRXhjbHVkZSBjaGVja2JveCBpdGVtcyB3aXRob3V0IHZhbHVlcyBmcm9tIHNlY29uZGFyeSBmaWx0ZXJzXG4gICAgICAgIGlmIChpdGVtLmlzVHlwZUNoZWNrYm94ICYmICFpdGVtLmhhc1ZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICB0aGlzLl9maWx0ZXJDb250cm9sbGVyLml0ZW1zXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmNsZWFyYWJsZSlcbiAgICAgIC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGlmKCFpdGVtLnNlY29uZGFyeSkge1xuICAgICAgICAgIGl0ZW0uc2Vjb25kYXJ5SGlkZSgpO1xuICAgICAgICB9XG4gICAgICAgIGl0ZW0uY2xlYXIoZmFsc2UpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9maWx0ZXJDb250cm9sbGVyLmNoYW5nZSgpO1xuICAgIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5zZXRBY3RpdmVGaWx0ZXIobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQ2hpcENsaWNrKGl0ZW06IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPiwgbmFtZTogc3RyaW5nID0gbnVsbCkge1xuICAgIC8vIEZvciBzZWNvbmRhcnkgY2hlY2tib3ggaXRlbXMsIGRvbid0IG9wZW4gb3ZlcmxheSAtIGNsZWFyaW5nIGlzIGRvbmUgdmlhIHJlbW92ZSBidXR0b25cbiAgICBpZiAoaXRlbS5pc1R5cGVDaGVja2JveCAmJiAhaXRlbS5wcmltYXJ5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vcGVuQ2hpcChpdGVtLCBuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuQ2hpcChpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4sIG5hbWU6IHN0cmluZyA9IG51bGwpIHtcbiAgICB0aGlzLl9kZXN0cm95T3ZlcmxheSgpO1xuICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAucXVlcnlTZWxlY3RvcihgW2RhdGEtZmlsdGVyLWl0ZW09XCIke2l0ZW0ubmFtZX1cIl1gKTtcblxuICAgIGNvbnN0IHBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgIG9mZnNldFk6IGVsLm9mZnNldEhlaWdodCArIDIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGVsKVxuICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKTtcbiAgICBcbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgcG9zaXRpb25TdHJhdGVneTogc3RyYXRlZ3ksXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKCksXG4gICAgICBkaXNwb3NlT25OYXZpZ2F0aW9uOiB0cnVlLFxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICAgICAgcGFuZWxDbGFzczogJ2ZzLXNpZGVuYXYtbWVudS1vdmVybGF5LXBhbmUnLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKG92ZXJsYXlDb25maWcpO1xuXG4gICAgdGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLl9kZXN0cm95T3ZlcmxheSgpO1xuICAgICAgfSksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgKS5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX2F0dGFjaENvbnRhaW5lcih0aGlzLl9vdmVybGF5UmVmLCBpdGVtLCBuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROZXN0ZWRFbGVtZW50KGVsOiBhbnksIGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgaWYoZWwpIHtcbiAgICAgIGlmKGVsLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKSB7XG4gICAgICAgIHJldHVybiBlbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuZ2V0TmVzdGVkRWxlbWVudChlbC5wYXJlbnRFbGVtZW50LCBjbGFzc05hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIFxuICBwdWJsaWMgc2F2ZUFjdGl2ZUZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXJcbiAgICAgIC5zYXZlKHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoYFNhdmVkICR7dGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNpbmd1bGFyTGFiZWx9YCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZVNhdmVkRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5jcmVhdGUoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZVxuICAgICAgICAgICAgLnN1Y2Nlc3MoYENyZWF0ZWQgJHt0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuc2luZ3VsYXJMYWJlbH1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUFzKCk6IHZvaWQge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlclxuICAgICAgLnNhdmVBcygpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoYFNhdmVkICR7dGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNpbmd1bGFyTGFiZWx9YCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9IFxuXG4gIHB1YmxpYyBtYW5hZ2VTYXZlZEZpbHRlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlhbG9nXG4gICAgICAub3BlbihGc0ZpbHRlclNhdmVkRmlsdGVyTWFuYWdlQ29tcG9uZW50LCB7XG4gICAgICAgIGluamVjdG9yOiB0aGlzLl9pbmplY3RvcixcbiAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIF9kZXN0cm95T3ZlcmxheSgpIHtcbiAgICBpZih0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlQ2hpcChcbiAgICBpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4sIFxuICAgIGNoaXA6IHsgbmFtZT86IHN0cmluZywgdmFsdWU6IHN0cmluZywgbGFiZWw6IHN0cmluZyB9LFxuICAgIGV2ZW50PzogeyBldmVudDogTW91c2VFdmVudDsgZGF0YTogYW55IH0gfCBFdmVudCxcbiAgKSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBjb25zdCBtb3VzZUV2ZW50ID0gJ2V2ZW50JyBpbiBldmVudCA/IGV2ZW50LmV2ZW50IDogZXZlbnQ7XG4gICAgICBtb3VzZUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIGlmKCFpdGVtLnNlY29uZGFyeSkge1xuICAgICAgaXRlbS5zZWNvbmRhcnlIaWRlKCk7XG4gICAgfVxuXG4gICAgaWYoY2hpcC5uYW1lKSB7XG4gICAgICBpdGVtLmNsZWFyQnlOYW1lKGNoaXAubmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW0uY2xlYXIoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlSXRlbShpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4pIHtcbiAgICBpdGVtLnNlY29uZGFyeUhpZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2F0dGFjaENvbnRhaW5lcihvdmVybGF5UmVmOiBPdmVybGF5UmVmLCBpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4sIG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5fY3JlYXRlSW5qZWN0b3IoaXRlbSwgbmFtZSk7XG4gICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChGaWx0ZXJJdGVtRGlhbG9nQ29tcG9uZW50LCB1bmRlZmluZWQsIGluamVjdG9yKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSBvdmVybGF5UmVmLmF0dGFjaDxGaWx0ZXJJdGVtRGlhbG9nQ29tcG9uZW50Pihjb250YWluZXJQb3J0YWwpO1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lclJlZi5pbnN0YW5jZTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUluamVjdG9yKGl0ZW06IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPiwgYXV0b2ZvY3VzTmFtZTogc3RyaW5nKTogSW5qZWN0b3Ige1xuICAgIGNvbnN0IHByb3ZpZGVyczogU3RhdGljUHJvdmlkZXJbXSA9IFtcbiAgICAgIHsgcHJvdmlkZTogRklMVEVSX0RSQVdFUl9EQVRBLCB1c2VWYWx1ZTogeyBpdGVtLCBhdXRvZm9jdXNOYW1lLCBvdmVybGF5UmVmOiB0aGlzLl9vdmVybGF5UmVmIH0gfSxcbiAgICBdO1xuICBcbiAgICByZXR1cm4gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVycyxcbiAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3IsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0TW9yZUZpbHRlckl0ZW1zKCkge1xuICAgIG1lcmdlKFxuICAgICAgLi4udGhpcy5pdGVtc1xuICAgICAgICAucmVkdWNlKChhY2N1bSwgaXRlbSkgPT4ge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi5hY2N1bSwgXG4gICAgICAgICAgICBpdGVtLnZpc2libGUkXG4gICAgICAgICAgICAgIC5waXBlKHNraXAoMSkpLFxuICAgICAgICAgICAgaXRlbS5zZWNvbmRhcnlWaXNpYmxlJFxuICAgICAgICAgICAgICAucGlwZShza2lwKDEpKSxcbiAgICAgICAgICBdO1xuICAgICAgICB9LCBbXSksXG4gICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fdXBkYXRlTW9yZUZpbHRlckl0ZW1zKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl91cGRhdGVNb3JlRmlsdGVySXRlbXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRDbGVhckZpbHRlcnNWaXNpYmxlKCkge1xuICAgIG1lcmdlKFxuICAgICAgLi4udGhpcy5pdGVtc1xuICAgICAgICAucmVkdWNlKChhY2N1bSwgaXRlbSkgPT4ge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi5hY2N1bSwgXG4gICAgICAgICAgICBpdGVtLnZpc2libGUkXG4gICAgICAgICAgICAgIC5waXBlKHNraXAoMSkpLFxuICAgICAgICAgICAgaXRlbS5oYXNWYWx1ZSRcbiAgICAgICAgICAgICAgLnBpcGUoc2tpcCgxKSksXG4gICAgICAgICAgXTtcbiAgICAgICAgfSwgW10pLFxuICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZUNsZWFySXRlbXMoKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX3VwZGF0ZUNsZWFySXRlbXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZU1vcmVGaWx0ZXJJdGVtcygpIHtcbiAgICB0aGlzLm1vcmVGaWx0ZXJJdGVtc1xuICAgICAgLnNldCh0aGlzLml0ZW1zXG4gICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnByaW1hcnkgJiYgaXRlbS52aXNpYmxlICYmICFpdGVtLnNlY29uZGFyeVZpc2libGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUNsZWFySXRlbXMoKSB7XG4gICAgdGhpcy5jbGVhckZpbHRlcnNWaXNpYmxlXG4gICAgICAuc2V0KHRoaXMuaXRlbXNcbiAgICAgICAgLnNvbWUoKGl0ZW0pID0+IGl0ZW0uY2xlYXJhYmxlICYmIGl0ZW0uaGFzVmFsdWUgJiYgaXRlbS52aXNpYmxlKSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0SGFzU2Vjb25kYXJ5VmFsdWUoKSB7XG4gICAgdGhpcy5faGFzU2Vjb25kYXJ5VmFsdWUkLm5leHQodGhpcy5oYXNTZWNvbmRhcnlWYWx1ZSk7XG5cbiAgICB0aGlzLl9maWx0ZXJDb250cm9sbGVyLmNoYW5nZSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2hhc1NlY29uZGFyeVZhbHVlJC5uZXh0KHRoaXMuaGFzU2Vjb25kYXJ5VmFsdWUpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbn1cbiIsIkBpZiAoaXRlbXMubGVuZ3RoICE9PSAwKSB7XG4gIEBmb3IgKGl0ZW0gb2Ygc2Vjb25kYXJ5SXRlbXM7IHRyYWNrIGl0ZW0ubmFtZSkge1xuICAgIEBpZiAoKGl0ZW0udmlzaWJsZSQgfCBhc3luYykpIHtcbiAgICAgIEBpZiAoKGl0ZW0uaGFzVmFsdWUkIHwgYXN5bmMpKSB7XG4gICAgICAgIEBmb3IgKGNoaXAgb2YgaXRlbS5jaGlwcyQgfCBhc3luYzsgdHJhY2sgY2hpcC5sYWJlbCkge1xuICAgICAgICAgIDxmcy1jaGlwXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWNoaXAgc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXG4gICAgICAgICAgICAgIFtib3JkZXJDb2xvcl09XCInI2RkZCdcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWZpbHRlci1pdGVtXT1cIml0ZW0ubmFtZVwiXG4gICAgICAgICAgICAgIFtvdXRsaW5lZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUNoaXBDbGljayhpdGVtLCBjaGlwLm5hbWUpXCI+XG4gICAgICAgICAgICBAaWYgKGNoaXAudmFsdWUpIHtcbiAgICAgICAgICAgICAge3sgY2hpcC5sYWJlbCB9fTpcbiAgICAgICAgICAgICAgPGE+XG4gICAgICAgICAgICAgICAge3sgY2hpcC52YWx1ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAge3sgY2hpcC5sYWJlbCB9fVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIGZzQ2hpcFN1ZmZpeFxuICAgICAgICAgICAgICBbaWNvbl09XCInY2FuY2VsX2NpcmNsZV9vdXRsaW5lJ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDaGlwKGl0ZW0sIGNoaXAsICRldmVudClcIj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9mcy1jaGlwPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAaWYgKChpdGVtLm5vdFZhbHVlJCB8IGFzeW5jKSAmJiAoaXRlbS5zZWNvbmRhcnlWaXNpYmxlJCB8IGFzeW5jKSkge1xuICAgICAgICA8ZnMtY2hpcFxuICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItY2hpcFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWZpbHRlci1pdGVtXT1cIml0ZW0ubmFtZVwiXG4gICAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXG4gICAgICAgICAgICBbYm9yZGVyQ29sb3JdPVwiJyNkZGQnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDaGlwQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgW291dGxpbmVkXT1cInRydWVcIlxuICAgICAgICAgICAgW291dGxpbmVEYXNoXT1cInRydWVcIj5cbiAgICAgICAgICB7eyBpdGVtLm1lcmdlZExhYmVsIH19XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBmc0NoaXBTdWZmaXhcbiAgICAgICAgICAgIFtpY29uXT1cIidhZGRfY2lyY2xlX291dGxpbmUnXCI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9mcy1jaGlwPlxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaWYgKG1vcmVGaWx0ZXJJdGVtcygpLmxlbmd0aCA+IDApIHtcbiAgICA8ZnMtY2hpcC1zZWxlY3RcbiAgICAgICAgW291dGxpbmVkXT1cInRydWVcIlxuICAgICAgICAoc2VsZWN0KT1cImFkZEZpbHRlcigkZXZlbnQpXCI+XG4gICAgICA8ZnMtY2hpcC1zZWxlY3QtdHJpZ2dlcj5cbiAgICAgICAgTW9yZSBmaWx0ZXJzXG4gICAgICA8L2ZzLWNoaXAtc2VsZWN0LXRyaWdnZXI+XG4gICAgICBAZm9yIChpdGVtIG9mIG1vcmVGaWx0ZXJJdGVtcygpOyB0cmFjayBpdGVtLm5hbWUpIHtcbiAgICAgICAgPGZzLWNoaXAtc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbVwiPlxuICAgICAgICAgIHt7IGl0ZW0ubWVyZ2VkTGFiZWwgfX1cbiAgICAgICAgPC9mcy1jaGlwLXNlbGVjdC1vcHRpb24+XG4gICAgICB9XG4gICAgPC9mcy1jaGlwLXNlbGVjdD5cbiAgfVxuICBAaWYgKHNhdmVkRmlsdGVyQ29udHJvbGxlci5lbmFibGVkKSB7XG4gICAgPGZzLWNoaXAtc2VsZWN0IFtvdXRsaW5lZF09XCJ0cnVlXCI+XG4gICAgICA8ZnMtY2hpcC1zZWxlY3QtdHJpZ2dlcj5cbiAgICAgICAge3sgKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpID8gc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNpbmd1bGFyTGFiZWwgKyAnOiAnICsgKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpLm5hbWUgOiBzYXZlZEZpbHRlckNvbnRyb2xsZXIucGx1cmFsTGFiZWwgfX1cbiAgICAgIDwvZnMtY2hpcC1zZWxlY3QtdHJpZ2dlcj5cbiAgICAgIEBpZiAoc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmFjdGl2ZUZpbHRlciQgfCBhc3luYykge1xuICAgICAgICA8ZnMtY2hpcC1zZWxlY3Qtb3B0aW9uIChjbGljayk9XCJzYXZlQWN0aXZlRmlsdGVyKClcIj5cbiAgICAgICAgICBVcGRhdGUgZmlsdGVyc1xuICAgICAgICA8L2ZzLWNoaXAtc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgPGZzLWNoaXAtc2VsZWN0LW9wdGlvbiAoY2xpY2spPVwic2F2ZUFzKClcIj5cbiAgICAgICAgICBTYXZlIGFzIG5ld1xuICAgICAgICA8L2ZzLWNoaXAtc2VsZWN0LW9wdGlvbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZnMtY2hpcC1zZWxlY3Qtb3B0aW9uIChjbGljayk9XCJjcmVhdGVTYXZlZEZpbHRlcigpXCI+XG4gICAgICAgICAgQ3JlYXRlIG5ld1xuICAgICAgICA8L2ZzLWNoaXAtc2VsZWN0LW9wdGlvbj5cbiAgICAgIH1cbiAgICAgIDxmcy1jaGlwLXNlbGVjdC1vcHRpb24gKGNsaWNrKT1cIm1hbmFnZVNhdmVkRmlsdGVycygpXCI+XG4gICAgICAgIFZpZXcgYWxsXG4gICAgICA8L2ZzLWNoaXAtc2VsZWN0LW9wdGlvbj5cbiAgICA8L2ZzLWNoaXAtc2VsZWN0PlxuICB9XG4gIEBpZiAoY2xlYXJGaWx0ZXJzVmlzaWJsZSgpKSB7XG4gICAgPGZzLWNoaXBcbiAgICAgICAgW291dGxpbmVkXT1cInRydWVcIlxuICAgICAgICAoY2xpY2spPVwiY2xlYXIoKVwiPlxuICAgICAgQ2xlYXIgZmlsdGVyc1xuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIGZzQ2hpcFN1ZmZpeFxuICAgICAgICBbaWNvbl09XCInY2FuY2VsX2NpcmNsZV9vdXRsaW5lJ1wiPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2ZzLWNoaXA+XG4gIH1cbn0iXX0=
|
|
@@ -19,22 +19,26 @@ export class DateRangeComponent extends BaseItemComponent {
|
|
|
19
19
|
viewType = PickerViewType.Date;
|
|
20
20
|
from;
|
|
21
21
|
to;
|
|
22
|
+
initialized = false;
|
|
22
23
|
ngOnInit() {
|
|
23
24
|
super.ngOnInit();
|
|
24
25
|
this.viewType = this.item.type === ItemType.DateTimeRange ?
|
|
25
26
|
PickerViewType.DateTime : PickerViewType.Date;
|
|
26
|
-
if (this.item.primary) {
|
|
27
|
-
this.autofocusName = null;
|
|
28
|
-
}
|
|
29
|
-
else if (!this.autofocusName) {
|
|
30
|
-
this.autofocusName = this.from ? 'to' : 'from';
|
|
31
|
-
}
|
|
32
27
|
this.item.value$
|
|
33
28
|
.pipe(takeUntilDestroyed(this._destroyRef))
|
|
34
29
|
.subscribe((value) => {
|
|
35
30
|
this.from = value?.from;
|
|
36
31
|
this.to = value?.to;
|
|
37
|
-
this.
|
|
32
|
+
if (!this.initialized) {
|
|
33
|
+
this.initialized = true;
|
|
34
|
+
if (this.item.primary) {
|
|
35
|
+
this.autofocusName = null;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.autofocusName = this.from ? 'to' : 'from';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
this._cdRef.markForCheck();
|
|
38
42
|
});
|
|
39
43
|
}
|
|
40
44
|
ngOnDestroy() {
|
|
@@ -54,7 +58,7 @@ export class DateRangeComponent extends BaseItemComponent {
|
|
|
54
58
|
};
|
|
55
59
|
}
|
|
56
60
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
61
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DateRangeComponent, isStandalone: true, selector: "filter-item-date-range", inputs: { autofocusName: "autofocusName", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "@if (initialized) {\n <div class=\"row\">\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.fromLabel }}\n </mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'from'\"\n [fsDateRangeFrom]=\"item.name\"\n [(ngModel)]=\"from\"\n (ngModelChange)=\"change()\"\n [clear]=\"item.clearable\"\n [view]=\"viewType\"\n name=\"dateFrom\">\n </mat-form-field>\n <div class=\"to\">\n to\n </div>\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.toLabel }}\n </mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'to'\"\n [fsDateRangeTo]=\"item.name\"\n [(ngModel)]=\"to\"\n (ngModelChange)=\"change()\"\n [clear]=\"item.clearable\"\n [view]=\"viewType\"\n name=\"dateTo\">\n </mat-form-field>\n </div>\n}", styles: [".row{display:flex;flex-direction:row;align-items:center;gap:10px}.row mat-form-field{width:200px}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsDatePickerModule }, { kind: "component", type: i2.DateRangePickerFromComponent, selector: "[fsDateRangeFrom],[fsDateRangeFromPicker]", inputs: ["fsDateRangeFrom", "fsDateRangeFromPicker"] }, { kind: "component", type: i2.DateRangePickerToComponent, selector: "[fsDateRangeTo],[fsDateRangeToPicker]", inputs: ["fsDateRangeTo", "fsDateRangeToPicker"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
58
62
|
}
|
|
59
63
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeComponent, decorators: [{
|
|
60
64
|
type: Component,
|
|
@@ -66,10 +70,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
66
70
|
FocusToItemDirective,
|
|
67
71
|
FsDatePickerModule,
|
|
68
72
|
FsFormModule,
|
|
69
|
-
], template: "<div class=\"row\">\n
|
|
73
|
+
], template: "@if (initialized) {\n <div class=\"row\">\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.fromLabel }}\n </mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'from'\"\n [fsDateRangeFrom]=\"item.name\"\n [(ngModel)]=\"from\"\n (ngModelChange)=\"change()\"\n [clear]=\"item.clearable\"\n [view]=\"viewType\"\n name=\"dateFrom\">\n </mat-form-field>\n <div class=\"to\">\n to\n </div>\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.toLabel }}\n </mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'to'\"\n [fsDateRangeTo]=\"item.name\"\n [(ngModel)]=\"to\"\n (ngModelChange)=\"change()\"\n [clear]=\"item.clearable\"\n [view]=\"viewType\"\n name=\"dateTo\">\n </mat-form-field>\n </div>\n}", styles: [".row{display:flex;flex-direction:row;align-items:center;gap:10px}.row mat-form-field{width:200px}\n"] }]
|
|
70
74
|
}], propDecorators: { autofocusName: [{
|
|
71
75
|
type: Input
|
|
72
76
|
}], floatLabel: [{
|
|
73
77
|
type: Input
|
|
74
78
|
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZmlsdGVycy1pdGVtL2RhdGUtcmFuZ2UvZGF0ZS1yYW5nZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZmlsdGVycy1pdGVtL2RhdGUtcmFuZ2UvZGF0ZS1yYW5nZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBR3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7OztBQW1CckUsTUFBTSxPQUFRLGtCQUNaLFNBQVEsaUJBQW9EO0lBRTVDLGFBQWEsQ0FBUztJQUN0QixVQUFVLEdBQXNCLE1BQU0sQ0FBQztJQUVoRCxRQUFRLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQztJQUMvQixJQUFJLENBQU87SUFDWCxFQUFFLENBQU87SUFDVCxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBRXBCLFFBQVE7UUFDYixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekQsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztRQUVoRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07YUFDYixJQUFJLENBQ0gsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUNyQzthQUNBLFNBQVMsQ0FBQyxDQUFDLEtBQWlDLEVBQUUsRUFBRTtZQUMvQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBRXBCLElBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUM1QixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDakQsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBRyxJQUFJLENBQUMsZUFBZSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBRyxJQUFJLENBQUMsZUFBZSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtTQUNaLENBQUM7SUFDSixDQUFDO3dHQXZEVyxrQkFBa0I7NEZBQWxCLGtCQUFrQiwrS0MxQ2hDLHFpQ0FzQ0MsNkpETEcsWUFBWSw0TEFDWixRQUFRLHNEQUNSLFFBQVEsZ1VBQ1IsV0FBVywrbUJBQ1gsb0JBQW9CLG9HQUNwQixrQkFBa0IsMFdBQ2xCLFlBQVk7OzRGQUdGLGtCQUFrQjtrQkFoQi9CLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFFBQVE7d0JBQ1IsUUFBUTt3QkFDUixXQUFXO3dCQUNYLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQixZQUFZO3FCQUNiOzhCQUtlLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBNYXRMYWJlbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5cbmltcG9ydCB7IEZzRGF0ZVBpY2tlck1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgRnNGb3JtTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZm9ybSc7XG5cblxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyBGb2N1c1RvSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZm9jdXMtdG8taXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSXRlbVR5cGUgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9pdGVtLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQaWNrZXJWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2VudW1zL3BpY2tlci12aWV3LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBEYXRlUmFuZ2VJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2l0ZW1zL2RhdGUtcmFuZ2UtaXRlbSc7XG5pbXBvcnQgeyBEYXRlVGltZVJhbmdlSXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9pdGVtcy9kYXRlLXRpbWUtcmFuZ2UtaXRlbSc7XG5pbXBvcnQgeyBCYXNlSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtaXRlbS9iYXNlLWl0ZW0uY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmaWx0ZXItaXRlbS1kYXRlLXJhbmdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXJhbmdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0Rm9ybUZpZWxkLFxuICAgIE1hdExhYmVsLFxuICAgIE1hdElucHV0LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEZvY3VzVG9JdGVtRGlyZWN0aXZlLFxuICAgIEZzRGF0ZVBpY2tlck1vZHVsZSxcbiAgICBGc0Zvcm1Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzICBEYXRlUmFuZ2VDb21wb25lbnQgXG4gIGV4dGVuZHMgQmFzZUl0ZW1Db21wb25lbnQ8RGF0ZVJhbmdlSXRlbSB8IERhdGVUaW1lUmFuZ2VJdGVtPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBwdWJsaWMgYXV0b2ZvY3VzTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZmxvYXRMYWJlbDogJ2F1dG8nIHwgJ2Fsd2F5cycgPSAnYXV0byc7XG4gIFxuICBwdWJsaWMgdmlld1R5cGUgPSBQaWNrZXJWaWV3VHlwZS5EYXRlO1xuICBwdWJsaWMgZnJvbTogRGF0ZTtcbiAgcHVibGljIHRvOiBEYXRlO1xuICBwdWJsaWMgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIHRoaXMudmlld1R5cGUgPSB0aGlzLml0ZW0udHlwZSA9PT0gSXRlbVR5cGUuRGF0ZVRpbWVSYW5nZSA/IFxuICAgICAgUGlja2VyVmlld1R5cGUuRGF0ZVRpbWUgOiBQaWNrZXJWaWV3VHlwZS5EYXRlO1xuXG4gICAgdGhpcy5pdGVtLnZhbHVlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiB7IGZyb20/OiBEYXRlOyB0bz86IERhdGUgfSkgPT4ge1xuICAgICAgICB0aGlzLmZyb20gPSB2YWx1ZT8uZnJvbTtcbiAgICAgICAgdGhpcy50byA9IHZhbHVlPy50bztcblxuICAgICAgICBpZighdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgIGlmKHRoaXMuaXRlbS5wcmltYXJ5KSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9mb2N1c05hbWUgPSBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9mb2N1c05hbWUgPSB0aGlzLmZyb20gPyAndG8nIDogJ2Zyb20nO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cbiAgXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZih0aGlzLnRyaWdnZXJDaGFuZ2VPbiA9PT0gJ2Nsb3NlJykge1xuICAgICAgdGhpcy5pdGVtLnZhbHVlID0gdGhpcy5nZXRWYWx1ZTtcbiAgICB9XG4gIH0gIFxuICBcbiAgcHVibGljIGNoYW5nZSgpIHtcbiAgICBpZih0aGlzLnRyaWdnZXJDaGFuZ2VPbiA9PT0gJ2NoYW5nZScpIHtcbiAgICAgIHRoaXMuaXRlbS52YWx1ZSA9IHRoaXMuZ2V0VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBnZXRWYWx1ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZnJvbTogdGhpcy5mcm9tLFxuICAgICAgdG86IHRoaXMudG8sXG4gICAgfTtcbiAgfVxufVxuIiwiQGlmIChpbml0aWFsaXplZCkge1xuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtcGFkbGVzc1wiPlxuICAgICAgPG1hdC1sYWJlbD5cbiAgICAgICAge3sgaXRlbS5mcm9tTGFiZWwgfX1cbiAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIFtmc0ZpbHRlckZvY3VzVHJpZ2dlcl09XCJhdXRvZm9jdXNOYW1lID09PSAnZnJvbSdcIlxuICAgICAgICBbZnNEYXRlUmFuZ2VGcm9tXT1cIml0ZW0ubmFtZVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiZnJvbVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZSgpXCJcbiAgICAgICAgW2NsZWFyXT1cIml0ZW0uY2xlYXJhYmxlXCJcbiAgICAgICAgW3ZpZXddPVwidmlld1R5cGVcIlxuICAgICAgICBuYW1lPVwiZGF0ZUZyb21cIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxkaXYgY2xhc3M9XCJ0b1wiPlxuICAgICAgdG9cbiAgICA8L2Rpdj5cbiAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1wYWRsZXNzXCI+XG4gICAgICA8bWF0LWxhYmVsPlxuICAgICAgICB7eyBpdGVtLnRvTGFiZWwgfX1cbiAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIFtmc0ZpbHRlckZvY3VzVHJpZ2dlcl09XCJhdXRvZm9jdXNOYW1lID09PSAndG8nXCJcbiAgICAgICAgW2ZzRGF0ZVJhbmdlVG9dPVwiaXRlbS5uYW1lXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ0b1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZSgpXCJcbiAgICAgICAgW2NsZWFyXT1cIml0ZW0uY2xlYXJhYmxlXCJcbiAgICAgICAgW3ZpZXddPVwidmlld1R5cGVcIlxuICAgICAgICBuYW1lPVwiZGF0ZVRvXCI+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG59Il19
|
|
@@ -17,7 +17,9 @@ export class FocusToItemDirective {
|
|
|
17
17
|
_targetAutocompleteChips = inject(FsAutocompleteChipsComponent, { optional: true, self: true });
|
|
18
18
|
ngAfterViewInit() {
|
|
19
19
|
if (this.focusEnabled) {
|
|
20
|
-
|
|
20
|
+
setTimeout(() => {
|
|
21
|
+
this._focus();
|
|
22
|
+
});
|
|
21
23
|
}
|
|
22
24
|
}
|
|
23
25
|
_focus() {
|
|
@@ -59,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
59
61
|
type: Input,
|
|
60
62
|
args: ['fsFilterFocusTrigger']
|
|
61
63
|
}] } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdG8taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2RpcmVjdGl2ZXMvZm9jdXMtdG8taXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlFLE9BQU8sRUFDTCw0QkFBNEIsRUFBRSwwQkFBMEIsRUFDeEQscUJBQXFCLEVBQ3JCLDJCQUEyQixHQUM1QixNQUFNLHdCQUF3QixDQUFDOztBQU9oQyxNQUFNLE9BQU8sb0JBQW9CO0lBR3hCLFlBQVksR0FBRyxJQUFJLENBQUM7SUFFbkIsYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvRCxXQUFXLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM1RSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hGLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUYsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4RixtQkFBbUIsR0FBRyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RGLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFHakcsZUFBZTtRQUNwQixJQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNyQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU8sTUFBTTtRQUNaLElBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUVELElBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUVELElBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLENBQUM7UUFFRCxJQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxDQUFDO1FBRUQsSUFBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakMsQ0FBQztRQUVELElBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLENBQUM7UUFFRCxJQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQzt3R0F2RFUsb0JBQW9COzRGQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBSmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQUlRLFlBQVk7c0JBRGxCLEtBQUs7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBJbnB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcblxuaW1wb3J0IHsgRnNBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICdAZmlyZXN0aXRjaC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgRnNBdXRvY29tcGxldGVDaGlwc0NvbXBvbmVudCB9IGZyb20gJ0BmaXJlc3RpdGNoL2F1dG9jb21wbGV0ZS1jaGlwcyc7XG5pbXBvcnQge1xuICBEYXRlUmFuZ2VQaWNrZXJGcm9tQ29tcG9uZW50LCBEYXRlUmFuZ2VQaWNrZXJUb0NvbXBvbmVudCxcbiAgRnNEYXRlUGlja2VyQ29tcG9uZW50LFxuICBGc0RhdGVTY3JvbGxQaWNrZXJDb21wb25lbnQsXG59IGZyb20gJ0BmaXJlc3RpdGNoL2RhdGVwaWNrZXInO1xuXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmc0ZpbHRlckZvY3VzVHJpZ2dlcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c1RvSXRlbURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIEBJbnB1dCgnZnNGaWx0ZXJGb2N1c1RyaWdnZXInKVxuICBwdWJsaWMgZm9jdXNFbmFibGVkID0gdHJ1ZTtcblxuICBwcml2YXRlIF90YXJnZXRTZWxlY3QgPSBpbmplY3QoTWF0U2VsZWN0LCB7IG9wdGlvbmFsOiB0cnVlLCBzZWxmOiB0cnVlIH0pO1xuICBwcml2YXRlIF90YXJnZXRUZXh0ID0gaW5qZWN0KE1hdElucHV0LCB7IG9wdGlvbmFsOiB0cnVlLCBzZWxmOiB0cnVlIH0pO1xuICBwcml2YXRlIF90YXJnZXREYXRlID0gaW5qZWN0KEZzRGF0ZVBpY2tlckNvbXBvbmVudCwgeyBvcHRpb25hbDogdHJ1ZSwgc2VsZjogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBfdGFyZ2V0RGF0ZVNjcm9sbCA9IGluamVjdChGc0RhdGVTY3JvbGxQaWNrZXJDb21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUsIHNlbGY6IHRydWUgfSk7XG4gIHByaXZhdGUgX3RhcmdldERhdGVSYW5nZUZyb20gPSBpbmplY3QoRGF0ZVJhbmdlUGlja2VyRnJvbUNvbXBvbmVudCwgeyBvcHRpb25hbDogdHJ1ZSwgc2VsZjogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBfdGFyZ2V0RGF0ZVJhbmdlVG8gPSBpbmplY3QoRGF0ZVJhbmdlUGlja2VyVG9Db21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUsIHNlbGY6IHRydWUgfSk7XG4gIHByaXZhdGUgX3RhcmdldEF1dG9jb21wbGV0ZSA9IGluamVjdChGc0F1dG9jb21wbGV0ZUNvbXBvbmVudCwgeyBvcHRpb25hbDogdHJ1ZSwgc2VsZjogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBfdGFyZ2V0QXV0b2NvbXBsZXRlQ2hpcHMgPSBpbmplY3QoRnNBdXRvY29tcGxldGVDaGlwc0NvbXBvbmVudCwgeyBvcHRpb25hbDogdHJ1ZSwgc2VsZjogdHJ1ZSB9KTtcblxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYodGhpcy5mb2N1c0VuYWJsZWQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLl9mb2N1cygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZm9jdXMoKSB7XG4gICAgaWYodGhpcy5fdGFyZ2V0U2VsZWN0KSB7XG4gICAgICB0aGlzLl90YXJnZXRTZWxlY3Qub3BlbigpO1xuICAgIH1cblxuICAgIGlmKHRoaXMuX3RhcmdldFRleHQpIHtcbiAgICAgIHRoaXMuX3RhcmdldFRleHQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBpZih0aGlzLl90YXJnZXREYXRlKSB7XG4gICAgICB0aGlzLl90YXJnZXREYXRlLm9wZW4oKTtcbiAgICB9XG5cbiAgICBpZih0aGlzLl90YXJnZXREYXRlU2Nyb2xsKSB7XG4gICAgICB0aGlzLl90YXJnZXREYXRlU2Nyb2xsLm9wZW4oKTtcbiAgICB9XG5cbiAgICBpZih0aGlzLl90YXJnZXREYXRlUmFuZ2VGcm9tKSB7XG4gICAgICB0aGlzLl90YXJnZXREYXRlUmFuZ2VGcm9tLm9wZW4oKTtcbiAgICB9XG5cbiAgICBpZih0aGlzLl90YXJnZXREYXRlUmFuZ2VUbykge1xuICAgICAgdGhpcy5fdGFyZ2V0RGF0ZVJhbmdlVG8ub3BlbigpO1xuICAgIH1cblxuICAgIGlmKHRoaXMuX3RhcmdldEF1dG9jb21wbGV0ZSkge1xuICAgICAgdGhpcy5fdGFyZ2V0QXV0b2NvbXBsZXRlLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgaWYodGhpcy5fdGFyZ2V0QXV0b2NvbXBsZXRlQ2hpcHMpIHtcbiAgICAgIHRoaXMuX3RhcmdldEF1dG9jb21wbGV0ZUNoaXBzLmZvY3VzKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|