@hestia-earth/ui-components 0.27.62 → 0.27.64

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.
Files changed (21) hide show
  1. package/common/drawer-container/sidenav.store.d.ts +15 -0
  2. package/cycles/cycles-completeness/cycles-completeness.component.d.ts +27 -27
  3. package/cycles/cycles-nodes/cycles-nodes.component.d.ts +47 -46
  4. package/engine/engine-models-stage-deep/engine-models-stage-deep.component.d.ts +2 -2
  5. package/esm2022/common/drawer-container/drawer-container.component.mjs +8 -8
  6. package/esm2022/common/drawer-container/sidenav.store.mjs +2 -2
  7. package/esm2022/cycles/cycles-completeness/cycles-completeness.component.mjs +14 -8
  8. package/esm2022/cycles/cycles-nodes/cycles-nodes.component.mjs +13 -6
  9. package/esm2022/engine/engine-models-stage-deep/engine-models-stage-deep.component.mjs +16 -5
  10. package/esm2022/files/files-error.model.mjs +6 -1
  11. package/esm2022/files/files-form/files-form.component.mjs +3 -3
  12. package/esm2022/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +13 -6
  13. package/esm2022/node/node-logs-models/node-logs-models.component.mjs +3 -3
  14. package/esm2022/node/node-value-details/node-value-details.component.mjs +3 -3
  15. package/esm2022/sites/sites-management-chart/sites-management-chart.component.mjs +4 -3
  16. package/esm2022/sites/sites-nodes/sites-nodes.component.mjs +17 -9
  17. package/fesm2022/hestia-earth-ui-components.mjs +80 -39
  18. package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
  19. package/impact-assessments/impact-assessments-products/impact-assessments-products.component.d.ts +38 -37
  20. package/package.json +1 -1
  21. package/sites/sites-nodes/sites-nodes.component.d.ts +39 -38
@@ -1,3 +1,18 @@
1
+ export declare const initialState: {
2
+ minWidth: number;
3
+ maxWidth: number;
4
+ width: number;
5
+ expanded: boolean;
6
+ side: "left" | "right";
7
+ resizeEvent: {
8
+ isResizing: boolean;
9
+ startingCursorX: number;
10
+ startingWidth: number;
11
+ newWidth: number;
12
+ };
13
+ contentContainerSpacing: number;
14
+ minMenuDistance: number;
15
+ };
1
16
  export declare const sidenavStore: import("@angular/core").Type<{
2
17
  expanded: import("@angular/core").Signal<boolean>;
3
18
  maxWidth: import("@angular/core").Signal<number>;
@@ -7,34 +7,33 @@ declare enum View {
7
7
  logs = "Recalculations logs"
8
8
  }
9
9
  export declare class CyclesCompletenessComponent {
10
- private nodeStoreService;
10
+ private readonly modalService;
11
+ private readonly nodeStoreService;
11
12
  protected readonly faDownload: IconDefinition;
12
- protected dataState: import("@angular/core").InputSignal<DataState>;
13
- protected schemaBaseUrl: string;
14
- protected defaultLabel: (node?: any) => any;
15
- protected keyToLabel: (key: string) => string;
16
- protected getCompleteness: (cycle: any) => any;
17
- protected headerKeys: string[];
18
- protected showDownload: boolean;
19
- protected nodeKey: NonBlankNodesKey;
20
- protected View: typeof View;
21
- protected viewIcon: {
13
+ protected readonly dataState: import("@angular/core").InputSignal<DataState>;
14
+ protected readonly schemaBaseUrl: string;
15
+ protected readonly defaultLabel: (node?: any) => any;
16
+ protected readonly keyToLabel: (key: string) => string;
17
+ protected readonly getCompleteness: (cycle: any) => any;
18
+ protected readonly nodeKey = NonBlankNodesKey.completeness;
19
+ protected readonly View: typeof View;
20
+ protected readonly viewIcon: {
22
21
  "Table view": IconDefinition;
23
22
  "Recalculations logs": IconDefinition;
24
23
  };
25
- private showView;
26
- protected views: import("@angular/core").Signal<View[]>;
27
- protected selectedView: import("@angular/core").WritableSignal<View>;
28
- private originalCycles;
29
- private _allCycles;
30
- protected cycles: import("@angular/core").Signal<ICycleJSONLD[]>;
31
- private selectedIndex;
32
- private ogirinalSelectedCycle;
33
- private selectedCycle;
34
- protected selectedLogsKey: import("@angular/core").Signal<any>;
35
- protected selectedOriginalValues: import("@angular/core").Signal<any>;
36
- protected selectedRecalculatedValues: import("@angular/core").Signal<any>;
37
- protected selectedNode: import("@angular/core").Signal<{
24
+ private readonly showView;
25
+ protected readonly views: import("@angular/core").Signal<View[]>;
26
+ protected readonly selectedView: import("@angular/core").WritableSignal<View>;
27
+ private readonly originalCycles;
28
+ private readonly _allCycles;
29
+ protected readonly cycles: import("@angular/core").Signal<ICycleJSONLD[]>;
30
+ private readonly selectedIndex;
31
+ private readonly ogirinalSelectedCycle;
32
+ private readonly selectedCycle;
33
+ protected readonly selectedLogsKey: import("@angular/core").Signal<any>;
34
+ protected readonly selectedOriginalValues: import("@angular/core").Signal<any>;
35
+ protected readonly selectedRecalculatedValues: import("@angular/core").Signal<any>;
36
+ protected readonly selectedNode: import("@angular/core").Signal<{
38
37
  '@type': NodeType;
39
38
  type: NodeType;
40
39
  dataState: DataState;
@@ -89,9 +88,9 @@ export declare class CyclesCompletenessComponent {
89
88
  '@id': string;
90
89
  name: string;
91
90
  }>;
92
- protected hasData: import("@angular/core").Signal<number>;
93
- protected isOriginal: import("@angular/core").Signal<boolean>;
94
- protected completenessKeys: import("@angular/core").Signal<string[]>;
91
+ protected readonly hasData: import("@angular/core").Signal<number>;
92
+ protected readonly isOriginal: import("@angular/core").Signal<boolean>;
93
+ protected readonly completenessKeys: import("@angular/core").Signal<string[]>;
95
94
  constructor();
96
95
  protected trackById(_index: number, item: ICycleJSONLD): string;
97
96
  protected selectIndex({ target: { value } }: {
@@ -99,6 +98,7 @@ export declare class CyclesCompletenessComponent {
99
98
  value: any;
100
99
  };
101
100
  }): void;
101
+ protected showDownload(): void;
102
102
  static ɵfac: i0.ɵɵFactoryDeclaration<CyclesCompletenessComponent, never>;
103
103
  static ɵcmp: i0.ɵɵComponentDeclaration<CyclesCompletenessComponent, "he-cycles-completeness", never, { "dataState": { "alias": "dataState"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
104
104
  }
@@ -18,42 +18,42 @@ export declare enum CycleNodesKeyGroup {
18
18
  }
19
19
  type groupedNode = Animal | Transformation;
20
20
  export declare class CyclesNodesComponent {
21
+ private readonly modalService;
21
22
  private nodeStoreService;
22
23
  protected readonly faDownload: IconDefinition;
23
- protected dataState: import("@angular/core").InputSignal<DataState>;
24
- protected nodeKeys: import("@angular/core").InputSignal<BlankNodesKey[]>;
25
- protected nodeKeyGroup: import("@angular/core").InputSignal<CycleNodesKeyGroup>;
26
- protected BlankNodesKey: typeof BlankNodesKey;
27
- protected firstNodeKey: import("@angular/core").Signal<BlankNodesKey>;
28
- protected selectedNodeKey: import("@angular/core").WritableSignal<BlankNodesKey>;
29
- protected selectedGroupTerm: import("@angular/core").WritableSignal<Term>;
30
- protected schemaBaseUrl: string;
31
- protected propertyValue: (value: import("@hestia-earth/utils/dist/term").propertyValueType | import("@hestia-earth/utils/dist/term").propertyValueType[], termId?: string) => import("@hestia-earth/utils/dist/term").propertyValueType;
32
- protected defaultLabel: (node?: any) => any;
33
- protected showDownload: boolean;
34
- protected headerKeys: import("@angular/core").Signal<string[]>;
35
- protected View: typeof View;
36
- protected viewIcon: {
24
+ protected readonly dataState: import("@angular/core").InputSignal<DataState>;
25
+ protected readonly nodeKeys: import("@angular/core").InputSignal<BlankNodesKey[]>;
26
+ protected readonly nodeKeyGroup: import("@angular/core").InputSignal<CycleNodesKeyGroup>;
27
+ protected readonly BlankNodesKey: typeof BlankNodesKey;
28
+ protected readonly firstNodeKey: import("@angular/core").Signal<BlankNodesKey>;
29
+ protected readonly selectedNodeKey: import("@angular/core").WritableSignal<BlankNodesKey>;
30
+ protected readonly selectedGroupTerm: import("@angular/core").WritableSignal<Term>;
31
+ protected readonly schemaBaseUrl: string;
32
+ protected readonly propertyValue: (value: import("@hestia-earth/utils/dist/term").propertyValueType | import("@hestia-earth/utils/dist/term").propertyValueType[], termId?: string) => import("@hestia-earth/utils/dist/term").propertyValueType;
33
+ protected readonly defaultLabel: (node?: any) => any;
34
+ protected readonly headerKeys: import("@angular/core").Signal<string[]>;
35
+ protected readonly View: typeof View;
36
+ protected readonly viewIcon: {
37
37
  "Table view": IconDefinition;
38
38
  "Chart view": IconDefinition;
39
39
  "Operations Timeline": IconDefinition;
40
40
  "Recalculations logs": IconDefinition;
41
41
  };
42
- private showView;
43
- protected views: import("@angular/core").Signal<View[]>;
44
- protected selectedView: import("@angular/core").WritableSignal<View>;
45
- private _allNodes;
46
- private originalNodes;
47
- private currentNodes;
48
- protected originalCycles: import("@angular/core").Signal<ICycleJSONLD[] | groupedNode[]>;
49
- protected cycles: import("@angular/core").Signal<ICycleJSONLD[] | groupedNode[]>;
50
- private selectedIndex;
51
- private ogirinalSelectedCycle;
52
- private selectedCycle;
53
- protected selectedLogsKey: import("@angular/core").Signal<any>;
54
- protected selectedOriginalValues: import("@angular/core").Signal<any>;
55
- protected selectedRecalculatedValues: import("@angular/core").Signal<any>;
56
- protected selectedNode: import("@angular/core").Signal<{
42
+ private readonly showView;
43
+ protected readonly views: import("@angular/core").Signal<View[]>;
44
+ protected readonly selectedView: import("@angular/core").WritableSignal<View>;
45
+ private readonly _allNodes;
46
+ private readonly originalNodes;
47
+ private readonly currentNodes;
48
+ protected readonly originalCycles: import("@angular/core").Signal<ICycleJSONLD[] | groupedNode[]>;
49
+ protected readonly cycles: import("@angular/core").Signal<ICycleJSONLD[] | groupedNode[]>;
50
+ private readonly selectedIndex;
51
+ private readonly ogirinalSelectedCycle;
52
+ private readonly selectedCycle;
53
+ protected readonly selectedLogsKey: import("@angular/core").Signal<any>;
54
+ protected readonly selectedOriginalValues: import("@angular/core").Signal<any>;
55
+ protected readonly selectedRecalculatedValues: import("@angular/core").Signal<any>;
56
+ protected readonly selectedNode: import("@angular/core").Signal<{
57
57
  '@type': NodeType;
58
58
  type: NodeType;
59
59
  dataState: DataState;
@@ -161,25 +161,25 @@ export declare class CyclesNodesComponent {
161
161
  updatedVersion?: string[];
162
162
  id?: string;
163
163
  }>;
164
- private isOriginal;
165
- private originalValues;
166
- private hasRecalculatedNodes;
167
- protected showSwitchToRecalculated: import("@angular/core").Signal<boolean>;
168
- protected timelineValues: import("@angular/core").Signal<blankNodesType[]>;
169
- private enableTimeline;
170
- protected isNodeKeyAllowed: import("@angular/core").Signal<boolean>;
171
- private groupedNodes;
172
- protected groupNodeTerms: import("@angular/core").Signal<Term[]>;
173
- protected isGroupNode: import("@angular/core").Signal<boolean>;
174
- protected isEmission: import("@angular/core").Signal<boolean>;
175
- protected data: import("@angular/core").Signal<groupedEmissions | {
164
+ private readonly isOriginal;
165
+ private readonly originalValues;
166
+ private readonly hasRecalculatedNodes;
167
+ protected readonly showSwitchToRecalculated: import("@angular/core").Signal<boolean>;
168
+ protected readonly timelineValues: import("@angular/core").Signal<blankNodesType[]>;
169
+ private readonly enableTimeline;
170
+ protected readonly isNodeKeyAllowed: import("@angular/core").Signal<boolean>;
171
+ private readonly groupedNodes;
172
+ protected readonly groupNodeTerms: import("@angular/core").Signal<Term[]>;
173
+ protected readonly isGroupNode: import("@angular/core").Signal<boolean>;
174
+ protected readonly isEmission: import("@angular/core").Signal<boolean>;
175
+ protected readonly data: import("@angular/core").Signal<groupedEmissions | {
176
176
  [k: string]: IGroupedKeys<Product>[];
177
177
  }>;
178
- protected dataKeys: import("@angular/core").Signal<string[]>;
179
- protected hasData: import("@angular/core").Signal<boolean>;
180
- protected filterTermTypes: import("@angular/core").Signal<TermTermType[]>;
181
- protected filterTerm: import("@angular/core").WritableSignal<string>;
182
- protected csvFilename: import("@angular/core").Signal<string>;
178
+ protected readonly dataKeys: import("@angular/core").Signal<string[]>;
179
+ protected readonly hasData: import("@angular/core").Signal<boolean>;
180
+ protected readonly filterTermTypes: import("@angular/core").Signal<TermTermType[]>;
181
+ protected readonly filterTerm: import("@angular/core").WritableSignal<string>;
182
+ protected readonly csvFilename: import("@angular/core").Signal<string>;
183
183
  constructor();
184
184
  private groupNodesByKey;
185
185
  private groupEmissions;
@@ -190,6 +190,7 @@ export declare class CyclesNodesComponent {
190
190
  };
191
191
  }): void;
192
192
  protected cycleNode(cycle: ICycleJSONLD | groupedNode): Term | ICycleJSONLD | groupedNode;
193
+ protected showDownload(): void;
193
194
  static ɵfac: i0.ɵɵFactoryDeclaration<CyclesNodesComponent, never>;
194
195
  static ɵcmp: i0.ɵɵComponentDeclaration<CyclesNodesComponent, "he-cycles-nodes", never, { "dataState": { "alias": "dataState"; "required": false; "isSignal": true; }; "nodeKeys": { "alias": "nodeKeys"; "required": true; "isSignal": true; }; "nodeKeyGroup": { "alias": "nodeKeyGroup"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
195
196
  }
@@ -11,7 +11,6 @@ export declare class EngineModelsStageDeepComponent<T extends NodeType> {
11
11
  protected readonly faAngleDown: import("@fortawesome/fontawesome-common-types").IconDefinition;
12
12
  protected readonly node: import("@angular/core").InputSignal<IJSONLDExtended>;
13
13
  protected readonly expanded: import("@angular/core").ModelSignal<boolean>;
14
- protected readonly showVersion: import("@angular/core").ModelSignal<boolean>;
15
14
  /**
16
15
  * When nesting the components, avoid allowing expansion on the top-level node.
17
16
  */
@@ -19,6 +18,7 @@ export declare class EngineModelsStageDeepComponent<T extends NodeType> {
19
18
  protected readonly id: import("@angular/core").Signal<string>;
20
19
  protected readonly type: import("@angular/core").Signal<NodeType>;
21
20
  protected readonly nodeColour: import("@angular/core").Signal<any>;
21
+ protected readonly recalculatedAt: import("@angular/core").Signal<any>;
22
22
  protected readonly loading: import("@angular/core").WritableSignal<boolean>;
23
23
  private readonly relatedNodes;
24
24
  private readonly relatedNodes$;
@@ -35,6 +35,6 @@ export declare class EngineModelsStageDeepComponent<T extends NodeType> {
35
35
  private findNode;
36
36
  protected trackNode(node: IJSONLDExtended): string;
37
37
  static ɵfac: i0.ɵɵFactoryDeclaration<EngineModelsStageDeepComponent<any>, never>;
38
- static ɵcmp: i0.ɵɵComponentDeclaration<EngineModelsStageDeepComponent<any>, "he-engine-models-stage-deep", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "showVersion": { "alias": "showVersion"; "required": false; "isSignal": true; }; "expandedNode": { "alias": "expandedNode"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; "showVersion": "showVersionChange"; }, never, never, true, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<EngineModelsStageDeepComponent<any>, "he-engine-models-stage-deep", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "expandedNode": { "alias": "expandedNode"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, never, never, true, never>;
39
39
  }
40
40
  export {};
@@ -9,7 +9,7 @@ import { NgbDropdown, NgbDropdownMenu, NgbDropdownToggle } from '@ng-bootstrap/n
9
9
  import { animationFrameScheduler, combineLatest, EMPTY, fromEvent } from 'rxjs';
10
10
  import { LocalStorageService } from 'ngx-webstorage';
11
11
  import { HE_REDUCE_WIDTH_ANIMATION, HE_SIDE_MENU_ANIMATION } from './drawer-container.animations';
12
- import { sidenavStore } from './sidenav.store';
12
+ import { sidenavStore, initialState } from './sidenav.store';
13
13
  import { NavigationMenuComponent } from '../navigation-menu/navigation-menu.component';
14
14
  import { ResponsiveService } from '../responsive.service';
15
15
  import * as i0 from "@angular/core";
@@ -22,7 +22,7 @@ export class DrawerContainerComponent {
22
22
  this.localStorage = inject(LocalStorageService);
23
23
  this.contentContainer = viewChild('contentContainer', { read: ElementRef });
24
24
  this.menuState = signal('close');
25
- this.expanded = signal(true);
25
+ this.expanded = signal(initialState.expanded);
26
26
  /**
27
27
  * The breakpoint at which the drawer will no longer be compact.
28
28
  * If a number is provided, it will be used as the width in pixels.
@@ -31,10 +31,10 @@ export class DrawerContainerComponent {
31
31
  * @default 'tablet' - the drawer will be compact until the tablet breakpoint.
32
32
  */
33
33
  this.compactBreakpoint = input('tablet');
34
- this.position = input('left');
35
- this.min = input(250);
36
- this.width = model(256);
37
- this.max = input(600);
34
+ this.position = input(initialState.side);
35
+ this.min = input(initialState.minWidth);
36
+ this.width = model(initialState.width);
37
+ this.max = input(initialState.maxWidth);
38
38
  this.resizable = input(true);
39
39
  this.contentPaddingStyles = input();
40
40
  this.menuOverlap = input(true);
@@ -45,7 +45,7 @@ export class DrawerContainerComponent {
45
45
  /**
46
46
  * The minimum distance between the menu and the edge of the content container.
47
47
  */
48
- this.minMenuDistance = input(20);
48
+ this.minMenuDistance = input(initialState.minMenuDistance);
49
49
  /**
50
50
  * Giving an id to the menu so that it can store the resized position.
51
51
  */
@@ -152,4 +152,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
152
152
  type: HostListener,
153
153
  args: ['window:mouseup']
154
154
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU5RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQWMsTUFB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R0FBeEIsd0JBQXdCLGt1RUFGeEIsQ0FBQyxZQUFZLENBQUMsMkhBUWlELFVBQVUsNkNDL0R0RixxOEZBZ0ZBLDByRkQ1Q0ksZ0JBQWdCLG9KQUNoQixlQUFlLGtQQUNmLE9BQU8sbUZBQ1AsV0FBVywrQkFDWCxXQUFXLG9OQUNYLGVBQWUsOERBQ2YsaUJBQWlCLGdFQUNqQix1QkFBdUIsNElBS2IsQ0FBQyxHQUFHLHNCQUFzQixFQUFFLEdBQUcseUJBQXlCLENBQUM7OzRGQVMxRCx3QkFBd0I7a0JBekJwQyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLE9BQU87d0JBQ1AsV0FBVzt3QkFDWCxXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQix1QkFBdUI7cUJBQ3hCLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLENBQUMsR0FBRyxzQkFBc0IsRUFBRSxHQUFHLHlCQUF5QixDQUFDLFFBRS9EO3dCQUNKLFNBQVMsRUFBRSxhQUFhO3dCQUN4Qix3QkFBd0IsRUFBRSxZQUFZO3dCQUN0QyxxQkFBcUIsRUFBRSxhQUFhO3FCQUNyQyxhQUNVLENBQUMsWUFBWSxDQUFDO3dEQStJekIsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIHNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIHZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgZmFDaGV2cm9uRG93biwgZmFDaGV2cm9uTGVmdCwgZmFDaGV2cm9uUmlnaHQsIGZhQ2hldnJvblVwIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB0eXBlIHsgQW5pbWF0aW9uRXZlbnQgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IG91dHB1dEZyb21PYnNlcnZhYmxlLCB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgZGVsYXksIGZpbHRlciwgbWFwLCBza2lwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ2JEcm9wZG93biwgTmdiRHJvcGRvd25NZW51LCBOZ2JEcm9wZG93blRvZ2dsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLCBjb21iaW5lTGF0ZXN0LCBFTVBUWSwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnbmd4LXdlYnN0b3JhZ2UnO1xuXG5pbXBvcnQgeyBIRV9SRURVQ0VfV0lEVEhfQU5JTUFUSU9OLCBIRV9TSURFX01FTlVfQU5JTUFUSU9OIH0gZnJvbSAnLi9kcmF3ZXItY29udGFpbmVyLmFuaW1hdGlvbnMnO1xuaW1wb3J0IHsgc2lkZW5hdlN0b3JlIH0gZnJvbSAnLi9zaWRlbmF2LnN0b3JlJztcbmltcG9ydCB7IElOYXZpZ2F0aW9uTWVudUxpbmssIE5hdmlnYXRpb25NZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1tZW51L25hdmlnYXRpb24tbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVzcG9uc2l2ZUJyZWFrcG9pbnQsIFJlc3BvbnNpdmVTZXJ2aWNlIH0gZnJvbSAnLi4vcmVzcG9uc2l2ZS5zZXJ2aWNlJztcblxuY29uc3Qgc3RvcmFnZUtleSA9ICdoZS1kcmF3ZXItY29udGFpbmVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtZHJhd2VyLWNvbnRhaW5lcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEZhSWNvbkNvbXBvbmVudCxcbiAgICBOZ0NsYXNzLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE5nYkRyb3Bkb3duLFxuICAgIE5nYkRyb3Bkb3duTWVudSxcbiAgICBOZ2JEcm9wZG93blRvZ2dsZSxcbiAgICBOYXZpZ2F0aW9uTWVudUNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kcmF3ZXItY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFsuLi5IRV9TSURFX01FTlVfQU5JTUFUSU9OLCAuLi5IRV9SRURVQ0VfV0lEVEhfQU5JTUFUSU9OXSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzXSc6ICdob3N0Q2xhc3MoKScsXG4gICAgJ1thdHRyLmRyYXdlci1wb3NpdGlvbl0nOiAncG9zaXRpb24oKScsXG4gICAgJ1thdHRyLmRyYXdlci1zdGF0ZV0nOiAnbWVudVN0YXRlKCknXG4gIH0sXG4gIHByb3ZpZGVyczogW3NpZGVuYXZTdG9yZV1cbn0pXG5leHBvcnQgY2xhc3MgRHJhd2VyQ29udGFpbmVyQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNpZGVuYXZTdG9yZSA9IGluamVjdChzaWRlbmF2U3RvcmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc3BvbnNpdmVTZXJ2aWNlID0gaW5qZWN0KFJlc3BvbnNpdmVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhbFN0b3JhZ2UgPSBpbmplY3QoTG9jYWxTdG9yYWdlU2VydmljZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb250ZW50Q29udGFpbmVyID0gdmlld0NoaWxkKCdjb250ZW50Q29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBtZW51U3RhdGUgPSBzaWduYWw8J29wZW4nIHwgJ2Nsb3NlJz4oJ2Nsb3NlJyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBleHBhbmRlZCA9IHNpZ25hbCh0cnVlKTtcblxuICAvKipcbiAgICogVGhlIGJyZWFrcG9pbnQgYXQgd2hpY2ggdGhlIGRyYXdlciB3aWxsIG5vIGxvbmdlciBiZSBjb21wYWN0LlxuICAgKiBJZiBhIG51bWJlciBpcyBwcm92aWRlZCwgaXQgd2lsbCBiZSB1c2VkIGFzIHRoZSB3aWR0aCBpbiBwaXhlbHMuXG4gICAqIElmICdub25lJyBpcyBwcm92aWRlZCwgdGhlIGRyYXdlciB3aWxsIG5ldmVyIGJlIGNvbXBhY3QuXG4gICAqIElmIGEgYnJlYWtwb2ludCBuYW1lIGlzIHByb3ZpZGVkLCB0aGUgZHJhd2VyIHdpbGwgYmUgY29tcGFjdCB1bnRpbCB0aGF0IGJyZWFrcG9pbnQuXG4gICAqIEBkZWZhdWx0ICd0YWJsZXQnIC0gdGhlIGRyYXdlciB3aWxsIGJlIGNvbXBhY3QgdW50aWwgdGhlIHRhYmxldCBicmVha3BvaW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbXBhY3RCcmVha3BvaW50ID0gaW5wdXQ8UmVzcG9uc2l2ZUJyZWFrcG9pbnQ+KCd0YWJsZXQnKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBvc2l0aW9uID0gaW5wdXQ8J2xlZnQnIHwgJ3JpZ2h0Jz4oJ2xlZnQnKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1pbiA9IGlucHV0PG51bWJlcj4oMjUwKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpZHRoID0gbW9kZWw8bnVtYmVyPigyNTYpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWF4ID0gaW5wdXQ8bnVtYmVyPig2MDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVzaXphYmxlID0gaW5wdXQodHJ1ZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb250ZW50UGFkZGluZ1N0eWxlcyA9IGlucHV0PHN0cmluZz4oKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1lbnVPdmVybGFwID0gaW5wdXQodHJ1ZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBsaW5rcyA9IGlucHV0PElOYXZpZ2F0aW9uTWVudUxpbmtbXT4oW10pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHJhd2VySGVhZGVyVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbXBhY3RIZWFkZXJDbGFzcyA9IGlucHV0PE5nQ2xhc3NbJ25nQ2xhc3MnXT4obnVsbCk7XG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBtZW51IGFuZCB0aGUgZWRnZSBvZiB0aGUgY29udGVudCBjb250YWluZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWluTWVudURpc3RhbmNlID0gaW5wdXQ8bnVtYmVyPigyMCk7XG4gIC8qKlxuICAgKiBHaXZpbmcgYW4gaWQgdG8gdGhlIG1lbnUgc28gdGhhdCBpdCBjYW4gc3RvcmUgdGhlIHJlc2l6ZWQgcG9zaXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWQgPSBpbnB1dCgnJyk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wZW5lZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLm1lbnVTdGF0ZSkucGlwZShcbiAgICAgIHNraXAoMSksXG4gICAgICBmaWx0ZXIoc3RhdGUgPT4gc3RhdGUgPT09ICdvcGVuJyksXG4gICAgICBtYXAoKCkgPT4gdHJ1ZSlcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjbG9zZWQgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZShcbiAgICB0b09ic2VydmFibGUodGhpcy5tZW51U3RhdGUpLnBpcGUoXG4gICAgICBza2lwKDEpLFxuICAgICAgZmlsdGVyKHN0YXRlID0+IHN0YXRlID09PSAnY2xvc2UnKSxcbiAgICAgIG1hcCgoKSA9PiB0cnVlKVxuICAgIClcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFDaGV2cm9uVXAgPSBmYUNoZXZyb25VcDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZhQ2hldnJvbkRvd24gPSBmYUNoZXZyb25Eb3duO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB2aXNpYmxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBbdGhpcy5saW5rcygpPy5sZW5ndGggPiAwLCAhIXRoaXMuZHJhd2VySGVhZGVyVGVtcGxhdGUoKSwgISF0aGlzLmRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpXS5zb21lKEJvb2xlYW4pXG4gICk7XG5cbiAgLyoqXG4gICAqIERldGVjdCBzaG93aW5nIG1vZGFsIHdpdGhpbiB0aGUgY29udGVudCBvZiB0aGUgZHJhd2VyIGNvbnRhaW5lciwgd2hpY2ggYnJlYWtzIHRoZSBsYXlvdXQuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGFzTW9kYWwgPSB0b1NpZ25hbChcbiAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjbGljaycpLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbW9kYWwnKS5sZW5ndGggPiAwKVxuICAgIClcbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRpc2FibGVBbmltYXRpb24gPSB0b1NpZ25hbCh0b09ic2VydmFibGUodGhpcy5oYXNNb2RhbCkucGlwZShkZWxheSgxMDAwKSkpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpc0NvbXBhY3QgPSB0b1NpZ25hbChcbiAgICB0b09ic2VydmFibGUodGhpcy5jb21wYWN0QnJlYWtwb2ludCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChicmVha3BvaW50ID0+XG4gICAgICAgIHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuaXNBYm92ZUJyZWFrcG9pbnQkKGJyZWFrcG9pbnQpLnBpcGUobWFwKGlzQWJvdmVCcmVha3BvaW50ID0+ICFpc0Fib3ZlQnJlYWtwb2ludCkpXG4gICAgICApXG4gICAgKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaG9zdENsYXNzID0gY29tcHV0ZWQoKCkgPT5cbiAgICBbJ2lzLWZsZXgnLCB0aGlzLmlzQ29tcGFjdCgpID8gJ2lzLWZsZXgtZGlyZWN0aW9uLWNvbHVtbicgOiAnJywgdGhpcy5yZXNpemFibGUoKSA/ICdpcy1yZXNpemFibGUnIDogJyddLmpvaW4oJyAnKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNIb2xkaW5nVG9nZ2xlID0gdGhpcy5zaWRlbmF2U3RvcmUuaXNSZXNpemluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IF91cGRhdGVTaWRlbmF2RXZlbnQkID0gdG9PYnNlcnZhYmxlKHRoaXMuc2lkZW5hdlN0b3JlLmlzUmVzaXppbmcpLnBpcGUoXG4gICAgc3dpdGNoTWFwKGxpc3RlbiA9PiAobGlzdGVuID8gKGZyb21FdmVudCh3aW5kb3csICdtb3VzZW1vdmUnKSBhcyBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+KSA6IEVNUFRZKSksXG4gICAgdGhyb3R0bGVUaW1lKDAsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50Q29udGFpbmVyJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmNvbnRlbnRDb250YWluZXIpLnBpcGUoZmlsdGVyKHggPT4gISF4KSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hvc3RDb21wb25lbnRXaWR0aCQgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykucGlwZShzdGFydFdpdGgod2luZG93LmlubmVyV2lkdGgpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNPdmVybGFwcGluZyQgPSB0b09ic2VydmFibGUodGhpcy5zaWRlbmF2U3RvcmUuaXNNZW51T3ZlcmxhcHBpbmcpO1xuXG4gIC8qKlxuICAgKiB3ZSB1c2UgY29tYmluZUxhdGVzdCBpbnN0ZWFkIG9mIGNvbXB1dGVkIHRvIGF2b2lkIHRoZSBhbmltYXRpb24gZmxpY2tlcmluZyAod2FpdCBmb3IgYWxsIHNvdXJjZXMgdG8gZW1pdClcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSByZWR1Y2VBbmltYXRpb24gPSB0b1NpZ25hbChcbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmV4cGFuZGVkKSxcbiAgICAgIHRoaXMuX2lzT3ZlcmxhcHBpbmckLFxuICAgICAgdG9PYnNlcnZhYmxlKHRoaXMuaXNDb21wYWN0KSxcbiAgICAgIHRvT2JzZXJ2YWJsZSh0aGlzLnZpc2libGUpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2V4cGFuZGVkLCBpc092ZXJsYXBwaW5nLCBpc0NvbXBhY3QsIHZpc2libGVdKSA9PlxuICAgICAgICBbZXhwYW5kZWQsICFpc092ZXJsYXBwaW5nLCAhaXNDb21wYWN0LCB2aXNpYmxlXS5ldmVyeShCb29sZWFuKSA/ICdyZWR1Y2VkJyA6ICdmdWxsJ1xuICAgICAgKVxuICAgIClcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudENvbnRhaW5lclBhZGRpbmckID0gdGhpcy5faG9zdENvbXBvbmVudFdpZHRoJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9jb250ZW50Q29udGFpbmVyJC5waXBlKG1hcCh0aGlzLl9nZXRDb250ZW50TGVmdFNpZGVTcGFjZSkpKVxuICApO1xuXG4gIHByaXZhdGUgc3RvcmFnZUtleSA9IGNvbXB1dGVkKCgpID0+IFtzdG9yYWdlS2V5LCB0aGlzLmlkKCldLmZpbHRlcihCb29sZWFuKS5qb2luKCctJykpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldFNpZGUodGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0TWluV2lkdGgodGhpcy5taW4pO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldE1heFdpZHRoKHRoaXMubWF4KTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRXaWR0aCh0aGlzLndpZHRoKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS51cGRhdGVSZXNpemluZyh0aGlzLl91cGRhdGVTaWRlbmF2RXZlbnQkKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRDb250ZW50Q29udGFpbmVyU3BhY2luZyh0aGlzLl9jb250ZW50Q29udGFpbmVyUGFkZGluZyQpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldEV4cGFuZGVkKHRoaXMuZXhwYW5kZWQpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldE1pbk1lbnVEaXN0YW5jZSh0aGlzLm1pbk1lbnVEaXN0YW5jZSk7XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6YWJsZSgpKSB7XG4gICAgICAgICAgY29uc3QgeyB3aWR0aCB9ID0gSlNPTi5wYXJzZSh0aGlzLmxvY2FsU3RvcmFnZS5yZXRyaWV2ZSh0aGlzLnN0b3JhZ2VLZXkoKSkgfHwgJ3t9Jyk7XG4gICAgICAgICAgaWYgKHdpZHRoKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMud2lkdGguc2V0KHdpZHRoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIHN0YXJ0UmVzaXppbmcoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmVzaXphYmxlKCkpIHJldHVybjtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zdGFydFJlc2l6aW5nKGV2ZW50KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZXVwJylcbiAgc3RvcFJlc2l6aW5nKCkge1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnN0b3BSZXNpemluZygpO1xuICAgIHRoaXMubG9jYWxTdG9yYWdlLnN0b3JlKHRoaXMuc3RvcmFnZUtleSgpLCBKU09OLnN0cmluZ2lmeSh7IHdpZHRoOiB0aGlzLnNpZGVuYXZTdG9yZS53aWR0aCgpIH0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVJY29uKCkge1xuICAgIHJldHVybiAodGhpcy5leHBhbmRlZCgpICYmIHRoaXMucG9zaXRpb24oKSA9PT0gJ2xlZnQnKSB8fCAoIXRoaXMuZXhwYW5kZWQoKSAmJiB0aGlzLnBvc2l0aW9uKCkgPT09ICdyaWdodCcpXG4gICAgICA/IGZhQ2hldnJvbkxlZnRcbiAgICAgIDogZmFDaGV2cm9uUmlnaHQ7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlTWVudSgpIHtcbiAgICBpZiAodGhpcy5zaWRlbmF2U3RvcmUuaGFzTWVudVdpZHRoQ2hhbmdlZCgpICYmIHRoaXMuZXhwYW5kZWQoKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5leHBhbmRlZCgpID8gdGhpcy5oaWRlTWVudSgpIDogdGhpcy5zaG93TWVudSgpO1xuICB9XG5cbiAgcHVibGljIGhpZGVNZW51KCkge1xuICAgIHRoaXMuZXhwYW5kZWQuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93TWVudSgpIHtcbiAgICB0aGlzLmV4cGFuZGVkLnNldCh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgIGNvbnN0IGRpZE9wZW4gPSBldmVudC50b1N0YXRlICE9PSAnaGlkZGVuJztcbiAgICB0aGlzLm1lbnVTdGF0ZS5zZXQoZGlkT3BlbiA/ICdvcGVuJyA6ICdjbG9zZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29udGVudExlZnRTaWRlU3BhY2UoZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICBjb25zdCBwYWRkaW5nID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudC5uYXRpdmVFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWxlZnQnKTtcbiAgICBjb25zdCBtYXJnaW4gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ21hcmdpbi1sZWZ0Jyk7XG4gICAgcmV0dXJuIHBhcnNlSW50KHBhZGRpbmcsIDEwKSArIHBhcnNlSW50KG1hcmdpbiwgMTApO1xuICB9XG59XG4iLCJAaWYgKHZpc2libGUoKSkge1xuICBAaWYgKGlzQ29tcGFjdCgpKSB7XG4gICAgPGRpdiBjbGFzcz1cImNvbXBhY3QtaGVhZGVyXCI+XG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cImNvbXBhY3RIZWFkZXJDbGFzcygpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpcy1mbGV4IGlzLWFsaWduLWl0ZW1zLWZsZXgtc3RhcnQgaXMtanVzdGlmeS1jb250ZW50LXNwYWNlLWJldHdlZW4gdy0xMDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXMtZmxleCBpcy1mbGV4LWdyb3ctMSBpcy1qdXN0aWZ5LWNvbnRlbnQtc3BhY2UtYmV0d2VlbiBpcy1mbGV4LWRpcmVjdGlvbi1jb2x1bW5cIj5cbiAgICAgICAgICAgIEBpZiAoZHJhd2VySGVhZGVyVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyYXdlckhlYWRlclRlbXBsYXRlKClcIiAvPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKGRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKClcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgQGlmIChsaW5rcygpPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duICNvcHRpb25EZD1cIm5nYkRyb3Bkb3duXCIgY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbS1lbmRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb21wYWN0LWhlYWRlci0tYnRuIGJ1dHRvbiBpcy1zbWFsbCBpcy1uby1zaGFkb3dcIlxuICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJkcmF3ZXItbWVudVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIE1lbnVcblxuICAgICAgICAgICAgICAgIDxmYS1pY29uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbXBhY3QtaGVhZGVyLS1idG5fX2ljb25cIlxuICAgICAgICAgICAgICAgICAgW2ljb25dPVwib3B0aW9uRGQuaXNPcGVuKCkgPyBmYUNoZXZyb25VcCA6IGZhQ2hldnJvbkRvd25cIlxuICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudSBpZD1cImRyYXdlci1tZW51XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRlbnQgbmF2aWdhdGlvbi1tZW51LWRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgICA8aGUtbmF2aWdhdGlvbi1tZW51IChjbG9zZWQpPVwib3B0aW9uRGQuY2xvc2UoKVwiIFtsaW5rc109XCJsaW5rcygpXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH0gQGVsc2Uge1xuICAgIDxhc2lkZT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzaGVsbF9fbWVudUNvbnRlbnQgfCBoLTEwMFwiXG4gICAgICAgIChAc2lkZU1lbnUuZG9uZSk9XCJhbmltYXRpb25Eb25lKCRldmVudClcIlxuICAgICAgICBbQHNpZGVNZW51XT1cImV4cGFuZGVkKCkgPyAnZnVsbCcgOiAnaGlkZGVuJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgc2hlbGxfX21lbnVDb250ZW50LS1jb250YWluZXJcIj5cbiAgICAgICAgICBAaWYgKGRyYXdlckhlYWRlclRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJhd2VySGVhZGVyVGVtcGxhdGUoKVwiIC8+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChsaW5rcygpPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8aGUtbmF2aWdhdGlvbi1tZW51IFtsaW5rc109XCJsaW5rcygpXCI+XG4gICAgICAgICAgICAgIEBpZiAoZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG91dGVyLWNvbnRlbnQgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKClcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2hlLW5hdmlnYXRpb24tbWVudT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVNZW51KClcIiAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXppbmcoJGV2ZW50KVwiIGNsYXNzPVwic2hlbGxfX21lbnVDb250ZW50LS10b2dnbGVcIj5cbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJ0b2dnbGVJY29uKClcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYXNpZGU+XG4gIH1cbn1cblxuPGRpdlxuICBbY2xhc3MuaXMtcmVzaXppbmddPVwiaXNIb2xkaW5nVG9nZ2xlKClcIlxuICBbQHJlZHVjZVdpZHRoXT1cInJlZHVjZUFuaW1hdGlvbigpXCJcbiAgY2xhc3M9XCJzaGVsbF9fY29udGVudCB8IGgtMTAwIHctMTAwIGlzLWZsZXggaXMtanVzdGlmeS1jb250ZW50LWZsZXgtZW5kXCI+XG4gIDxkaXZcbiAgICBbY2xhc3MuZGlzYWJsZS1hbmltYXRpb25dPVwiZGlzYWJsZUFuaW1hdGlvbigpXCJcbiAgICBbY2xhc3MuZGlzYWJsZS10cmFuc2Zvcm0teF09XCJoYXNNb2RhbCgpXCJcbiAgICBjbGFzcz1cInNoZWxsX19jb250ZW50LS1ib2R5IHwgdy0xMDBcIj5cbiAgICA8ZGl2ICNjb250ZW50Q29udGFpbmVyIFtjbGFzc05hbWVdPVwiY29udGVudFBhZGRpbmdTdHlsZXMoKVwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2RyYXdlci1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU5RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQWMsTUFB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QUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDOytHQS9LVSx3QkFBd0I7bUdBQXhCLHdCQUF3QixrdUVBRnhCLENBQUMsWUFBWSxDQUFDLDJIQVFpRCxVQUFVLDZDQy9EdEYscThGQWdGQSwwckZENUNJLGdCQUFnQixvSkFDaEIsZUFBZSxrUEFDZixPQUFPLG1GQUNQLFdBQVcsK0JBQ1gsV0FBVyxvTkFDWCxlQUFlLDhEQUNmLGlCQUFpQixnRUFDakIsdUJBQXVCLDRJQUtiLENBQUMsR0FBRyxzQkFBc0IsRUFBRSxHQUFHLHlCQUF5QixDQUFDOzs0RkFTMUQsd0JBQXdCO2tCQXpCcEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixPQUFPO3dCQUNQLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsdUJBQXVCO3FCQUN4QixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxDQUFDLEdBQUcsc0JBQXNCLEVBQUUsR0FBRyx5QkFBeUIsQ0FBQyxRQUUvRDt3QkFDSixTQUFTLEVBQUUsYUFBYTt3QkFDeEIsd0JBQXdCLEVBQUUsWUFBWTt3QkFDdEMscUJBQXFCLEVBQUUsYUFBYTtxQkFDckMsYUFDVSxDQUFDLFlBQVksQ0FBQzt3REErSXpCLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBzaWduYWwsXG4gIFRlbXBsYXRlUmVmLFxuICB2aWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZhSWNvbkNvbXBvbmVudCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcbmltcG9ydCB7IGZhQ2hldnJvbkRvd24sIGZhQ2hldnJvbkxlZnQsIGZhQ2hldnJvblJpZ2h0LCBmYUNoZXZyb25VcCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQgdHlwZSB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBvdXRwdXRGcm9tT2JzZXJ2YWJsZSwgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGRlbGF5LCBmaWx0ZXIsIG1hcCwgc2tpcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdiRHJvcGRvd24sIE5nYkRyb3Bkb3duTWVudSwgTmdiRHJvcGRvd25Ub2dnbGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgY29tYmluZUxhdGVzdCwgRU1QVFksIGZyb21FdmVudCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJ25neC13ZWJzdG9yYWdlJztcblxuaW1wb3J0IHsgSEVfUkVEVUNFX1dJRFRIX0FOSU1BVElPTiwgSEVfU0lERV9NRU5VX0FOSU1BVElPTiB9IGZyb20gJy4vZHJhd2VyLWNvbnRhaW5lci5hbmltYXRpb25zJztcbmltcG9ydCB7IHNpZGVuYXZTdG9yZSwgaW5pdGlhbFN0YXRlIH0gZnJvbSAnLi9zaWRlbmF2LnN0b3JlJztcbmltcG9ydCB7IElOYXZpZ2F0aW9uTWVudUxpbmssIE5hdmlnYXRpb25NZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1tZW51L25hdmlnYXRpb24tbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVzcG9uc2l2ZUJyZWFrcG9pbnQsIFJlc3BvbnNpdmVTZXJ2aWNlIH0gZnJvbSAnLi4vcmVzcG9uc2l2ZS5zZXJ2aWNlJztcblxuY29uc3Qgc3RvcmFnZUtleSA9ICdoZS1kcmF3ZXItY29udGFpbmVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtZHJhd2VyLWNvbnRhaW5lcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEZhSWNvbkNvbXBvbmVudCxcbiAgICBOZ0NsYXNzLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE5nYkRyb3Bkb3duLFxuICAgIE5nYkRyb3Bkb3duTWVudSxcbiAgICBOZ2JEcm9wZG93blRvZ2dsZSxcbiAgICBOYXZpZ2F0aW9uTWVudUNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kcmF3ZXItY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFsuLi5IRV9TSURFX01FTlVfQU5JTUFUSU9OLCAuLi5IRV9SRURVQ0VfV0lEVEhfQU5JTUFUSU9OXSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzXSc6ICdob3N0Q2xhc3MoKScsXG4gICAgJ1thdHRyLmRyYXdlci1wb3NpdGlvbl0nOiAncG9zaXRpb24oKScsXG4gICAgJ1thdHRyLmRyYXdlci1zdGF0ZV0nOiAnbWVudVN0YXRlKCknXG4gIH0sXG4gIHByb3ZpZGVyczogW3NpZGVuYXZTdG9yZV1cbn0pXG5leHBvcnQgY2xhc3MgRHJhd2VyQ29udGFpbmVyQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNpZGVuYXZTdG9yZSA9IGluamVjdChzaWRlbmF2U3RvcmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc3BvbnNpdmVTZXJ2aWNlID0gaW5qZWN0KFJlc3BvbnNpdmVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhbFN0b3JhZ2UgPSBpbmplY3QoTG9jYWxTdG9yYWdlU2VydmljZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb250ZW50Q29udGFpbmVyID0gdmlld0NoaWxkKCdjb250ZW50Q29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBtZW51U3RhdGUgPSBzaWduYWw8J29wZW4nIHwgJ2Nsb3NlJz4oJ2Nsb3NlJyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBleHBhbmRlZCA9IHNpZ25hbChpbml0aWFsU3RhdGUuZXhwYW5kZWQpO1xuXG4gIC8qKlxuICAgKiBUaGUgYnJlYWtwb2ludCBhdCB3aGljaCB0aGUgZHJhd2VyIHdpbGwgbm8gbG9uZ2VyIGJlIGNvbXBhY3QuXG4gICAqIElmIGEgbnVtYmVyIGlzIHByb3ZpZGVkLCBpdCB3aWxsIGJlIHVzZWQgYXMgdGhlIHdpZHRoIGluIHBpeGVscy5cbiAgICogSWYgJ25vbmUnIGlzIHByb3ZpZGVkLCB0aGUgZHJhd2VyIHdpbGwgbmV2ZXIgYmUgY29tcGFjdC5cbiAgICogSWYgYSBicmVha3BvaW50IG5hbWUgaXMgcHJvdmlkZWQsIHRoZSBkcmF3ZXIgd2lsbCBiZSBjb21wYWN0IHVudGlsIHRoYXQgYnJlYWtwb2ludC5cbiAgICogQGRlZmF1bHQgJ3RhYmxldCcgLSB0aGUgZHJhd2VyIHdpbGwgYmUgY29tcGFjdCB1bnRpbCB0aGUgdGFibGV0IGJyZWFrcG9pbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29tcGFjdEJyZWFrcG9pbnQgPSBpbnB1dDxSZXNwb25zaXZlQnJlYWtwb2ludD4oJ3RhYmxldCcpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcG9zaXRpb24gPSBpbnB1dDwnbGVmdCcgfCAncmlnaHQnPihpbml0aWFsU3RhdGUuc2lkZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBtaW4gPSBpbnB1dDxudW1iZXI+KGluaXRpYWxTdGF0ZS5taW5XaWR0aCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB3aWR0aCA9IG1vZGVsPG51bWJlcj4oaW5pdGlhbFN0YXRlLndpZHRoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1heCA9IGlucHV0PG51bWJlcj4oaW5pdGlhbFN0YXRlLm1heFdpZHRoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlc2l6YWJsZSA9IGlucHV0KHRydWUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGVudFBhZGRpbmdTdHlsZXMgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBtZW51T3ZlcmxhcCA9IGlucHV0KHRydWUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGlua3MgPSBpbnB1dDxJTmF2aWdhdGlvbk1lbnVMaW5rW10+KFtdKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyYXdlckhlYWRlclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb21wYWN0SGVhZGVyQ2xhc3MgPSBpbnB1dDxOZ0NsYXNzWyduZ0NsYXNzJ10+KG51bGwpO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gZGlzdGFuY2UgYmV0d2VlbiB0aGUgbWVudSBhbmQgdGhlIGVkZ2Ugb2YgdGhlIGNvbnRlbnQgY29udGFpbmVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1pbk1lbnVEaXN0YW5jZSA9IGlucHV0PG51bWJlcj4oaW5pdGlhbFN0YXRlLm1pbk1lbnVEaXN0YW5jZSk7XG4gIC8qKlxuICAgKiBHaXZpbmcgYW4gaWQgdG8gdGhlIG1lbnUgc28gdGhhdCBpdCBjYW4gc3RvcmUgdGhlIHJlc2l6ZWQgcG9zaXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWQgPSBpbnB1dCgnJyk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wZW5lZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLm1lbnVTdGF0ZSkucGlwZShcbiAgICAgIHNraXAoMSksXG4gICAgICBmaWx0ZXIoc3RhdGUgPT4gc3RhdGUgPT09ICdvcGVuJyksXG4gICAgICBtYXAoKCkgPT4gdHJ1ZSlcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjbG9zZWQgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZShcbiAgICB0b09ic2VydmFibGUodGhpcy5tZW51U3RhdGUpLnBpcGUoXG4gICAgICBza2lwKDEpLFxuICAgICAgZmlsdGVyKHN0YXRlID0+IHN0YXRlID09PSAnY2xvc2UnKSxcbiAgICAgIG1hcCgoKSA9PiB0cnVlKVxuICAgIClcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFDaGV2cm9uVXAgPSBmYUNoZXZyb25VcDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZhQ2hldnJvbkRvd24gPSBmYUNoZXZyb25Eb3duO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB2aXNpYmxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBbdGhpcy5saW5rcygpPy5sZW5ndGggPiAwLCAhIXRoaXMuZHJhd2VySGVhZGVyVGVtcGxhdGUoKSwgISF0aGlzLmRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpXS5zb21lKEJvb2xlYW4pXG4gICk7XG5cbiAgLyoqXG4gICAqIERldGVjdCBzaG93aW5nIG1vZGFsIHdpdGhpbiB0aGUgY29udGVudCBvZiB0aGUgZHJhd2VyIGNvbnRhaW5lciwgd2hpY2ggYnJlYWtzIHRoZSBsYXlvdXQuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGFzTW9kYWwgPSB0b1NpZ25hbChcbiAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjbGljaycpLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbW9kYWwnKS5sZW5ndGggPiAwKVxuICAgIClcbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRpc2FibGVBbmltYXRpb24gPSB0b1NpZ25hbCh0b09ic2VydmFibGUodGhpcy5oYXNNb2RhbCkucGlwZShkZWxheSgxMDAwKSkpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpc0NvbXBhY3QgPSB0b1NpZ25hbChcbiAgICB0b09ic2VydmFibGUodGhpcy5jb21wYWN0QnJlYWtwb2ludCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChicmVha3BvaW50ID0+XG4gICAgICAgIHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuaXNBYm92ZUJyZWFrcG9pbnQkKGJyZWFrcG9pbnQpLnBpcGUobWFwKGlzQWJvdmVCcmVha3BvaW50ID0+ICFpc0Fib3ZlQnJlYWtwb2ludCkpXG4gICAgICApXG4gICAgKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaG9zdENsYXNzID0gY29tcHV0ZWQoKCkgPT5cbiAgICBbJ2lzLWZsZXgnLCB0aGlzLmlzQ29tcGFjdCgpID8gJ2lzLWZsZXgtZGlyZWN0aW9uLWNvbHVtbicgOiAnJywgdGhpcy5yZXNpemFibGUoKSA/ICdpcy1yZXNpemFibGUnIDogJyddLmpvaW4oJyAnKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNIb2xkaW5nVG9nZ2xlID0gdGhpcy5zaWRlbmF2U3RvcmUuaXNSZXNpemluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IF91cGRhdGVTaWRlbmF2RXZlbnQkID0gdG9PYnNlcnZhYmxlKHRoaXMuc2lkZW5hdlN0b3JlLmlzUmVzaXppbmcpLnBpcGUoXG4gICAgc3dpdGNoTWFwKGxpc3RlbiA9PiAobGlzdGVuID8gKGZyb21FdmVudCh3aW5kb3csICdtb3VzZW1vdmUnKSBhcyBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+KSA6IEVNUFRZKSksXG4gICAgdGhyb3R0bGVUaW1lKDAsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50Q29udGFpbmVyJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmNvbnRlbnRDb250YWluZXIpLnBpcGUoZmlsdGVyKHggPT4gISF4KSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hvc3RDb21wb25lbnRXaWR0aCQgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykucGlwZShzdGFydFdpdGgod2luZG93LmlubmVyV2lkdGgpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNPdmVybGFwcGluZyQgPSB0b09ic2VydmFibGUodGhpcy5zaWRlbmF2U3RvcmUuaXNNZW51T3ZlcmxhcHBpbmcpO1xuXG4gIC8qKlxuICAgKiB3ZSB1c2UgY29tYmluZUxhdGVzdCBpbnN0ZWFkIG9mIGNvbXB1dGVkIHRvIGF2b2lkIHRoZSBhbmltYXRpb24gZmxpY2tlcmluZyAod2FpdCBmb3IgYWxsIHNvdXJjZXMgdG8gZW1pdClcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSByZWR1Y2VBbmltYXRpb24gPSB0b1NpZ25hbChcbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmV4cGFuZGVkKSxcbiAgICAgIHRoaXMuX2lzT3ZlcmxhcHBpbmckLFxuICAgICAgdG9PYnNlcnZhYmxlKHRoaXMuaXNDb21wYWN0KSxcbiAgICAgIHRvT2JzZXJ2YWJsZSh0aGlzLnZpc2libGUpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2V4cGFuZGVkLCBpc092ZXJsYXBwaW5nLCBpc0NvbXBhY3QsIHZpc2libGVdKSA9PlxuICAgICAgICBbZXhwYW5kZWQsICFpc092ZXJsYXBwaW5nLCAhaXNDb21wYWN0LCB2aXNpYmxlXS5ldmVyeShCb29sZWFuKSA/ICdyZWR1Y2VkJyA6ICdmdWxsJ1xuICAgICAgKVxuICAgIClcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudENvbnRhaW5lclBhZGRpbmckID0gdGhpcy5faG9zdENvbXBvbmVudFdpZHRoJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9jb250ZW50Q29udGFpbmVyJC5waXBlKG1hcCh0aGlzLl9nZXRDb250ZW50TGVmdFNpZGVTcGFjZSkpKVxuICApO1xuXG4gIHByaXZhdGUgc3RvcmFnZUtleSA9IGNvbXB1dGVkKCgpID0+IFtzdG9yYWdlS2V5LCB0aGlzLmlkKCldLmZpbHRlcihCb29sZWFuKS5qb2luKCctJykpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldFNpZGUodGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0TWluV2lkdGgodGhpcy5taW4pO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldE1heFdpZHRoKHRoaXMubWF4KTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRXaWR0aCh0aGlzLndpZHRoKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS51cGRhdGVSZXNpemluZyh0aGlzLl91cGRhdGVTaWRlbmF2RXZlbnQkKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRDb250ZW50Q29udGFpbmVyU3BhY2luZyh0aGlzLl9jb250ZW50Q29udGFpbmVyUGFkZGluZyQpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldEV4cGFuZGVkKHRoaXMuZXhwYW5kZWQpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldE1pbk1lbnVEaXN0YW5jZSh0aGlzLm1pbk1lbnVEaXN0YW5jZSk7XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6YWJsZSgpKSB7XG4gICAgICAgICAgY29uc3QgeyB3aWR0aCB9ID0gSlNPTi5wYXJzZSh0aGlzLmxvY2FsU3RvcmFnZS5yZXRyaWV2ZSh0aGlzLnN0b3JhZ2VLZXkoKSkgfHwgJ3t9Jyk7XG4gICAgICAgICAgaWYgKHdpZHRoKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMud2lkdGguc2V0KHdpZHRoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIHN0YXJ0UmVzaXppbmcoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmVzaXphYmxlKCkpIHJldHVybjtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zdGFydFJlc2l6aW5nKGV2ZW50KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZXVwJylcbiAgc3RvcFJlc2l6aW5nKCkge1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnN0b3BSZXNpemluZygpO1xuICAgIHRoaXMubG9jYWxTdG9yYWdlLnN0b3JlKHRoaXMuc3RvcmFnZUtleSgpLCBKU09OLnN0cmluZ2lmeSh7IHdpZHRoOiB0aGlzLnNpZGVuYXZTdG9yZS53aWR0aCgpIH0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVJY29uKCkge1xuICAgIHJldHVybiAodGhpcy5leHBhbmRlZCgpICYmIHRoaXMucG9zaXRpb24oKSA9PT0gJ2xlZnQnKSB8fCAoIXRoaXMuZXhwYW5kZWQoKSAmJiB0aGlzLnBvc2l0aW9uKCkgPT09ICdyaWdodCcpXG4gICAgICA/IGZhQ2hldnJvbkxlZnRcbiAgICAgIDogZmFDaGV2cm9uUmlnaHQ7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlTWVudSgpIHtcbiAgICBpZiAodGhpcy5zaWRlbmF2U3RvcmUuaGFzTWVudVdpZHRoQ2hhbmdlZCgpICYmIHRoaXMuZXhwYW5kZWQoKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5leHBhbmRlZCgpID8gdGhpcy5oaWRlTWVudSgpIDogdGhpcy5zaG93TWVudSgpO1xuICB9XG5cbiAgcHVibGljIGhpZGVNZW51KCkge1xuICAgIHRoaXMuZXhwYW5kZWQuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93TWVudSgpIHtcbiAgICB0aGlzLmV4cGFuZGVkLnNldCh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgIGNvbnN0IGRpZE9wZW4gPSBldmVudC50b1N0YXRlICE9PSAnaGlkZGVuJztcbiAgICB0aGlzLm1lbnVTdGF0ZS5zZXQoZGlkT3BlbiA/ICdvcGVuJyA6ICdjbG9zZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29udGVudExlZnRTaWRlU3BhY2UoZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICBjb25zdCBwYWRkaW5nID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudC5uYXRpdmVFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWxlZnQnKTtcbiAgICBjb25zdCBtYXJnaW4gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ21hcmdpbi1sZWZ0Jyk7XG4gICAgcmV0dXJuIHBhcnNlSW50KHBhZGRpbmcsIDEwKSArIHBhcnNlSW50KG1hcmdpbiwgMTApO1xuICB9XG59XG4iLCJAaWYgKHZpc2libGUoKSkge1xuICBAaWYgKGlzQ29tcGFjdCgpKSB7XG4gICAgPGRpdiBjbGFzcz1cImNvbXBhY3QtaGVhZGVyXCI+XG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cImNvbXBhY3RIZWFkZXJDbGFzcygpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpcy1mbGV4IGlzLWFsaWduLWl0ZW1zLWZsZXgtc3RhcnQgaXMtanVzdGlmeS1jb250ZW50LXNwYWNlLWJldHdlZW4gdy0xMDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXMtZmxleCBpcy1mbGV4LWdyb3ctMSBpcy1qdXN0aWZ5LWNvbnRlbnQtc3BhY2UtYmV0d2VlbiBpcy1mbGV4LWRpcmVjdGlvbi1jb2x1bW5cIj5cbiAgICAgICAgICAgIEBpZiAoZHJhd2VySGVhZGVyVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyYXdlckhlYWRlclRlbXBsYXRlKClcIiAvPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKGRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKClcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgQGlmIChsaW5rcygpPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duICNvcHRpb25EZD1cIm5nYkRyb3Bkb3duXCIgY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbS1lbmRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb21wYWN0LWhlYWRlci0tYnRuIGJ1dHRvbiBpcy1zbWFsbCBpcy1uby1zaGFkb3dcIlxuICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJkcmF3ZXItbWVudVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIE1lbnVcblxuICAgICAgICAgICAgICAgIDxmYS1pY29uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbXBhY3QtaGVhZGVyLS1idG5fX2ljb25cIlxuICAgICAgICAgICAgICAgICAgW2ljb25dPVwib3B0aW9uRGQuaXNPcGVuKCkgPyBmYUNoZXZyb25VcCA6IGZhQ2hldnJvbkRvd25cIlxuICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudSBpZD1cImRyYXdlci1tZW51XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRlbnQgbmF2aWdhdGlvbi1tZW51LWRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgICA8aGUtbmF2aWdhdGlvbi1tZW51IChjbG9zZWQpPVwib3B0aW9uRGQuY2xvc2UoKVwiIFtsaW5rc109XCJsaW5rcygpXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH0gQGVsc2Uge1xuICAgIDxhc2lkZT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzaGVsbF9fbWVudUNvbnRlbnQgfCBoLTEwMFwiXG4gICAgICAgIChAc2lkZU1lbnUuZG9uZSk9XCJhbmltYXRpb25Eb25lKCRldmVudClcIlxuICAgICAgICBbQHNpZGVNZW51XT1cImV4cGFuZGVkKCkgPyAnZnVsbCcgOiAnaGlkZGVuJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgc2hlbGxfX21lbnVDb250ZW50LS1jb250YWluZXJcIj5cbiAgICAgICAgICBAaWYgKGRyYXdlckhlYWRlclRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJhd2VySGVhZGVyVGVtcGxhdGUoKVwiIC8+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChsaW5rcygpPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8aGUtbmF2aWdhdGlvbi1tZW51IFtsaW5rc109XCJsaW5rcygpXCI+XG4gICAgICAgICAgICAgIEBpZiAoZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG91dGVyLWNvbnRlbnQgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKClcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2hlLW5hdmlnYXRpb24tbWVudT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVNZW51KClcIiAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXppbmcoJGV2ZW50KVwiIGNsYXNzPVwic2hlbGxfX21lbnVDb250ZW50LS10b2dnbGVcIj5cbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJ0b2dnbGVJY29uKClcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYXNpZGU+XG4gIH1cbn1cblxuPGRpdlxuICBbY2xhc3MuaXMtcmVzaXppbmddPVwiaXNIb2xkaW5nVG9nZ2xlKClcIlxuICBbQHJlZHVjZVdpZHRoXT1cInJlZHVjZUFuaW1hdGlvbigpXCJcbiAgY2xhc3M9XCJzaGVsbF9fY29udGVudCB8IGgtMTAwIHctMTAwIGlzLWZsZXggaXMtanVzdGlmeS1jb250ZW50LWZsZXgtZW5kXCI+XG4gIDxkaXZcbiAgICBbY2xhc3MuZGlzYWJsZS1hbmltYXRpb25dPVwiZGlzYWJsZUFuaW1hdGlvbigpXCJcbiAgICBbY2xhc3MuZGlzYWJsZS10cmFuc2Zvcm0teF09XCJoYXNNb2RhbCgpXCJcbiAgICBjbGFzcz1cInNoZWxsX19jb250ZW50LS1ib2R5IHwgdy0xMDBcIj5cbiAgICA8ZGl2ICNjb250ZW50Q29udGFpbmVyIFtjbGFzc05hbWVdPVwiY29udGVudFBhZGRpbmdTdHlsZXMoKVwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2RyYXdlci1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -9,7 +9,7 @@ const initialResizeEvent = {
9
9
  startingWidth: 0,
10
10
  newWidth: 0
11
11
  };
12
- const initialState = {
12
+ export const initialState = {
13
13
  minWidth: 250,
14
14
  maxWidth: 600,
15
15
  width: 256,
@@ -86,4 +86,4 @@ export const sidenavStore = signalStore(withState(initialState), withComputed(({
86
86
  setSidenavWidthCss(sidenavWidth);
87
87
  }
88
88
  })));
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vZHJhd2VyLWNvbnRhaW5lci9zaWRlbmF2LnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixVQUFVLEVBQUUsS0FBSztJQUNqQixlQUFlLEVBQUUsQ0FBQztJQUNsQixhQUFhLEVBQUUsQ0FBQztJQUNoQixRQUFRLEVBQUUsQ0FBQztDQUNaLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRztJQUNuQixRQUFRLEVBQUUsR0FBRztJQUNiLFFBQVEsRUFBRSxHQUFHO0lBQ2IsS0FBSyxFQUFFLEdBQUc7SUFDVixRQUFRLEVBQUUsSUFBSTtJQUNkLElBQUksRUFBRSxNQUEwQjtJQUNoQyxXQUFXLEVBQUUsa0JBQWtCO0lBQy9CLHVCQUF1QixFQUFFLENBQUM7SUFDMUIsZUFBZSxFQUFFLEVBQUU7Q0FDcEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxXQUFXLENBQ3JDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFDdkIsWUFBWSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLFlBQVksRUFBRSxR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c2lnbmFsU3RvcmUsIHdpdGhDb21wdXRlZCwgd2l0aEhvb2tzLCB3aXRoTWV0aG9kcywgd2l0aFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyByeE1ldGhvZCB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLCBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmNvbnN0IGluaXRpYWxSZXNpemVFdmVudCA9IHtcbiAgaXNSZXNpemluZzogZmFsc2UsXG4gIHN0YXJ0aW5nQ3Vyc29yWDogMCxcbiAgc3RhcnRpbmdXaWR0aDogMCxcbiAgbmV3V2lkdGg6IDBcbn07XG5cbmNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgbWluV2lkdGg6IDI1MCxcbiAgbWF4V2lkdGg6IDYwMCxcbiAgd2lkdGg6IDI1NixcbiAgZXhwYW5kZWQ6IHRydWUsXG4gIHNpZGU6ICdsZWZ0JyBhcyAnbGVmdCcgfCAncmlnaHQnLFxuICByZXNpemVFdmVudDogaW5pdGlhbFJlc2l6ZUV2ZW50LFxuICBjb250ZW50Q29udGFpbmVyU3BhY2luZzogMCxcbiAgbWluTWVudURpc3RhbmNlOiAyMFxufTtcblxuZXhwb3J0IGNvbnN0IHNpZGVuYXZTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICB3aXRoU3RhdGUoaW5pdGlhbFN0YXRlKSxcbiAgd2l0aENvbXB1dGVkKCh7IG1pbldpZHRoLCB3aWR0aCwgbWF4V2lkdGggfSkgPT4gKHtcbiAgICBzaWRlbmF2V2lkdGg6IGNvbXB1dGVkKCgpID0+IE1hdGgubWluKE1hdGgubWF4KHdpZHRoKCksIG1pbldpZHRoKCkpLCBtYXhXaWR0aCgpKSlcbiAgfSkpLFxuICB3aXRoTWV0aG9kcyhzdG9yZSA9PiAoe1xuICAgIHNldEV4cGFuZGVkOiByeE1ldGhvZDxib29sZWFuPihwaXBlKHRhcCgoZXhwYW5kZWQ6IGJvb2xlYW4pID0+IHBhdGNoU3RhdGUoc3RvcmUsIHsgZXhwYW5kZWQgfSkpKSksXG4gICAgc2V0U2lkZTogcnhNZXRob2Q8J2xlZnQnIHwgJ3JpZ2h0Jz4ocGlwZSh0YXAoKHNpZGU6ICdsZWZ0JyB8ICdyaWdodCcpID0+IHBhdGNoU3RhdGUoc3RvcmUsIHsgc2lkZSB9KSkpKSxcbiAgICBzZXRNaW5NZW51RGlzdGFuY2U6IHJ4TWV0aG9kPG51bWJlcj4oXG4gICAgICBwaXBlKHRhcCgobWluTWVudURpc3RhbmNlOiBudW1iZXIpID0+IHBhdGNoU3RhdGUoc3RvcmUsIHsgbWluTWVudURpc3RhbmNlOiBtaW5NZW51RGlzdGFuY2UgfSkpKVxuICAgICksXG4gICAgc2V0TWluV2lkdGg6IHJ4TWV0aG9kPG51bWJlcj4ocGlwZSh0YXAoKG1pbjogbnVtYmVyKSA9PiBwYXRjaFN0YXRlKHN0b3JlLCB7IG1pbldpZHRoOiBtaW4gfSkpKSksXG4gICAgc2V0TWF4V2lkdGg6IHJ4TWV0aG9kPG51bWJlcj4ocGlwZSh0YXAoKG1heDogbnVtYmVyKSA9PiBwYXRjaFN0YXRlKHN0b3JlLCB7IG1heFdpZHRoOiBtYXggfSkpKSksXG4gICAgc2V0V2lkdGg6IHJ4TWV0aG9kPG51bWJlcj4ocGlwZSh0YXAoKHdpZHRoOiBudW1iZXIpID0+IHBhdGNoU3RhdGUoc3RvcmUsIHsgd2lkdGggfSkpKSksXG4gICAgc2V0U2lkZW5hdldpZHRoQ3NzOiByeE1ldGhvZDxudW1iZXI+KFxuICAgICAgcGlwZShcbiAgICAgICAgdGhyb3R0bGVUaW1lKDAsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSxcbiAgICAgICAgdGFwKCh3aWR0aDogbnVtYmVyKSA9PiBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCctLXNpZGVuYXYtd2lkdGgnLCBgJHt3aWR0aH1weGApKVxuICAgICAgKVxuICAgICksXG4gICAgc2V0Q29udGVudFRyYW5zZm9ybUNzczogcnhNZXRob2Q8e1xuICAgICAgZXhwYW5kZWQ6IGJvb2xlYW47XG4gICAgICBwb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgfT4oXG4gICAgICBwaXBlKFxuICAgICAgICB0YXAoKHsgZXhwYW5kZWQsIHBvc2l0aW9uLCB2YWx1ZSB9KSA9PlxuICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICAgICAnLS1jb250ZW50VHJhbnNpdGlvblgnLFxuICAgICAgICAgICAgYCR7ZXhwYW5kZWQgPyAocG9zaXRpb24gPT0gJ2xlZnQnID8gMSA6IC0xKSAqIHZhbHVlIDogMH1weGBcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIHNldENvbnRlbnRDb250YWluZXJTcGFjaW5nOiByeE1ldGhvZDxudW1iZXI+KFxuICAgICAgcGlwZSh0YXAoKGNvbnRlbnRDb250YWluZXJTcGFjaW5nOiBudW1iZXIpID0+IHBhdGNoU3RhdGUoc3RvcmUsIHsgY29udGVudENvbnRhaW5lclNwYWNpbmcgfSkpKVxuICAgICksXG4gICAgc3RhcnRSZXNpemluZzogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PlxuICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICByZXNpemVFdmVudDoge1xuICAgICAgICAgIGlzUmVzaXppbmc6IHRydWUsXG4gICAgICAgICAgc3RhcnRpbmdDdXJzb3JYOiBldmVudC5jbGllbnRYLFxuICAgICAgICAgIHN0YXJ0aW5nV2lkdGg6IHN0b3JlLnNpZGVuYXZXaWR0aCgpLFxuICAgICAgICAgIG5ld1dpZHRoOiBzdG9yZS5zaWRlbmF2V2lkdGgoKVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICB1cGRhdGVSZXNpemluZzogcnhNZXRob2Q8TW91c2VFdmVudD4oXG4gICAgICB0YXAoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gc3RvcmUucmVzaXplRXZlbnQoKTtcbiAgICAgICAgLy8gTm8gbmVlZCB0byBldmVuIGNvbnRpbnVlIGlmIHdlJ3JlIG5vdCByZXNpemluZ1xuICAgICAgICBpZiAoIXJlc2l6ZUV2ZW50LmlzUmVzaXppbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyAxLiBDYWxjdWxhdGUgaG93IG11Y2ggbW91c2UgaGFzIG1vdmVkIG9uIHRoZSB4LWF4aXNcbiAgICAgICAgY29uc3QgY3Vyc29yRGVsdGFYID0gZXZlbnQuY2xpZW50WCAtIHJlc2l6ZUV2ZW50LnN0YXJ0aW5nQ3Vyc29yWDtcblxuICAgICAgICAvLyAyLiBDYWxjdWxhdGUgdGhlIG5ldyB3aWR0aCBhY2NvcmRpbmcgdG8gaW5pdGlhbCB3aWR0aCBhbmQgbW91c2UgbW92ZW1lbnRcbiAgICAgICAgY29uc3QgbmV3V2lkdGggPSByZXNpemVFdmVudC5zdGFydGluZ1dpZHRoIC0gKHN0b3JlLnNpZGUoKSA9PT0gJ2xlZnQnID8gLTEgOiAxKSAqIGN1cnNvckRlbHRhWDtcblxuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHJlc2l6ZUV2ZW50OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5yZXNpemVFdmVudCxcbiAgICAgICAgICAgIG5ld1dpZHRoXG4gICAgICAgICAgfSxcbiAgICAgICAgICB3aWR0aDogbmV3V2lkdGhcbiAgICAgICAgfSkpO1xuICAgICAgfSlcbiAgICApLFxuICAgIHN0b3BSZXNpemluZzogKCkgPT5cbiAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgcmVzaXplRXZlbnQ6IHtcbiAgICAgICAgICAuLi5zdG9yZS5yZXNpemVFdmVudCgpLFxuICAgICAgICAgIGlzUmVzaXppbmc6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH0pKSxcbiAgd2l0aENvbXB1dGVkKCh7IHNpZGVuYXZXaWR0aCwgbWluTWVudURpc3RhbmNlLCByZXNpemVFdmVudCwgY29udGVudENvbnRhaW5lclNwYWNpbmcgfSkgPT4ge1xuICAgIGNvbnN0IGlzTWVudU92ZXJsYXBwaW5nID0gY29tcHV0ZWQoKCkgPT4gc2lkZW5hdldpZHRoKCkgPCBjb250ZW50Q29udGFpbmVyU3BhY2luZygpICogMik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2lkZW5hdldpZHRoOiBzaWRlbmF2V2lkdGgsXG4gICAgICBoYXNNZW51V2lkdGhDaGFuZ2VkOiBjb21wdXRlZCgoKSA9PiByZXNpemVFdmVudCgpLnN0YXJ0aW5nV2lkdGggIT09IHJlc2l6ZUV2ZW50KCkubmV3V2lkdGgpLFxuICAgICAgaXNSZXNpemluZzogY29tcHV0ZWQoKCkgPT4gcmVzaXplRXZlbnQoKS5pc1Jlc2l6aW5nKSxcbiAgICAgIGlzTWVudU92ZXJsYXBwaW5nOiBpc01lbnVPdmVybGFwcGluZyxcbiAgICAgIGNvbnRlbnRDb250YWluZXJUcmFuc2Zvcm06IGNvbXB1dGVkKCgpID0+XG4gICAgICAgIHNpZGVuYXZXaWR0aCgpICsgbWluTWVudURpc3RhbmNlKCkgPiBjb250ZW50Q29udGFpbmVyU3BhY2luZygpICYmIGlzTWVudU92ZXJsYXBwaW5nKClcbiAgICAgICAgICA/IHNpZGVuYXZXaWR0aCgpICsgbWluTWVudURpc3RhbmNlKCkgLSBjb250ZW50Q29udGFpbmVyU3BhY2luZygpXG4gICAgICAgICAgOiAwXG4gICAgICApXG4gICAgfTtcbiAgfSksXG4gIHdpdGhIb29rcyhcbiAgICAoeyBzaWRlbmF2V2lkdGgsIHNldFNpZGVuYXZXaWR0aENzcywgc2V0Q29udGVudFRyYW5zZm9ybUNzcywgc2lkZSwgZXhwYW5kZWQsIGNvbnRlbnRDb250YWluZXJUcmFuc2Zvcm0gfSkgPT4gKHtcbiAgICAgIG9uSW5pdDogKCkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZW50VHJhbnNmb3JtID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQoKSxcbiAgICAgICAgICBwb3NpdGlvbjogc2lkZSgpLFxuICAgICAgICAgIHZhbHVlOiBjb250ZW50Q29udGFpbmVyVHJhbnNmb3JtKClcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHNldENvbnRlbnRUcmFuc2Zvcm1Dc3MoY29udGVudFRyYW5zZm9ybSk7XG4gICAgICAgIHNldFNpZGVuYXZXaWR0aENzcyhzaWRlbmF2V2lkdGgpO1xuICAgICAgfVxuICAgIH0pXG4gIClcbik7XG4iXX0=
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vZHJhd2VyLWNvbnRhaW5lci9zaWRlbmF2LnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixVQUFVLEVBQUUsS0FBSztJQUNqQixlQUFlLEVBQUUsQ0FBQztJQUNsQixhQUFhLEVBQUUsQ0FBQztJQUNoQixRQUFRLEVBQUUsQ0FBQztDQUNaLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsUUFBUSxFQUFFLEdBQUc7SUFDYixRQUFRLEVBQUUsR0FBRztJQUNiLEtBQUssRUFBRSxHQUFHO0lBQ1YsUUFBUSxFQUFFLElBQUk7SUFDZCxJQUFJLEVBQUUsTUFBMEI7SUFDaEMsV0FBVyxFQUFFLGtCQUFrQjtJQUMvQix1QkFBdUIsRUFBRSxDQUFDO0lBQzFCLGVBQWUsRUFBRSxFQUFFO0NBQ3BCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUNyQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQ3ZCLFlBQVksQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQyxZ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dGNoU3RhdGUsIHNpZ25hbFN0b3JlLCB3aXRoQ29tcHV0ZWQsIHdpdGhIb29rcywgd2l0aE1ldGhvZHMsIHdpdGhTdGF0ZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHsgcnhNZXRob2QgfSBmcm9tICdAbmdyeC9zaWduYWxzL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgcGlwZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5jb25zdCBpbml0aWFsUmVzaXplRXZlbnQgPSB7XG4gIGlzUmVzaXppbmc6IGZhbHNlLFxuICBzdGFydGluZ0N1cnNvclg6IDAsXG4gIHN0YXJ0aW5nV2lkdGg6IDAsXG4gIG5ld1dpZHRoOiAwXG59O1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICBtaW5XaWR0aDogMjUwLFxuICBtYXhXaWR0aDogNjAwLFxuICB3aWR0aDogMjU2LFxuICBleHBhbmRlZDogdHJ1ZSxcbiAgc2lkZTogJ2xlZnQnIGFzICdsZWZ0JyB8ICdyaWdodCcsXG4gIHJlc2l6ZUV2ZW50OiBpbml0aWFsUmVzaXplRXZlbnQsXG4gIGNvbnRlbnRDb250YWluZXJTcGFjaW5nOiAwLFxuICBtaW5NZW51RGlzdGFuY2U6IDIwXG59O1xuXG5leHBvcnQgY29uc3Qgc2lkZW5hdlN0b3JlID0gc2lnbmFsU3RvcmUoXG4gIHdpdGhTdGF0ZShpbml0aWFsU3RhdGUpLFxuICB3aXRoQ29tcHV0ZWQoKHsgbWluV2lkdGgsIHdpZHRoLCBtYXhXaWR0aCB9KSA9PiAoe1xuICAgIHNpZGVuYXZXaWR0aDogY29tcHV0ZWQoKCkgPT4gTWF0aC5taW4oTWF0aC5tYXgod2lkdGgoKSwgbWluV2lkdGgoKSksIG1heFdpZHRoKCkpKVxuICB9KSksXG4gIHdpdGhNZXRob2RzKHN0b3JlID0+ICh7XG4gICAgc2V0RXhwYW5kZWQ6IHJ4TWV0aG9kPGJvb2xlYW4+KHBpcGUodGFwKChleHBhbmRlZDogYm9vbGVhbikgPT4gcGF0Y2hTdGF0ZShzdG9yZSwgeyBleHBhbmRlZCB9KSkpKSxcbiAgICBzZXRTaWRlOiByeE1ldGhvZDwnbGVmdCcgfCAncmlnaHQnPihwaXBlKHRhcCgoc2lkZTogJ2xlZnQnIHwgJ3JpZ2h0JykgPT4gcGF0Y2hTdGF0ZShzdG9yZSwgeyBzaWRlIH0pKSkpLFxuICAgIHNldE1pbk1lbnVEaXN0YW5jZTogcnhNZXRob2Q8bnVtYmVyPihcbiAgICAgIHBpcGUodGFwKChtaW5NZW51RGlzdGFuY2U6IG51bWJlcikgPT4gcGF0Y2hTdGF0ZShzdG9yZSwgeyBtaW5NZW51RGlzdGFuY2U6IG1pbk1lbnVEaXN0YW5jZSB9KSkpXG4gICAgKSxcbiAgICBzZXRNaW5XaWR0aDogcnhNZXRob2Q8bnVtYmVyPihwaXBlKHRhcCgobWluOiBudW1iZXIpID0+IHBhdGNoU3RhdGUoc3RvcmUsIHsgbWluV2lkdGg6IG1pbiB9KSkpKSxcbiAgICBzZXRNYXhXaWR0aDogcnhNZXRob2Q8bnVtYmVyPihwaXBlKHRhcCgobWF4OiBudW1iZXIpID0+IHBhdGNoU3RhdGUoc3RvcmUsIHsgbWF4V2lkdGg6IG1heCB9KSkpKSxcbiAgICBzZXRXaWR0aDogcnhNZXRob2Q8bnVtYmVyPihwaXBlKHRhcCgod2lkdGg6IG51bWJlcikgPT4gcGF0Y2hTdGF0ZShzdG9yZSwgeyB3aWR0aCB9KSkpKSxcbiAgICBzZXRTaWRlbmF2V2lkdGhDc3M6IHJ4TWV0aG9kPG51bWJlcj4oXG4gICAgICBwaXBlKFxuICAgICAgICB0aHJvdHRsZVRpbWUoMCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpLFxuICAgICAgICB0YXAoKHdpZHRoOiBudW1iZXIpID0+IGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2lkZW5hdi13aWR0aCcsIGAke3dpZHRofXB4YCkpXG4gICAgICApXG4gICAgKSxcbiAgICBzZXRDb250ZW50VHJhbnNmb3JtQ3NzOiByeE1ldGhvZDx7XG4gICAgICBleHBhbmRlZDogYm9vbGVhbjtcbiAgICAgIHBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnO1xuICAgICAgdmFsdWU6IG51bWJlcjtcbiAgICB9PihcbiAgICAgIHBpcGUoXG4gICAgICAgIHRhcCgoeyBleHBhbmRlZCwgcG9zaXRpb24sIHZhbHVlIH0pID0+XG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICctLWNvbnRlbnRUcmFuc2l0aW9uWCcsXG4gICAgICAgICAgICBgJHtleHBhbmRlZCA/IChwb3NpdGlvbiA9PSAnbGVmdCcgPyAxIDogLTEpICogdmFsdWUgOiAwfXB4YFxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICksXG4gICAgc2V0Q29udGVudENvbnRhaW5lclNwYWNpbmc6IHJ4TWV0aG9kPG51bWJlcj4oXG4gICAgICBwaXBlKHRhcCgoY29udGVudENvbnRhaW5lclNwYWNpbmc6IG51bWJlcikgPT4gcGF0Y2hTdGF0ZShzdG9yZSwgeyBjb250ZW50Q29udGFpbmVyU3BhY2luZyB9KSkpXG4gICAgKSxcbiAgICBzdGFydFJlc2l6aW5nOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+XG4gICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgIHJlc2l6ZUV2ZW50OiB7XG4gICAgICAgICAgaXNSZXNpemluZzogdHJ1ZSxcbiAgICAgICAgICBzdGFydGluZ0N1cnNvclg6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgc3RhcnRpbmdXaWR0aDogc3RvcmUuc2lkZW5hdldpZHRoKCksXG4gICAgICAgICAgbmV3V2lkdGg6IHN0b3JlLnNpZGVuYXZXaWR0aCgpXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIHVwZGF0ZVJlc2l6aW5nOiByeE1ldGhvZDxNb3VzZUV2ZW50PihcbiAgICAgIHRhcCgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgcmVzaXplRXZlbnQgPSBzdG9yZS5yZXNpemVFdmVudCgpO1xuICAgICAgICAvLyBObyBuZWVkIHRvIGV2ZW4gY29udGludWUgaWYgd2UncmUgbm90IHJlc2l6aW5nXG4gICAgICAgIGlmICghcmVzaXplRXZlbnQuaXNSZXNpemluZykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDEuIENhbGN1bGF0ZSBob3cgbXVjaCBtb3VzZSBoYXMgbW92ZWQgb24gdGhlIHgtYXhpc1xuICAgICAgICBjb25zdCBjdXJzb3JEZWx0YVggPSBldmVudC5jbGllbnRYIC0gcmVzaXplRXZlbnQuc3RhcnRpbmdDdXJzb3JYO1xuXG4gICAgICAgIC8vIDIuIENhbGN1bGF0ZSB0aGUgbmV3IHdpZHRoIGFjY29yZGluZyB0byBpbml0aWFsIHdpZHRoIGFuZCBtb3VzZSBtb3ZlbWVudFxuICAgICAgICBjb25zdCBuZXdXaWR0aCA9IHJlc2l6ZUV2ZW50LnN0YXJ0aW5nV2lkdGggLSAoc3RvcmUuc2lkZSgpID09PSAnbGVmdCcgPyAtMSA6IDEpICogY3Vyc29yRGVsdGFYO1xuXG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHN0YXRlID0+ICh7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgcmVzaXplRXZlbnQ6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLnJlc2l6ZUV2ZW50LFxuICAgICAgICAgICAgbmV3V2lkdGhcbiAgICAgICAgICB9LFxuICAgICAgICAgIHdpZHRoOiBuZXdXaWR0aFxuICAgICAgICB9KSk7XG4gICAgICB9KVxuICAgICksXG4gICAgc3RvcFJlc2l6aW5nOiAoKSA9PlxuICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICByZXNpemVFdmVudDoge1xuICAgICAgICAgIC4uLnN0b3JlLnJlc2l6ZUV2ZW50KCksXG4gICAgICAgICAgaXNSZXNpemluZzogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSlcbiAgfSkpLFxuICB3aXRoQ29tcHV0ZWQoKHsgc2lkZW5hdldpZHRoLCBtaW5NZW51RGlzdGFuY2UsIHJlc2l6ZUV2ZW50LCBjb250ZW50Q29udGFpbmVyU3BhY2luZyB9KSA9PiB7XG4gICAgY29uc3QgaXNNZW51T3ZlcmxhcHBpbmcgPSBjb21wdXRlZCgoKSA9PiBzaWRlbmF2V2lkdGgoKSA8IGNvbnRlbnRDb250YWluZXJTcGFjaW5nKCkgKiAyKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzaWRlbmF2V2lkdGg6IHNpZGVuYXZXaWR0aCxcbiAgICAgIGhhc01lbnVXaWR0aENoYW5nZWQ6IGNvbXB1dGVkKCgpID0+IHJlc2l6ZUV2ZW50KCkuc3RhcnRpbmdXaWR0aCAhPT0gcmVzaXplRXZlbnQoKS5uZXdXaWR0aCksXG4gICAgICBpc1Jlc2l6aW5nOiBjb21wdXRlZCgoKSA9PiByZXNpemVFdmVudCgpLmlzUmVzaXppbmcpLFxuICAgICAgaXNNZW51T3ZlcmxhcHBpbmc6IGlzTWVudU92ZXJsYXBwaW5nLFxuICAgICAgY29udGVudENvbnRhaW5lclRyYW5zZm9ybTogY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgc2lkZW5hdldpZHRoKCkgKyBtaW5NZW51RGlzdGFuY2UoKSA+IGNvbnRlbnRDb250YWluZXJTcGFjaW5nKCkgJiYgaXNNZW51T3ZlcmxhcHBpbmcoKVxuICAgICAgICAgID8gc2lkZW5hdldpZHRoKCkgKyBtaW5NZW51RGlzdGFuY2UoKSAtIGNvbnRlbnRDb250YWluZXJTcGFjaW5nKClcbiAgICAgICAgICA6IDBcbiAgICAgIClcbiAgICB9O1xuICB9KSxcbiAgd2l0aEhvb2tzKFxuICAgICh7IHNpZGVuYXZXaWR0aCwgc2V0U2lkZW5hdldpZHRoQ3NzLCBzZXRDb250ZW50VHJhbnNmb3JtQ3NzLCBzaWRlLCBleHBhbmRlZCwgY29udGVudENvbnRhaW5lclRyYW5zZm9ybSB9KSA9PiAoe1xuICAgICAgb25Jbml0OiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRUcmFuc2Zvcm0gPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgICAgICAgIGV4cGFuZGVkOiBleHBhbmRlZCgpLFxuICAgICAgICAgIHBvc2l0aW9uOiBzaWRlKCksXG4gICAgICAgICAgdmFsdWU6IGNvbnRlbnRDb250YWluZXJUcmFuc2Zvcm0oKVxuICAgICAgICB9KSk7XG5cbiAgICAgICAgc2V0Q29udGVudFRyYW5zZm9ybUNzcyhjb250ZW50VHJhbnNmb3JtKTtcbiAgICAgICAgc2V0U2lkZW5hdldpZHRoQ3NzKHNpZGVuYXZXaWR0aCk7XG4gICAgICB9XG4gICAgfSlcbiAgKVxuKTtcbiJdfQ==