@firestitch/list 13.2.3 → 13.3.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/app/classes/data-controller.d.ts +0 -2
- package/app/classes/list-controller.d.ts +3 -9
- package/app/classes/pagination-controller.d.ts +1 -3
- package/app/classes/selection-controller.d.ts +1 -1
- package/app/components/list/list.component.d.ts +4 -5
- package/app/components/status/status.component.d.ts +1 -2
- package/app/interfaces/listconfig.interface.d.ts +0 -7
- package/esm2020/app/classes/data-controller.mjs +5 -23
- package/esm2020/app/classes/external-params-controller.mjs +2 -2
- package/esm2020/app/classes/list-controller.mjs +15 -86
- package/esm2020/app/classes/pagination-controller.mjs +2 -7
- package/esm2020/app/classes/selection-controller.mjs +3 -5
- package/esm2020/app/components/list/list.component.mjs +28 -35
- package/esm2020/app/components/status/status.component.mjs +3 -5
- package/esm2020/app/interfaces/listconfig.interface.mjs +1 -1
- package/esm2020/public_api.mjs +1 -1
- package/fesm2015/firestitch-list.mjs +41 -145
- package/fesm2015/firestitch-list.mjs.map +1 -1
- package/fesm2020/firestitch-list.mjs +41 -145
- package/fesm2020/firestitch-list.mjs.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +1 -1
|
@@ -14,7 +14,6 @@ export declare class DataController {
|
|
|
14
14
|
private _compareByFn;
|
|
15
15
|
private _initialExpand;
|
|
16
16
|
private _groupEnabled;
|
|
17
|
-
private _infinityScrollEnabled;
|
|
18
17
|
private _loadMoreEnabled;
|
|
19
18
|
private _hasData;
|
|
20
19
|
private readonly _destroy$;
|
|
@@ -34,7 +33,6 @@ export declare class DataController {
|
|
|
34
33
|
get reorderData(): import("../interfaces/listconfig.interface").FsListReorderData[];
|
|
35
34
|
setGroupConfig(group: FsListGroupConfig): void;
|
|
36
35
|
setAdditionalConfigs(configs: {
|
|
37
|
-
scrollable: boolean;
|
|
38
36
|
loadMoreEnabled: boolean;
|
|
39
37
|
}): void;
|
|
40
38
|
/**
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { ElementRef, TemplateRef } from '@angular/core';
|
|
2
2
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
3
3
|
import { ChangeFn, FilterConfig, FsFilterAutoReload, IFilterSavedFiltersConfig } from '@firestitch/filter';
|
|
4
|
-
import { FsScrollInstance, FsScrollService } from '@firestitch/scroll';
|
|
5
4
|
import { SelectionDialog } from '@firestitch/selection';
|
|
6
5
|
import { BehaviorSubject, Observable, Subject } from 'rxjs';
|
|
7
|
-
import { FsListAfterContentInitFn, FsListAfterFetchFn, FsListAfterInitFn, FsListBeforeFetchFn, FsListConfig, FsListEmptyStateConfig, FsListFetchFn, FsListFetchSubscription, FsListNoResultsConfig, FsListPersitance, FsListRestoreConfig,
|
|
6
|
+
import { FsListAfterContentInitFn, FsListAfterFetchFn, FsListAfterInitFn, FsListBeforeFetchFn, FsListConfig, FsListEmptyStateConfig, FsListFetchFn, FsListFetchSubscription, FsListNoResultsConfig, FsListPersitance, FsListRestoreConfig, FsListTrackByFn } from '../interfaces';
|
|
8
7
|
import { ColumnsController } from './columns-controller';
|
|
9
8
|
import { DataController } from './data-controller';
|
|
10
9
|
import { ExternalParamsController } from './external-params-controller';
|
|
@@ -16,7 +15,6 @@ import { SortingController } from './sorting-controller';
|
|
|
16
15
|
export declare class List {
|
|
17
16
|
private _el;
|
|
18
17
|
private _config;
|
|
19
|
-
private _fsScroll;
|
|
20
18
|
private _selectionDialog;
|
|
21
19
|
private _router;
|
|
22
20
|
private _route;
|
|
@@ -37,7 +35,6 @@ export declare class List {
|
|
|
37
35
|
filterInitCb: ChangeFn;
|
|
38
36
|
filterChangeCb: ChangeFn;
|
|
39
37
|
savedFilters: IFilterSavedFiltersConfig;
|
|
40
|
-
scrollable: FsListScrollableConfig;
|
|
41
38
|
noResults: FsListNoResultsConfig;
|
|
42
39
|
emptyState: FsListEmptyStateConfig;
|
|
43
40
|
fetchFn: FsListFetchFn;
|
|
@@ -69,7 +66,6 @@ export declare class List {
|
|
|
69
66
|
initialFetch: boolean;
|
|
70
67
|
emptyStateEnabled: boolean;
|
|
71
68
|
emptyStateTemplate: TemplateRef<any>;
|
|
72
|
-
fsScrollInstance: FsScrollInstance;
|
|
73
69
|
private _destroy$;
|
|
74
70
|
private _initialized$;
|
|
75
71
|
private _fetch$;
|
|
@@ -79,8 +75,7 @@ export declare class List {
|
|
|
79
75
|
private readonly _groupCellConfig;
|
|
80
76
|
private readonly _cellConfig;
|
|
81
77
|
private readonly _footerConfig;
|
|
82
|
-
|
|
83
|
-
constructor(_el: ElementRef, _config: FsListConfig, _fsScroll: FsScrollService, _selectionDialog: SelectionDialog, _router: Router, _route: ActivatedRoute, _persistance: PersistanceController, _inDialog: boolean);
|
|
78
|
+
constructor(_el: ElementRef, _config: FsListConfig, _selectionDialog: SelectionDialog, _router: Router, _route: ActivatedRoute, _persistance: PersistanceController, _inDialog: boolean);
|
|
84
79
|
get fetch$(): Observable<FsListFetchSubscription | void>;
|
|
85
80
|
get hasSavedFilters(): boolean;
|
|
86
81
|
get filtersQuery(): Record<string, any>;
|
|
@@ -94,7 +89,7 @@ export declare class List {
|
|
|
94
89
|
* @param templates
|
|
95
90
|
*/
|
|
96
91
|
tranformTemplatesToColumns(templates: any): void;
|
|
97
|
-
reload():
|
|
92
|
+
reload(): Observable<any>;
|
|
98
93
|
/**
|
|
99
94
|
* Watch page changes
|
|
100
95
|
*/
|
|
@@ -150,7 +145,6 @@ export declare class List {
|
|
|
150
145
|
* can be changed programmaticaly in any time
|
|
151
146
|
*/
|
|
152
147
|
private _listenVisibleColumnChanges;
|
|
153
|
-
private _initInfinityScroll;
|
|
154
148
|
/**
|
|
155
149
|
* Update and watch filter changes
|
|
156
150
|
*/
|
|
@@ -16,7 +16,6 @@ export declare class PaginationController {
|
|
|
16
16
|
private _pageReset$;
|
|
17
17
|
private _onDestroy$;
|
|
18
18
|
private _loadMoreConfig;
|
|
19
|
-
private _infinityScrollEnabled;
|
|
20
19
|
private _limits;
|
|
21
20
|
set pages(value: number);
|
|
22
21
|
get pages(): number;
|
|
@@ -89,7 +88,6 @@ export declare class PaginationController {
|
|
|
89
88
|
get loadMoreButtonColor(): string;
|
|
90
89
|
get loadMoreButtonClass(): string;
|
|
91
90
|
get loadMoreButtonType(): string;
|
|
92
|
-
get infinityScrollEnabled(): boolean;
|
|
93
91
|
/**
|
|
94
92
|
* SP-T1974
|
|
95
93
|
* Showing 26-50 of 333 results sorted by Name, Ascending
|
|
@@ -97,7 +95,7 @@ export declare class PaginationController {
|
|
|
97
95
|
*/
|
|
98
96
|
get statusLabel(): string;
|
|
99
97
|
get state(): IPaginationState;
|
|
100
|
-
initWithConfig(config: FsPaging | false, loadMore: FsListLoadMoreConfig | boolean
|
|
98
|
+
initWithConfig(config: FsPaging | false, loadMore: FsListLoadMoreConfig | boolean): void;
|
|
101
99
|
/**
|
|
102
100
|
* If pagination has prev page when Page Strategy
|
|
103
101
|
*/
|
|
@@ -4,8 +4,8 @@ import { ActivatedRoute, Router } from '@angular/router';
|
|
|
4
4
|
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
5
5
|
import { DrawerRef } from '@firestitch/drawer';
|
|
6
6
|
import { FilterComponent } from '@firestitch/filter';
|
|
7
|
-
import { FsScrollService } from '@firestitch/scroll';
|
|
8
7
|
import { SelectionDialog } from '@firestitch/selection';
|
|
8
|
+
import { Observable } from 'rxjs';
|
|
9
9
|
import { List } from '../../classes/list-controller';
|
|
10
10
|
import { PersistanceController } from '../../classes/persistance-controller';
|
|
11
11
|
import { ReorderController } from '../../classes/reorder-controller';
|
|
@@ -18,7 +18,6 @@ import * as i0 from "@angular/core";
|
|
|
18
18
|
export declare class FsListComponent implements OnInit, OnDestroy, AfterContentInit {
|
|
19
19
|
reorderController: ReorderController;
|
|
20
20
|
private _defaultOptions;
|
|
21
|
-
private _scroll;
|
|
22
21
|
private _dialogRef;
|
|
23
22
|
private _drawerRef;
|
|
24
23
|
private _el;
|
|
@@ -55,7 +54,7 @@ export declare class FsListComponent implements OnInit, OnDestroy, AfterContentI
|
|
|
55
54
|
*/
|
|
56
55
|
set columnTemplates(listColumnDirectives: QueryList<FsListColumnDirective>);
|
|
57
56
|
private set _emptyStateTemplate(value);
|
|
58
|
-
constructor(reorderController: ReorderController, _defaultOptions: FsListConfig,
|
|
57
|
+
constructor(reorderController: ReorderController, _defaultOptions: FsListConfig, _dialogRef: MatDialogRef<any>, _drawerRef: DrawerRef<any>, _el: ElementRef, _selectionDialog: SelectionDialog, _dialog: MatDialog, _cdRef: ChangeDetectorRef, _groupExpandNotifier: GroupExpandNotifierService, _router: Router, _route: ActivatedRoute, _persistance: PersistanceController, _location: Location);
|
|
59
58
|
/**
|
|
60
59
|
* Return reference for filter
|
|
61
60
|
*/
|
|
@@ -74,7 +73,7 @@ export declare class FsListComponent implements OnInit, OnDestroy, AfterContentI
|
|
|
74
73
|
prevPage(): void;
|
|
75
74
|
firstPage(): void;
|
|
76
75
|
lastPage(): void;
|
|
77
|
-
reload():
|
|
76
|
+
reload(): Observable<any>;
|
|
78
77
|
getData(trackBy?: FsListTrackByFn): any[];
|
|
79
78
|
hasData(trackBy: FsListTrackByFn): boolean;
|
|
80
79
|
updateData(rows: FsListAbstractRow | FsListAbstractRow[], trackBy?: FsListTrackByTargetRowFn): boolean;
|
|
@@ -123,6 +122,6 @@ export declare class FsListComponent implements OnInit, OnDestroy, AfterContentI
|
|
|
123
122
|
private _waitFirstLoad;
|
|
124
123
|
private _configMergeCustomizer;
|
|
125
124
|
private _restorePersistance;
|
|
126
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<FsListComponent, [null, { optional: true; }, { optional: true; }, { optional: true; },
|
|
125
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FsListComponent, [null, { optional: true; }, { optional: true; }, { optional: true; }, null, null, null, null, null, null, null, null, null]>;
|
|
127
126
|
static ɵcmp: i0.ɵɵComponentDeclaration<FsListComponent, "fs-list", never, { "config": "config"; "loaderLines": "loaderLines"; }, { "filtersReady": "filtersReady"; }, ["headingTemplate", "headingContainerTemplate", "subheadingTemplate", "_emptyStateTemplate", "columnTemplates"], ["[fs-list-content]"]>;
|
|
128
127
|
}
|
|
@@ -7,7 +7,6 @@ export declare class FsStatusComponent implements OnInit, OnDestroy {
|
|
|
7
7
|
paging: PaginationController;
|
|
8
8
|
sorting: SortingController;
|
|
9
9
|
rows: any;
|
|
10
|
-
scrollable: any;
|
|
11
10
|
firstLoad: boolean;
|
|
12
11
|
private _destroy$;
|
|
13
12
|
constructor(_cdRef: ChangeDetectorRef);
|
|
@@ -17,5 +16,5 @@ export declare class FsStatusComponent implements OnInit, OnDestroy {
|
|
|
17
16
|
setSortableColumn(column: any): void;
|
|
18
17
|
setLimit(limit: any): void;
|
|
19
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsStatusComponent, never>;
|
|
20
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsStatusComponent, "fs-list-status", never, { "paging": "paging"; "sorting": "sorting"; "rows": "rows"; "
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsStatusComponent, "fs-list-status", never, { "paging": "paging"; "sorting": "sorting"; "rows": "rows"; "firstLoad": "firstLoad"; }, {}, never, never>;
|
|
21
20
|
}
|
|
@@ -41,7 +41,6 @@ export interface FsListConfig {
|
|
|
41
41
|
beforeFetch?: FsListBeforeFetchFn;
|
|
42
42
|
afterContentInit?: FsListAfterContentInitFn;
|
|
43
43
|
afterInit?: FsListAfterInitFn;
|
|
44
|
-
scrollable?: FsListScrollableConfig;
|
|
45
44
|
selection?: FsListSelectionConfig;
|
|
46
45
|
initialFetch?: boolean;
|
|
47
46
|
rowEvents?: {
|
|
@@ -131,12 +130,6 @@ export interface FsListSortConfig {
|
|
|
131
130
|
value: string;
|
|
132
131
|
direction?: 'asc' | 'desc';
|
|
133
132
|
}
|
|
134
|
-
export interface FsListScrollableConfig {
|
|
135
|
-
name: string;
|
|
136
|
-
activationDown?: number;
|
|
137
|
-
loaderDiametr?: number;
|
|
138
|
-
status?: boolean;
|
|
139
|
-
}
|
|
140
133
|
export interface FsListRestoreConfig {
|
|
141
134
|
query?: any;
|
|
142
135
|
filter?: boolean | string;
|
|
@@ -76,7 +76,6 @@ export class DataController {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
setAdditionalConfigs(configs) {
|
|
79
|
-
this._infinityScrollEnabled = configs.scrollable;
|
|
80
79
|
this._loadMoreEnabled = configs.loadMoreEnabled;
|
|
81
80
|
}
|
|
82
81
|
/**
|
|
@@ -84,29 +83,12 @@ export class DataController {
|
|
|
84
83
|
* @param rows
|
|
85
84
|
*/
|
|
86
85
|
setRowsFromResponse(rows) {
|
|
87
|
-
if (this.
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
case FsListState.Reload:
|
|
91
|
-
case FsListState.Sort:
|
|
92
|
-
{
|
|
93
|
-
this._updateRowsStack(rows);
|
|
94
|
-
}
|
|
95
|
-
break;
|
|
96
|
-
default: {
|
|
97
|
-
this._extendRowsStack(rows);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
this._remoteRowsChange$.next();
|
|
86
|
+
if (this._operation === FsListState.LoadMore ||
|
|
87
|
+
(this._operation === FsListState.PageChange && this._loadMoreEnabled)) {
|
|
88
|
+
this._extendRowsStack(rows);
|
|
101
89
|
}
|
|
102
90
|
else {
|
|
103
|
-
|
|
104
|
-
(this._operation === FsListState.PageChange && this._loadMoreEnabled)) {
|
|
105
|
-
this._extendRowsStack(rows);
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
this._updateRowsStack(rows);
|
|
109
|
-
}
|
|
91
|
+
this._updateRowsStack(rows);
|
|
110
92
|
}
|
|
111
93
|
this._operation = FsListState.Idle;
|
|
112
94
|
this._updateVisibleRows();
|
|
@@ -360,4 +342,4 @@ export class DataController {
|
|
|
360
342
|
}, []);
|
|
361
343
|
}
|
|
362
344
|
}
|
|
363
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jbGFzc2VzL2RhdGEtY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQU1sRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR25ELE1BQU0sT0FBTyxjQUFjO0lBQTNCO1FBRW1CLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQVEsRUFBRSxDQUFDLENBQUM7UUFDL0Msa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUyxDQUFDO1FBQ3JDLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbEQsV0FBTSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDbkIsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQWN2QixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUt0QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRVIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFxY25ELENBQUM7SUFuY0MsSUFBVyxlQUFlO1FBQ3hC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QUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUN0RTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDcEMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDbEM7aUJBQU07Z0JBQ0wsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNoQjtZQUVELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGlzRnVuY3Rpb24sIGlzT2JqZWN0IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHsgUm93VHlwZSB9IGZyb20gJy4uL2VudW1zL3Jvdy10eXBlLmVudW0nO1xuaW1wb3J0IHsgRnNMaXN0U3RhdGUgfSBmcm9tICcuLi9lbnVtcy9zdGF0ZS5lbnVtJztcbmltcG9ydCB7XG4gIEZzTGlzdEFic3RyYWN0Um93LFxuICBGc0xpc3RHcm91cENvbmZpZyxcbiAgRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzL2xpc3Rjb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uL21vZGVscy9yb3cnO1xuaW1wb3J0IHsgQ2hpbGRSb3cgfSBmcm9tICcuLi9tb2RlbHMvcm93L2NoaWxkLXJvdyc7XG5pbXBvcnQgeyBHcm91cEZvb3RlclJvdyB9IGZyb20gJy4uL21vZGVscy9yb3cvZ3JvdXAtZm9vdGVyLXJvdyc7XG5pbXBvcnQgeyBHcm91cFJvdyB9IGZyb20gJy4uL21vZGVscy9yb3cvZ3JvdXAtcm93JztcblxuXG5leHBvcnQgY2xhc3MgRGF0YUNvbnRyb2xsZXIge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Zpc2libGVSb3dzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Um93W10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcm93c1JlbW92ZWQkID0gbmV3IFN1YmplY3Q8Um93W10+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlbW90ZVJvd3NDaGFuZ2UkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF9zdG9yZSA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBfcm93c1N0YWNrOiBSb3dbXSA9IFtdO1xuICBwcml2YXRlIF9vcGVyYXRpb246IEZzTGlzdFN0YXRlO1xuXG4gIHByaXZhdGUgX2dyb3VwQnlGbjogKHJvdykgPT4gYW55W107XG4gIHByaXZhdGUgX2Zvb3RlclJvd0ZuOiAoXG4gICAgcm93OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgIGdyb3VwOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBhbnksXG4gICAgICBjaGlsZHJlbjoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBhbnlcbiAgICAgIH1bXSxcbiAgICB9XG4gICkgPT4gYm9vbGVhbjtcbiAgcHJpdmF0ZSBfY29tcGFyZUJ5Rm46IChncm91cCkgPT4gYW55O1xuICBwcml2YXRlIF9pbml0aWFsRXhwYW5kID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfZ3JvdXBFbmFibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfaW5maW5pdHlTY3JvbGxFbmFibGVkOiBib29sZWFuO1xuICBwcml2YXRlIF9sb2FkTW9yZUVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfaGFzRGF0YSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgZ2V0IHZpc2libGVSb3dzRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlUm93cy5tYXAoKHJvdykgPT4gcm93LmRhdGEpO1xuICB9XG5cbiAgcHVibGljIGdldCByb3dzU3RhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd3NTdGFjay5zbGljZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBncm91cEVuYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dyb3VwRW5hYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgZ3JvdXBFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZ3JvdXBFbmFibGVkID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlbW90ZVJvd3NDaGFuZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl9yZW1vdGVSb3dzQ2hhbmdlJC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCByb3dzUmVtb3ZlZCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd3NSZW1vdmVkJC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNEYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9oYXNEYXRhO1xuICB9XG5cbiAgcHVibGljIGdldCBvcGVyYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX29wZXJhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmlzaWJsZVJvd3MkKCkge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlUm93cyQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IHZpc2libGVSb3dzKHZhbHVlOiBhbnlbXSkge1xuICAgIHRoaXMuX3Zpc2libGVSb3dzJC5uZXh0KHZhbHVlKTtcbiAgICB0aGlzLl9oYXNEYXRhID0gdGhpcy52aXNpYmxlUm93cy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHVibGljIGdldCB2aXNpYmxlUm93cygpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZVJvd3MkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpc2libGVSb3dzQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZVJvd3MubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNHcm91cHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVCeUZuICYmIHRoaXMuX2dyb3VwQnlGbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVvcmRlckRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd3NTdGFja1xuICAgICAgLm1hcCgocm93KSA9PiByb3cuZ2V0UmVvcmRlckRhdGEoKSk7XG4gIH1cblxuICBwdWJsaWMgc2V0R3JvdXBDb25maWcoZ3JvdXA6IEZzTGlzdEdyb3VwQ29uZmlnKSB7XG4gICAgaWYgKGdyb3VwKSB7XG4gICAgICB0aGlzLl9ncm91cEJ5Rm4gPSBncm91cC5ncm91cEJ5O1xuICAgICAgdGhpcy5fY29tcGFyZUJ5Rm4gPSBncm91cC5jb21wYXJlQnk7XG4gICAgICB0aGlzLl9mb290ZXJSb3dGbiA9IGdyb3VwLmZvb3RlciB8fCAoKCkgPT4gZmFsc2UpO1xuICAgICAgdGhpcy5faW5pdGlhbEV4cGFuZCA9IGdyb3VwLmluaXRpYWxFeHBhbmQgPz8gdHJ1ZTtcblxuICAgICAgLy8gZ3JvdXAgbW9kZSBlbmFibGVkIGJ5IGRlZmF1bHRcbiAgICAgIHRoaXMuX2dyb3VwRW5hYmxlZCA9IChncm91cC5lbmFibGVkICE9PSB1bmRlZmluZWQpXG4gICAgICAgID8gZ3JvdXAuZW5hYmxlZFxuICAgICAgICA6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEFkZGl0aW9uYWxDb25maWdzKGNvbmZpZ3M6IHsgc2Nyb2xsYWJsZTogYm9vbGVhbiwgbG9hZE1vcmVFbmFibGVkOiBib29sZWFuIH0pIHtcbiAgICB0aGlzLl9pbmZpbml0eVNjcm9sbEVuYWJsZWQgPSBjb25maWdzLnNjcm9sbGFibGU7XG4gICAgdGhpcy5fbG9hZE1vcmVFbmFibGVkID0gY29uZmlncy5sb2FkTW9yZUVuYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogUm93cyB3aGF0IHdhcyByZWNlaXZlZCBmcm9tIGZldGNoIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSByb3dzXG4gICAqL1xuICBwdWJsaWMgc2V0Um93c0Zyb21SZXNwb25zZShyb3dzOiBhbnlbXSkge1xuICAgIGlmICh0aGlzLl9pbmZpbml0eVNjcm9sbEVuYWJsZWQpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5fb3BlcmF0aW9uKSB7XG4gICAgICAgIGNhc2UgRnNMaXN0U3RhdGUuRmlsdGVyOlxuICAgICAgICBjYXNlIEZzTGlzdFN0YXRlLlJlbG9hZDpcbiAgICAgICAgY2FzZSBGc0xpc3RTdGF0ZS5Tb3J0OiB7XG4gICAgICAgICAgdGhpcy5fdXBkYXRlUm93c1N0YWNrKHJvd3MpO1xuICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICB0aGlzLl9leHRlbmRSb3dzU3RhY2socm93cyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5fcmVtb3RlUm93c0NoYW5nZSQubmV4dCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuX29wZXJhdGlvbiA9PT0gRnNMaXN0U3RhdGUuTG9hZE1vcmUgfHxcbiAgICAgICAgKHRoaXMuX29wZXJhdGlvbiA9PT0gRnNMaXN0U3RhdGUuUGFnZUNoYW5nZSAmJiB0aGlzLl9sb2FkTW9yZUVuYWJsZWQpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5fZXh0ZW5kUm93c1N0YWNrKHJvd3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlUm93c1N0YWNrKHJvd3MpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX29wZXJhdGlvbiA9IEZzTGlzdFN0YXRlLklkbGU7XG5cbiAgICB0aGlzLl91cGRhdGVWaXNpYmxlUm93cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjdXJyZW50IG9wZXJhdGlvbiBmb3IgbGlzdCBkYXRhIGZsb3dcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgc2V0T3BlcmF0aW9uKHZhbHVlOiBGc0xpc3RTdGF0ZSkge1xuICAgIHRoaXMuX29wZXJhdGlvbiA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSByb3dzIGZyb20gdmlzaWJsZVxuICAgKi9cbiAgcHVibGljIGNsZWFyUm93cygpIHtcbiAgICB0aGlzLnZpc2libGVSb3dzID0gW107XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSBkYXRhIGZvciBzcGVjaWZpZWQgcm93XG4gICAqIEBwYXJhbSB0YXJnZXRSb3dcbiAgICogQHBhcmFtIHRyYWNrQnlcbiAgICovXG4gIHB1YmxpYyByZXBsYWNlRGF0YShcbiAgICB0YXJnZXRSb3c6IEZzTGlzdEFic3RyYWN0Um93LFxuICAgIHRyYWNrQnk/OiBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm4sXG4gICkge1xuICAgIGNvbnN0IHJvd0luZGV4ID0gdGhpcy5fcm93c1N0YWNrLmZpbmRJbmRleCgobGlzdFJvdykgPT4ge1xuICAgICAgcmV0dXJuIHRyYWNrQnkobGlzdFJvdy5kYXRhLCB0YXJnZXRSb3cpO1xuICAgIH0pO1xuXG4gICAgaWYgKHJvd0luZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuX3Jvd3NTdGFja1tyb3dJbmRleF0gPSBuZXcgUm93KFxuICAgICAgICB0YXJnZXRSb3csXG4gICAgICAgIFJvd1R5cGUuU2ltcGxlLFxuICAgICAgICB7IGluaXRpYWxFeHBhbmQ6IHRoaXMuX2luaXRpYWxFeHBhbmQgfSxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuX3VwZGF0ZVZpc2libGVSb3dzKCk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiBcbiAgICByZXR1cm4gZmFsc2U7XG4gICAgXG5cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgZGF0YSBmb3Igc3BlY2lmaWVkIHJvd1xuICAgKiBAcGFyYW0gcm93c1xuICAgKiBAcGFyYW0gdHJhY2tCeVxuICAgKi9cbiAgcHVibGljIHVwZGF0ZURhdGEoXG4gICAgcm93czogRnNMaXN0QWJzdHJhY3RSb3cgfCBGc0xpc3RBYnN0cmFjdFJvd1tdLFxuICAgIHRyYWNrQnk/OiBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm4sXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJvd3MpKSB7XG4gICAgICBsZXQgdXBkYXRlU3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICByb3dzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKHRoaXMudXBkYXRlUm93KGl0ZW0sIHRyYWNrQnkpKSB7XG4gICAgICAgICAgdXBkYXRlU3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl91cGRhdGVWaXNpYmxlUm93cygpO1xuXG4gICAgICByZXR1cm4gdXBkYXRlU3VjY2VzcztcbiAgICB9IFxuICAgIGNvbnN0IHVwZGF0ZWQgPSB0aGlzLnVwZGF0ZVJvdyhyb3dzLCB0cmFja0J5KTtcblxuICAgIHRoaXMuX3VwZGF0ZVZpc2libGVSb3dzKCk7XG5cbiAgICByZXR1cm4gdXBkYXRlZDtcbiAgICBcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgZGF0YSBmb3Igc3BlY2lmaWVkIHJvd1xuICAgKiBAcGFyYW0gZGF0YVxuICAgKi9cbiAgcHVibGljIHJlbW92ZURhdGEoZGF0YTogRnNMaXN0QWJzdHJhY3RSb3cgfCBGc0xpc3RBYnN0cmFjdFJvd1tdIHwgRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVtb3ZlZFJvd3MgPSBbXTtcblxuICAgIGNvbnN0IGRlZmF1bHRUcmFja0J5ID0gKHJvdywgdGFyZ2V0KSA9PiB7XG4gICAgICByZXR1cm4gcm93ID09PSB0YXJnZXQ7XG4gICAgfTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAvL1xuICAgICAgZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIHJlbW92ZWRSb3dzLnB1c2goLi4udGhpcy5yZW1vdmVSb3coaXRlbSwgZGVmYXVsdFRyYWNrQnkpKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihkYXRhKSkge1xuICAgICAgcmVtb3ZlZFJvd3MucHVzaCguLi50aGlzLnJlbW92ZVJvdyhudWxsLCAoZGF0YSBhcyBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm4pKSk7XG4gICAgfSBlbHNlIGlmIChpc09iamVjdChkYXRhKSkge1xuICAgICAgcmVtb3ZlZFJvd3MucHVzaCguLi50aGlzLnJlbW92ZVJvdyhkYXRhLCBkZWZhdWx0VHJhY2tCeSkpO1xuICAgIH1cblxuICAgIGlmIChyZW1vdmVkUm93cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl91cGRhdGVWaXNpYmxlUm93cygpO1xuXG4gICAgICB0aGlzLl9yb3dzUmVtb3ZlZCQubmV4dChyZW1vdmVkUm93cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhcmVtb3ZlZFJvd3MubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIHN3YXBSb3dzKHJvdzEsIHJvdzIsIHNlbGVjdGVkUm93cz86IFJvd1tdLCBpc011bHRpcGxlRHJhZyA9IGZhbHNlKSB7XG4gICAgbGV0IHRtcEVsO1xuICAgIGNvbnN0IHJvd3NTdGFjayA9IHRoaXMuX3Jvd3NTdGFjaztcbiAgICBjb25zdCByb3cxR2xvYmFsSW5kZXggPSByb3dzU3RhY2suaW5kZXhPZihyb3cxKTtcbiAgICBjb25zdCByb3cyR2xvYmFsSW5kZXggPSByb3dzU3RhY2suaW5kZXhPZihyb3cyKTtcblxuICAgIHRtcEVsID0gcm93c1N0YWNrW3JvdzFHbG9iYWxJbmRleF07XG4gICAgcm93c1N0YWNrW3JvdzFHbG9iYWxJbmRleF0gPSByb3dzU3RhY2tbcm93Mkdsb2JhbEluZGV4XTtcbiAgICByb3dzU3RhY2tbcm93Mkdsb2JhbEluZGV4XSA9IHRtcEVsO1xuXG4gICAgaWYgKGlzTXVsdGlwbGVEcmFnICYmIEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRSb3dzKSkge1xuICAgICAgaWYgKCFzZWxlY3RlZFJvd3MuaW5jbHVkZXMocm93MSkpIHtcbiAgICAgICAgc2VsZWN0ZWRSb3dzID0gW3JvdzEsIC4uLnNlbGVjdGVkUm93c107XG4gICAgICB9XG5cbiAgICAgIHNlbGVjdGVkUm93c1xuICAgICAgICAuZmlsdGVyKChzZWxlY3RlZFJvdykgPT4ge1xuICAgICAgICAgIHJldHVybiBzZWxlY3RlZFJvdyAhPT0gcm93MTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZvckVhY2goKHNlbGVjdGVkUm93KSA9PiB7XG4gICAgICAgICAgY29uc3QgaWR4ID0gcm93c1N0YWNrLmluZGV4T2Yoc2VsZWN0ZWRSb3cpO1xuICAgICAgICAgIHJvd3NTdGFjay5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGluZGV4VG9JbnNlcnRBZnRlciA9IHJvd3NTdGFjay5pbmRleE9mKHRtcEVsKTtcblxuICAgICAgcm93c1N0YWNrLnNwbGljZShpbmRleFRvSW5zZXJ0QWZ0ZXIsIDEpO1xuXG4gICAgICBzZWxlY3RlZFJvd3MuZm9yRWFjaCgoc2VsZWN0ZWRSb3csIG9mZnNldCkgPT4ge1xuICAgICAgICByb3dzU3RhY2suc3BsaWNlKGluZGV4VG9JbnNlcnRBZnRlciArIG9mZnNldCwgMCwgc2VsZWN0ZWRSb3cpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fcm93c1N0YWNrID0gWy4uLnJvd3NTdGFja107XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95Um93c1N0YWNrKCk7XG4gICAgdGhpcy5fc3RvcmUuY2xlYXIoKTtcblxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVJvd0dyb3VwKHJvd0RhdGEpIHtcbiAgICBjb25zdCByb3cgPSB0aGlzLnZpc2libGVSb3dzLmZpbmQoKHZpc2libGVSb3cpID0+IHZpc2libGVSb3cuZGF0YSA9PT0gcm93RGF0YSApO1xuICAgIHJvdy50b2dnbGVSb3dFeHBhbmRTdGF0dXMoKTtcblxuICAgIHRoaXMuX3VwZGF0ZVZpc2libGVSb3dzKCk7XG4gIH1cblxuICBwdWJsaWMgZmluaXNoUmVvcmRlcigpOiB2b2lkIHtcbiAgICAvLyBUT0RPIGZpeG1lIHJlbW92ZSBvciBpbXByb3ZlXG4gICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICBsZXQgZ3JvdXA7XG4gICAgICB0aGlzLl9yb3dzU3RhY2tcbiAgICAgICAgLmZvckVhY2goKHJvdywgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAocm93LmlzR3JvdXAgJiYgcm93ICE9PSBncm91cCkge1xuICAgICAgICAgICAgZ3JvdXAgPSByb3c7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJvdy5pbmRleCA9IGluZGV4IC0gdGhpcy5fcm93c1N0YWNrLmluZGV4T2YoZ3JvdXApIC0gMTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZVZpc2libGVSb3dzKCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVSb3dzU3RhY2socm93cykge1xuICAgIHRoaXMuX2Rlc3Ryb3lSb3dzU3RhY2soKTtcblxuICAgIGlmICh0aGlzLmdyb3VwRW5hYmxlZCkge1xuICAgICAgdGhpcy5fc3RvcmUuY2xlYXIoKTtcbiAgICAgIHRoaXMuX3Jvd3NTdGFjayA9IFsuLi50aGlzLmdyb3VwUm93c0J5KHJvd3MpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm93cyA9IHJvd3MubWFwKChyb3cpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3coXG4gICAgICAgICAgcm93LFxuICAgICAgICAgIFJvd1R5cGUuU2ltcGxlLFxuICAgICAgICAgIHsgaW5pdGlhbEV4cGFuZDogdGhpcy5faW5pdGlhbEV4cGFuZCB9LFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9yb3dzU3RhY2sgPSBbLi4ucm93c107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZXh0ZW5kUm93c1N0YWNrKHJvd3MpIHtcbiAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcbiAgICAgIHRoaXMuX3Jvd3NTdGFjayA9IFsuLi50aGlzLmdyb3VwUm93c0J5KHJvd3MpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm93cyA9IHJvd3MubWFwKChyb3cpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3coXG4gICAgICAgICAgcm93LFxuICAgICAgICAgIFJvd1R5cGUuU2ltcGxlLFxuICAgICAgICAgIHsgaW5pdGlhbEV4cGFuZDogdGhpcy5faW5pdGlhbEV4cGFuZCB9LFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9yb3dzU3RhY2sgPSBbLi4udGhpcy5fcm93c1N0YWNrLCAuLi5yb3dzXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kZXN0cm95Um93c1N0YWNrKCkge1xuICAgIHRoaXMuX3Jvd3NTdGFjay5mb3JFYWNoKChyb3cpID0+IHJvdy5kZXN0cm95KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlVmlzaWJsZVJvd3MoKSB7XG4gICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuX3Jvd3NTdGFja1xuICAgICAgLmZpbHRlcigocm93LCBpbmRleCkgPT4ge1xuICAgICAgICByZXR1cm4gKCEocm93IGFzIGFueSkuaXNDaGlsZCAmJiAhcm93LmlzR3JvdXBGb290ZXIpIHx8IHJvdy52aXNpYmxlO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVJvdyhcbiAgICB0YXJnZXRSb3c6IEZzTGlzdEFic3RyYWN0Um93LFxuICAgIHRyYWNrQnk/OiAobGlzdFJvdzogRnNMaXN0QWJzdHJhY3RSb3csIHRhcmdldFJvdz86IEZzTGlzdEFic3RyYWN0Um93KSA9PiBib29sZWFuKSB7XG5cbiAgICBpZiAodHJhY2tCeSA9PT0gdm9pZCAwKSB7XG4gICAgICB0cmFja0J5ID0gKHJvdywgdGFyZ2V0KSA9PiB7XG4gICAgICAgIHJldHVybiByb3cgPT09IHRhcmdldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0SW5kZXggPSB0aGlzLl9yb3dzU3RhY2suZmluZEluZGV4KChsaXN0Um93KSA9PiB0cmFja0J5KGxpc3RSb3cuZGF0YSwgdGFyZ2V0Um93KSk7XG5cbiAgICBpZiAodGFyZ2V0SW5kZXggIT09IC0xKSB7XG4gICAgICBjb25zdCB1cGRhdGVUYXJnZXQgPSB0aGlzLl9yb3dzU3RhY2tbdGFyZ2V0SW5kZXhdO1xuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSB7IC4uLnVwZGF0ZVRhcmdldC5kYXRhLCAuLi50YXJnZXRSb3cgfTtcblxuICAgICAgdGhpcy5fcm93c1N0YWNrW3RhcmdldEluZGV4XSA9IG5ldyBSb3coXG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICB1cGRhdGVUYXJnZXQudHlwZSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmVudDogdXBkYXRlVGFyZ2V0LnBhcmVudCxcbiAgICAgICAgICBpbml0aWFsRXhwYW5kOiB1cGRhdGVUYXJnZXQuZXhwYW5kZWQsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHJvdyBmcm9tXG4gICAqIEBwYXJhbSB0YXJnZXRSb3dcbiAgICogQHBhcmFtIHRyYWNrQnlcbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlUm93KFxuICAgIHRhcmdldFJvdzogRnNMaXN0QWJzdHJhY3RSb3cgfCBudWxsLFxuICAgIHRyYWNrQnk/OiBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm4sXG4gICkge1xuXG4gICAgY29uc3Qgcm93cyA9IHRoaXMuX3Jvd3NTdGFjaztcbiAgICBjb25zdCByZW1vdmVkUm93cyA9IFtdO1xuXG4gICAgcm93cy5mb3JFYWNoKChsaXN0Um93LCBpbmRleCkgPT4ge1xuICAgICAgaWYgKHRyYWNrQnkobGlzdFJvdy5kYXRhLCB0YXJnZXRSb3cpKSB7XG4gICAgICAgIGNvbnN0IHJlbW92ZWRSb3cgPSByb3dzLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICAgICAgcmVtb3ZlZFJvd3MucHVzaChyZW1vdmVkUm93KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZW1vdmVkUm93cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdCBleGlzdGluZyByb3dzIGJ5IGdyb3VwcyBhbmQgc3RvcmUgdGhlbSBmb3IgZnV0dXJlIHVzZVxuICAgKi9cbiAgcHJpdmF0ZSBncm91cFJvd3NCeShyb3dzKSB7XG4gICAgaWYgKCF0aGlzLl9ncm91cEJ5Rm4gfHwgIXRoaXMuX2NvbXBhcmVCeUZuKSB7XG4gICAgICByZXR1cm4gcm93czsgXG4gICAgfVxuXG4gICAgY29uc3QgZ3JvdXBSb3dzOiBHcm91cFJvd1tdID0gW107XG4gICAgY29uc3QgZm9vdGVyUm93cyA9IG5ldyBNYXAoKTtcblxuICAgIHJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICBjb25zdCBtYWluR3JvdXAgPSB0aGlzLl9ncm91cEJ5Rm4ocm93KTtcbiAgICAgIGNvbnN0IG1haW5Hcm91cEtleSA9IHRoaXMuX2NvbXBhcmVCeUZuKG1haW5Hcm91cCk7XG5cbiAgICAgIGlmICghdGhpcy5fc3RvcmUuaGFzKG1haW5Hcm91cEtleSkpIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBuZXcgR3JvdXBSb3coXG4gICAgICAgICAgbWFpbkdyb3VwLFxuICAgICAgICAgIHRoaXMuX2luaXRpYWxFeHBhbmQsXG4gICAgICAgICk7XG5cbiAgICAgICAgZ3JvdXAuaW5kZXggPSBncm91cFJvd3MubGVuZ3RoO1xuICAgICAgICBncm91cFJvd3MucHVzaChncm91cCk7XG5cbiAgICAgICAgY29uc3QgY2hpbGRSb3cgPSBuZXcgQ2hpbGRSb3cocm93LCBncm91cCk7XG5cbiAgICAgICAgdGhpcy5fc3RvcmUuc2V0KG1haW5Hcm91cEtleSwgZ3JvdXApO1xuICAgICAgICBncm91cC5jaGlsZHJlbi5wdXNoKGNoaWxkUm93KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5fc3RvcmUuZ2V0KG1haW5Hcm91cEtleSk7XG4gICAgICAgIGNvbnN0IGNoaWxkUm93ID0gbmV3IENoaWxkUm93KHJvdywgZ3JvdXApO1xuXG4gICAgICAgIGdyb3VwLmNoaWxkcmVuLnB1c2goY2hpbGRSb3cpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZ3JvdXBSb3dzLmZvckVhY2goKGdyb3VwUm93KSA9PiB7XG4gICAgICBjb25zdCBmb290ZXJJbmRleCA9IGdyb3VwUm93LmNoaWxkcmVuXG4gICAgICAgIC5maW5kSW5kZXgoKHJvdykgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9mb290ZXJSb3dGbihyb3cuZGF0YSwge1xuICAgICAgICAgICAgLi4uZ3JvdXBSb3cuZGF0YSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBncm91cFJvdy5jaGlsZHJlbkRhdGEsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICBpZiAoZm9vdGVySW5kZXggIT09IC0xKSB7XG4gICAgICAgIGNvbnN0IGZvb3RlclJvdyA9IGdyb3VwUm93LmNoaWxkcmVuLnNwbGljZShmb290ZXJJbmRleCwgZm9vdGVySW5kZXggKyAxKVswXTtcbiAgICAgICAgZ3JvdXBSb3cuY2hpbGRyZW4ucHVzaChuZXcgR3JvdXBGb290ZXJSb3coZm9vdGVyUm93LmRhdGEsIGdyb3VwUm93KSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9zdG9yZS52YWx1ZXMoKSlcbiAgICAgIC5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5pc0dyb3VwKSB7XG4gICAgICAgICAgYWNjLnB1c2goaXRlbSwgLi4uaXRlbS5jaGlsZHJlbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWNjLnB1c2goaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwgW10pO1xuICB9XG59XG4iXX0=
|
|
345
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jbGFzc2VzL2RhdGEtY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQU1sRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR25ELE1BQU0sT0FBTyxjQUFjO0lBQTNCO1FBRW1CLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQVEsRUFBRSxDQUFDLENBQUM7UUFDL0Msa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUyxDQUFDO1FBQ3JDLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbEQsV0FBTSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDbkIsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQWN2QixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUl0QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRVIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFvYm5ELENBQUM7SUFsYkMsSUFBVyxlQUFlO1FBQ3hC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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGlzRnVuY3Rpb24sIGlzT2JqZWN0IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHsgUm93VHlwZSB9IGZyb20gJy4uL2VudW1zL3Jvdy10eXBlLmVudW0nO1xuaW1wb3J0IHsgRnNMaXN0U3RhdGUgfSBmcm9tICcuLi9lbnVtcy9zdGF0ZS5lbnVtJztcbmltcG9ydCB7XG4gIEZzTGlzdEFic3RyYWN0Um93LFxuICBGc0xpc3RHcm91cENvbmZpZyxcbiAgRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzL2xpc3Rjb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uL21vZGVscy9yb3cnO1xuaW1wb3J0IHsgQ2hpbGRSb3cgfSBmcm9tICcuLi9tb2RlbHMvcm93L2NoaWxkLXJvdyc7XG5pbXBvcnQgeyBHcm91cEZvb3RlclJvdyB9IGZyb20gJy4uL21vZGVscy9yb3cvZ3JvdXAtZm9vdGVyLXJvdyc7XG5pbXBvcnQgeyBHcm91cFJvdyB9IGZyb20gJy4uL21vZGVscy9yb3cvZ3JvdXAtcm93JztcblxuXG5leHBvcnQgY2xhc3MgRGF0YUNvbnRyb2xsZXIge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Zpc2libGVSb3dzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Um93W10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcm93c1JlbW92ZWQkID0gbmV3IFN1YmplY3Q8Um93W10+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlbW90ZVJvd3NDaGFuZ2UkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF9zdG9yZSA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBfcm93c1N0YWNrOiBSb3dbXSA9IFtdO1xuICBwcml2YXRlIF9vcGVyYXRpb246IEZzTGlzdFN0YXRlO1xuXG4gIHByaXZhdGUgX2dyb3VwQnlGbjogKHJvdykgPT4gYW55W107XG4gIHByaXZhdGUgX2Zvb3RlclJvd0ZuOiAoXG4gICAgcm93OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgIGdyb3VwOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBhbnksXG4gICAgICBjaGlsZHJlbjoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBhbnlcbiAgICAgIH1bXSxcbiAgICB9XG4gICkgPT4gYm9vbGVhbjtcbiAgcHJpdmF0ZSBfY29tcGFyZUJ5Rm46IChncm91cCkgPT4gYW55O1xuICBwcml2YXRlIF9pbml0aWFsRXhwYW5kID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfZ3JvdXBFbmFibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfbG9hZE1vcmVFbmFibGVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgX2hhc0RhdGEgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIGdldCB2aXNpYmxlUm93c0RhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZVJvd3MubWFwKChyb3cpID0+IHJvdy5kYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm93c1N0YWNrKCkge1xuICAgIHJldHVybiB0aGlzLl9yb3dzU3RhY2suc2xpY2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZ3JvdXBFbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9ncm91cEVuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGdyb3VwRW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2dyb3VwRW5hYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCByZW1vdGVSb3dzQ2hhbmdlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVtb3RlUm93c0NoYW5nZSQucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm93c1JlbW92ZWQkKCkge1xuICAgIHJldHVybiB0aGlzLl9yb3dzUmVtb3ZlZCQucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5faGFzRGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlcmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9vcGVyYXRpb247XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpc2libGVSb3dzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZVJvd3MkO1xuICB9XG5cbiAgcHVibGljIHNldCB2aXNpYmxlUm93cyh2YWx1ZTogYW55W10pIHtcbiAgICB0aGlzLl92aXNpYmxlUm93cyQubmV4dCh2YWx1ZSk7XG4gICAgdGhpcy5faGFzRGF0YSA9IHRoaXMudmlzaWJsZVJvd3MubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmlzaWJsZVJvd3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGVSb3dzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCB2aXNpYmxlUm93c0NvdW50KCkge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVSb3dzLmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzR3JvdXBzKCkge1xuICAgIHJldHVybiB0aGlzLl9jb21wYXJlQnlGbiAmJiB0aGlzLl9ncm91cEJ5Rm47XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlb3JkZXJEYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9yb3dzU3RhY2tcbiAgICAgIC5tYXAoKHJvdykgPT4gcm93LmdldFJlb3JkZXJEYXRhKCkpO1xuICB9XG5cbiAgcHVibGljIHNldEdyb3VwQ29uZmlnKGdyb3VwOiBGc0xpc3RHcm91cENvbmZpZykge1xuICAgIGlmIChncm91cCkge1xuICAgICAgdGhpcy5fZ3JvdXBCeUZuID0gZ3JvdXAuZ3JvdXBCeTtcbiAgICAgIHRoaXMuX2NvbXBhcmVCeUZuID0gZ3JvdXAuY29tcGFyZUJ5O1xuICAgICAgdGhpcy5fZm9vdGVyUm93Rm4gPSBncm91cC5mb290ZXIgfHwgKCgpID0+IGZhbHNlKTtcbiAgICAgIHRoaXMuX2luaXRpYWxFeHBhbmQgPSBncm91cC5pbml0aWFsRXhwYW5kID8/IHRydWU7XG5cbiAgICAgIC8vIGdyb3VwIG1vZGUgZW5hYmxlZCBieSBkZWZhdWx0XG4gICAgICB0aGlzLl9ncm91cEVuYWJsZWQgPSAoZ3JvdXAuZW5hYmxlZCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICA/IGdyb3VwLmVuYWJsZWRcbiAgICAgICAgOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRBZGRpdGlvbmFsQ29uZmlncyhjb25maWdzOiB7IGxvYWRNb3JlRW5hYmxlZDogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5fbG9hZE1vcmVFbmFibGVkID0gY29uZmlncy5sb2FkTW9yZUVuYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogUm93cyB3aGF0IHdhcyByZWNlaXZlZCBmcm9tIGZldGNoIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSByb3dzXG4gICAqL1xuICBwdWJsaWMgc2V0Um93c0Zyb21SZXNwb25zZShyb3dzOiBhbnlbXSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuX29wZXJhdGlvbiA9PT0gRnNMaXN0U3RhdGUuTG9hZE1vcmUgfHxcbiAgICAgICAgKHRoaXMuX29wZXJhdGlvbiA9PT0gRnNMaXN0U3RhdGUuUGFnZUNoYW5nZSAmJiB0aGlzLl9sb2FkTW9yZUVuYWJsZWQpXG4gICAgKSB7XG4gICAgICB0aGlzLl9leHRlbmRSb3dzU3RhY2socm93cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVJvd3NTdGFjayhyb3dzKTtcbiAgICB9XG5cbiAgICB0aGlzLl9vcGVyYXRpb24gPSBGc0xpc3RTdGF0ZS5JZGxlO1xuXG4gICAgdGhpcy5fdXBkYXRlVmlzaWJsZVJvd3MoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY3VycmVudCBvcGVyYXRpb24gZm9yIGxpc3QgZGF0YSBmbG93XG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHNldE9wZXJhdGlvbih2YWx1ZTogRnNMaXN0U3RhdGUpIHtcbiAgICB0aGlzLl9vcGVyYXRpb24gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgcm93cyBmcm9tIHZpc2libGVcbiAgICovXG4gIHB1YmxpYyBjbGVhclJvd3MoKSB7XG4gICAgdGhpcy52aXNpYmxlUm93cyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgZGF0YSBmb3Igc3BlY2lmaWVkIHJvd1xuICAgKiBAcGFyYW0gdGFyZ2V0Um93XG4gICAqIEBwYXJhbSB0cmFja0J5XG4gICAqL1xuICBwdWJsaWMgcmVwbGFjZURhdGEoXG4gICAgdGFyZ2V0Um93OiBGc0xpc3RBYnN0cmFjdFJvdyxcbiAgICB0cmFja0J5PzogRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuLFxuICApIHtcbiAgICBjb25zdCByb3dJbmRleCA9IHRoaXMuX3Jvd3NTdGFjay5maW5kSW5kZXgoKGxpc3RSb3cpID0+IHtcbiAgICAgIHJldHVybiB0cmFja0J5KGxpc3RSb3cuZGF0YSwgdGFyZ2V0Um93KTtcbiAgICB9KTtcblxuICAgIGlmIChyb3dJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLl9yb3dzU3RhY2tbcm93SW5kZXhdID0gbmV3IFJvdyhcbiAgICAgICAgdGFyZ2V0Um93LFxuICAgICAgICBSb3dUeXBlLlNpbXBsZSxcbiAgICAgICAgeyBpbml0aWFsRXhwYW5kOiB0aGlzLl9pbml0aWFsRXhwYW5kIH0sXG4gICAgICApO1xuXG4gICAgICB0aGlzLl91cGRhdGVWaXNpYmxlUm93cygpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gXG4gICAgcmV0dXJuIGZhbHNlO1xuICAgIFxuXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGRhdGEgZm9yIHNwZWNpZmllZCByb3dcbiAgICogQHBhcmFtIHJvd3NcbiAgICogQHBhcmFtIHRyYWNrQnlcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVEYXRhKFxuICAgIHJvd3M6IEZzTGlzdEFic3RyYWN0Um93IHwgRnNMaXN0QWJzdHJhY3RSb3dbXSxcbiAgICB0cmFja0J5PzogRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuLFxuICApOiBib29sZWFuIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dzKSkge1xuICAgICAgbGV0IHVwZGF0ZVN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgcm93cy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnVwZGF0ZVJvdyhpdGVtLCB0cmFja0J5KSkge1xuICAgICAgICAgIHVwZGF0ZVN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fdXBkYXRlVmlzaWJsZVJvd3MoKTtcblxuICAgICAgcmV0dXJuIHVwZGF0ZVN1Y2Nlc3M7XG4gICAgfSBcbiAgICBjb25zdCB1cGRhdGVkID0gdGhpcy51cGRhdGVSb3cocm93cywgdHJhY2tCeSk7XG5cbiAgICB0aGlzLl91cGRhdGVWaXNpYmxlUm93cygpO1xuXG4gICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGRhdGEgZm9yIHNwZWNpZmllZCByb3dcbiAgICogQHBhcmFtIGRhdGFcbiAgICovXG4gIHB1YmxpYyByZW1vdmVEYXRhKGRhdGE6IEZzTGlzdEFic3RyYWN0Um93IHwgRnNMaXN0QWJzdHJhY3RSb3dbXSB8IEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlbW92ZWRSb3dzID0gW107XG5cbiAgICBjb25zdCBkZWZhdWx0VHJhY2tCeSA9IChyb3csIHRhcmdldCkgPT4ge1xuICAgICAgcmV0dXJuIHJvdyA9PT0gdGFyZ2V0O1xuICAgIH07XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgLy9cbiAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICByZW1vdmVkUm93cy5wdXNoKC4uLnRoaXMucmVtb3ZlUm93KGl0ZW0sIGRlZmF1bHRUcmFja0J5KSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24oZGF0YSkpIHtcbiAgICAgIHJlbW92ZWRSb3dzLnB1c2goLi4udGhpcy5yZW1vdmVSb3cobnVsbCwgKGRhdGEgYXMgRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuKSkpO1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoZGF0YSkpIHtcbiAgICAgIHJlbW92ZWRSb3dzLnB1c2goLi4udGhpcy5yZW1vdmVSb3coZGF0YSwgZGVmYXVsdFRyYWNrQnkpKTtcbiAgICB9XG5cbiAgICBpZiAocmVtb3ZlZFJvd3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fdXBkYXRlVmlzaWJsZVJvd3MoKTtcblxuICAgICAgdGhpcy5fcm93c1JlbW92ZWQkLm5leHQocmVtb3ZlZFJvd3MpO1xuICAgIH1cblxuICAgIHJldHVybiAhIXJlbW92ZWRSb3dzLmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBzd2FwUm93cyhyb3cxLCByb3cyLCBzZWxlY3RlZFJvd3M/OiBSb3dbXSwgaXNNdWx0aXBsZURyYWcgPSBmYWxzZSkge1xuICAgIGxldCB0bXBFbDtcbiAgICBjb25zdCByb3dzU3RhY2sgPSB0aGlzLl9yb3dzU3RhY2s7XG4gICAgY29uc3Qgcm93MUdsb2JhbEluZGV4ID0gcm93c1N0YWNrLmluZGV4T2Yocm93MSk7XG4gICAgY29uc3Qgcm93Mkdsb2JhbEluZGV4ID0gcm93c1N0YWNrLmluZGV4T2Yocm93Mik7XG5cbiAgICB0bXBFbCA9IHJvd3NTdGFja1tyb3cxR2xvYmFsSW5kZXhdO1xuICAgIHJvd3NTdGFja1tyb3cxR2xvYmFsSW5kZXhdID0gcm93c1N0YWNrW3JvdzJHbG9iYWxJbmRleF07XG4gICAgcm93c1N0YWNrW3JvdzJHbG9iYWxJbmRleF0gPSB0bXBFbDtcblxuICAgIGlmIChpc011bHRpcGxlRHJhZyAmJiBBcnJheS5pc0FycmF5KHNlbGVjdGVkUm93cykpIHtcbiAgICAgIGlmICghc2VsZWN0ZWRSb3dzLmluY2x1ZGVzKHJvdzEpKSB7XG4gICAgICAgIHNlbGVjdGVkUm93cyA9IFtyb3cxLCAuLi5zZWxlY3RlZFJvd3NdO1xuICAgICAgfVxuXG4gICAgICBzZWxlY3RlZFJvd3NcbiAgICAgICAgLmZpbHRlcigoc2VsZWN0ZWRSb3cpID0+IHtcbiAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRSb3cgIT09IHJvdzE7XG4gICAgICAgIH0pXG4gICAgICAgIC5mb3JFYWNoKChzZWxlY3RlZFJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkeCA9IHJvd3NTdGFjay5pbmRleE9mKHNlbGVjdGVkUm93KTtcbiAgICAgICAgICByb3dzU3RhY2suc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgIH0pO1xuXG4gICAgICBjb25zdCBpbmRleFRvSW5zZXJ0QWZ0ZXIgPSByb3dzU3RhY2suaW5kZXhPZih0bXBFbCk7XG5cbiAgICAgIHJvd3NTdGFjay5zcGxpY2UoaW5kZXhUb0luc2VydEFmdGVyLCAxKTtcblxuICAgICAgc2VsZWN0ZWRSb3dzLmZvckVhY2goKHNlbGVjdGVkUm93LCBvZmZzZXQpID0+IHtcbiAgICAgICAgcm93c1N0YWNrLnNwbGljZShpbmRleFRvSW5zZXJ0QWZ0ZXIgKyBvZmZzZXQsIDAsIHNlbGVjdGVkUm93KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX3Jvd3NTdGFjayA9IFsuLi5yb3dzU3RhY2tdO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveVJvd3NTdGFjaygpO1xuICAgIHRoaXMuX3N0b3JlLmNsZWFyKCk7XG5cbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVSb3dHcm91cChyb3dEYXRhKSB7XG4gICAgY29uc3Qgcm93ID0gdGhpcy52aXNpYmxlUm93cy5maW5kKCh2aXNpYmxlUm93KSA9PiB2aXNpYmxlUm93LmRhdGEgPT09IHJvd0RhdGEgKTtcbiAgICByb3cudG9nZ2xlUm93RXhwYW5kU3RhdHVzKCk7XG5cbiAgICB0aGlzLl91cGRhdGVWaXNpYmxlUm93cygpO1xuICB9XG5cbiAgcHVibGljIGZpbmlzaFJlb3JkZXIoKTogdm9pZCB7XG4gICAgLy8gVE9ETyBmaXhtZSByZW1vdmUgb3IgaW1wcm92ZVxuICAgIGlmICh0aGlzLmdyb3VwRW5hYmxlZCkge1xuICAgICAgbGV0IGdyb3VwO1xuICAgICAgdGhpcy5fcm93c1N0YWNrXG4gICAgICAgIC5mb3JFYWNoKChyb3csIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKHJvdy5pc0dyb3VwICYmIHJvdyAhPT0gZ3JvdXApIHtcbiAgICAgICAgICAgIGdyb3VwID0gcm93O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByb3cuaW5kZXggPSBpbmRleCAtIHRoaXMuX3Jvd3NTdGFjay5pbmRleE9mKGdyb3VwKSAtIDE7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVWaXNpYmxlUm93cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlUm93c1N0YWNrKHJvd3MpIHtcbiAgICB0aGlzLl9kZXN0cm95Um93c1N0YWNrKCk7XG5cbiAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcbiAgICAgIHRoaXMuX3N0b3JlLmNsZWFyKCk7XG4gICAgICB0aGlzLl9yb3dzU3RhY2sgPSBbLi4udGhpcy5ncm91cFJvd3NCeShyb3dzKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvd3MgPSByb3dzLm1hcCgocm93KSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUm93KFxuICAgICAgICAgIHJvdyxcbiAgICAgICAgICBSb3dUeXBlLlNpbXBsZSxcbiAgICAgICAgICB7IGluaXRpYWxFeHBhbmQ6IHRoaXMuX2luaXRpYWxFeHBhbmQgfSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fcm93c1N0YWNrID0gWy4uLnJvd3NdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2V4dGVuZFJvd3NTdGFjayhyb3dzKSB7XG4gICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICB0aGlzLl9yb3dzU3RhY2sgPSBbLi4udGhpcy5ncm91cFJvd3NCeShyb3dzKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvd3MgPSByb3dzLm1hcCgocm93KSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUm93KFxuICAgICAgICAgIHJvdyxcbiAgICAgICAgICBSb3dUeXBlLlNpbXBsZSxcbiAgICAgICAgICB7IGluaXRpYWxFeHBhbmQ6IHRoaXMuX2luaXRpYWxFeHBhbmQgfSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fcm93c1N0YWNrID0gWy4uLnRoaXMuX3Jvd3NTdGFjaywgLi4ucm93c107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVzdHJveVJvd3NTdGFjaygpIHtcbiAgICB0aGlzLl9yb3dzU3RhY2suZm9yRWFjaCgocm93KSA9PiByb3cuZGVzdHJveSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVZpc2libGVSb3dzKCkge1xuICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLl9yb3dzU3RhY2tcbiAgICAgIC5maWx0ZXIoKHJvdywgaW5kZXgpID0+IHtcbiAgICAgICAgcmV0dXJuICghKHJvdyBhcyBhbnkpLmlzQ2hpbGQgJiYgIXJvdy5pc0dyb3VwRm9vdGVyKSB8fCByb3cudmlzaWJsZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSb3coXG4gICAgdGFyZ2V0Um93OiBGc0xpc3RBYnN0cmFjdFJvdyxcbiAgICB0cmFja0J5PzogKGxpc3RSb3c6IEZzTGlzdEFic3RyYWN0Um93LCB0YXJnZXRSb3c/OiBGc0xpc3RBYnN0cmFjdFJvdykgPT4gYm9vbGVhbikge1xuXG4gICAgaWYgKHRyYWNrQnkgPT09IHZvaWQgMCkge1xuICAgICAgdHJhY2tCeSA9IChyb3csIHRhcmdldCkgPT4ge1xuICAgICAgICByZXR1cm4gcm93ID09PSB0YXJnZXQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldEluZGV4ID0gdGhpcy5fcm93c1N0YWNrLmZpbmRJbmRleCgobGlzdFJvdykgPT4gdHJhY2tCeShsaXN0Um93LmRhdGEsIHRhcmdldFJvdykpO1xuXG4gICAgaWYgKHRhcmdldEluZGV4ICE9PSAtMSkge1xuICAgICAgY29uc3QgdXBkYXRlVGFyZ2V0ID0gdGhpcy5fcm93c1N0YWNrW3RhcmdldEluZGV4XTtcbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0geyAuLi51cGRhdGVUYXJnZXQuZGF0YSwgLi4udGFyZ2V0Um93IH07XG5cbiAgICAgIHRoaXMuX3Jvd3NTdGFja1t0YXJnZXRJbmRleF0gPSBuZXcgUm93KFxuICAgICAgICB1cGRhdGVkRGF0YSxcbiAgICAgICAgdXBkYXRlVGFyZ2V0LnR5cGUsXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJlbnQ6IHVwZGF0ZVRhcmdldC5wYXJlbnQsXG4gICAgICAgICAgaW5pdGlhbEV4cGFuZDogdXBkYXRlVGFyZ2V0LmV4cGFuZGVkLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSByb3cgZnJvbVxuICAgKiBAcGFyYW0gdGFyZ2V0Um93XG4gICAqIEBwYXJhbSB0cmFja0J5XG4gICAqL1xuICBwcml2YXRlIHJlbW92ZVJvdyhcbiAgICB0YXJnZXRSb3c6IEZzTGlzdEFic3RyYWN0Um93IHwgbnVsbCxcbiAgICB0cmFja0J5PzogRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuLFxuICApIHtcblxuICAgIGNvbnN0IHJvd3MgPSB0aGlzLl9yb3dzU3RhY2s7XG4gICAgY29uc3QgcmVtb3ZlZFJvd3MgPSBbXTtcblxuICAgIHJvd3MuZm9yRWFjaCgobGlzdFJvdywgaW5kZXgpID0+IHtcbiAgICAgIGlmICh0cmFja0J5KGxpc3RSb3cuZGF0YSwgdGFyZ2V0Um93KSkge1xuICAgICAgICBjb25zdCByZW1vdmVkUm93ID0gcm93cy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIHJlbW92ZWRSb3dzLnB1c2gocmVtb3ZlZFJvdyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVtb3ZlZFJvd3M7XG4gIH1cblxuICAvKipcbiAgICogU3BsaXQgZXhpc3Rpbmcgcm93cyBieSBncm91cHMgYW5kIHN0b3JlIHRoZW0gZm9yIGZ1dHVyZSB1c2VcbiAgICovXG4gIHByaXZhdGUgZ3JvdXBSb3dzQnkocm93cykge1xuICAgIGlmICghdGhpcy5fZ3JvdXBCeUZuIHx8ICF0aGlzLl9jb21wYXJlQnlGbikge1xuICAgICAgcmV0dXJuIHJvd3M7IFxuICAgIH1cblxuICAgIGNvbnN0IGdyb3VwUm93czogR3JvdXBSb3dbXSA9IFtdO1xuICAgIGNvbnN0IGZvb3RlclJvd3MgPSBuZXcgTWFwKCk7XG5cbiAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgY29uc3QgbWFpbkdyb3VwID0gdGhpcy5fZ3JvdXBCeUZuKHJvdyk7XG4gICAgICBjb25zdCBtYWluR3JvdXBLZXkgPSB0aGlzLl9jb21wYXJlQnlGbihtYWluR3JvdXApO1xuXG4gICAgICBpZiAoIXRoaXMuX3N0b3JlLmhhcyhtYWluR3JvdXBLZXkpKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gbmV3IEdyb3VwUm93KFxuICAgICAgICAgIG1haW5Hcm91cCxcbiAgICAgICAgICB0aGlzLl9pbml0aWFsRXhwYW5kLFxuICAgICAgICApO1xuXG4gICAgICAgIGdyb3VwLmluZGV4ID0gZ3JvdXBSb3dzLmxlbmd0aDtcbiAgICAgICAgZ3JvdXBSb3dzLnB1c2goZ3JvdXApO1xuXG4gICAgICAgIGNvbnN0IGNoaWxkUm93ID0gbmV3IENoaWxkUm93KHJvdywgZ3JvdXApO1xuXG4gICAgICAgIHRoaXMuX3N0b3JlLnNldChtYWluR3JvdXBLZXksIGdyb3VwKTtcbiAgICAgICAgZ3JvdXAuY2hpbGRyZW4ucHVzaChjaGlsZFJvdyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuX3N0b3JlLmdldChtYWluR3JvdXBLZXkpO1xuICAgICAgICBjb25zdCBjaGlsZFJvdyA9IG5ldyBDaGlsZFJvdyhyb3csIGdyb3VwKTtcblxuICAgICAgICBncm91cC5jaGlsZHJlbi5wdXNoKGNoaWxkUm93KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGdyb3VwUm93cy5mb3JFYWNoKChncm91cFJvdykgPT4ge1xuICAgICAgY29uc3QgZm9vdGVySW5kZXggPSBncm91cFJvdy5jaGlsZHJlblxuICAgICAgICAuZmluZEluZGV4KChyb3cpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fZm9vdGVyUm93Rm4ocm93LmRhdGEsIHtcbiAgICAgICAgICAgIC4uLmdyb3VwUm93LmRhdGEsXG4gICAgICAgICAgICBjaGlsZHJlbjogZ3JvdXBSb3cuY2hpbGRyZW5EYXRhLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgaWYgKGZvb3RlckluZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCBmb290ZXJSb3cgPSBncm91cFJvdy5jaGlsZHJlbi5zcGxpY2UoZm9vdGVySW5kZXgsIGZvb3RlckluZGV4ICsgMSlbMF07XG4gICAgICAgIGdyb3VwUm93LmNoaWxkcmVuLnB1c2gobmV3IEdyb3VwRm9vdGVyUm93KGZvb3RlclJvdy5kYXRhLCBncm91cFJvdykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fc3RvcmUudmFsdWVzKCkpXG4gICAgICAucmVkdWNlKChhY2MsIGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uaXNHcm91cCkge1xuICAgICAgICAgIGFjYy5wdXNoKGl0ZW0sIC4uLml0ZW0uY2hpbGRyZW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFjYy5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIFtdKTtcbiAgfVxufVxuIl19
|
|
@@ -54,7 +54,7 @@ export class ExternalParamsController {
|
|
|
54
54
|
}
|
|
55
55
|
// Set initial pagination params
|
|
56
56
|
// The same initial, but for sorting placed in list-controller "tranformTemplatesToColumns" method
|
|
57
|
-
if (this._paginator.enabled
|
|
57
|
+
if (this._paginator.enabled) {
|
|
58
58
|
if (this._limit) {
|
|
59
59
|
this._paginator.setLimit(this._limit);
|
|
60
60
|
}
|
|
@@ -144,4 +144,4 @@ export class ExternalParamsController {
|
|
|
144
144
|
history.replaceState({}, null, url.pathname + url.search);
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2NsYXNzZXMvZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBYzNDLE1BQU0sT0FBTyx3QkFBd0I7SUFXbkMsWUFDVSxPQUFlLEVBQ2YsTUFBc0IsRUFDdEIsWUFBbUMsRUFDbkMsVUFBZ0MsRUFDaEMsUUFBMkIsRUFDM0IsbUJBQTRCO1FBTDVCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUFDbkMsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7UUFDaEMsYUFBUSxHQUFSLFFBQVEsQ0FBbUI7UUFDM0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFTO1FBZjlCLG9CQUFlLEdBQW1CO1lBQ3hDLElBQUksRUFBRSxJQUFJO1lBQ1YsS0FBSyxFQUFFLElBQUk7WUFDWCxRQUFRLEVBQUUsSUFBSTtZQUNkLGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQUM7UUFFTSxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVV0QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQzdELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3JCLFNBQVMsRUFBRSxJQUFJLENBQUMs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LFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQYWdpbmF0aW9uQ29udHJvbGxlciB9IGZyb20gJy4uL2NsYXNzZXMvcGFnaW5hdGlvbi1jb250cm9sbGVyJztcbmltcG9ydCB7IFNvcnRpbmdDb250cm9sbGVyIH0gZnJvbSAnLi4vY2xhc3Nlcy9zb3J0aW5nLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgRnNMaXN0U29ydENvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgRXh0ZXJuYWxQYXJhbXMsXG4gIEV4dGVybmFsUXVlcnlQYWdpbmF0aW9uLFxuICBFeHRlcm5hbFF1ZXJ5U29ydGluZyxcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRlcm5hbC1wYXJhbXMuaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgUGVyc2lzdGFuY2VDb250cm9sbGVyIH0gZnJvbSAnLi9wZXJzaXN0YW5jZS1jb250cm9sbGVyJztcblxuXG5leHBvcnQgY2xhc3MgRXh0ZXJuYWxQYXJhbXNDb250cm9sbGVyIHtcblxuICBwcml2YXRlIF9leHRlcm5hbFBhcmFtczogRXh0ZXJuYWxQYXJhbXMgPSB7XG4gICAgcGFnZTogbnVsbCxcbiAgICBsaW1pdDogbnVsbCxcbiAgICBzb3J0TmFtZTogbnVsbCxcbiAgICBzb3J0RGlyZWN0aW9uOiBudWxsLFxuICB9O1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIF9yb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBfcGVyc2lzdGFuY2U6IFBlcnNpc3RhbmNlQ29udHJvbGxlcixcbiAgICBwcml2YXRlIF9wYWdpbmF0b3I6IFBhZ2luYXRpb25Db250cm9sbGVyLFxuICAgIHByaXZhdGUgX3NvcnRpbmc6IFNvcnRpbmdDb250cm9sbGVyLFxuICAgIHByaXZhdGUgX3F1ZXJ5UGFyYW1zRW5hYmxlZDogYm9vbGVhbixcbiAgKSB7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGV4dGVybmFsU29ydGluZygpOiBGc0xpc3RTb3J0Q29uZmlnIHtcbiAgICBpZiAoIXRoaXMuX2VuYWJsZWQgfHwgIXRoaXMuX3NvcnROYW1lIHx8ICF0aGlzLl9zb3J0RGlyZWN0aW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IHRoaXMuX3NvcnROYW1lLFxuICAgICAgZGlyZWN0aW9uOiB0aGlzLl9zb3J0RGlyZWN0aW9uLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldCBfZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcXVlcnlQYXJhbXNFbmFibGVkIHx8IHRoaXMuX3BlcnNpc3RhbmNlLmVuYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldCBfcGFnZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9leHRlcm5hbFBhcmFtcy5wYWdlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2xpbWl0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2V4dGVybmFsUGFyYW1zLmxpbWl0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX3NvcnROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2V4dGVybmFsUGFyYW1zLnNvcnROYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX3NvcnREaXJlY3Rpb24oKTogJ2FzYycgfCAnZGVzYycge1xuICAgIHJldHVybiB0aGlzLl9leHRlcm5hbFBhcmFtcy5zb3J0RGlyZWN0aW9uO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKSB7XG5cbiAgICAvLyBSZXN0b3JlIGZyb20gbG9jYWxTdG9yYWdlIHBhcmFtZXRlcnMgaWYgcGVyc2lzdGFuY2UgZW5hYmxlZFxuICAgIGlmICh0aGlzLl9wZXJzaXN0YW5jZS5lbmFibGVkKSB7XG4gICAgICB0aGlzLl9yZXN0b3JlUGFnaW5hdGlvblBhcmFtcyh0aGlzLl9wZXJzaXN0YW5jZS5nZXREYXRhRnJvbVNjb3BlKCdwYWdpbmcnKSk7XG4gICAgICB0aGlzLl9yZXN0b3JlU29ydGluZ1BhcmFtcyh0aGlzLl9wZXJzaXN0YW5jZS5nZXREYXRhRnJvbVNjb3BlKCdzb3J0aW5nJykpO1xuICAgIH1cblxuICAgIC8vIFJlc3RvcmUgZnJvbSBxdWVyeVBhcmFtcyBhbmQgb3ZlcnJpZGUgaWYgcGVyc2lzdGFuY2UgYWxyZWFkeSBoYWQgdmFsdWVzIGZvciB0aG9zZSBwYXJhbXNcbiAgICBpZiAodGhpcy5fcXVlcnlQYXJhbXNFbmFibGVkKSB7XG4gICAgICB0aGlzLl9yZXN0b3JlUGFnaW5hdGlvblBhcmFtcyh0aGlzLl9yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyBhcyBFeHRlcm5hbFF1ZXJ5UGFnaW5hdGlvbik7XG4gICAgICB0aGlzLl9yZXN0b3JlU29ydGluZ1BhcmFtcyh0aGlzLl9yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyBhcyBFeHRlcm5hbFF1ZXJ5U29ydGluZyk7XG4gICAgfVxuXG4gICAgLy8gU2V0IGluaXRpYWwgcGFnaW5hdGlvbiBwYXJhbXNcbiAgICAvLyBUaGUgc2FtZSBpbml0aWFsLCBidXQgZm9yIHNvcnRpbmcgcGxhY2VkIGluIGxpc3QtY29udHJvbGxlciBcInRyYW5mb3JtVGVtcGxhdGVzVG9Db2x1bW5zXCIgbWV0aG9kXG4gICAgaWYgKHRoaXMuX3BhZ2luYXRvci5lbmFibGVkICYmICF0aGlzLl9wYWdpbmF0b3IuaW5maW5pdHlTY3JvbGxFbmFibGVkKSB7XG4gICAgICBpZiAodGhpcy5fbGltaXQpIHtcbiAgICAgICAgdGhpcy5fcGFnaW5hdG9yLnNldExpbWl0KHRoaXMuX2xpbWl0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX3BhZ2UpIHtcbiAgICAgICAgdGhpcy5fcGFnaW5hdG9yLmdvVG9QYWdlKHRoaXMuX3BhZ2UpO1xuXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHBhZ2luYXRpb24gaW4gc3RvcmVzXG4gICAgdGhpcy5fdXBkYXRlUGFnaW5hdGlvblBhcmFtcyh0aGlzLl9wYWdpbmF0b3IucXVlcnlQYWdlU3RyYXRlZ3kpO1xuXG4gICAgdGhpcy5fbGlzdGVuUGFnaW5hdG9yQ2hhbmdlcygpO1xuICAgIHRoaXMuX2xpc3RlblNvcnRpbmdDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJTb3J0aW5nUGFyYW1zKCkge1xuICAgIHRoaXMuX3VwZGF0ZVNvcnRpbmdQYXJhbXMobnVsbCwgbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc3RvcmVQYWdpbmF0aW9uUGFyYW1zKHZhbHVlczogRXh0ZXJuYWxRdWVyeVBhZ2luYXRpb24pIHtcbiAgICBpZiAodmFsdWVzPy5wYWdlKSB7XG4gICAgICB0aGlzLl9leHRlcm5hbFBhcmFtcy5wYWdlID0gK3ZhbHVlcy5wYWdlO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZXM/LmxpbWl0KSB7XG4gICAgICB0aGlzLl9leHRlcm5hbFBhcmFtcy5saW1pdCA9ICt2YWx1ZXMubGltaXQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVzdG9yZVNvcnRpbmdQYXJhbXModmFsdWVzOiBFeHRlcm5hbFF1ZXJ5U29ydGluZykge1xuICAgIGlmICh2YWx1ZXM/LnNvcnROYW1lKSB7XG4gICAgICB0aGlzLl9leHRlcm5hbFBhcmFtcy5zb3J0TmFtZSA9IHZhbHVlcy5zb3J0TmFtZTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWVzPy5zb3J0RGlyZWN0aW9uKSB7XG4gICAgICB0aGlzLl9leHRlcm5hbFBhcmFtcy5zb3J0RGlyZWN0aW9uID0gdmFsdWVzLnNvcnREaXJlY3Rpb247XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuUGFnaW5hdG9yQ2hhbmdlcygpIHtcbiAgICBtZXJnZShcbiAgICAgIHRoaXMuX3BhZ2luYXRvci5wYWdlQ2hhbmdlZCQsXG4gICAgICB0aGlzLl9wYWdpbmF0b3IucGFnZXMkLFxuICAgICAgdGhpcy5fcGFnaW5hdG9yLnBhZ2VSZXNldCQsXG4gICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fdXBkYXRlUGFnaW5hdGlvblBhcmFtcyh0aGlzLl9wYWdpbmF0b3IucXVlcnlQYWdlU3RyYXRlZ3kpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5Tb3J0aW5nQ2hhbmdlcygpIHtcbiAgICBtZXJnZShcbiAgICAgIHRoaXMuX3NvcnRpbmcuaW5pdGlhbGl6ZWQkLFxuICAgICAgdGhpcy5fc29ydGluZy5zb3J0aW5nQ2hhbmdlZCQsXG4gICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc29ydGluZyA9IHRoaXMuX3NvcnRpbmcudmFsdWU7XG5cbiAgICAgICAgaWYgKHNvcnRpbmcpIHtcbiAgICAgICAgICB0aGlzLl91cGRhdGVTb3J0aW5nUGFyYW1zKHNvcnRpbmcudmFsdWUsIHNvcnRpbmcuZGlyZWN0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNsZWFyU29ydGluZ1BhcmFtcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNvcnRpbmdQYXJhbXMobmFtZTogc3RyaW5nLCBkaXJlY3Rpb246IHN0cmluZykge1xuICAgIGlmICh0aGlzLl9xdWVyeVBhcmFtc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMuX3JlcGxhY2VTdGF0ZSh7XG4gICAgICAgIHNvcnROYW1lOiBuYW1lLFxuICAgICAgICBzb3J0RGlyZWN0aW9uOiBkaXJlY3Rpb24sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcGVyc2lzdGFuY2UuZW5hYmxlZCkge1xuICAgICAgaWYgKG5hbWUgJiYgZGlyZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuX3BlcnNpc3RhbmNlLnNhdmVEYXRhVG9TY29wZSgnc29ydGluZycsIHsgc29ydE5hbWU6IG5hbWUsIHNvcnREaXJlY3Rpb246IGRpcmVjdGlvbiB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3BlcnNpc3RhbmNlLnNhdmVEYXRhVG9TY29wZSgnc29ydGluZycsIG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVBhZ2luYXRpb25QYXJhbXMocGFyYW1zKSB7XG4gICAgaWYgKHRoaXMuX3F1ZXJ5UGFyYW1zRW5hYmxlZCkge1xuICAgICAgdGhpcy5fcmVwbGFjZVN0YXRlKHBhcmFtcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3BlcnNpc3RhbmNlLmVuYWJsZWQpIHtcbiAgICAgIHRoaXMuX3BlcnNpc3RhbmNlLnNhdmVEYXRhVG9TY29wZSgncGFnaW5nJywgcGFyYW1zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZXBsYWNlU3RhdGUoZGF0YSkge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuXG4gICAgT2JqZWN0LmtleXMoZGF0YSlcbiAgICAgIC5maWx0ZXIoKG5hbWUpID0+IGRhdGFbbmFtZV0gIT09IHVuZGVmaW5lZCAmJiBkYXRhW25hbWVdICE9PSBudWxsKVxuICAgICAgLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQobmFtZSxkYXRhW25hbWVdKTtcbiAgICAgIH0pO1xuXG4gICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sIG51bGwsIHVybC5wYXRobmFtZSArIHVybC5zZWFyY2gpO1xuICB9XG59XG4iXX0=
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2NsYXNzZXMvZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBYzNDLE1BQU0sT0FBTyx3QkFBd0I7SUFXbkMsWUFDVSxPQUFlLEVBQ2YsTUFBc0IsRUFDdEIsWUFBbUMsRUFDbkMsVUFBZ0MsRUFDaEMsUUFBMkIsRUFDM0IsbUJBQTRCO1FBTDVCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUFDbkMsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7UUFDaEMsYUFBUSxHQUFSLFFBQVEsQ0FBbUI7UUFDM0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFTO1FBZjlCLG9CQUFlLEdBQW1CO1lBQ3hDLElBQUksRUFBRSxJQUFJO1lBQ1YsS0FBSyxFQUFFLElBQUk7WUFDWCxRQUFRLEVBQUUsSUFBSTtZQUNkLGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQUM7UUFFTSxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVV0QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQzdELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3JCLFNBQVMsRUFBRSxJQUFJLENBQUMs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QUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IG1lcmdlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFBhZ2luYXRpb25Db250cm9sbGVyIH0gZnJvbSAnLi4vY2xhc3Nlcy9wYWdpbmF0aW9uLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgU29ydGluZ0NvbnRyb2xsZXIgfSBmcm9tICcuLi9jbGFzc2VzL3NvcnRpbmctY29udHJvbGxlcic7XG5pbXBvcnQgeyBGc0xpc3RTb3J0Q29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBFeHRlcm5hbFBhcmFtcyxcbiAgRXh0ZXJuYWxRdWVyeVBhZ2luYXRpb24sXG4gIEV4dGVybmFsUXVlcnlTb3J0aW5nLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzL2V4dGVybmFsLXBhcmFtcy5pbnRlcmZhY2UnO1xuXG5pbXBvcnQgeyBQZXJzaXN0YW5jZUNvbnRyb2xsZXIgfSBmcm9tICcuL3BlcnNpc3RhbmNlLWNvbnRyb2xsZXInO1xuXG5cbmV4cG9ydCBjbGFzcyBFeHRlcm5hbFBhcmFtc0NvbnRyb2xsZXIge1xuXG4gIHByaXZhdGUgX2V4dGVybmFsUGFyYW1zOiBFeHRlcm5hbFBhcmFtcyA9IHtcbiAgICBwYWdlOiBudWxsLFxuICAgIGxpbWl0OiBudWxsLFxuICAgIHNvcnROYW1lOiBudWxsLFxuICAgIHNvcnREaXJlY3Rpb246IG51bGwsXG4gIH07XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIF9wZXJzaXN0YW5jZTogUGVyc2lzdGFuY2VDb250cm9sbGVyLFxuICAgIHByaXZhdGUgX3BhZ2luYXRvcjogUGFnaW5hdGlvbkNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfc29ydGluZzogU29ydGluZ0NvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfcXVlcnlQYXJhbXNFbmFibGVkOiBib29sZWFuLFxuICApIHtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZXh0ZXJuYWxTb3J0aW5nKCk6IEZzTGlzdFNvcnRDb25maWcge1xuICAgIGlmICghdGhpcy5fZW5hYmxlZCB8fCAhdGhpcy5fc29ydE5hbWUgfHwgIXRoaXMuX3NvcnREaXJlY3Rpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogdGhpcy5fc29ydE5hbWUsXG4gICAgICBkaXJlY3Rpb246IHRoaXMuX3NvcnREaXJlY3Rpb24sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9lbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtc0VuYWJsZWQgfHwgdGhpcy5fcGVyc2lzdGFuY2UuZW5hYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9wYWdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2V4dGVybmFsUGFyYW1zLnBhZ2U7XG4gIH1cblxuICBwcml2YXRlIGdldCBfbGltaXQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZXh0ZXJuYWxQYXJhbXMubGltaXQ7XG4gIH1cblxuICBwcml2YXRlIGdldCBfc29ydE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZXh0ZXJuYWxQYXJhbXMuc29ydE5hbWU7XG4gIH1cblxuICBwcml2YXRlIGdldCBfc29ydERpcmVjdGlvbigpOiAnYXNjJyB8ICdkZXNjJyB7XG4gICAgcmV0dXJuIHRoaXMuX2V4dGVybmFsUGFyYW1zLnNvcnREaXJlY3Rpb247XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpIHtcblxuICAgIC8vIFJlc3RvcmUgZnJvbSBsb2NhbFN0b3JhZ2UgcGFyYW1ldGVycyBpZiBwZXJzaXN0YW5jZSBlbmFibGVkXG4gICAgaWYgKHRoaXMuX3BlcnNpc3RhbmNlLmVuYWJsZWQpIHtcbiAgICAgIHRoaXMuX3Jlc3RvcmVQYWdpbmF0aW9uUGFyYW1zKHRoaXMuX3BlcnNpc3RhbmNlLmdldERhdGFGcm9tU2NvcGUoJ3BhZ2luZycpKTtcbiAgICAgIHRoaXMuX3Jlc3RvcmVTb3J0aW5nUGFyYW1zKHRoaXMuX3BlcnNpc3RhbmNlLmdldERhdGFGcm9tU2NvcGUoJ3NvcnRpbmcnKSk7XG4gICAgfVxuXG4gICAgLy8gUmVzdG9yZSBmcm9tIHF1ZXJ5UGFyYW1zIGFuZCBvdmVycmlkZSBpZiBwZXJzaXN0YW5jZSBhbHJlYWR5IGhhZCB2YWx1ZXMgZm9yIHRob3NlIHBhcmFtc1xuICAgIGlmICh0aGlzLl9xdWVyeVBhcmFtc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMuX3Jlc3RvcmVQYWdpbmF0aW9uUGFyYW1zKHRoaXMuX3JvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zIGFzIEV4dGVybmFsUXVlcnlQYWdpbmF0aW9uKTtcbiAgICAgIHRoaXMuX3Jlc3RvcmVTb3J0aW5nUGFyYW1zKHRoaXMuX3JvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zIGFzIEV4dGVybmFsUXVlcnlTb3J0aW5nKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgaW5pdGlhbCBwYWdpbmF0aW9uIHBhcmFtc1xuICAgIC8vIFRoZSBzYW1lIGluaXRpYWwsIGJ1dCBmb3Igc29ydGluZyBwbGFjZWQgaW4gbGlzdC1jb250cm9sbGVyIFwidHJhbmZvcm1UZW1wbGF0ZXNUb0NvbHVtbnNcIiBtZXRob2RcbiAgICBpZiAodGhpcy5fcGFnaW5hdG9yLmVuYWJsZWQpIHtcbiAgICAgIGlmICh0aGlzLl9saW1pdCkge1xuICAgICAgICB0aGlzLl9wYWdpbmF0b3Iuc2V0TGltaXQodGhpcy5fbGltaXQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fcGFnZSkge1xuICAgICAgICB0aGlzLl9wYWdpbmF0b3IuZ29Ub1BhZ2UodGhpcy5fcGFnZSk7XG5cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgcGFnaW5hdGlvbiBpbiBzdG9yZXNcbiAgICB0aGlzLl91cGRhdGVQYWdpbmF0aW9uUGFyYW1zKHRoaXMuX3BhZ2luYXRvci5xdWVyeVBhZ2VTdHJhdGVneSk7XG5cbiAgICB0aGlzLl9saXN0ZW5QYWdpbmF0b3JDaGFuZ2VzKCk7XG4gICAgdGhpcy5fbGlzdGVuU29ydGluZ0NoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclNvcnRpbmdQYXJhbXMoKSB7XG4gICAgdGhpcy5fdXBkYXRlU29ydGluZ1BhcmFtcyhudWxsLCBudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVzdG9yZVBhZ2luYXRpb25QYXJhbXModmFsdWVzOiBFeHRlcm5hbFF1ZXJ5UGFnaW5hdGlvbikge1xuICAgIGlmICh2YWx1ZXM/LnBhZ2UpIHtcbiAgICAgIHRoaXMuX2V4dGVybmFsUGFyYW1zLnBhZ2UgPSArdmFsdWVzLnBhZ2U7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlcz8ubGltaXQpIHtcbiAgICAgIHRoaXMuX2V4dGVybmFsUGFyYW1zLmxpbWl0ID0gK3ZhbHVlcy5saW1pdDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZXN0b3JlU29ydGluZ1BhcmFtcyh2YWx1ZXM6IEV4dGVybmFsUXVlcnlTb3J0aW5nKSB7XG4gICAgaWYgKHZhbHVlcz8uc29ydE5hbWUpIHtcbiAgICAgIHRoaXMuX2V4dGVybmFsUGFyYW1zLnNvcnROYW1lID0gdmFsdWVzLnNvcnROYW1lO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZXM/LnNvcnREaXJlY3Rpb24pIHtcbiAgICAgIHRoaXMuX2V4dGVybmFsUGFyYW1zLnNvcnREaXJlY3Rpb24gPSB2YWx1ZXMuc29ydERpcmVjdGlvbjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5QYWdpbmF0b3JDaGFuZ2VzKCkge1xuICAgIG1lcmdlKFxuICAgICAgdGhpcy5fcGFnaW5hdG9yLnBhZ2VDaGFuZ2VkJCxcbiAgICAgIHRoaXMuX3BhZ2luYXRvci5wYWdlcyQsXG4gICAgICB0aGlzLl9wYWdpbmF0b3IucGFnZVJlc2V0JCxcbiAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl91cGRhdGVQYWdpbmF0aW9uUGFyYW1zKHRoaXMuX3BhZ2luYXRvci5xdWVyeVBhZ2VTdHJhdGVneSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlblNvcnRpbmdDaGFuZ2VzKCkge1xuICAgIG1lcmdlKFxuICAgICAgdGhpcy5fc29ydGluZy5pbml0aWFsaXplZCQsXG4gICAgICB0aGlzLl9zb3J0aW5nLnNvcnRpbmdDaGFuZ2VkJCxcbiAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBzb3J0aW5nID0gdGhpcy5fc29ydGluZy52YWx1ZTtcblxuICAgICAgICBpZiAoc29ydGluZykge1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZVNvcnRpbmdQYXJhbXMoc29ydGluZy52YWx1ZSwgc29ydGluZy5kaXJlY3Rpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY2xlYXJTb3J0aW5nUGFyYW1zKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlU29ydGluZ1BhcmFtcyhuYW1lOiBzdHJpbmcsIGRpcmVjdGlvbjogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuX3F1ZXJ5UGFyYW1zRW5hYmxlZCkge1xuICAgICAgdGhpcy5fcmVwbGFjZVN0YXRlKHtcbiAgICAgICAgc29ydE5hbWU6IG5hbWUsXG4gICAgICAgIHNvcnREaXJlY3Rpb246IGRpcmVjdGlvbixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9wZXJzaXN0YW5jZS5lbmFibGVkKSB7XG4gICAgICBpZiAobmFtZSAmJiBkaXJlY3Rpb24pIHtcbiAgICAgICAgdGhpcy5fcGVyc2lzdGFuY2Uuc2F2ZURhdGFUb1Njb3BlKCdzb3J0aW5nJywgeyBzb3J0TmFtZTogbmFtZSwgc29ydERpcmVjdGlvbjogZGlyZWN0aW9uIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcGVyc2lzdGFuY2Uuc2F2ZURhdGFUb1Njb3BlKCdzb3J0aW5nJywgbnVsbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlUGFnaW5hdGlvblBhcmFtcyhwYXJhbXMpIHtcbiAgICBpZiAodGhpcy5fcXVlcnlQYXJhbXNFbmFibGVkKSB7XG4gICAgICB0aGlzLl9yZXBsYWNlU3RhdGUocGFyYW1zKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcGVyc2lzdGFuY2UuZW5hYmxlZCkge1xuICAgICAgdGhpcy5fcGVyc2lzdGFuY2Uuc2F2ZURhdGFUb1Njb3BlKCdwYWdpbmcnLCBwYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3JlcGxhY2VTdGF0ZShkYXRhKSB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG5cbiAgICBPYmplY3Qua2V5cyhkYXRhKVxuICAgICAgLmZpbHRlcigobmFtZSkgPT4gZGF0YVtuYW1lXSAhPT0gdW5kZWZpbmVkICYmIGRhdGFbbmFtZV0gIT09IG51bGwpXG4gICAgICAuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChuYW1lLGRhdGFbbmFtZV0pO1xuICAgICAgfSk7XG5cbiAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgbnVsbCwgdXJsLnBhdGhuYW1lICsgdXJsLnNlYXJjaCk7XG4gIH1cbn1cbiJdfQ==
|