@vendure/admin-ui 2.1.0-next.6 → 2.1.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.
Files changed (43) hide show
  1. package/core/common/base-list.component.d.ts +1 -0
  2. package/core/common/version.d.ts +1 -1
  3. package/core/extension/register-route-component.d.ts +3 -3
  4. package/core/providers/data-table/data-table-filter-collection.d.ts +2 -0
  5. package/core/providers/data-table/data-table-sort-collection.d.ts +2 -0
  6. package/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.d.ts +3 -2
  7. package/core/shared/components/data-table-filters/data-table-filters.component.d.ts +1 -1
  8. package/core/shared/components/order-state-label/order-state-label.component.d.ts +1 -1
  9. package/core/shared/dynamic-form-inputs/default-form-inputs.d.ts +1 -1
  10. package/esm2022/core/common/base-list.component.mjs +13 -4
  11. package/esm2022/core/common/version.mjs +2 -2
  12. package/esm2022/core/extension/register-route-component.mjs +1 -1
  13. package/esm2022/core/providers/data-table/data-table-filter-collection.mjs +19 -3
  14. package/esm2022/core/providers/data-table/data-table-sort-collection.mjs +8 -2
  15. package/esm2022/core/shared/components/affixed-input/affixed-input.component.mjs +2 -2
  16. package/esm2022/core/shared/components/asset-gallery/asset-gallery.component.mjs +1 -1
  17. package/esm2022/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.mjs +7 -5
  18. package/esm2022/core/shared/components/data-table-filters/data-table-filters.component.mjs +5 -4
  19. package/esm2022/order/components/order-data-table/order-data-table.component.mjs +3 -3
  20. package/esm2022/order/components/order-table/order-table.component.mjs +3 -3
  21. package/fesm2022/vendure-admin-ui-core.mjs +47 -14
  22. package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
  23. package/fesm2022/vendure-admin-ui-order.mjs +4 -4
  24. package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
  25. package/package.json +13 -13
  26. package/static/i18n-messages/ar.json +1 -1
  27. package/static/i18n-messages/cs.json +1 -1
  28. package/static/i18n-messages/de.json +1 -1
  29. package/static/i18n-messages/en.json +1 -1
  30. package/static/i18n-messages/es.json +1 -1
  31. package/static/i18n-messages/fa.json +795 -0
  32. package/static/i18n-messages/fr.json +1 -1
  33. package/static/i18n-messages/he.json +1 -1
  34. package/static/i18n-messages/it.json +1 -1
  35. package/static/i18n-messages/ne.json +795 -0
  36. package/static/i18n-messages/pl.json +1 -1
  37. package/static/i18n-messages/pt_BR.json +1 -1
  38. package/static/i18n-messages/pt_PT.json +1 -1
  39. package/static/i18n-messages/ru.json +1 -1
  40. package/static/i18n-messages/uk.json +1 -1
  41. package/static/i18n-messages/zh_Hans.json +1 -1
  42. package/static/i18n-messages/zh_Hant.json +1 -1
  43. package/static/vendure-ui-config.json +3 -1
@@ -115,6 +115,7 @@ export declare class TypedBaseListComponent<T extends TypedDocumentNode<any, Var
115
115
  protected router: Router;
116
116
  protected serverConfigService: ServerConfigService;
117
117
  private refreshStreams;
118
+ private collections;
118
119
  constructor();
119
120
  protected configure(config: {
120
121
  document: T;
@@ -1 +1 @@
1
- export declare const ADMIN_UI_VERSION = "2.1.0-next.6";
1
+ export declare const ADMIN_UI_VERSION = "2.1.0";
@@ -24,10 +24,10 @@ export type RegisterRouteComponentOptions<Component extends any | BaseDetailComp
24
24
  path?: string;
25
25
  query?: T;
26
26
  getBreadcrumbs?: (entity: Exclude<ResultOf<T>[R], 'Query'>) => BreadcrumbValue;
27
- entityKey?: Component extends BaseDetailComponent<Entity> ? R : undefined;
27
+ entityKey?: Component extends BaseDetailComponent<any> ? R : undefined;
28
28
  variables?: T extends TypedDocumentNode<any, infer V> ? Omit<V, 'id'> : never;
29
29
  routeConfig?: Route;
30
- } & (Component extends BaseDetailComponent<Entity> ? {
30
+ } & (Component extends BaseDetailComponent<any> ? {
31
31
  entityKey: R;
32
32
  } : unknown);
33
33
  /**
@@ -88,7 +88,7 @@ export declare function registerRouteComponent<Component extends any | BaseDetai
88
88
  component: typeof AngularRouteComponent;
89
89
  title?: string | Type<import("@angular/router").Resolve<string>> | ResolveFn<string> | undefined;
90
90
  path: string;
91
- pathMatch?: "full" | "prefix" | undefined;
91
+ pathMatch?: "prefix" | "full" | undefined;
92
92
  matcher?: import("@angular/router").UrlMatcher | undefined;
93
93
  loadComponent?: (() => Type<unknown> | Observable<Type<unknown> | import("@angular/router").DefaultExport<Type<unknown>>> | Promise<Type<unknown> | import("@angular/router").DefaultExport<Type<unknown>>>) | undefined;
94
94
  redirectTo?: string | undefined;
@@ -20,9 +20,11 @@ export declare class DataTableFilterCollection<FilterInput extends Record<string
20
20
  #private;
21
21
  private router;
22
22
  valueChanges: import("rxjs").Observable<FilterWithValue<DataTableFilterType>[]>;
23
+ private readonly destroy$;
23
24
  constructor(router: Router);
24
25
  get length(): number;
25
26
  get activeFilters(): FilterWithValue[];
27
+ destroy(): void;
26
28
  addFilter<FilterType extends DataTableFilterType>(config: DataTableFilterOptions<FilterInput, FilterType>): DataTableFilterCollection<FilterInput>;
27
29
  addFilters<FilterType extends DataTableFilterType>(configs: Array<DataTableFilterOptions<FilterInput, FilterType>>): DataTableFilterCollection<FilterInput>;
28
30
  addIdFilter(): FilterInput extends {
@@ -8,8 +8,10 @@ export declare class DataTableSortCollection<SortInput extends Record<string, 'A
8
8
  name: string;
9
9
  sortOrder: DataTableSortOrder | undefined;
10
10
  }[]>;
11
+ private readonly destroy$;
11
12
  constructor(router: Router);
12
13
  get length(): number;
14
+ destroy(): void;
13
15
  addSort<Name extends keyof SortInput>(config: DataTableSortOptions<SortInput, Name>): DataTableSortCollection<SortInput, [...Names, Name]>;
14
16
  addSorts<Name extends keyof SortInput>(configs: Array<DataTableSortOptions<SortInput, Name>>): DataTableSortCollection<SortInput, [...Names, Name]>;
15
17
  addCustomFieldSorts(customFields: CustomFieldConfig[]): this;
@@ -1,5 +1,5 @@
1
1
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
2
- import { OnDestroy, OnInit } from '@angular/core';
2
+ import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
3
3
  import { ActivatedRoute } from '@angular/router';
4
4
  import { Observable } from 'rxjs';
5
5
  import { DataTableFilterCollection } from '../../../providers/data-table/data-table-filter-collection';
@@ -10,6 +10,7 @@ export declare class DataTableFilterPresetsComponent implements OnInit, OnDestro
10
10
  private route;
11
11
  private filterPresetService;
12
12
  private modalService;
13
+ private changeDetectorRef;
13
14
  dataTableId: string;
14
15
  filters: DataTableFilterCollection;
15
16
  serializedActiveFilters: string;
@@ -18,7 +19,7 @@ export declare class DataTableFilterPresetsComponent implements OnInit, OnDestro
18
19
  value: string;
19
20
  }>>;
20
21
  private destroy$;
21
- constructor(route: ActivatedRoute, filterPresetService: FilterPresetService, modalService: ModalService);
22
+ constructor(route: ActivatedRoute, filterPresetService: FilterPresetService, modalService: ModalService, changeDetectorRef: ChangeDetectorRef);
22
23
  ngOnInit(): void;
23
24
  ngOnDestroy(): void;
24
25
  deleteFilterPreset(name: string): void;
@@ -23,7 +23,7 @@ export declare class DataTableFiltersComponent implements AfterViewInit {
23
23
  constructor(i18nService: I18nService, changeDetectorRef: ChangeDetectorRef);
24
24
  ngAfterViewInit(): void;
25
25
  selectFilter(filter: DataTableFilter, value?: any): void;
26
- activate(): void;
26
+ activate(event: Event): void;
27
27
  deactivate(): void;
28
28
  static ɵfac: i0.ɵɵFactoryDeclaration<DataTableFiltersComponent, never>;
29
29
  static ɵcmp: i0.ɵɵComponentDeclaration<DataTableFiltersComponent, "vdr-data-table-filters", never, { "filters": { "alias": "filters"; "required": false; }; "filterWithValue": { "alias": "filterWithValue"; "required": false; }; }, {}, never, never, false, never>;
@@ -11,7 +11,7 @@ import * as i0 from "@angular/core";
11
11
  */
12
12
  export declare class OrderStateLabelComponent {
13
13
  state: string;
14
- get chipColorType(): "" | "error" | "success" | "warning";
14
+ get chipColorType(): "error" | "success" | "" | "warning";
15
15
  static ɵfac: i0.ɵɵFactoryDeclaration<OrderStateLabelComponent, never>;
16
16
  static ɵcmp: i0.ɵɵComponentDeclaration<OrderStateLabelComponent, "vdr-order-state-label", never, { "state": { "alias": "state"; "required": false; }; }, {}, never, ["*"], false, never>;
17
17
  }
@@ -8,7 +8,7 @@ import { PasswordFormInputComponent } from './password-form-input/password-form-
8
8
  import { ProductMultiSelectorFormInputComponent } from './product-multi-selector-form-input/product-multi-selector-form-input.component';
9
9
  import { ProductSelectorFormInputComponent } from './product-selector-form-input/product-selector-form-input.component';
10
10
  import { SelectFormInputComponent } from './select-form-input/select-form-input.component';
11
- export declare const defaultFormInputs: (typeof ProductSelectorFormInputComponent | typeof CustomerGroupFormInputComponent | typeof PasswordFormInputComponent | typeof CurrencyFormInputComponent | typeof SelectFormInputComponent | typeof JsonEditorFormInputComponent | typeof HtmlEditorFormInputComponent | typeof ProductMultiSelectorFormInputComponent | typeof CombinationModeFormInputComponent)[];
11
+ export declare const defaultFormInputs: (typeof HtmlEditorFormInputComponent | typeof JsonEditorFormInputComponent | typeof CombinationModeFormInputComponent | typeof CurrencyFormInputComponent | typeof CustomerGroupFormInputComponent | typeof PasswordFormInputComponent | typeof ProductMultiSelectorFormInputComponent | typeof ProductSelectorFormInputComponent | typeof SelectFormInputComponent)[];
12
12
  /**
13
13
  * Registers the default form input components.
14
14
  */
@@ -1,4 +1,4 @@
1
- import { Directive, inject } from '@angular/core';
1
+ import { DestroyRef, Directive, inject } from '@angular/core';
2
2
  import { FormControl } from '@angular/forms';
3
3
  import { ActivatedRoute, Router } from '@angular/router';
4
4
  import { BehaviorSubject, combineLatest, merge, Subject } from 'rxjs';
@@ -136,6 +136,11 @@ export class TypedBaseListComponent extends BaseListComponent {
136
136
  this.router = inject(Router);
137
137
  this.serverConfigService = inject(ServerConfigService);
138
138
  this.refreshStreams = [];
139
+ this.collections = [];
140
+ const destroyRef = inject(DestroyRef);
141
+ destroyRef.onDestroy(() => {
142
+ this.collections.forEach(c => c.destroy());
143
+ });
139
144
  }
140
145
  configure(config) {
141
146
  super.setQueryFn((args) => this.dataService.query(config.document).refetchOnChannelChange(), data => config.getItems(data), (skip, take) => config.setVariables?.(skip, take) ?? {});
@@ -151,10 +156,14 @@ export class TypedBaseListComponent extends BaseListComponent {
151
156
  super.refreshListOnChanges(this.contentLanguage$, ...this.refreshStreams);
152
157
  }
153
158
  createFilterCollection() {
154
- return new DataTableFilterCollection(this.router);
159
+ const collection = new DataTableFilterCollection(this.router);
160
+ this.collections.push(collection);
161
+ return collection;
155
162
  }
156
163
  createSortCollection() {
157
- return new DataTableSortCollection(this.router);
164
+ const collection = new DataTableSortCollection(this.router);
165
+ this.collections.push(collection);
166
+ return collection;
158
167
  }
159
168
  setLanguage(code) {
160
169
  this.dataService.client.setContentLanguage(code).subscribe();
@@ -168,4 +177,4 @@ export class TypedBaseListComponent extends BaseListComponent {
168
177
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: TypedBaseListComponent, decorators: [{
169
178
  type: Directive
170
179
  }], ctorParameters: function () { return []; } });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tbW9uL2Jhc2UtbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUF1QixNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUc3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUU3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBZ0JqRTs7Ozs7Ozs7R0FRRztBQUVILGtFQUFrRTtBQUNsRSxNQUFNLE9BQU8saUJBQWlCO0lBdUIxQixZQUFzQixNQUFjLEVBQVksS0FBcUI7UUFBL0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFZLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBcEJyRSxzQkFBaUIsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QyxxQkFB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OlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUXVlcnlQYXJhbXNIYW5kbGluZywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUmVzdWx0T2YsIFR5cGVkRG9jdW1lbnROb2RlLCBWYXJpYWJsZXNPZiB9IGZyb20gJ0BncmFwaHFsLXR5cGVkLWRvY3VtZW50LW5vZGUvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9kYXRhL3Byb3ZpZGVycy9kYXRhLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgUXVlcnlSZXN1bHQgfSBmcm9tICcuLi9kYXRhL3F1ZXJ5LXJlc3VsdCc7XHJcbmltcG9ydCB7IFNlcnZlckNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9kYXRhL3NlcnZlci1jb25maWcnO1xyXG5pbXBvcnQgeyBEYXRhVGFibGVGaWx0ZXJDb2xsZWN0aW9uIH0gZnJvbSAnLi4vcHJvdmlkZXJzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1maWx0ZXItY29sbGVjdGlvbic7XHJcbmltcG9ydCB7IERhdGFUYWJsZVNvcnRDb2xsZWN0aW9uIH0gZnJvbSAnLi4vcHJvdmlkZXJzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1zb3J0LWNvbGxlY3Rpb24nO1xyXG5pbXBvcnQgeyBDdXN0b21GaWVsZENvbmZpZywgQ3VzdG9tRmllbGRzLCBMYW5ndWFnZUNvZGUgfSBmcm9tICcuL2dlbmVyYXRlZC10eXBlcyc7XHJcbmltcG9ydCB7IFNlbGVjdGlvbk1hbmFnZXIgfSBmcm9tICcuL3V0aWxpdGllcy9zZWxlY3Rpb24tbWFuYWdlcic7XHJcblxyXG5leHBvcnQgdHlwZSBMaXN0UXVlcnlGbjxSPiA9ICh0YWtlOiBudW1iZXIsIHNraXA6IG51bWJlciwgLi4uYXJnczogYW55W10pID0+IFF1ZXJ5UmVzdWx0PFIsIGFueT47XHJcbmV4cG9ydCB0eXBlIE1hcHBpbmdGbjxULCBSPiA9IChyZXN1bHQ6IFIpID0+IHsgaXRlbXM6IFRbXTsgdG90YWxJdGVtczogbnVtYmVyIH07XHJcbmV4cG9ydCB0eXBlIE9uUGFnZUNoYW5nZUZuPFY+ID0gKHNraXA6IG51bWJlciwgdGFrZTogbnVtYmVyKSA9PiBWO1xyXG5cclxuLyoqXHJcbiAqIFVud3JhcHMgYSBxdWVyeSB0aGF0IHJldHVybnMgYSBwYWdpbmF0ZWQgbGlzdCB3aXRoIGFuIFwiaXRlbXNcIiBwcm9wZXJ0eSxcclxuICogcmV0dXJuaW5nIHRoZSB0eXBlIG9mIG9uZSBvZiB0aGUgaXRlbXMgaW4gdGhlIGFycmF5LlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgSXRlbU9mPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IFRbS10gZXh0ZW5kcyB7IGl0ZW1zOiBpbmZlciBSIH1cclxuICAgID8gUiBleHRlbmRzIGFueVtdXHJcbiAgICAgICAgPyBSW251bWJlcl1cclxuICAgICAgICA6IFJcclxuICAgIDogbmV2ZXI7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIFRoaXMgaXMgYSBiYXNlIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgdGhlIGxvZ2ljIHJlcXVpcmVkIHRvIGZldGNoIGFuZCBtYW5pcHVsYXRlXHJcbiAqIGEgbGlzdCBvZiBkYXRhIGZyb20gYSBxdWVyeSB3aGljaCByZXR1cm5zIGEgUGFnaW5hdGVkTGlzdCB0eXBlLlxyXG4gKlxyXG4gKiBJdCBpcyBub3JtYWxseSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIHtAbGluayBEYXRhVGFibGUyQ29tcG9uZW50fS5cclxuICpcclxuICogQGRvY3NDYXRlZ29yeSBsaXN0LWRldGFpbC12aWV3c1xyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxyXG5leHBvcnQgY2xhc3MgQmFzZUxpc3RDb21wb25lbnQ8UmVzdWx0VHlwZSwgSXRlbVR5cGUsIFZhcmlhYmxlVHlwZSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBhbnk+XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XHJcbntcclxuICAgIHNlYXJjaFRlcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcclxuICAgIHNlbGVjdGlvbk1hbmFnZXIgPSBuZXcgU2VsZWN0aW9uTWFuYWdlcjxhbnk+KHtcclxuICAgICAgICBtdWx0aVNlbGVjdDogdHJ1ZSxcclxuICAgICAgICBpdGVtc0FyZUVxdWFsOiAoYSwgYikgPT4gYS5pZCA9PT0gYi5pZCxcclxuICAgICAgICBhZGRpdGl2ZU1vZGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIHJlc3VsdCQ6IE9ic2VydmFibGU8UmVzdWx0VHlwZT47XHJcbiAgICBpdGVtcyQ6IE9ic2VydmFibGU8SXRlbVR5cGVbXT47XHJcbiAgICB0b3RhbEl0ZW1zJDogT2JzZXJ2YWJsZTxudW1iZXI+O1xyXG4gICAgaXRlbXNQZXJQYWdlJDogT2JzZXJ2YWJsZTxudW1iZXI+O1xyXG4gICAgY3VycmVudFBhZ2UkOiBPYnNlcnZhYmxlPG51bWJlcj47XHJcbiAgICBwcm90ZWN0ZWQgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSBsaXN0UXVlcnk6IFF1ZXJ5UmVzdWx0PFJlc3VsdFR5cGUsIFZhcmlhYmxlVHlwZT47XHJcbiAgICBwcml2YXRlIGxpc3RRdWVyeUZuOiBMaXN0UXVlcnlGbjxSZXN1bHRUeXBlPjtcclxuICAgIHByaXZhdGUgbWFwcGluZ0ZuOiBNYXBwaW5nRm48SXRlbVR5cGUsIFJlc3VsdFR5cGU+O1xyXG4gICAgcHJpdmF0ZSBvblBhZ2VDaGFuZ2VGbjogT25QYWdlQ2hhbmdlRm48VmFyaWFibGVUeXBlPiA9IChza2lwLCB0YWtlKSA9PlxyXG4gICAgICAgICh7IG9wdGlvbnM6IHsgc2tpcCwgdGFrZSB9IH0gYXMgYW55KTtcclxuICAgIHByb3RlY3RlZCByZWZyZXNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gICAgcHJpdmF0ZSBkZWZhdWx0czogeyB0YWtlOiBudW1iZXI7IHNraXA6IG51bWJlciB9ID0geyB0YWtlOiAxMCwgc2tpcDogMCB9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlciwgcHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge31cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvblxyXG4gICAgICogU2V0cyB0aGUgZmV0Y2ggZnVuY3Rpb24gZm9yIHRoZSBsaXN0IGJlaW5nIGltcGxlbWVudGVkLlxyXG4gICAgICovXHJcbiAgICBzZXRRdWVyeUZuKFxyXG4gICAgICAgIGxpc3RRdWVyeUZuOiBMaXN0UXVlcnlGbjxSZXN1bHRUeXBlPixcclxuICAgICAgICBtYXBwaW5nRm46IE1hcHBpbmdGbjxJdGVtVHlwZSwgUmVzdWx0VHlwZT4sXHJcbiAgICAgICAgb25QYWdlQ2hhbmdlRm4/OiBPblBhZ2VDaGFuZ2VGbjxWYXJpYWJsZVR5cGU+LFxyXG4gICAgICAgIGRlZmF1bHRzPzogeyB0YWtlOiBudW1iZXI7IHNraXA6IG51bWJlciB9LFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5saXN0UXVlcnlGbiA9IGxpc3RRdWVyeUZuO1xyXG4gICAgICAgIHRoaXMubWFwcGluZ0ZuID0gbWFwcGluZ0ZuO1xyXG4gICAgICAgIGlmIChvblBhZ2VDaGFuZ2VGbikge1xyXG4gICAgICAgICAgICB0aGlzLm9uUGFnZUNoYW5nZUZuID0gb25QYWdlQ2hhbmdlRm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkZWZhdWx0cykge1xyXG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRzID0gZGVmYXVsdHM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaW50ZXJuYWwgKi9cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICghdGhpcy5saXN0UXVlcnlGbikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgTm8gbGlzdFF1ZXJ5Rm4gaGFzIGJlZW4gZGVmaW5lZC4gUGxlYXNlIGNhbGwgc3VwZXIuc2V0UXVlcnlGbigpIGluIHRoZSBjb25zdHJ1Y3Rvci5gLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxpc3RRdWVyeSA9IHRoaXMubGlzdFF1ZXJ5Rm4odGhpcy5kZWZhdWx0cy50YWtlLCB0aGlzLmRlZmF1bHRzLnNraXApO1xyXG5cclxuICAgICAgICBjb25zdCBmZXRjaFBhZ2UgPSAoW2N1cnJlbnRQYWdlLCBpdGVtc1BlclBhZ2UsIF9dOiBbbnVtYmVyLCBudW1iZXIsIHVuZGVmaW5lZF0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdGFrZSA9IGl0ZW1zUGVyUGFnZTtcclxuICAgICAgICAgICAgY29uc3Qgc2tpcCA9IChjdXJyZW50UGFnZSAtIDEpICogaXRlbXNQZXJQYWdlO1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RRdWVyeS5yZWYucmVmZXRjaCh0aGlzLm9uUGFnZUNoYW5nZUZuKHNraXAsIHRha2UpKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnJlc3VsdCQgPSB0aGlzLmxpc3RRdWVyeS5zdHJlYW0kLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xyXG4gICAgICAgIHRoaXMuaXRlbXMkID0gdGhpcy5yZXN1bHQkLnBpcGUobWFwKGRhdGEgPT4gdGhpcy5tYXBwaW5nRm4oZGF0YSkuaXRlbXMpKTtcclxuICAgICAgICB0aGlzLnRvdGFsSXRlbXMkID0gdGhpcy5yZXN1bHQkLnBpcGUobWFwKGRhdGEgPT4gdGhpcy5tYXBwaW5nRm4oZGF0YSkudG90YWxJdGVtcykpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UkID0gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChxcG0gPT4gcXBtLmdldCgncGFnZScpKSxcclxuICAgICAgICAgICAgbWFwKHBhZ2UgPT4gKCFwYWdlID8gMSA6ICtwYWdlKSksXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLml0ZW1zUGVyUGFnZSQgPSB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAucGlwZShcclxuICAgICAgICAgICAgbWFwKHFwbSA9PiBxcG0uZ2V0KCdwZXJQYWdlJykpLFxyXG4gICAgICAgICAgICBtYXAocGVyUGFnZSA9PiAoIXBlclBhZ2UgPyB0aGlzLmRlZmF1bHRzLnRha2UgOiArcGVyUGFnZSkpLFxyXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbWJpbmVMYXRlc3QodGhpcy5jdXJyZW50UGFnZSQsIHRoaXMuaXRlbXNQZXJQYWdlJCwgdGhpcy5yZWZyZXNoJClcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGZldGNoUGFnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb25cclxuICAgICAqIEFjY2VwdHMgYSBsaXN0IG9mIE9ic2VydmFibGVzIHdoaWNoIHdpbGwgdHJpZ2dlciBhIHJlZnJlc2ggb2YgdGhlIGxpc3Qgd2hlbiBhbnkgb2YgdGhlbSBlbWl0LlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVmcmVzaExpc3RPbkNoYW5nZXMoLi4uc3RyZWFtczogQXJyYXk8T2JzZXJ2YWJsZTxhbnk+Pikge1xyXG4gICAgICAgIGNvbnN0IHNlYXJjaFRlcm0kID0gdGhpcy5zZWFyY2hUZXJtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgICAgICAgZmlsdGVyKHZhbHVlID0+IHZhbHVlICE9PSBudWxsICYmICgyIDwgdmFsdWUubGVuZ3RoIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkpLFxyXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoMjUwKSxcclxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuc2V0UGFnZU51bWJlcigxKSksXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgbWVyZ2Uoc2VhcmNoVGVybSQsIC4uLnN0cmVhbXMpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlZnJlc2gkLm5leHQodW5kZWZpbmVkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgICAgIHRoaXMubGlzdFF1ZXJ5LmNvbXBsZXRlZCQubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBTZXRzIHRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyIGluIHRoZSB1cmwuXHJcbiAgICAgKi9cclxuICAgIHNldFBhZ2VOdW1iZXIocGFnZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5zZXRRdWVyeVBhcmFtKCdwYWdlJywgcGFnZSwgeyByZXBsYWNlVXJsOiB0cnVlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBTZXRzIHRoZSBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UgaW4gdGhlIHVybC5cclxuICAgICAqL1xyXG4gICAgc2V0SXRlbXNQZXJQYWdlKHBlclBhZ2U6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuc2V0UXVlcnlQYXJhbSgncGVyUGFnZScsIHBlclBhZ2UsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvblxyXG4gICAgICogUmUtZmV0Y2ggdGhlIGN1cnJlbnQgcGFnZSBvZiByZXN1bHRzLlxyXG4gICAgICovXHJcbiAgICByZWZyZXNoKCkge1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCQubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzZXRRdWVyeVBhcmFtKFxyXG4gICAgICAgIGhhc2g6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXHJcbiAgICAgICAgb3B0aW9ucz86IHsgcmVwbGFjZVVybD86IGJvb2xlYW47IHF1ZXJ5UGFyYW1zSGFuZGxpbmc/OiBRdWVyeVBhcmFtc0hhbmRsaW5nIH0sXHJcbiAgICApO1xyXG4gICAgcHJvdGVjdGVkIHNldFF1ZXJ5UGFyYW0oXHJcbiAgICAgICAga2V5OiBzdHJpbmcsXHJcbiAgICAgICAgdmFsdWU6IGFueSxcclxuICAgICAgICBvcHRpb25zPzogeyByZXBsYWNlVXJsPzogYm9vbGVhbjsgcXVlcnlQYXJhbXNIYW5kbGluZz86IFF1ZXJ5UGFyYW1zSGFuZGxpbmcgfSxcclxuICAgICk7XHJcbiAgICBwcm90ZWN0ZWQgc2V0UXVlcnlQYXJhbShcclxuICAgICAgICBrZXlPckhhc2g6IHN0cmluZyB8IHsgW2tleTogc3RyaW5nXTogYW55IH0sXHJcbiAgICAgICAgdmFsdWVPck9wdGlvbnM/OiBhbnksXHJcbiAgICAgICAgbWF5YmVPcHRpb25zPzogeyByZXBsYWNlVXJsPzogYm9vbGVhbjsgcXVlcnlQYXJhbXNIYW5kbGluZz86IFF1ZXJ5UGFyYW1zSGFuZGxpbmcgfSxcclxuICAgICkge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtc09iamVjdCA9IHR5cGVvZiBrZXlPckhhc2ggPT09ICdzdHJpbmcnID8geyBba2V5T3JIYXNoXTogdmFsdWVPck9wdGlvbnMgfSA6IGtleU9ySGFzaDtcclxuICAgICAgICBjb25zdCBvcHRpb25zID0gKHR5cGVvZiBrZXlPckhhc2ggPT09ICdzdHJpbmcnID8gbWF5YmVPcHRpb25zIDogdmFsdWVPck9wdGlvbnMpID8/IHt9O1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nXSwge1xyXG4gICAgICAgICAgICBxdWVyeVBhcmFtczogdHlwZW9mIGtleU9ySGFzaCA9PT0gJ3N0cmluZycgPyB7IFtrZXlPckhhc2hdOiB2YWx1ZU9yT3B0aW9ucyB9IDoga2V5T3JIYXNoLFxyXG4gICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxyXG4gICAgICAgICAgICAuLi5vcHRpb25zLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIEEgdmVyc2lvbiBvZiB0aGUge0BsaW5rIEJhc2VMaXN0Q29tcG9uZW50fSB3aGljaCBpcyBkZXNpZ25lZCB0byBiZSB1c2VkIHdpdGggYVxyXG4gKiBbVHlwZWREb2N1bWVudE5vZGVdKGh0dHBzOi8vdGhlLWd1aWxkLmRldi9ncmFwaHFsL2NvZGVnZW4vcGx1Z2lucy90eXBlc2NyaXB0L3R5cGVkLWRvY3VtZW50LW5vZGUpLlxyXG4gKlxyXG4gKiBAZG9jc0NhdGVnb3J5IGxpc3QtZGV0YWlsLXZpZXdzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIFR5cGVkQmFzZUxpc3RDb21wb25lbnQ8XHJcbiAgICAgICAgVCBleHRlbmRzIFR5cGVkRG9jdW1lbnROb2RlPGFueSwgVmFycz4sXHJcbiAgICAgICAgRmllbGQgZXh0ZW5kcyBrZXlvZiBSZXN1bHRPZjxUPixcclxuICAgICAgICBWYXJzIGV4dGVuZHMgeyBvcHRpb25zOiB7IGZpbHRlcjogYW55OyBzb3J0OiBhbnkgfSB9ID0gVmFyaWFibGVzT2Y8VD4sXHJcbiAgICA+XHJcbiAgICBleHRlbmRzIEJhc2VMaXN0Q29tcG9uZW50PFJlc3VsdE9mPFQ+LCBJdGVtT2Y8UmVzdWx0T2Y8VD4sIEZpZWxkPiwgVmFyaWFibGVzT2Y8VD4+XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdFxyXG57XHJcbiAgICBhdmFpbGFibGVMYW5ndWFnZXMkOiBPYnNlcnZhYmxlPExhbmd1YWdlQ29kZVtdPjtcclxuICAgIGNvbnRlbnRMYW5ndWFnZSQ6IE9ic2VydmFibGU8TGFuZ3VhZ2VDb2RlPjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2UgPSBpbmplY3QoRGF0YVNlcnZpY2UpO1xyXG4gICAgcHJvdGVjdGVkIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gICAgcHJvdGVjdGVkIHNlcnZlckNvbmZpZ1NlcnZpY2UgPSBpbmplY3QoU2VydmVyQ29uZmlnU2VydmljZSk7XHJcbiAgICBwcml2YXRlIHJlZnJlc2hTdHJlYW1zOiBBcnJheTxPYnNlcnZhYmxlPGFueT4+ID0gW107XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcihpbmplY3QoUm91dGVyKSwgaW5qZWN0KEFjdGl2YXRlZFJvdXRlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGNvbmZpZ3VyZShjb25maWc6IHtcclxuICAgICAgICBkb2N1bWVudDogVDtcclxuICAgICAgICBnZXRJdGVtczogKGRhdGE6IFJlc3VsdE9mPFQ+KSA9PiB7IGl0ZW1zOiBBcnJheTxJdGVtT2Y8UmVzdWx0T2Y8VD4sIEZpZWxkPj47IHRvdGFsSXRlbXM6IG51bWJlciB9O1xyXG4gICAgICAgIHNldFZhcmlhYmxlcz86IChza2lwOiBudW1iZXIsIHRha2U6IG51bWJlcikgPT4gVmFyaWFibGVzT2Y8VD47XHJcbiAgICAgICAgcmVmcmVzaExpc3RPbkNoYW5nZXM/OiBBcnJheTxPYnNlcnZhYmxlPGFueT4+O1xyXG4gICAgfSkge1xyXG4gICAgICAgIHN1cGVyLnNldFF1ZXJ5Rm4oXHJcbiAgICAgICAgICAgIChhcmdzOiBhbnkpID0+IHRoaXMuZGF0YVNlcnZpY2UucXVlcnkoY29uZmlnLmRvY3VtZW50KS5yZWZldGNoT25DaGFubmVsQ2hhbmdlKCksXHJcbiAgICAgICAgICAgIGRhdGEgPT4gY29uZmlnLmdldEl0ZW1zKGRhdGEpLFxyXG4gICAgICAgICAgICAoc2tpcCwgdGFrZSkgPT4gY29uZmlnLnNldFZhcmlhYmxlcz8uKHNraXAsIHRha2UpID8/ICh7fSBhcyBhbnkpLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5hdmFpbGFibGVMYW5ndWFnZXMkID0gdGhpcy5zZXJ2ZXJDb25maWdTZXJ2aWNlLmdldEF2YWlsYWJsZUxhbmd1YWdlcygpO1xyXG4gICAgICAgIHRoaXMuY29udGVudExhbmd1YWdlJCA9IHRoaXMuZGF0YVNlcnZpY2UuY2xpZW50XHJcbiAgICAgICAgICAgIC51aVN0YXRlKClcclxuICAgICAgICAgICAgLm1hcFN0cmVhbSgoeyB1aVN0YXRlIH0pID0+IHVpU3RhdGUuY29udGVudExhbmd1YWdlKVxyXG4gICAgICAgICAgICAucGlwZSh0YXAoKCkgPT4gdGhpcy5yZWZyZXNoKCkpKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hTdHJlYW1zID0gY29uZmlnLnJlZnJlc2hMaXN0T25DaGFuZ2VzID8/IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgc3VwZXIucmVmcmVzaExpc3RPbkNoYW5nZXModGhpcy5jb250ZW50TGFuZ3VhZ2UkLCAuLi50aGlzLnJlZnJlc2hTdHJlYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVGaWx0ZXJDb2xsZWN0aW9uKCk6IERhdGFUYWJsZUZpbHRlckNvbGxlY3Rpb248Tm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8VmFyc1snb3B0aW9ucyddPlsnZmlsdGVyJ10+PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRhVGFibGVGaWx0ZXJDb2xsZWN0aW9uPE5vbk51bGxhYmxlPFZhcnNbJ29wdGlvbnMnXVsnZmlsdGVyJ10+Pih0aGlzLnJvdXRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlU29ydENvbGxlY3Rpb24oKTogRGF0YVRhYmxlU29ydENvbGxlY3Rpb248Tm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8VmFyc1snb3B0aW9ucyddPlsnc29ydCddPj4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0YVRhYmxlU29ydENvbGxlY3Rpb248Tm9uTnVsbGFibGU8VmFyc1snb3B0aW9ucyddWydzb3J0J10+Pih0aGlzLnJvdXRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TGFuZ3VhZ2UoY29kZTogTGFuZ3VhZ2VDb2RlKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jbGllbnQuc2V0Q29udGVudExhbmd1YWdlKGNvZGUpLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEN1c3RvbUZpZWxkQ29uZmlnKGtleTogRXhjbHVkZTxrZXlvZiBDdXN0b21GaWVsZHMsICdfX3R5cGVuYW1lJz4pOiBDdXN0b21GaWVsZENvbmZpZ1tdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2ZXJDb25maWdTZXJ2aWNlLmdldEN1c3RvbUZpZWxkc0ZvcihrZXkpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tbW9uL2Jhc2UtbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBdUIsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDakcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFN0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQWdCakU7Ozs7Ozs7O0dBUUc7QUFFSCxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLGlCQUFpQjtJQXVCMUIsWUFBc0IsTUFBYyxFQUFZLEtBQXFCO1FBQS9DLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBWSxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQXBCckUsc0JBQWlCLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7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Q0FBdUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBa0I7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVELG9CQUFvQixDQUFDLEdBQThDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVELENBQUM7OEdBbkVRLHNCQUFzQjtrR0FBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQURsQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBpbmplY3QsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUXVlcnlQYXJhbXNIYW5kbGluZywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUmVzdWx0T2YsIFR5cGVkRG9jdW1lbnROb2RlLCBWYXJpYWJsZXNPZiB9IGZyb20gJ0BncmFwaHFsLXR5cGVkLWRvY3VtZW50LW5vZGUvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9kYXRhL3Byb3ZpZGVycy9kYXRhLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgUXVlcnlSZXN1bHQgfSBmcm9tICcuLi9kYXRhL3F1ZXJ5LXJlc3VsdCc7XHJcbmltcG9ydCB7IFNlcnZlckNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9kYXRhL3NlcnZlci1jb25maWcnO1xyXG5pbXBvcnQgeyBEYXRhVGFibGVGaWx0ZXJDb2xsZWN0aW9uIH0gZnJvbSAnLi4vcHJvdmlkZXJzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1maWx0ZXItY29sbGVjdGlvbic7XHJcbmltcG9ydCB7IERhdGFUYWJsZVNvcnRDb2xsZWN0aW9uIH0gZnJvbSAnLi4vcHJvdmlkZXJzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1zb3J0LWNvbGxlY3Rpb24nO1xyXG5pbXBvcnQgeyBDdXN0b21GaWVsZENvbmZpZywgQ3VzdG9tRmllbGRzLCBMYW5ndWFnZUNvZGUgfSBmcm9tICcuL2dlbmVyYXRlZC10eXBlcyc7XHJcbmltcG9ydCB7IFNlbGVjdGlvbk1hbmFnZXIgfSBmcm9tICcuL3V0aWxpdGllcy9zZWxlY3Rpb24tbWFuYWdlcic7XHJcblxyXG5leHBvcnQgdHlwZSBMaXN0UXVlcnlGbjxSPiA9ICh0YWtlOiBudW1iZXIsIHNraXA6IG51bWJlciwgLi4uYXJnczogYW55W10pID0+IFF1ZXJ5UmVzdWx0PFIsIGFueT47XHJcbmV4cG9ydCB0eXBlIE1hcHBpbmdGbjxULCBSPiA9IChyZXN1bHQ6IFIpID0+IHsgaXRlbXM6IFRbXTsgdG90YWxJdGVtczogbnVtYmVyIH07XHJcbmV4cG9ydCB0eXBlIE9uUGFnZUNoYW5nZUZuPFY+ID0gKHNraXA6IG51bWJlciwgdGFrZTogbnVtYmVyKSA9PiBWO1xyXG5cclxuLyoqXHJcbiAqIFVud3JhcHMgYSBxdWVyeSB0aGF0IHJldHVybnMgYSBwYWdpbmF0ZWQgbGlzdCB3aXRoIGFuIFwiaXRlbXNcIiBwcm9wZXJ0eSxcclxuICogcmV0dXJuaW5nIHRoZSB0eXBlIG9mIG9uZSBvZiB0aGUgaXRlbXMgaW4gdGhlIGFycmF5LlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgSXRlbU9mPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IFRbS10gZXh0ZW5kcyB7IGl0ZW1zOiBpbmZlciBSIH1cclxuICAgID8gUiBleHRlbmRzIGFueVtdXHJcbiAgICAgICAgPyBSW251bWJlcl1cclxuICAgICAgICA6IFJcclxuICAgIDogbmV2ZXI7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIFRoaXMgaXMgYSBiYXNlIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgdGhlIGxvZ2ljIHJlcXVpcmVkIHRvIGZldGNoIGFuZCBtYW5pcHVsYXRlXHJcbiAqIGEgbGlzdCBvZiBkYXRhIGZyb20gYSBxdWVyeSB3aGljaCByZXR1cm5zIGEgUGFnaW5hdGVkTGlzdCB0eXBlLlxyXG4gKlxyXG4gKiBJdCBpcyBub3JtYWxseSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIHtAbGluayBEYXRhVGFibGUyQ29tcG9uZW50fS5cclxuICpcclxuICogQGRvY3NDYXRlZ29yeSBsaXN0LWRldGFpbC12aWV3c1xyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxyXG5leHBvcnQgY2xhc3MgQmFzZUxpc3RDb21wb25lbnQ8UmVzdWx0VHlwZSwgSXRlbVR5cGUsIFZhcmlhYmxlVHlwZSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBhbnk+XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XHJcbntcclxuICAgIHNlYXJjaFRlcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcclxuICAgIHNlbGVjdGlvbk1hbmFnZXIgPSBuZXcgU2VsZWN0aW9uTWFuYWdlcjxhbnk+KHtcclxuICAgICAgICBtdWx0aVNlbGVjdDogdHJ1ZSxcclxuICAgICAgICBpdGVtc0FyZUVxdWFsOiAoYSwgYikgPT4gYS5pZCA9PT0gYi5pZCxcclxuICAgICAgICBhZGRpdGl2ZU1vZGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIHJlc3VsdCQ6IE9ic2VydmFibGU8UmVzdWx0VHlwZT47XHJcbiAgICBpdGVtcyQ6IE9ic2VydmFibGU8SXRlbVR5cGVbXT47XHJcbiAgICB0b3RhbEl0ZW1zJDogT2JzZXJ2YWJsZTxudW1iZXI+O1xyXG4gICAgaXRlbXNQZXJQYWdlJDogT2JzZXJ2YWJsZTxudW1iZXI+O1xyXG4gICAgY3VycmVudFBhZ2UkOiBPYnNlcnZhYmxlPG51bWJlcj47XHJcbiAgICBwcm90ZWN0ZWQgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSBsaXN0UXVlcnk6IFF1ZXJ5UmVzdWx0PFJlc3VsdFR5cGUsIFZhcmlhYmxlVHlwZT47XHJcbiAgICBwcml2YXRlIGxpc3RRdWVyeUZuOiBMaXN0UXVlcnlGbjxSZXN1bHRUeXBlPjtcclxuICAgIHByaXZhdGUgbWFwcGluZ0ZuOiBNYXBwaW5nRm48SXRlbVR5cGUsIFJlc3VsdFR5cGU+O1xyXG4gICAgcHJpdmF0ZSBvblBhZ2VDaGFuZ2VGbjogT25QYWdlQ2hhbmdlRm48VmFyaWFibGVUeXBlPiA9IChza2lwLCB0YWtlKSA9PlxyXG4gICAgICAgICh7IG9wdGlvbnM6IHsgc2tpcCwgdGFrZSB9IH0gYXMgYW55KTtcclxuICAgIHByb3RlY3RlZCByZWZyZXNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gICAgcHJpdmF0ZSBkZWZhdWx0czogeyB0YWtlOiBudW1iZXI7IHNraXA6IG51bWJlciB9ID0geyB0YWtlOiAxMCwgc2tpcDogMCB9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlciwgcHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge31cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvblxyXG4gICAgICogU2V0cyB0aGUgZmV0Y2ggZnVuY3Rpb24gZm9yIHRoZSBsaXN0IGJlaW5nIGltcGxlbWVudGVkLlxyXG4gICAgICovXHJcbiAgICBzZXRRdWVyeUZuKFxyXG4gICAgICAgIGxpc3RRdWVyeUZuOiBMaXN0UXVlcnlGbjxSZXN1bHRUeXBlPixcclxuICAgICAgICBtYXBwaW5nRm46IE1hcHBpbmdGbjxJdGVtVHlwZSwgUmVzdWx0VHlwZT4sXHJcbiAgICAgICAgb25QYWdlQ2hhbmdlRm4/OiBPblBhZ2VDaGFuZ2VGbjxWYXJpYWJsZVR5cGU+LFxyXG4gICAgICAgIGRlZmF1bHRzPzogeyB0YWtlOiBudW1iZXI7IHNraXA6IG51bWJlciB9LFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5saXN0UXVlcnlGbiA9IGxpc3RRdWVyeUZuO1xyXG4gICAgICAgIHRoaXMubWFwcGluZ0ZuID0gbWFwcGluZ0ZuO1xyXG4gICAgICAgIGlmIChvblBhZ2VDaGFuZ2VGbikge1xyXG4gICAgICAgICAgICB0aGlzLm9uUGFnZUNoYW5nZUZuID0gb25QYWdlQ2hhbmdlRm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkZWZhdWx0cykge1xyXG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRzID0gZGVmYXVsdHM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaW50ZXJuYWwgKi9cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICghdGhpcy5saXN0UXVlcnlGbikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgTm8gbGlzdFF1ZXJ5Rm4gaGFzIGJlZW4gZGVmaW5lZC4gUGxlYXNlIGNhbGwgc3VwZXIuc2V0UXVlcnlGbigpIGluIHRoZSBjb25zdHJ1Y3Rvci5gLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxpc3RRdWVyeSA9IHRoaXMubGlzdFF1ZXJ5Rm4odGhpcy5kZWZhdWx0cy50YWtlLCB0aGlzLmRlZmF1bHRzLnNraXApO1xyXG5cclxuICAgICAgICBjb25zdCBmZXRjaFBhZ2UgPSAoW2N1cnJlbnRQYWdlLCBpdGVtc1BlclBhZ2UsIF9dOiBbbnVtYmVyLCBudW1iZXIsIHVuZGVmaW5lZF0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdGFrZSA9IGl0ZW1zUGVyUGFnZTtcclxuICAgICAgICAgICAgY29uc3Qgc2tpcCA9IChjdXJyZW50UGFnZSAtIDEpICogaXRlbXNQZXJQYWdlO1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RRdWVyeS5yZWYucmVmZXRjaCh0aGlzLm9uUGFnZUNoYW5nZUZuKHNraXAsIHRha2UpKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnJlc3VsdCQgPSB0aGlzLmxpc3RRdWVyeS5zdHJlYW0kLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xyXG4gICAgICAgIHRoaXMuaXRlbXMkID0gdGhpcy5yZXN1bHQkLnBpcGUobWFwKGRhdGEgPT4gdGhpcy5tYXBwaW5nRm4oZGF0YSkuaXRlbXMpKTtcclxuICAgICAgICB0aGlzLnRvdGFsSXRlbXMkID0gdGhpcy5yZXN1bHQkLnBpcGUobWFwKGRhdGEgPT4gdGhpcy5tYXBwaW5nRm4oZGF0YSkudG90YWxJdGVtcykpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UkID0gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChxcG0gPT4gcXBtLmdldCgncGFnZScpKSxcclxuICAgICAgICAgICAgbWFwKHBhZ2UgPT4gKCFwYWdlID8gMSA6ICtwYWdlKSksXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLml0ZW1zUGVyUGFnZSQgPSB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAucGlwZShcclxuICAgICAgICAgICAgbWFwKHFwbSA9PiBxcG0uZ2V0KCdwZXJQYWdlJykpLFxyXG4gICAgICAgICAgICBtYXAocGVyUGFnZSA9PiAoIXBlclBhZ2UgPyB0aGlzLmRlZmF1bHRzLnRha2UgOiArcGVyUGFnZSkpLFxyXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbWJpbmVMYXRlc3QodGhpcy5jdXJyZW50UGFnZSQsIHRoaXMuaXRlbXNQZXJQYWdlJCwgdGhpcy5yZWZyZXNoJClcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGZldGNoUGFnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb25cclxuICAgICAqIEFjY2VwdHMgYSBsaXN0IG9mIE9ic2VydmFibGVzIHdoaWNoIHdpbGwgdHJpZ2dlciBhIHJlZnJlc2ggb2YgdGhlIGxpc3Qgd2hlbiBhbnkgb2YgdGhlbSBlbWl0LlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVmcmVzaExpc3RPbkNoYW5nZXMoLi4uc3RyZWFtczogQXJyYXk8T2JzZXJ2YWJsZTxhbnk+Pikge1xyXG4gICAgICAgIGNvbnN0IHNlYXJjaFRlcm0kID0gdGhpcy5zZWFyY2hUZXJtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgICAgICAgZmlsdGVyKHZhbHVlID0+IHZhbHVlICE9PSBudWxsICYmICgyIDwgdmFsdWUubGVuZ3RoIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkpLFxyXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoMjUwKSxcclxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuc2V0UGFnZU51bWJlcigxKSksXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgbWVyZ2Uoc2VhcmNoVGVybSQsIC4uLnN0cmVhbXMpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlZnJlc2gkLm5leHQodW5kZWZpbmVkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgICAgIHRoaXMubGlzdFF1ZXJ5LmNvbXBsZXRlZCQubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBTZXRzIHRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyIGluIHRoZSB1cmwuXHJcbiAgICAgKi9cclxuICAgIHNldFBhZ2VOdW1iZXIocGFnZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5zZXRRdWVyeVBhcmFtKCdwYWdlJywgcGFnZSwgeyByZXBsYWNlVXJsOiB0cnVlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBTZXRzIHRoZSBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UgaW4gdGhlIHVybC5cclxuICAgICAqL1xyXG4gICAgc2V0SXRlbXNQZXJQYWdlKHBlclBhZ2U6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuc2V0UXVlcnlQYXJhbSgncGVyUGFnZScsIHBlclBhZ2UsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvblxyXG4gICAgICogUmUtZmV0Y2ggdGhlIGN1cnJlbnQgcGFnZSBvZiByZXN1bHRzLlxyXG4gICAgICovXHJcbiAgICByZWZyZXNoKCkge1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCQubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzZXRRdWVyeVBhcmFtKFxyXG4gICAgICAgIGhhc2g6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXHJcbiAgICAgICAgb3B0aW9ucz86IHsgcmVwbGFjZVVybD86IGJvb2xlYW47IHF1ZXJ5UGFyYW1zSGFuZGxpbmc/OiBRdWVyeVBhcmFtc0hhbmRsaW5nIH0sXHJcbiAgICApO1xyXG4gICAgcHJvdGVjdGVkIHNldFF1ZXJ5UGFyYW0oXHJcbiAgICAgICAga2V5OiBzdHJpbmcsXHJcbiAgICAgICAgdmFsdWU6IGFueSxcclxuICAgICAgICBvcHRpb25zPzogeyByZXBsYWNlVXJsPzogYm9vbGVhbjsgcXVlcnlQYXJhbXNIYW5kbGluZz86IFF1ZXJ5UGFyYW1zSGFuZGxpbmcgfSxcclxuICAgICk7XHJcbiAgICBwcm90ZWN0ZWQgc2V0UXVlcnlQYXJhbShcclxuICAgICAgICBrZXlPckhhc2g6IHN0cmluZyB8IHsgW2tleTogc3RyaW5nXTogYW55IH0sXHJcbiAgICAgICAgdmFsdWVPck9wdGlvbnM/OiBhbnksXHJcbiAgICAgICAgbWF5YmVPcHRpb25zPzogeyByZXBsYWNlVXJsPzogYm9vbGVhbjsgcXVlcnlQYXJhbXNIYW5kbGluZz86IFF1ZXJ5UGFyYW1zSGFuZGxpbmcgfSxcclxuICAgICkge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtc09iamVjdCA9IHR5cGVvZiBrZXlPckhhc2ggPT09ICdzdHJpbmcnID8geyBba2V5T3JIYXNoXTogdmFsdWVPck9wdGlvbnMgfSA6IGtleU9ySGFzaDtcclxuICAgICAgICBjb25zdCBvcHRpb25zID0gKHR5cGVvZiBrZXlPckhhc2ggPT09ICdzdHJpbmcnID8gbWF5YmVPcHRpb25zIDogdmFsdWVPck9wdGlvbnMpID8/IHt9O1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nXSwge1xyXG4gICAgICAgICAgICBxdWVyeVBhcmFtczogdHlwZW9mIGtleU9ySGFzaCA9PT0gJ3N0cmluZycgPyB7IFtrZXlPckhhc2hdOiB2YWx1ZU9yT3B0aW9ucyB9IDoga2V5T3JIYXNoLFxyXG4gICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxyXG4gICAgICAgICAgICAuLi5vcHRpb25zLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIEEgdmVyc2lvbiBvZiB0aGUge0BsaW5rIEJhc2VMaXN0Q29tcG9uZW50fSB3aGljaCBpcyBkZXNpZ25lZCB0byBiZSB1c2VkIHdpdGggYVxyXG4gKiBbVHlwZWREb2N1bWVudE5vZGVdKGh0dHBzOi8vdGhlLWd1aWxkLmRldi9ncmFwaHFsL2NvZGVnZW4vcGx1Z2lucy90eXBlc2NyaXB0L3R5cGVkLWRvY3VtZW50LW5vZGUpLlxyXG4gKlxyXG4gKiBAZG9jc0NhdGVnb3J5IGxpc3QtZGV0YWlsLXZpZXdzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIFR5cGVkQmFzZUxpc3RDb21wb25lbnQ8XHJcbiAgICAgICAgVCBleHRlbmRzIFR5cGVkRG9jdW1lbnROb2RlPGFueSwgVmFycz4sXHJcbiAgICAgICAgRmllbGQgZXh0ZW5kcyBrZXlvZiBSZXN1bHRPZjxUPixcclxuICAgICAgICBWYXJzIGV4dGVuZHMgeyBvcHRpb25zOiB7IGZpbHRlcjogYW55OyBzb3J0OiBhbnkgfSB9ID0gVmFyaWFibGVzT2Y8VD4sXHJcbiAgICA+XHJcbiAgICBleHRlbmRzIEJhc2VMaXN0Q29tcG9uZW50PFJlc3VsdE9mPFQ+LCBJdGVtT2Y8UmVzdWx0T2Y8VD4sIEZpZWxkPiwgVmFyaWFibGVzT2Y8VD4+XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdFxyXG57XHJcbiAgICBhdmFpbGFibGVMYW5ndWFnZXMkOiBPYnNlcnZhYmxlPExhbmd1YWdlQ29kZVtdPjtcclxuICAgIGNvbnRlbnRMYW5ndWFnZSQ6IE9ic2VydmFibGU8TGFuZ3VhZ2VDb2RlPjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2UgPSBpbmplY3QoRGF0YVNlcnZpY2UpO1xyXG4gICAgcHJvdGVjdGVkIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gICAgcHJvdGVjdGVkIHNlcnZlckNvbmZpZ1NlcnZpY2UgPSBpbmplY3QoU2VydmVyQ29uZmlnU2VydmljZSk7XHJcbiAgICBwcml2YXRlIHJlZnJlc2hTdHJlYW1zOiBBcnJheTxPYnNlcnZhYmxlPGFueT4+ID0gW107XHJcbiAgICBwcml2YXRlIGNvbGxlY3Rpb25zOiBBcnJheTxEYXRhVGFibGVGaWx0ZXJDb2xsZWN0aW9uIHwgRGF0YVRhYmxlU29ydENvbGxlY3Rpb248YW55Pj4gPSBbXTtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKGluamVjdChSb3V0ZXIpLCBpbmplY3QoQWN0aXZhdGVkUm91dGUpKTtcclxuXHJcbiAgICAgICAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuICAgICAgICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sbGVjdGlvbnMuZm9yRWFjaChjID0+IGMuZGVzdHJveSgpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgY29uZmlndXJlKGNvbmZpZzoge1xyXG4gICAgICAgIGRvY3VtZW50OiBUO1xyXG4gICAgICAgIGdldEl0ZW1zOiAoZGF0YTogUmVzdWx0T2Y8VD4pID0+IHsgaXRlbXM6IEFycmF5PEl0ZW1PZjxSZXN1bHRPZjxUPiwgRmllbGQ+PjsgdG90YWxJdGVtczogbnVtYmVyIH07XHJcbiAgICAgICAgc2V0VmFyaWFibGVzPzogKHNraXA6IG51bWJlciwgdGFrZTogbnVtYmVyKSA9PiBWYXJpYWJsZXNPZjxUPjtcclxuICAgICAgICByZWZyZXNoTGlzdE9uQ2hhbmdlcz86IEFycmF5PE9ic2VydmFibGU8YW55Pj47XHJcbiAgICB9KSB7XHJcbiAgICAgICAgc3VwZXIuc2V0UXVlcnlGbihcclxuICAgICAgICAgICAgKGFyZ3M6IGFueSkgPT4gdGhpcy5kYXRhU2VydmljZS5xdWVyeShjb25maWcuZG9jdW1lbnQpLnJlZmV0Y2hPbkNoYW5uZWxDaGFuZ2UoKSxcclxuICAgICAgICAgICAgZGF0YSA9PiBjb25maWcuZ2V0SXRlbXMoZGF0YSksXHJcbiAgICAgICAgICAgIChza2lwLCB0YWtlKSA9PiBjb25maWcuc2V0VmFyaWFibGVzPy4oc2tpcCwgdGFrZSkgPz8gKHt9IGFzIGFueSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcyQgPSB0aGlzLnNlcnZlckNvbmZpZ1NlcnZpY2UuZ2V0QXZhaWxhYmxlTGFuZ3VhZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb250ZW50TGFuZ3VhZ2UkID0gdGhpcy5kYXRhU2VydmljZS5jbGllbnRcclxuICAgICAgICAgICAgLnVpU3RhdGUoKVxyXG4gICAgICAgICAgICAubWFwU3RyZWFtKCh7IHVpU3RhdGUgfSkgPT4gdWlTdGF0ZS5jb250ZW50TGFuZ3VhZ2UpXHJcbiAgICAgICAgICAgIC5waXBlKHRhcCgoKSA9PiB0aGlzLnJlZnJlc2goKSkpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaFN0cmVhbXMgPSBjb25maWcucmVmcmVzaExpc3RPbkNoYW5nZXMgPz8gW107XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICBzdXBlci5yZWZyZXNoTGlzdE9uQ2hhbmdlcyh0aGlzLmNvbnRlbnRMYW5ndWFnZSQsIC4uLnRoaXMucmVmcmVzaFN0cmVhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUZpbHRlckNvbGxlY3Rpb24oKTogRGF0YVRhYmxlRmlsdGVyQ29sbGVjdGlvbjxOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxWYXJzWydvcHRpb25zJ10+WydmaWx0ZXInXT4+IHtcclxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gbmV3IERhdGFUYWJsZUZpbHRlckNvbGxlY3Rpb248Tm9uTnVsbGFibGU8VmFyc1snb3B0aW9ucyddWydmaWx0ZXInXT4+KHRoaXMucm91dGVyKTtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb25zLnB1c2goY29sbGVjdGlvbik7XHJcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlU29ydENvbGxlY3Rpb24oKTogRGF0YVRhYmxlU29ydENvbGxlY3Rpb248Tm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8VmFyc1snb3B0aW9ucyddPlsnc29ydCddPj4ge1xyXG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBuZXcgRGF0YVRhYmxlU29ydENvbGxlY3Rpb248Tm9uTnVsbGFibGU8VmFyc1snb3B0aW9ucyddWydzb3J0J10+Pih0aGlzLnJvdXRlcik7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9ucy5wdXNoKGNvbGxlY3Rpb24pO1xyXG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHNldExhbmd1YWdlKGNvZGU6IExhbmd1YWdlQ29kZSkge1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY2xpZW50LnNldENvbnRlbnRMYW5ndWFnZShjb2RlKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDdXN0b21GaWVsZENvbmZpZyhrZXk6IEV4Y2x1ZGU8a2V5b2YgQ3VzdG9tRmllbGRzLCAnX190eXBlbmFtZSc+KTogQ3VzdG9tRmllbGRDb25maWdbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmVyQ29uZmlnU2VydmljZS5nZXRDdXN0b21GaWVsZHNGb3Ioa2V5KTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by the set-version.js script.
2
- export const ADMIN_UI_VERSION = '2.1.0-next.6';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tbW9uL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBzZXQtdmVyc2lvbi5qcyBzY3JpcHQuXG5leHBvcnQgY29uc3QgQURNSU5fVUlfVkVSU0lPTiA9ICcyLjEuMC1uZXh0LjYnO1xuIl19
2
+ export const ADMIN_UI_VERSION = '2.1.0';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tbW9uL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBzZXQtdmVyc2lvbi5qcyBzY3JpcHQuXG5leHBvcnQgY29uc3QgQURNSU5fVUlfVkVSU0lPTiA9ICcyLjEuMCc7XG4iXX0=
@@ -82,4 +82,4 @@ export function registerRouteComponent(options) {
82
82
  component: AngularRouteComponent,
83
83
  };
84
84
  }
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItcm91dGUtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9leHRlbnNpb24vcmVnaXN0ZXItcm91dGUtY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBdUIseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQTJCdkU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FNcEMsT0FBc0U7SUFDcEUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUVoRSxNQUFNLGtCQUFrQixHQUFHLElBQUksZUFBZSxDQUFrQixPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLE1BQU0sYUFBYSxHQUFHLElBQUksZUFBZSxDQUFxQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFN0UsTUFBTSxTQUFTLEdBTVgsS0FBSyxJQUFJLFNBQVM7UUFDZCxDQUFDLENBQUMseUJBQXlCLENBQUM7WUFDdEIsS0FBSztZQUNMLFNBQVM7WUFDVCxTQUFTO1NBQ1osQ0FBQztRQUNKLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFcEIsT0FBTztRQUNILElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUU7UUFDeEIsU0FBUyxFQUFFO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLHVCQUF1QjtnQkFDaEMsUUFBUSxFQUFFO29CQUNOLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztvQkFDNUIsTUFBTSxFQUFFLGFBQWE7b0JBQ3JCLFdBQVcsRUFBRSxrQkFBa0I7aUJBQ0Y7YUFDcEM7WUFDRCxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDO1NBQzVDO1FBQ0QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQzlCLE9BQU8sRUFBRSxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUU7UUFDakcsSUFBSSxFQUFFO1lBQ0YsVUFBVSxFQUFFLGtCQUFrQjtZQUM5QixHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3BDLEdBQUcsQ0FBQyxjQUFjO2dCQUNkLENBQUMsQ0FBQztvQkFDSSxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FDZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztpQkFDNUU7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNULEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7U0FDdkM7UUFDRCxTQUFTLEVBQUUscUJBQXFCO0tBQ25CLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVzb2x2ZUZuLCBSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJlc3VsdE9mLCBUeXBlZERvY3VtZW50Tm9kZSB9IGZyb20gJ0BncmFwaHFsLXR5cGVkLWRvY3VtZW50LW5vZGUvY29yZSc7XHJcbmltcG9ydCB7IERvY3VtZW50Tm9kZSB9IGZyb20gJ2dyYXBocWwnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBCYXNlRGV0YWlsQ29tcG9uZW50LCBjcmVhdGVCYXNlRGV0YWlsUmVzb2x2ZUZuIH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UtZGV0YWlsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJWYWx1ZSB9IGZyb20gJy4uL3Byb3ZpZGVycy9icmVhZGNydW1iL2JyZWFkY3J1bWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFuZ3VsYXJSb3V0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hbmd1bGFyLXJvdXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJPVVRFX0NPTVBPTkVOVF9PUFRJT05TIH0gZnJvbSAnLi9jb21wb25lbnRzL3JvdXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJvdXRlQ29tcG9uZW50T3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHJvdXRlIGNvbXBvbmVudC5cclxuICpcclxuICogQGRvY3NDYXRlZ29yeSByb3V0ZXNcclxuICovXHJcbmV4cG9ydCB0eXBlIFJlZ2lzdGVyUm91dGVDb21wb25lbnRPcHRpb25zPFxyXG4gICAgQ29tcG9uZW50IGV4dGVuZHMgYW55IHwgQmFzZURldGFpbENvbXBvbmVudDxFbnRpdHk+LFxyXG4gICAgRW50aXR5IGV4dGVuZHMgeyBpZDogc3RyaW5nOyB1cGRhdGVkQXQ/OiBzdHJpbmcgfSxcclxuICAgIFQgZXh0ZW5kcyBEb2N1bWVudE5vZGUgfCBUeXBlZERvY3VtZW50Tm9kZTxhbnksIHsgaWQ6IHN0cmluZyB9PixcclxuICAgIEZpZWxkIGV4dGVuZHMga2V5b2YgUmVzdWx0T2Y8VD4sXHJcbiAgICBSIGV4dGVuZHMgRmllbGQsXHJcbj4gPSB7XHJcbiAgICBjb21wb25lbnQ6IFR5cGU8Q29tcG9uZW50PiB8IENvbXBvbmVudDtcclxuICAgIHRpdGxlPzogc3RyaW5nO1xyXG4gICAgYnJlYWRjcnVtYj86IEJyZWFkY3J1bWJWYWx1ZTtcclxuICAgIHBhdGg/OiBzdHJpbmc7XHJcbiAgICBxdWVyeT86IFQ7XHJcbiAgICBnZXRCcmVhZGNydW1icz86IChlbnRpdHk6IEV4Y2x1ZGU8UmVzdWx0T2Y8VD5bUl0sICdRdWVyeSc+KSA9PiBCcmVhZGNydW1iVmFsdWU7XHJcbiAgICBlbnRpdHlLZXk/OiBDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGV0YWlsQ29tcG9uZW50PEVudGl0eT4gPyBSIDogdW5kZWZpbmVkO1xyXG4gICAgdmFyaWFibGVzPzogVCBleHRlbmRzIFR5cGVkRG9jdW1lbnROb2RlPGFueSwgaW5mZXIgVj4gPyBPbWl0PFYsICdpZCc+IDogbmV2ZXI7XHJcbiAgICByb3V0ZUNvbmZpZz86IFJvdXRlO1xyXG59ICYgKENvbXBvbmVudCBleHRlbmRzIEJhc2VEZXRhaWxDb21wb25lbnQ8RW50aXR5PiA/IHsgZW50aXR5S2V5OiBSIH0gOiB1bmtub3duKTtcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICogUmVnaXN0ZXJzIGFuIEFuZ3VsYXIgc3RhbmRhbG9uZSBjb21wb25lbnQgdG8gYmUgcmVuZGVyZWQgaW4gYSByb3V0ZS5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgdHMgdGl0bGU9XCJyb3V0ZXMudHNcIlxyXG4gKiBpbXBvcnQgeyByZWdpc3RlclJvdXRlQ29tcG9uZW50IH0gZnJvbSAnXFxAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuICogaW1wb3J0IHsgcmVnaXN0ZXJSZWFjdFJvdXRlQ29tcG9uZW50IH0gZnJvbSAnXFxAdmVuZHVyZS9hZG1pbi11aS9yZWFjdCc7XHJcbiAqXHJcbiAqIGltcG9ydCB7IFByb2R1Y3RSZXZpZXdEZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcHJvZHVjdC1yZXZpZXctZGV0YWlsL3Byb2R1Y3QtcmV2aWV3LWRldGFpbC5jb21wb25lbnQnO1xyXG4gKiBpbXBvcnQgeyBBbGxQcm9kdWN0UmV2aWV3c0xpc3QgfSBmcm9tICcuL2NvbXBvbmVudHMvYWxsLXByb2R1Y3QtcmV2aWV3cy1saXN0L2FsbC1wcm9kdWN0LXJldmlld3MtbGlzdC5jb21wb25lbnQnO1xyXG4gKiBpbXBvcnQgeyBHZXRSZXZpZXdEZXRhaWxEb2N1bWVudCB9IGZyb20gJy4vZ2VuZXJhdGVkLXR5cGVzJztcclxuICpcclxuICogZXhwb3J0IGRlZmF1bHQgW1xyXG4gKiAgICAgcmVnaXN0ZXJSb3V0ZUNvbXBvbmVudCh7XHJcbiAqICAgICAgICAgcGF0aDogJycsXHJcbiAqICAgICAgICAgY29tcG9uZW50OiBBbGxQcm9kdWN0UmV2aWV3c0xpc3QsXHJcbiAqICAgICAgICAgYnJlYWRjcnVtYjogJ1Byb2R1Y3QgcmV2aWV3cycsXHJcbiAqICAgICB9KSxcclxuICogICAgIHJlZ2lzdGVyUm91dGVDb21wb25lbnQoe1xyXG4gKiAgICAgICAgIHBhdGg6ICc6aWQnLFxyXG4gKiAgICAgICAgIGNvbXBvbmVudDogUHJvZHVjdFJldmlld0RldGFpbENvbXBvbmVudCxcclxuICogICAgICAgICBxdWVyeTogR2V0UmV2aWV3RGV0YWlsRG9jdW1lbnQsXHJcbiAqICAgICAgICAgZW50aXR5S2V5OiAncHJvZHVjdFJldmlldycsXHJcbiAqICAgICAgICAgZ2V0QnJlYWRjcnVtYnM6IGVudGl0eSA9PiBbXHJcbiAqICAgICAgICAgICAgIHtcclxuICogICAgICAgICAgICAgICAgIGxhYmVsOiAnUHJvZHVjdCByZXZpZXdzJyxcclxuICogICAgICAgICAgICAgICAgIGxpbms6IFsnL2V4dGVuc2lvbnMnLCAncHJvZHVjdC1yZXZpZXdzJ10sXHJcbiAqICAgICAgICAgICAgIH0sXHJcbiAqICAgICAgICAgICAgIHtcclxuICogICAgICAgICAgICAgICAgIGxhYmVsOiBgIyR7ZW50aXR5Py5pZH0gKCR7ZW50aXR5Py5wcm9kdWN0Lm5hbWV9KWAsXHJcbiAqICAgICAgICAgICAgICAgICBsaW5rOiBbXSxcclxuICogICAgICAgICAgICAgfSxcclxuICogICAgICAgICBdLFxyXG4gKiAgICAgfSksXHJcbiAqIF07XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAZG9jc0NhdGVnb3J5IHJvdXRlc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyUm91dGVDb21wb25lbnQ8XHJcbiAgICBDb21wb25lbnQgZXh0ZW5kcyBhbnkgfCBCYXNlRGV0YWlsQ29tcG9uZW50PEVudGl0eT4sXHJcbiAgICBFbnRpdHkgZXh0ZW5kcyB7IGlkOiBzdHJpbmc7IHVwZGF0ZWRBdD86IHN0cmluZyB9LFxyXG4gICAgVCBleHRlbmRzIERvY3VtZW50Tm9kZSB8IFR5cGVkRG9jdW1lbnROb2RlPGFueSwgeyBpZDogc3RyaW5nIH0+LFxyXG4gICAgRmllbGQgZXh0ZW5kcyBrZXlvZiBSZXN1bHRPZjxUPixcclxuICAgIFIgZXh0ZW5kcyBGaWVsZCxcclxuPihvcHRpb25zOiBSZWdpc3RlclJvdXRlQ29tcG9uZW50T3B0aW9uczxDb21wb25lbnQsIEVudGl0eSwgVCwgRmllbGQsIFI+KSB7XHJcbiAgICBjb25zdCB7IHF1ZXJ5LCBlbnRpdHlLZXksIHZhcmlhYmxlcywgZ2V0QnJlYWRjcnVtYnMgfSA9IG9wdGlvbnM7XHJcblxyXG4gICAgY29uc3QgYnJlYWRjcnVtYlN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCcmVhZGNydW1iVmFsdWU+KG9wdGlvbnMuYnJlYWRjcnVtYiA/PyAnJyk7XHJcbiAgICBjb25zdCB0aXRsZVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KG9wdGlvbnMudGl0bGUpO1xyXG5cclxuICAgIGNvbnN0IHJlc29sdmVGbjpcclxuICAgICAgICB8IFJlc29sdmVGbjx7XHJcbiAgICAgICAgICAgICAgZW50aXR5OiBPYnNlcnZhYmxlPFJlc3VsdE9mPFQ+W0ZpZWxkXSB8IG51bGw+O1xyXG4gICAgICAgICAgICAgIHJlc3VsdD86IFJlc3VsdE9mPFQ+O1xyXG4gICAgICAgICAgfT5cclxuICAgICAgICB8IHVuZGVmaW5lZCA9XHJcbiAgICAgICAgcXVlcnkgJiYgZW50aXR5S2V5XHJcbiAgICAgICAgICAgID8gY3JlYXRlQmFzZURldGFpbFJlc29sdmVGbih7XHJcbiAgICAgICAgICAgICAgICAgIHF1ZXJ5LFxyXG4gICAgICAgICAgICAgICAgICBlbnRpdHlLZXksXHJcbiAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyxcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHBhdGg6IG9wdGlvbnMucGF0aCA/PyAnJyxcclxuICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcHJvdmlkZTogUk9VVEVfQ09NUE9ORU5UX09QVElPTlMsXHJcbiAgICAgICAgICAgICAgICB1c2VWYWx1ZToge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogb3B0aW9ucy5jb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUkOiB0aXRsZVN1YmplY3QkLFxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWIkOiBicmVhZGNydW1iU3ViamVjdCQsXHJcbiAgICAgICAgICAgICAgICB9IHNhdGlzZmllcyBSb3V0ZUNvbXBvbmVudE9wdGlvbnMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC4uLihvcHRpb25zLnJvdXRlQ29uZmlnPy5wcm92aWRlcnMgPz8gW10pLFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgLi4uKG9wdGlvbnMucm91dGVDb25maWcgPz8ge30pLFxyXG4gICAgICAgIHJlc29sdmU6IHsgLi4uKHJlc29sdmVGbiA/IHsgZGV0YWlsOiByZXNvbHZlRm4gfSA6IHt9KSwgLi4uKG9wdGlvbnMucm91dGVDb25maWc/LnJlc29sdmUgPz8ge30pIH0sXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBicmVhZGNydW1iOiBicmVhZGNydW1iU3ViamVjdCQsXHJcbiAgICAgICAgICAgIC4uLihvcHRpb25zLnJvdXRlQ29uZmlnPy5kYXRhID8/IHt9KSxcclxuICAgICAgICAgICAgLi4uKGdldEJyZWFkY3J1bWJzXHJcbiAgICAgICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWI6IGRhdGEgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmRldGFpbC5lbnRpdHkucGlwZShtYXAoKGVudGl0eTogYW55KSA9PiBnZXRCcmVhZGNydW1icyhlbnRpdHkpKSksXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDoge30pLFxyXG4gICAgICAgICAgICAuLi4ob3B0aW9ucy5yb3V0ZUNvbmZpZz8uZGF0YSA/PyB7fSksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wb25lbnQ6IEFuZ3VsYXJSb3V0ZUNvbXBvbmVudCxcclxuICAgIH0gc2F0aXNmaWVzIFJvdXRlO1xyXG59XHJcbiJdfQ==
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItcm91dGUtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9leHRlbnNpb24vcmVnaXN0ZXItcm91dGUtY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBdUIseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQTJCdkU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FNcEMsT0FBc0U7SUFDcEUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUVoRSxNQUFNLGtCQUFrQixHQUFHLElBQUksZUFBZSxDQUFrQixPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLE1BQU0sYUFBYSxHQUFHLElBQUksZUFBZSxDQUFxQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFN0UsTUFBTSxTQUFTLEdBTVgsS0FBSyxJQUFJLFNBQVM7UUFDZCxDQUFDLENBQUMseUJBQXlCLENBQUM7WUFDdEIsS0FBSztZQUNMLFNBQVM7WUFDVCxTQUFTO1NBQ1osQ0FBQztRQUNKLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFcEIsT0FBTztRQUNILElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUU7UUFDeEIsU0FBUyxFQUFFO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLHVCQUF1QjtnQkFDaEMsUUFBUSxFQUFFO29CQUNOLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztvQkFDNUIsTUFBTSxFQUFFLGFBQWE7b0JBQ3JCLFdBQVcsRUFBRSxrQkFBa0I7aUJBQ0Y7YUFDcEM7WUFDRCxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDO1NBQzVDO1FBQ0QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQzlCLE9BQU8sRUFBRSxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUU7UUFDakcsSUFBSSxFQUFFO1lBQ0YsVUFBVSxFQUFFLGtCQUFrQjtZQUM5QixHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3BDLEdBQUcsQ0FBQyxjQUFjO2dCQUNkLENBQUMsQ0FBQztvQkFDSSxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FDZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztpQkFDNUU7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNULEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7U0FDdkM7UUFDRCxTQUFTLEVBQUUscUJBQXFCO0tBQ25CLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVzb2x2ZUZuLCBSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJlc3VsdE9mLCBUeXBlZERvY3VtZW50Tm9kZSB9IGZyb20gJ0BncmFwaHFsLXR5cGVkLWRvY3VtZW50LW5vZGUvY29yZSc7XHJcbmltcG9ydCB7IERvY3VtZW50Tm9kZSB9IGZyb20gJ2dyYXBocWwnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBCYXNlRGV0YWlsQ29tcG9uZW50LCBjcmVhdGVCYXNlRGV0YWlsUmVzb2x2ZUZuIH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UtZGV0YWlsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJWYWx1ZSB9IGZyb20gJy4uL3Byb3ZpZGVycy9icmVhZGNydW1iL2JyZWFkY3J1bWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFuZ3VsYXJSb3V0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hbmd1bGFyLXJvdXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJPVVRFX0NPTVBPTkVOVF9PUFRJT05TIH0gZnJvbSAnLi9jb21wb25lbnRzL3JvdXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJvdXRlQ29tcG9uZW50T3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHJvdXRlIGNvbXBvbmVudC5cclxuICpcclxuICogQGRvY3NDYXRlZ29yeSByb3V0ZXNcclxuICovXHJcbmV4cG9ydCB0eXBlIFJlZ2lzdGVyUm91dGVDb21wb25lbnRPcHRpb25zPFxyXG4gICAgQ29tcG9uZW50IGV4dGVuZHMgYW55IHwgQmFzZURldGFpbENvbXBvbmVudDxFbnRpdHk+LFxyXG4gICAgRW50aXR5IGV4dGVuZHMgeyBpZDogc3RyaW5nOyB1cGRhdGVkQXQ/OiBzdHJpbmcgfSxcclxuICAgIFQgZXh0ZW5kcyBEb2N1bWVudE5vZGUgfCBUeXBlZERvY3VtZW50Tm9kZTxhbnksIHsgaWQ6IHN0cmluZyB9PixcclxuICAgIEZpZWxkIGV4dGVuZHMga2V5b2YgUmVzdWx0T2Y8VD4sXHJcbiAgICBSIGV4dGVuZHMgRmllbGQsXHJcbj4gPSB7XHJcbiAgICBjb21wb25lbnQ6IFR5cGU8Q29tcG9uZW50PiB8IENvbXBvbmVudDtcclxuICAgIHRpdGxlPzogc3RyaW5nO1xyXG4gICAgYnJlYWRjcnVtYj86IEJyZWFkY3J1bWJWYWx1ZTtcclxuICAgIHBhdGg/OiBzdHJpbmc7XHJcbiAgICBxdWVyeT86IFQ7XHJcbiAgICBnZXRCcmVhZGNydW1icz86IChlbnRpdHk6IEV4Y2x1ZGU8UmVzdWx0T2Y8VD5bUl0sICdRdWVyeSc+KSA9PiBCcmVhZGNydW1iVmFsdWU7XHJcbiAgICBlbnRpdHlLZXk/OiBDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGV0YWlsQ29tcG9uZW50PGFueT4gPyBSIDogdW5kZWZpbmVkO1xyXG4gICAgdmFyaWFibGVzPzogVCBleHRlbmRzIFR5cGVkRG9jdW1lbnROb2RlPGFueSwgaW5mZXIgVj4gPyBPbWl0PFYsICdpZCc+IDogbmV2ZXI7XHJcbiAgICByb3V0ZUNvbmZpZz86IFJvdXRlO1xyXG59ICYgKENvbXBvbmVudCBleHRlbmRzIEJhc2VEZXRhaWxDb21wb25lbnQ8YW55PiA/IHsgZW50aXR5S2V5OiBSIH0gOiB1bmtub3duKTtcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICogUmVnaXN0ZXJzIGFuIEFuZ3VsYXIgc3RhbmRhbG9uZSBjb21wb25lbnQgdG8gYmUgcmVuZGVyZWQgaW4gYSByb3V0ZS5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgdHMgdGl0bGU9XCJyb3V0ZXMudHNcIlxyXG4gKiBpbXBvcnQgeyByZWdpc3RlclJvdXRlQ29tcG9uZW50IH0gZnJvbSAnXFxAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuICogaW1wb3J0IHsgcmVnaXN0ZXJSZWFjdFJvdXRlQ29tcG9uZW50IH0gZnJvbSAnXFxAdmVuZHVyZS9hZG1pbi11aS9yZWFjdCc7XHJcbiAqXHJcbiAqIGltcG9ydCB7IFByb2R1Y3RSZXZpZXdEZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcHJvZHVjdC1yZXZpZXctZGV0YWlsL3Byb2R1Y3QtcmV2aWV3LWRldGFpbC5jb21wb25lbnQnO1xyXG4gKiBpbXBvcnQgeyBBbGxQcm9kdWN0UmV2aWV3c0xpc3QgfSBmcm9tICcuL2NvbXBvbmVudHMvYWxsLXByb2R1Y3QtcmV2aWV3cy1saXN0L2FsbC1wcm9kdWN0LXJldmlld3MtbGlzdC5jb21wb25lbnQnO1xyXG4gKiBpbXBvcnQgeyBHZXRSZXZpZXdEZXRhaWxEb2N1bWVudCB9IGZyb20gJy4vZ2VuZXJhdGVkLXR5cGVzJztcclxuICpcclxuICogZXhwb3J0IGRlZmF1bHQgW1xyXG4gKiAgICAgcmVnaXN0ZXJSb3V0ZUNvbXBvbmVudCh7XHJcbiAqICAgICAgICAgcGF0aDogJycsXHJcbiAqICAgICAgICAgY29tcG9uZW50OiBBbGxQcm9kdWN0UmV2aWV3c0xpc3QsXHJcbiAqICAgICAgICAgYnJlYWRjcnVtYjogJ1Byb2R1Y3QgcmV2aWV3cycsXHJcbiAqICAgICB9KSxcclxuICogICAgIHJlZ2lzdGVyUm91dGVDb21wb25lbnQoe1xyXG4gKiAgICAgICAgIHBhdGg6ICc6aWQnLFxyXG4gKiAgICAgICAgIGNvbXBvbmVudDogUHJvZHVjdFJldmlld0RldGFpbENvbXBvbmVudCxcclxuICogICAgICAgICBxdWVyeTogR2V0UmV2aWV3RGV0YWlsRG9jdW1lbnQsXHJcbiAqICAgICAgICAgZW50aXR5S2V5OiAncHJvZHVjdFJldmlldycsXHJcbiAqICAgICAgICAgZ2V0QnJlYWRjcnVtYnM6IGVudGl0eSA9PiBbXHJcbiAqICAgICAgICAgICAgIHtcclxuICogICAgICAgICAgICAgICAgIGxhYmVsOiAnUHJvZHVjdCByZXZpZXdzJyxcclxuICogICAgICAgICAgICAgICAgIGxpbms6IFsnL2V4dGVuc2lvbnMnLCAncHJvZHVjdC1yZXZpZXdzJ10sXHJcbiAqICAgICAgICAgICAgIH0sXHJcbiAqICAgICAgICAgICAgIHtcclxuICogICAgICAgICAgICAgICAgIGxhYmVsOiBgIyR7ZW50aXR5Py5pZH0gKCR7ZW50aXR5Py5wcm9kdWN0Lm5hbWV9KWAsXHJcbiAqICAgICAgICAgICAgICAgICBsaW5rOiBbXSxcclxuICogICAgICAgICAgICAgfSxcclxuICogICAgICAgICBdLFxyXG4gKiAgICAgfSksXHJcbiAqIF07XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAZG9jc0NhdGVnb3J5IHJvdXRlc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyUm91dGVDb21wb25lbnQ8XHJcbiAgICBDb21wb25lbnQgZXh0ZW5kcyBhbnkgfCBCYXNlRGV0YWlsQ29tcG9uZW50PEVudGl0eT4sXHJcbiAgICBFbnRpdHkgZXh0ZW5kcyB7IGlkOiBzdHJpbmc7IHVwZGF0ZWRBdD86IHN0cmluZyB9LFxyXG4gICAgVCBleHRlbmRzIERvY3VtZW50Tm9kZSB8IFR5cGVkRG9jdW1lbnROb2RlPGFueSwgeyBpZDogc3RyaW5nIH0+LFxyXG4gICAgRmllbGQgZXh0ZW5kcyBrZXlvZiBSZXN1bHRPZjxUPixcclxuICAgIFIgZXh0ZW5kcyBGaWVsZCxcclxuPihvcHRpb25zOiBSZWdpc3RlclJvdXRlQ29tcG9uZW50T3B0aW9uczxDb21wb25lbnQsIEVudGl0eSwgVCwgRmllbGQsIFI+KSB7XHJcbiAgICBjb25zdCB7IHF1ZXJ5LCBlbnRpdHlLZXksIHZhcmlhYmxlcywgZ2V0QnJlYWRjcnVtYnMgfSA9IG9wdGlvbnM7XHJcblxyXG4gICAgY29uc3QgYnJlYWRjcnVtYlN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCcmVhZGNydW1iVmFsdWU+KG9wdGlvbnMuYnJlYWRjcnVtYiA/PyAnJyk7XHJcbiAgICBjb25zdCB0aXRsZVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KG9wdGlvbnMudGl0bGUpO1xyXG5cclxuICAgIGNvbnN0IHJlc29sdmVGbjpcclxuICAgICAgICB8IFJlc29sdmVGbjx7XHJcbiAgICAgICAgICAgICAgZW50aXR5OiBPYnNlcnZhYmxlPFJlc3VsdE9mPFQ+W0ZpZWxkXSB8IG51bGw+O1xyXG4gICAgICAgICAgICAgIHJlc3VsdD86IFJlc3VsdE9mPFQ+O1xyXG4gICAgICAgICAgfT5cclxuICAgICAgICB8IHVuZGVmaW5lZCA9XHJcbiAgICAgICAgcXVlcnkgJiYgZW50aXR5S2V5XHJcbiAgICAgICAgICAgID8gY3JlYXRlQmFzZURldGFpbFJlc29sdmVGbih7XHJcbiAgICAgICAgICAgICAgICAgIHF1ZXJ5LFxyXG4gICAgICAgICAgICAgICAgICBlbnRpdHlLZXksXHJcbiAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyxcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHBhdGg6IG9wdGlvbnMucGF0aCA/PyAnJyxcclxuICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcHJvdmlkZTogUk9VVEVfQ09NUE9ORU5UX09QVElPTlMsXHJcbiAgICAgICAgICAgICAgICB1c2VWYWx1ZToge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogb3B0aW9ucy5jb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUkOiB0aXRsZVN1YmplY3QkLFxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWIkOiBicmVhZGNydW1iU3ViamVjdCQsXHJcbiAgICAgICAgICAgICAgICB9IHNhdGlzZmllcyBSb3V0ZUNvbXBvbmVudE9wdGlvbnMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC4uLihvcHRpb25zLnJvdXRlQ29uZmlnPy5wcm92aWRlcnMgPz8gW10pLFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgLi4uKG9wdGlvbnMucm91dGVDb25maWcgPz8ge30pLFxyXG4gICAgICAgIHJlc29sdmU6IHsgLi4uKHJlc29sdmVGbiA/IHsgZGV0YWlsOiByZXNvbHZlRm4gfSA6IHt9KSwgLi4uKG9wdGlvbnMucm91dGVDb25maWc/LnJlc29sdmUgPz8ge30pIH0sXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBicmVhZGNydW1iOiBicmVhZGNydW1iU3ViamVjdCQsXHJcbiAgICAgICAgICAgIC4uLihvcHRpb25zLnJvdXRlQ29uZmlnPy5kYXRhID8/IHt9KSxcclxuICAgICAgICAgICAgLi4uKGdldEJyZWFkY3J1bWJzXHJcbiAgICAgICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWI6IGRhdGEgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmRldGFpbC5lbnRpdHkucGlwZShtYXAoKGVudGl0eTogYW55KSA9PiBnZXRCcmVhZGNydW1icyhlbnRpdHkpKSksXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDoge30pLFxyXG4gICAgICAgICAgICAuLi4ob3B0aW9ucy5yb3V0ZUNvbmZpZz8uZGF0YSA/PyB7fSksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wb25lbnQ6IEFuZ3VsYXJSb3V0ZUNvbXBvbmVudCxcclxuICAgIH0gc2F0aXNmaWVzIFJvdXRlO1xyXG59XHJcbiJdfQ==
@@ -2,7 +2,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
2
2
  import { assertNever } from '@vendure/common/lib/shared-utils';
3
3
  import extend from 'just-extend';
4
4
  import { Subject } from 'rxjs';
5
- import { debounceTime, distinctUntilChanged, map, startWith } from 'rxjs/operators';
5
+ import { debounceTime, distinctUntilChanged, map, startWith, takeUntil } from 'rxjs/operators';
6
6
  import { DataTableFilter, } from './data-table-filter';
7
7
  export class FilterWithValue {
8
8
  constructor(filter, value, onUpdate) {
@@ -58,6 +58,7 @@ export class DataTableFilterCollection {
58
58
  this.#connectedToRouter = false;
59
59
  this.valueChanges = this.#valueChanges$.asObservable().pipe(debounceTime(10));
60
60
  this.#filtersQueryParamName = 'filters';
61
+ this.destroy$ = new Subject();
61
62
  }
62
63
  get length() {
63
64
  return this.#filters.length;
@@ -65,6 +66,10 @@ export class DataTableFilterCollection {
65
66
  get activeFilters() {
66
67
  return this.#activeFilters;
67
68
  }
69
+ destroy() {
70
+ this.destroy$.next();
71
+ this.destroy$.complete();
72
+ }
68
73
  addFilter(config) {
69
74
  if (this.#connectedToRouter) {
70
75
  throw new Error('Cannot add filter after connecting to router. Make sure to call addFilter() before connectToRoute()');
@@ -161,8 +166,19 @@ export class DataTableFilterCollection {
161
166
  }, {});
162
167
  }
163
168
  connectToRoute(route) {
169
+ this.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(val => {
170
+ const currentFilters = route.snapshot.queryParamMap.get(this.#filtersQueryParamName);
171
+ if (val.length === 0 && !currentFilters) {
172
+ return;
173
+ }
174
+ this.router.navigate(['./'], {
175
+ queryParams: { [this.#filtersQueryParamName]: this.serialize(), page: 1 },
176
+ relativeTo: route,
177
+ queryParamsHandling: 'merge',
178
+ });
179
+ });
164
180
  route.queryParamMap
165
- .pipe(map(params => params.get(this.#filtersQueryParamName)), distinctUntilChanged(), startWith(route.snapshot.queryParamMap.get(this.#filtersQueryParamName) ?? ''))
181
+ .pipe(map(params => params.get(this.#filtersQueryParamName)), distinctUntilChanged(), startWith(route.snapshot.queryParamMap.get(this.#filtersQueryParamName) ?? ''), takeUntil(this.destroy$))
166
182
  .subscribe(value => {
167
183
  this.#activeFilters = [];
168
184
  if (value === '' || value === null) {
@@ -276,4 +292,4 @@ export class DataTableFilterCollection {
276
292
  return new FilterWithValue(filter, value, v => this.#valueChanges$.next(v));
277
293
  }
278
294
  }
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1maWx0ZXItY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvcHJvdmlkZXJzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1maWx0ZXItY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRCxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVFwRixPQUFPLEVBQ0gsZUFBZSxHQVdsQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE1BQU0sT0FBTyxlQUFlO0lBRXhCLFlBQ29CLE1BQWtDLEVBQzNDLEtBQWlDLEVBQ3hDLFFBQXNEO1FBRnRDLFdBQU0sR0FBTixNQUFNLENBQTRCO1FBQzNDLFVBQUssR0FBTCxLQUFLLENBQTRCO1FBSHBDLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQStDLENBQUM7UUFNekUsSUFBSSxRQUFRLEVBQUU7WUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsRUFBK0M7UUFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFpQztRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFX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SUFFTyxxQkFBcUIsQ0FDekIsTUFBaUMsRUFDakMsS0FBZ0Q7UUFFaEQsT0FBTyxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQgeyBDdXN0b21GaWVsZFR5cGUgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3NoYXJlZC10eXBlcyc7XHJcbmltcG9ydCB7IGFzc2VydE5ldmVyIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xyXG5pbXBvcnQgZXh0ZW5kIGZyb20gJ2p1c3QtZXh0ZW5kJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICAgIEN1c3RvbUZpZWxkQ29uZmlnLFxyXG4gICAgRGF0ZU9wZXJhdG9ycyxcclxuICAgIElkT3BlcmF0b3JzLFxyXG4gICAgTnVtYmVyT3BlcmF0b3JzLFxyXG4gICAgU3RyaW5nT3BlcmF0b3JzLFxyXG59IGZyb20gJy4uLy4uL2NvbW1vbi9nZW5lcmF0ZWQtdHlwZXMnO1xyXG5pbXBvcnQge1xyXG4gICAgRGF0YVRhYmxlRmlsdGVyLFxyXG4gICAgRGF0YVRhYmxlRmlsdGVyQm9vbGVhblR5cGUsXHJcbiAgICBEYXRhVGFibGVGaWx0ZXJDdXN0b21UeXBlLFxyXG4gICAgRGF0YVRhYmxlRmlsdGVyRGF0ZVJhbmdlVHlwZSxcclxuICAgIERhdGFUYWJsZUZpbHRlcklEVHlwZSxcclxuICAgIERhdGFUYWJsZUZpbHRlck51bWJlclR5cGUsXHJcbiAgICBEYXRhVGFibGVGaWx0ZXJPcHRpb25zLFxyXG4gICAgRGF0YVRhYmxlRmlsdGVyU2VsZWN0VHlwZSxcclxuICAgIERhdGFUYWJsZUZpbHRlclRleHRUeXBlLFxyXG4gICAgRGF0YVRhYmxlRmlsdGVyVHlwZSxcclxuICAgIERhdGFUYWJsZUZpbHRlclZhbHVlLFxyXG59IGZyb20gJy4vZGF0YS10YWJsZS1maWx0ZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZpbHRlcldpdGhWYWx1ZTxUeXBlIGV4dGVuZHMgRGF0YVRhYmxlRmlsdGVyVHlwZSA9IERhdGFUYWJsZUZpbHRlclR5cGU+IHtcclxuICAgIHByaXZhdGUgb25VcGRhdGVGbnMgPSBuZXcgU2V0PCh2YWx1ZTogRGF0YVRhYmxlRmlsdGVyVmFsdWU8VHlwZT4pID0+IHZvaWQ+KCk7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyOiBEYXRhVGFibGVGaWx0ZXI8YW55LCBUeXBlPixcclxuICAgICAgICBwdWJsaWMgdmFsdWU6IERhdGFUYWJsZUZpbHRlclZhbHVlPFR5cGU+LFxyXG4gICAgICAgIG9uVXBkYXRlPzogKHZhbHVlOiBEYXRhVGFibGVGaWx0ZXJWYWx1ZTxUeXBlPikgPT4gdm9pZCxcclxuICAgICkge1xyXG4gICAgICAgIGlmIChvblVwZGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uVXBkYXRlRm5zLmFkZChvblVwZGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uVXBkYXRlKGZuOiAodmFsdWU6IERhdGFUYWJsZUZpbHRlclZhbHVlPFR5cGU+KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgdGhpcy5vblVwZGF0ZUZucy5hZGQoZm4pO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVZhbHVlKHZhbHVlOiBEYXRhVGFibGVGaWx0ZXJWYWx1ZTxUeXBlPikge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIHRoaXMub25VcGRhdGVGbnMpIHtcclxuICAgICAgICAgICAgZm4odmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpc0lkKCk6IHRoaXMgaXMgRmlsdGVyV2l0aFZhbHVlPERhdGFUYWJsZUZpbHRlcklEVHlwZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlci50eXBlLmtpbmQgPT09ICdpZCc7XHJcbiAgICB9XHJcblxyXG4gICAgaXNUZXh0KCk6IHRoaXMgaXMgRmlsdGVyV2l0aFZhbHVlPERhdGFUYWJsZUZpbHRlclRleHRUeXBlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyLnR5cGUua2luZCA9PT0gJ3RleHQnO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTnVtYmVyKCk6IHRoaXMgaXMgRmlsdGVyV2l0aFZhbHVlPERhdGFUYWJsZUZpbHRlck51bWJlclR5cGU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIudHlwZS5raW5kID09PSAnbnVtYmVyJztcclxuICAgIH1cclxuXHJcbiAgICBpc0Jvb2xlYW4oKTogdGhpcyBpcyBGaWx0ZXJXaXRoVmFsdWU8RGF0YVRhYmxlRmlsdGVyQm9vbGVhblR5cGU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIudHlwZS5raW5kID09PSAnYm9vbGVhbic7XHJcbiAgICB9XHJcblxyXG4gICAgaXNTZWxlY3QoKTogdGhpcyBpcyBGaWx0ZXJXaXRoVmFsdWU8RGF0YVRhYmxlRmlsdGVyU2VsZWN0VHlwZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlci50eXBlLmtpbmQgPT09ICdzZWxlY3QnO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRGF0ZVJhbmdlKCk6IHRoaXMgaXMgRmlsdGVyV2l0aFZhbHVlPERhdGFUYWJsZUZpbHRlckRhdGVSYW5nZVR5cGU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIudHlwZS5raW5kID09PSAnZGF0ZVJhbmdlJztcclxuICAgIH1cclxuXHJcbiAgICBpc0N1c3RvbSgpOiB0aGlzIGlzIEZpbHRlcldpdGhWYWx1ZTxEYXRhVGFibGVGaWx0ZXJDdXN0b21UeXBlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyLnR5cGUua2luZCA9PT0gJ2N1c3RvbSc7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVGaWx0ZXJDb2xsZWN0aW9uPEZpbHRlcklucHV0IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+IHtcclxuICAgIHJlYWRvbmx5ICNmaWx0ZXJzOiBBcnJheTxEYXRhVGFibGVGaWx0ZXI8RmlsdGVySW5wdXQsIGFueT4+ID0gW107XHJcbiAgICAjYWN0aXZlRmlsdGVyczogRmlsdGVyV2l0aFZhbHVlW10gPSBbXTtcclxuICAgICN2YWx1ZUNoYW5nZXMkID0gbmV3IFN1YmplY3Q8RmlsdGVyV2l0aFZhbHVlW10+KCk7XHJcbiAgICAjY29ubmVjdGVkVG9Sb3V0ZXIgPSBmYWxzZTtcclxuICAgIHZhbHVlQ2hhbmdlcyA9IHRoaXMuI3ZhbHVlQ2hhbmdlcyQuYXNPYnNlcnZhYmxlKCkucGlwZShkZWJvdW5jZVRpbWUoMTApKTtcclxuICAgIHJlYWRvbmx5ICNmaWx0ZXJzUXVlcnlQYXJhbU5hbWUgPSAnZmlsdGVycyc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cclxuXHJcbiAgICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuI2ZpbHRlcnMubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBhY3RpdmVGaWx0ZXJzKCk6IEZpbHRlcldpdGhWYWx1ZVtdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jYWN0aXZlRmlsdGVycztcclxuICAgIH1cclxuXHJcbiAgICBhZGRGaWx0ZXI8RmlsdGVyVHlwZSBleHRlbmRzIERhdGFUYWJsZUZpbHRlclR5cGU+KFxyXG4gICAgICAgIGNvbmZpZzogRGF0YVRhYmxlRmlsdGVyT3B0aW9uczxGaWx0ZXJJbnB1dCwgRmlsdGVyVHlwZT4sXHJcbiAgICApOiBEYXRhVGFibGVGaWx0ZXJDb2xsZWN0aW9uPEZpbHRlcklucHV0PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuI2Nvbm5lY3RlZFRvUm91dGVyKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgICAgICdDYW5ub3QgYWRkIGZpbHRlciBhZnRlciBjb25uZWN0aW5nIHRvIHJvdXRlci4gTWFrZSBzdXJlIHRvIGNhbGwgYWRkRmlsdGVyKCkgYmVmb3JlIGNvbm5lY3RUb1JvdXRlKCknLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLiNmaWx0ZXJzLnB1c2goXHJcbiAgICAgICAgICAgIG5ldyBEYXRhVGFibGVGaWx0ZXIoY29uZmlnLCAoZmlsdGVyLCB2YWx1ZSkgPT4gdGhpcy5vbkFjdGl2YXRlRmlsdGVyKGZpbHRlciwgdmFsdWUpKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEZpbHRlcnM8RmlsdGVyVHlwZSBleHRlbmRzIERhdGFUYWJsZUZpbHRlclR5cGU+KFxyXG4gICAgICAgIGNvbmZpZ3M6IEFycmF5PERhdGFUYWJsZUZpbHRlck9wdGlvbnM8RmlsdGVySW5wdXQsIEZpbHRlclR5cGU+PixcclxuICAgICk6IERhdGFUYWJsZUZpbHRlckNvbGxlY3Rpb248RmlsdGVySW5wdXQ+IHtcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsdGVyKGNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZElkRmlsdGVyKCk6IEZpbHRlcklucHV0IGV4dGVuZHMge1xyXG4gICAgICAgIGlkPzogSWRPcGVyYXRvcnMgfCBudWxsO1xyXG4gICAgfVxyXG4gICAgICAgID8gRGF0YVRhYmxlRmlsdGVyQ29sbGVjdGlvbjxGaWx0ZXJJbnB1dD5cclxuICAgICAgICA6IG5ldmVyIHtcclxuICAgICAgICB0aGlzLmFkZEZpbHRlcih7XHJcbiAgICAgICAgICAgIG5hbWU6ICdpZCcsXHJcbiAgICAgICAgICAgIHR5cGU6IHsga2luZDogJ2lkJyB9LFxyXG4gICAgICAgICAgICBsYWJlbDogXygnY29tbW9uLmlkJyksXHJcbiAgICAgICAgICAgIGZpbHRlckZpZWxkOiAnaWQnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzIGFzIGFueTtcclxuICAgIH1cclxuXHJcbiAgICBhZGREYXRlRmlsdGVycygpOiBGaWx0ZXJJbnB1dCBleHRlbmRzIHtcclxuICAgICAgICBjcmVhdGVkQXQ/OiBEYXRlT3BlcmF0b3JzIHwgbnVsbDtcclxuICAgICAgICB1cGRhdGVkQXQ/OiBEYXRlT3BlcmF0b3JzIHwgbnVsbDtcclxuICAgIH1cclxuICAgICAgICA/IERhdGFUYWJsZUZpbHRlckNvbGxlY3Rpb248RmlsdGVySW5wdXQ+XHJcbiAgICAgICAgOiBuZXZlciB7XHJcbiAgICAgICAgdGhpcy5hZGRGaWx0ZXIoe1xyXG4gICAgICAgICAgICBuYW1lOiAnY3JlYXRlZEF0JyxcclxuICAgICAgICAgICAgdHlwZTogeyBraW5kOiAnZGF0ZVJhbmdlJyB9LFxyXG4gICAgICAgICAgICBsYWJlbDogXygnY29tbW9uLmNyZWF0ZWQtYXQnKSxcclxuICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICdjcmVhdGVkQXQnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYWRkRmlsdGVyKHtcclxuICAgICAgICAgICAgbmFtZTogJ3VwZGF0ZWRBdCcsXHJcbiAgICAgICAgICAgIHR5cGU6IHsga2luZDogJ2RhdGVSYW5nZScgfSxcclxuICAgICAgICAgICAgbGFiZWw6IF8oJ2NvbW1vbi51cGRhdGVkLWF0JyksXHJcbiAgICAgICAgICAgIGZpbHRlckZpZWxkOiAndXBkYXRlZEF0JyxcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcyBhcyBhbnk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkQ3VzdG9tRmllbGRGaWx0ZXJzKGN1c3RvbUZpZWxkczogQ3VzdG9tRmllbGRDb25maWdbXSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgY29uZmlnIG9mIGN1c3RvbUZpZWxkcykge1xyXG4gICAgICAgICAgICBjb25zdCB0eXBlID0gY29uZmlnLnR5cGUgYXMgQ3VzdG9tRmllbGRUeXBlO1xyXG4gICAgICAgICAgICBpZiAoY29uZmlnLmxpc3QpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXJUeXBlOiBEYXRhVGFibGVGaWx0ZXJUeXBlIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSB7IGtpbmQ6ICdib29sZWFuJyB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnaW50JzpcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zsb2F0JzpcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJUeXBlID0geyBraW5kOiAnbnVtYmVyJyB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnZGF0ZXRpbWUnOlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSB7IGtpbmQ6ICdkYXRlUmFuZ2UnIH07XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxyXG4gICAgICAgICAgICAgICAgY2FzZSAnbG9jYWxlU3RyaW5nJzpcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2xvY2FsZVRleHQnOlxyXG4gICAgICAgICAgICAgICAgY2FzZSAndGV4dCc6XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyVHlwZSA9IHsga2luZDogJ3RleHQnIH07XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdyZWxhdGlvbic6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2Fubm90IHNvcnQgcmVsYXRpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGFzc2VydE5ldmVyKHR5cGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChmaWx0ZXJUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEZpbHRlcih7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogY29uZmlnLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogZmlsdGVyVHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogY29uZmlnLmxhYmVsID8/IGNvbmZpZy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckZpZWxkOiBjb25maWcubmFtZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZpbHRlcihuYW1lOiBzdHJpbmcpOiBEYXRhVGFibGVGaWx0ZXI8RmlsdGVySW5wdXQ+IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jZmlsdGVycy5maW5kKGYgPT4gZi5uYW1lID09PSBuYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGaWx0ZXJzKCk6IEFycmF5PERhdGFUYWJsZUZpbHRlcjxGaWx0ZXJJbnB1dD4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jZmlsdGVycztcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVBY3RpdmVGaWx0ZXJBdEluZGV4KGluZGV4OiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLiNhY3RpdmVGaWx0ZXJzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy4jdmFsdWVDaGFuZ2VzJC5uZXh0KHRoaXMuI2FjdGl2ZUZpbHRlcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUZpbHRlcklucHV0KCk6IEZpbHRlcklucHV0IHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jYWN0aXZlRmlsdGVycy5yZWR1Y2UoKGFjYywgeyBmaWx0ZXIsIHZhbHVlIH0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZSAhPSBudWxsID8gZmlsdGVyLnRvRmlsdGVySW5wdXQodmFsdWUpIDoge307XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4dGVuZCh0cnVlLCBhY2MsIG5ld1ZhbHVlKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBGaWx0ZXJJbnB1dDtcclxuICAgICAgICB9LCB7fSBhcyBGaWx0ZXJJbnB1dCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29ubmVjdFRvUm91dGUocm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XHJcbiAgICAgICAgcm91dGUucXVlcnlQYXJhbU1hcFxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zLmdldCh0aGlzLiNmaWx0ZXJzUXVlcnlQYXJhbU5hbWUpKSxcclxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgocm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQodGhpcy4jZmlsdGVyc1F1ZXJ5UGFyYW1OYW1lKSA/PyAnJyksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLiNhY3RpdmVGaWx0ZXJzID0gW107XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jdmFsdWVDaGFuZ2VzJC5uZXh0KHRoaXMuI2FjdGl2ZUZpbHRlcnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlclF1ZXJ5UGFyYW1zID0gKHZhbHVlID8/ICcnKVxyXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnOycpXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcCh2YWx1ZSA9PiB2YWx1ZS5zcGxpdCgnOicpKVxyXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+ICh7IG5hbWUsIHZhbHVlIH0pKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgeyBuYW1lLCB2YWx1ZSB9IG9mIGZpbHRlclF1ZXJ5UGFyYW1zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5nZXRGaWx0ZXIobmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLmRlc2VyaWFsaXplVmFsdWUoZmlsdGVyLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5hY3RpdmF0ZSh2YWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuI2Nvbm5lY3RlZFRvUm91dGVyID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgc2VyaWFsaXplKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuI2FjdGl2ZUZpbHRlcnNcclxuICAgICAgICAgICAgLm1hcChcclxuICAgICAgICAgICAgICAgIChmaWx0ZXJXaXRoVmFsdWUsIGkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgYCR7ZmlsdGVyV2l0aFZhbHVlLmZpbHRlci5uYW1lfToke3RoaXMuc2VyaWFsaXplVmFsdWUoZmlsdGVyV2l0aFZhbHVlKX1gLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5qb2luKCc7Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXJpYWxpemVWYWx1ZTxUeXBlIGV4dGVuZHMgRGF0YVRhYmxlRmlsdGVyVHlwZT4oXHJcbiAgICAgICAgZmlsdGVyV2l0aFZhbHVlOiBGaWx0ZXJXaXRoVmFsdWU8VHlwZT4sXHJcbiAgICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmIChmaWx0ZXJXaXRoVmFsdWUuaXNJZCgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IGZpbHRlcldpdGhWYWx1ZS52YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIGAke3ZhbD8ub3BlcmF0b3J9LCR7dmFsPy50ZXJtfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWx0ZXJXaXRoVmFsdWUuaXNUZXh0KCkpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gZmlsdGVyV2l0aFZhbHVlLnZhbHVlO1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7dmFsPy5vcGVyYXRvcn0sJHt2YWw/LnRlcm19YDtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlcldpdGhWYWx1ZS5pc051bWJlcigpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IGZpbHRlcldpdGhWYWx1ZS52YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIGAke3ZhbC5vcGVyYXRvcn0sJHt2YWwuYW1vdW50fWA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJXaXRoVmFsdWUuaXNTZWxlY3QoKSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWwgPSBmaWx0ZXJXaXRoVmFsdWUudmFsdWU7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWwuam9pbignLCcpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyV2l0aFZhbHVlLmlzQm9vbGVhbigpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IGZpbHRlcldpdGhWYWx1ZS52YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbCA/ICcxJyA6ICcwJztcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlcldpdGhWYWx1ZS5pc0RhdGVSYW5nZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IGZpbHRlcldpdGhWYWx1ZS52YWx1ZTtcclxuICAgICAgICAgICAgaWYgKHZhbC5tb2RlID09PSAncmVsYXRpdmUnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7dmFsLm1vZGV9LCR7dmFsLnJlbGF0aXZlVmFsdWV9LCR7dmFsLnJlbGF0aXZlVW5pdH1gO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB2YWwuc3RhcnQgPyBuZXcgRGF0ZSh2YWwuc3RhcnQpLmdldFRpbWUoKSA6ICcnO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZW5kID0gdmFsLmVuZCA/IG5ldyBEYXRlKHZhbC5lbmQpLmdldFRpbWUoKSA6ICcnO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3N0YXJ0fSwke2VuZH1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJXaXRoVmFsdWUuaXNDdXN0b20oKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyV2l0aFZhbHVlLmZpbHRlci50eXBlLnNlcmlhbGl6ZVZhbHVlKGZpbHRlcldpdGhWYWx1ZS52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZGVzZXJpYWxpemVWYWx1ZShcclxuICAgICAgICBmaWx0ZXI6IERhdGFUYWJsZUZpbHRlcixcclxuICAgICAgICB2YWx1ZTogc3RyaW5nLFxyXG4gICAgKTogRGF0YVRhYmxlRmlsdGVyVmFsdWU8RGF0YVRhYmxlRmlsdGVyVHlwZT4ge1xyXG4gICAgICAgIHN3aXRjaCAoZmlsdGVyLnR5cGUua2luZCkge1xyXG4gICAgICAgICAgICBjYXNlICdpZCc6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFtvcGVyYXRvciwgdGVybV0gPSB2YWx1ZS5zcGxpdCgnLCcpIGFzIFtrZXlvZiBTdHJpbmdPcGVyYXRvcnMsIHN0cmluZ107XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBvcGVyYXRvciwgdGVybSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ3RleHQnOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBbb3BlcmF0b3IsIHRlcm1dID0gdmFsdWUuc3BsaXQoJywnKSBhcyBba2V5b2YgU3RyaW5nT3BlcmF0b3JzLCBzdHJpbmddO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgb3BlcmF0b3IsIHRlcm0gfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdudW1iZXInOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBbb3BlcmF0b3IsIGFtb3VudF0gPSB2YWx1ZS5zcGxpdCgnLCcpIGFzIFtrZXlvZiBOdW1iZXJPcGVyYXRvcnMsIHN0cmluZ107XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBvcGVyYXRvciwgYW1vdW50OiArYW1vdW50IH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnc2VsZWN0JzpcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zcGxpdCgnLCcpO1xyXG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gJzEnO1xyXG4gICAgICAgICAgICBjYXNlICdkYXRlUmFuZ2UnOlxyXG4gICAgICAgICAgICAgICAgbGV0IG1vZGUgPSAncmVsYXRpdmUnO1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlbGF0aXZlVmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGxldCByZWxhdGl2ZVVuaXQ6ICdkYXknIHwgJ21vbnRoJyB8ICd5ZWFyJyB8IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGxldCBzdGFydDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgbGV0IGVuZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ3JlbGF0aXZlJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBtb2RlID0gJ3JlbGF0aXZlJztcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBbXywgcmVsYXRpdmVWYWx1ZVN0ciwgcmVsYXRpdmVVbml0U3RyXSA9IHZhbHVlLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVWYWx1ZSA9IE51bWJlcihyZWxhdGl2ZVZhbHVlU3RyKTtcclxuICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVVuaXQgPSByZWxhdGl2ZVVuaXRTdHIgYXMgJ2RheScgfCAnbW9udGgnIHwgJ3llYXInO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBtb2RlID0gJ3JhbmdlJztcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBbc3RhcnRUaW1lc3RhbXAsIGVuZFRpbWVzdGFtcF0gPSB2YWx1ZS5zcGxpdCgnLCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gc3RhcnRUaW1lc3RhbXAgPyBuZXcgRGF0ZShOdW1iZXIoc3RhcnRUaW1lc3RhbXApKS50b0lTT1N0cmluZygpIDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgZW5kID0gZW5kVGltZXN0YW1wID8gbmV3IERhdGUoTnVtYmVyKGVuZFRpbWVzdGFtcCkpLnRvSVNPU3RyaW5nKCkgOiAnJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB7IG1vZGUsIHJlbGF0aXZlVmFsdWUsIHJlbGF0aXZlVW5pdCwgc3RhcnQsIGVuZCB9O1xyXG4gICAgICAgICAgICBjYXNlICdjdXN0b20nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlci50eXBlLmRlc2VyaWFsaXplVmFsdWUodmFsdWUpO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgYXNzZXJ0TmV2ZXIoZmlsdGVyLnR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9uQWN0aXZhdGVGaWx0ZXIoZmlsdGVyOiBEYXRhVGFibGVGaWx0ZXI8YW55LCBhbnk+LCB2YWx1ZTogRGF0YVRhYmxlRmlsdGVyVmFsdWU8YW55Pikge1xyXG4gICAgICAgIHRoaXMuI2FjdGl2ZUZpbHRlcnMucHVzaCh0aGlzLmNyZWF0ZUZpbHRlcldpdGhWYWx1ZShmaWx0ZXIsIHZhbHVlKSk7XHJcbiAgICAgICAgdGhpcy4jdmFsdWVDaGFuZ2VzJC5uZXh0KHRoaXMuI2FjdGl2ZUZpbHRlcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlRmlsdGVyV2l0aFZhbHVlKFxyXG4gICAgICAgIGZpbHRlcjogRGF0YVRhYmxlRmlsdGVyPGFueSwgYW55PixcclxuICAgICAgICB2YWx1ZTogRGF0YVRhYmxlRmlsdGVyVmFsdWU8RGF0YVRhYmxlRmlsdGVyVHlwZT4sXHJcbiAgICApIHtcclxuICAgICAgICByZXR1cm4gbmV3IEZpbHRlcldpdGhWYWx1ZShmaWx0ZXIsIHZhbHVlLCB2ID0+IHRoaXMuI3ZhbHVlQ2hhbmdlcyQubmV4dCh2KSk7XHJcbiAgICB9XHJcbn1cclxuIl19
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1maWx0ZXItY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvcHJvdmlkZXJzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1maWx0ZXItY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRCxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRL0YsT0FBTyxFQUNILGVBQWUsR0FXbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixNQUFNLE9BQU8sZUFBZTtJQUd4QixZQUNvQixNQUFrQyxFQUMzQyxLQUFpQyxFQUN4QyxRQUFzRDtRQUZ0QyxXQUFNLEdBQU4sTUFBTSxDQUE0QjtRQUMzQyxVQUFLLEdBQUwsS0FBSyxDQUE0QjtRQUpwQyxnQkFBVyxHQUFHLElBQUksR0FBRyxFQUErQyxDQUFDO1FBT3pFLElBQUksUUFBUSxFQUFFO1lBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQStDO1FBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBaUM7UUFDekMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJ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IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQgeyBDdXN0b21GaWVsZFR5cGUgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3NoYXJlZC10eXBlcyc7XHJcbmltcG9ydCB7IGFzc2VydE5ldmVyIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xyXG5pbXBvcnQgZXh0ZW5kIGZyb20gJ2p1c3QtZXh0ZW5kJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gICAgQ3VzdG9tRmllbGRDb25maWcsXHJcbiAgICBEYXRlT3BlcmF0b3JzLFxyXG4gICAgSWRPcGVyYXRvcnMsXHJcbiAgICBOdW1iZXJPcGVyYXRvcnMsXHJcbiAgICBTdHJpbmdPcGVyYXRvcnMsXHJcbn0gZnJvbSAnLi4vLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XHJcbmltcG9ydCB7XHJcbiAgICBEYXRhVGFibGVGaWx0ZXIsXHJcbiAgICBEYXRhVGFibGVGaWx0ZXJCb29sZWFuVHlwZSxcclxuICAgIERhdGFUYWJsZUZpbHRlckN1c3RvbVR5cGUsXHJcbiAgICBEYXRhVGFibGVGaWx0ZXJEYXRlUmFuZ2VUeXBlLFxyXG4gICAgRGF0YVRhYmxlRmlsdGVySURUeXBlLFxyXG4gICAgRGF0YVRhYmxlRmlsdGVyTnVtYmVyVHlwZSxcclxuICAgIERhdGFUYWJsZUZpbHRlck9wdGlvbnMsXHJcbiAgICBEYXRhVGFibGVGaWx0ZXJTZWxlY3RUeXBlLFxyXG4gICAgRGF0YVRhYmxlRmlsdGVyVGV4dFR5cGUsXHJcbiAgICBEYXRhVGFibGVGaWx0ZXJUeXBlLFxyXG4gICAgRGF0YVRhYmxlRmlsdGVyVmFsdWUsXHJcbn0gZnJvbSAnLi9kYXRhLXRhYmxlLWZpbHRlcic7XHJcblxyXG5leHBvcnQgY2xhc3MgRmlsdGVyV2l0aFZhbHVlPFR5cGUgZXh0ZW5kcyBEYXRhVGFibGVGaWx0ZXJUeXBlID0gRGF0YVRhYmxlRmlsdGVyVHlwZT4ge1xyXG4gICAgcHJpdmF0ZSBvblVwZGF0ZUZucyA9IG5ldyBTZXQ8KHZhbHVlOiBEYXRhVGFibGVGaWx0ZXJWYWx1ZTxUeXBlPikgPT4gdm9pZD4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyOiBEYXRhVGFibGVGaWx0ZXI8YW55LCBUeXBlPixcclxuICAgICAgICBwdWJsaWMgdmFsdWU6IERhdGFUYWJsZUZpbHRlclZhbHVlPFR5cGU+LFxyXG4gICAgICAgIG9uVXBkYXRlPzogKHZhbHVlOiBEYXRhVGFibGVGaWx0ZXJWYWx1ZTxUeXBlPikgPT4gdm9pZCxcclxuICAgICkge1xyXG4gICAgICAgIGlmIChvblVwZGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uVXBkYXRlRm5zLmFkZChvblVwZGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uVXBkYXRlKGZuOiAodmFsdWU6IERhdGFUYWJsZUZpbHRlclZhbHVlPFR5cGU+KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgdGhpcy5vblVwZGF0ZUZucy5hZGQoZm4pO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVZhbHVlKHZhbHVlOiBEYXRhVGFibGVGaWx0ZXJWYWx1ZTxUeXBlPikge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIHRoaXMub25VcGRhdGVGbnMpIHtcclxuICAgICAgICAgICAgZm4odmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpc0lkKCk6IHRoaXMgaXMgRmlsdGVyV2l0aFZhbHVlPERhdGFUYWJsZUZpbHRlcklEVHlwZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlci50eXBlLmtpbmQgPT09ICdpZCc7XHJcbiAgICB9XHJcblxyXG4gICAgaXNUZXh0KCk6IHRoaXMgaXMgRmlsdGVyV2l0aFZhbHVlPERhdGFUYWJsZUZpbHRlclRleHRUeXBlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyLnR5cGUua2luZCA9PT0gJ3RleHQnO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTnVtYmVyKCk6IHRoaXMgaXMgRmlsdGVyV2l0aFZhbHVlPERhdGFUYWJsZUZpbHRlck51bWJlclR5cGU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIudHlwZS5raW5kID09PSAnbnVtYmVyJztcclxuICAgIH1cclxuXHJcbiAgICBpc0Jvb2xlYW4oKTogdGhpcyBpcyBGaWx0ZXJXaXRoVmFsdWU8RGF0YVRhYmxlRmlsdGVyQm9vbGVhblR5cGU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIudHlwZS5raW5kID09PSAnYm9vbGVhbic7XHJcbiAgICB9XHJcblxyXG4gICAgaXNTZWxlY3QoKTogdGhpcyBpcyBGaWx0ZXJXaXRoVmFsdWU8RGF0YVRhYmxlRmlsdGVyU2VsZWN0VHlwZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlci50eXBlLmtpbmQgPT09ICdzZWxlY3QnO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRGF0ZVJhbmdlKCk6IHRoaXMgaXMgRmlsdGVyV2l0aFZhbHVlPERhdGFUYWJsZUZpbHRlckRhdGVSYW5nZVR5cGU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIudHlwZS5raW5kID09PSAnZGF0ZVJhbmdlJztcclxuICAgIH1cclxuXHJcbiAgICBpc0N1c3RvbSgpOiB0aGlzIGlzIEZpbHRlcldpdGhWYWx1ZTxEYXRhVGFibGVGaWx0ZXJDdXN0b21UeXBlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyLnR5cGUua2luZCA9PT0gJ2N1c3RvbSc7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVGaWx0ZXJDb2xsZWN0aW9uPEZpbHRlcklucHV0IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+IHtcclxuICAgIHJlYWRvbmx5ICNmaWx0ZXJzOiBBcnJheTxEYXRhVGFibGVGaWx0ZXI8RmlsdGVySW5wdXQsIGFueT4+ID0gW107XHJcbiAgICAjYWN0aXZlRmlsdGVyczogRmlsdGVyV2l0aFZhbHVlW10gPSBbXTtcclxuICAgICN2YWx1ZUNoYW5nZXMkID0gbmV3IFN1YmplY3Q8RmlsdGVyV2l0aFZhbHVlW10+KCk7XHJcbiAgICAjY29ubmVjdGVkVG9Sb3V0ZXIgPSBmYWxzZTtcclxuICAgIHZhbHVlQ2hhbmdlcyA9IHRoaXMuI3ZhbHVlQ2hhbmdlcyQuYXNPYnNlcnZhYmxlKCkucGlwZShkZWJvdW5jZVRpbWUoMTApKTtcclxuICAgIHJlYWRvbmx5ICNmaWx0ZXJzUXVlcnlQYXJhbU5hbWUgPSAnZmlsdGVycyc7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7fVxyXG5cclxuICAgIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jZmlsdGVycy5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGFjdGl2ZUZpbHRlcnMoKTogRmlsdGVyV2l0aFZhbHVlW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiNhY3RpdmVGaWx0ZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIGRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEZpbHRlcjxGaWx0ZXJUeXBlIGV4dGVuZHMgRGF0YVRhYmxlRmlsdGVyVHlwZT4oXHJcbiAgICAgICAgY29uZmlnOiBEYXRhVGFibGVGaWx0ZXJPcHRpb25zPEZpbHRlcklucHV0LCBGaWx0ZXJUeXBlPixcclxuICAgICk6IERhdGFUYWJsZUZpbHRlckNvbGxlY3Rpb248RmlsdGVySW5wdXQ+IHtcclxuICAgICAgICBpZiAodGhpcy4jY29ubmVjdGVkVG9Sb3V0ZXIpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgJ0Nhbm5vdCBhZGQgZmlsdGVyIGFmdGVyIGNvbm5lY3RpbmcgdG8gcm91dGVyLiBNYWtlIHN1cmUgdG8gY2FsbCBhZGRGaWx0ZXIoKSBiZWZvcmUgY29ubmVjdFRvUm91dGUoKScsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuI2ZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgbmV3IERhdGFUYWJsZUZpbHRlcihjb25maWcsIChmaWx0ZXIsIHZhbHVlKSA9PiB0aGlzLm9uQWN0aXZhdGVGaWx0ZXIoZmlsdGVyLCB2YWx1ZSkpLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkRmlsdGVyczxGaWx0ZXJUeXBlIGV4dGVuZHMgRGF0YVRhYmxlRmlsdGVyVHlwZT4oXHJcbiAgICAgICAgY29uZmlnczogQXJyYXk8RGF0YVRhYmxlRmlsdGVyT3B0aW9uczxGaWx0ZXJJbnB1dCwgRmlsdGVyVHlwZT4+LFxyXG4gICAgKTogRGF0YVRhYmxlRmlsdGVyQ29sbGVjdGlvbjxGaWx0ZXJJbnB1dD4ge1xyXG4gICAgICAgIGZvciAoY29uc3QgY29uZmlnIG9mIGNvbmZpZ3MpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRGaWx0ZXIoY29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkSWRGaWx0ZXIoKTogRmlsdGVySW5wdXQgZXh0ZW5kcyB7XHJcbiAgICAgICAgaWQ/OiBJZE9wZXJhdG9ycyB8IG51bGw7XHJcbiAgICB9XHJcbiAgICAgICAgPyBEYXRhVGFibGVGaWx0ZXJDb2xsZWN0aW9uPEZpbHRlcklucHV0PlxyXG4gICAgICAgIDogbmV2ZXIge1xyXG4gICAgICAgIHRoaXMuYWRkRmlsdGVyKHtcclxuICAgICAgICAgICAgbmFtZTogJ2lkJyxcclxuICAgICAgICAgICAgdHlwZTogeyBraW5kOiAnaWQnIH0sXHJcbiAgICAgICAgICAgIGxhYmVsOiBfKCdjb21tb24uaWQnKSxcclxuICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICdpZCcsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMgYXMgYW55O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZERhdGVGaWx0ZXJzKCk6IEZpbHRlcklucHV0IGV4dGVuZHMge1xyXG4gICAgICAgIGNyZWF0ZWRBdD86IERhdGVPcGVyYXRvcnMgfCBudWxsO1xyXG4gICAgICAgIHVwZGF0ZWRBdD86IERhdGVPcGVyYXRvcnMgfCBudWxsO1xyXG4gICAgfVxyXG4gICAgICAgID8gRGF0YVRhYmxlRmlsdGVyQ29sbGVjdGlvbjxGaWx0ZXJJbnB1dD5cclxuICAgICAgICA6IG5ldmVyIHtcclxuICAgICAgICB0aGlzLmFkZEZpbHRlcih7XHJcbiAgICAgICAgICAgIG5hbWU6ICdjcmVhdGVkQXQnLFxyXG4gICAgICAgICAgICB0eXBlOiB7IGtpbmQ6ICdkYXRlUmFuZ2UnIH0sXHJcbiAgICAgICAgICAgIGxhYmVsOiBfKCdjb21tb24uY3JlYXRlZC1hdCcpLFxyXG4gICAgICAgICAgICBmaWx0ZXJGaWVsZDogJ2NyZWF0ZWRBdCcsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hZGRGaWx0ZXIoe1xyXG4gICAgICAgICAgICBuYW1lOiAndXBkYXRlZEF0JyxcclxuICAgICAgICAgICAgdHlwZTogeyBraW5kOiAnZGF0ZVJhbmdlJyB9LFxyXG4gICAgICAgICAgICBsYWJlbDogXygnY29tbW9uLnVwZGF0ZWQtYXQnKSxcclxuICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICd1cGRhdGVkQXQnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzIGFzIGFueTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRDdXN0b21GaWVsZEZpbHRlcnMoY3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZENvbmZpZ1tdKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjb25maWcgb2YgY3VzdG9tRmllbGRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBjb25maWcudHlwZSBhcyBDdXN0b21GaWVsZFR5cGU7XHJcbiAgICAgICAgICAgIGlmIChjb25maWcubGlzdCkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGZpbHRlclR5cGU6IERhdGFUYWJsZUZpbHRlclR5cGUgfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyVHlwZSA9IHsga2luZDogJ2Jvb2xlYW4nIH07XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdpbnQnOlxyXG4gICAgICAgICAgICAgICAgY2FzZSAnZmxvYXQnOlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSB7IGtpbmQ6ICdudW1iZXInIH07XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdkYXRldGltZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyVHlwZSA9IHsga2luZDogJ2RhdGVSYW5nZScgfTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XHJcbiAgICAgICAgICAgICAgICBjYXNlICdsb2NhbGVTdHJpbmcnOlxyXG4gICAgICAgICAgICAgICAgY2FzZSAnbG9jYWxlVGV4dCc6XHJcbiAgICAgICAgICAgICAgICBjYXNlICd0ZXh0JzpcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJUeXBlID0geyBraW5kOiAndGV4dCcgfTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3JlbGF0aW9uJzpcclxuICAgICAgICAgICAgICAgICAgICAvLyBDYW5ub3Qgc29ydCByZWxhdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0TmV2ZXIodHlwZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGZpbHRlclR5cGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkRmlsdGVyKHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb25maWcubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBmaWx0ZXJUeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBjb25maWcubGFiZWwgPz8gY29uZmlnLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyRmllbGQ6IGNvbmZpZy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmlsdGVyKG5hbWU6IHN0cmluZyk6IERhdGFUYWJsZUZpbHRlcjxGaWx0ZXJJbnB1dD4gfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiNmaWx0ZXJzLmZpbmQoZiA9PiBmLm5hbWUgPT09IG5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZpbHRlcnMoKTogQXJyYXk8RGF0YVRhYmxlRmlsdGVyPEZpbHRlcklucHV0Pj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiNmaWx0ZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUFjdGl2ZUZpbHRlckF0SW5kZXgoaW5kZXg6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuI2FjdGl2ZUZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLiN2YWx1ZUNoYW5nZXMkLm5leHQodGhpcy4jYWN0aXZlRmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlRmlsdGVySW5wdXQoKTogRmlsdGVySW5wdXQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiNhY3RpdmVGaWx0ZXJzLnJlZHVjZSgoYWNjLCB7IGZpbHRlciwgdmFsdWUgfSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHZhbHVlICE9IG51bGwgPyBmaWx0ZXIudG9GaWx0ZXJJbnB1dCh2YWx1ZSkgOiB7fTtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZXh0ZW5kKHRydWUsIGFjYywgbmV3VmFsdWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIEZpbHRlcklucHV0O1xyXG4gICAgICAgIH0sIHt9IGFzIEZpbHRlcklucHV0KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25uZWN0VG9Sb3V0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRGaWx0ZXJzID0gcm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQodGhpcy4jZmlsdGVyc1F1ZXJ5UGFyYW1OYW1lKTtcclxuICAgICAgICAgICAgaWYgKHZhbC5sZW5ndGggPT09IDAgJiYgIWN1cnJlbnRGaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLyddLCB7XHJcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczogeyBbdGhpcy4jZmlsdGVyc1F1ZXJ5UGFyYW1OYW1lXTogdGhpcy5zZXJpYWxpemUoKSwgcGFnZTogMSB9LFxyXG4gICAgICAgICAgICAgICAgcmVsYXRpdmVUbzogcm91dGUsXHJcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByb3V0ZS5xdWVyeVBhcmFtTWFwXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHBhcmFtcyA9PiBwYXJhbXMuZ2V0KHRoaXMuI2ZpbHRlcnNRdWVyeVBhcmFtTmFtZSkpLFxyXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChyb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCh0aGlzLiNmaWx0ZXJzUXVlcnlQYXJhbU5hbWUpID8/ICcnKSxcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuI2FjdGl2ZUZpbHRlcnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLiN2YWx1ZUNoYW5nZXMkLm5leHQodGhpcy4jYWN0aXZlRmlsdGVycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyUXVlcnlQYXJhbXMgPSAodmFsdWUgPz8gJycpXHJcbiAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCc7JylcclxuICAgICAgICAgICAgICAgICAgICAubWFwKHZhbHVlID0+IHZhbHVlLnNwbGl0KCc6JykpXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gKHsgbmFtZSwgdmFsdWUgfSkpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB7IG5hbWUsIHZhbHVlIH0gb2YgZmlsdGVyUXVlcnlQYXJhbXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmdldEZpbHRlcihuYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuZGVzZXJpYWxpemVWYWx1ZShmaWx0ZXIsIHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmFjdGl2YXRlKHZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy4jY29ubmVjdGVkVG9Sb3V0ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBzZXJpYWxpemUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jYWN0aXZlRmlsdGVyc1xyXG4gICAgICAgICAgICAubWFwKFxyXG4gICAgICAgICAgICAgICAgKGZpbHRlcldpdGhWYWx1ZSwgaSkgPT5cclxuICAgICAgICAgICAgICAgICAgICBgJHtmaWx0ZXJXaXRoVmFsdWUuZmlsdGVyLm5hbWV9OiR7dGhpcy5zZXJpYWxpemVWYWx1ZShmaWx0ZXJXaXRoVmFsdWUpfWAsXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLmpvaW4oJzsnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNlcmlhbGl6ZVZhbHVlPFR5cGUgZXh0ZW5kcyBEYXRhVGFibGVGaWx0ZXJUeXBlPihcclxuICAgICAgICBmaWx0ZXJXaXRoVmFsdWU6IEZpbHRlcldpdGhWYWx1ZTxUeXBlPixcclxuICAgICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKGZpbHRlcldpdGhWYWx1ZS5pc0lkKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gZmlsdGVyV2l0aFZhbHVlLnZhbHVlO1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7dmFsPy5vcGVyYXRvcn0sJHt2YWw/LnRlcm19YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpbHRlcldpdGhWYWx1ZS5pc1RleHQoKSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWwgPSBmaWx0ZXJXaXRoVmFsdWUudmFsdWU7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHt2YWw/Lm9wZXJhdG9yfSwke3ZhbD8udGVybX1gO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyV2l0aFZhbHVlLmlzTnVtYmVyKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gZmlsdGVyV2l0aFZhbHVlLnZhbHVlO1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7dmFsLm9wZXJhdG9yfSwke3ZhbC5hbW91bnR9YDtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlcldpdGhWYWx1ZS5pc1NlbGVjdCgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IGZpbHRlcldpdGhWYWx1ZS52YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbC5qb2luKCcsJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJXaXRoVmFsdWUuaXNCb29sZWFuKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gZmlsdGVyV2l0aFZhbHVlLnZhbHVlO1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsID8gJzEnIDogJzAnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyV2l0aFZhbHVlLmlzRGF0ZVJhbmdlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gZmlsdGVyV2l0aFZhbHVlLnZhbHVlO1xyXG4gICAgICAgICAgICBpZiAodmFsLm1vZGUgPT09ICdyZWxhdGl2ZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHt2YWwubW9kZX0sJHt2YWwucmVsYXRpdmVWYWx1ZX0sJHt2YWwucmVsYXRpdmVVbml0fWA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IHZhbC5zdGFydCA/IG5ldyBEYXRlKHZhbC5zdGFydCkuZ2V0VGltZSgpIDogJyc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbmQgPSB2YWwuZW5kID8gbmV3IERhdGUodmFsLmVuZCkuZ2V0VGltZSgpIDogJyc7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7c3RhcnR9LCR7ZW5kfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlcldpdGhWYWx1ZS5pc0N1c3RvbSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJXaXRoVmFsdWUuZmlsdGVyLnR5cGUuc2VyaWFsaXplVmFsdWUoZmlsdGVyV2l0aFZhbHVlLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkZXNlcmlhbGl6ZVZhbHVlKFxyXG4gICAgICAgIGZpbHRlcjogRGF0YVRhYmxlRmlsdGVyLFxyXG4gICAgICAgIHZhbHVlOiBzdHJpbmcsXHJcbiAgICApOiBEYXRhVGFibGVGaWx0ZXJWYWx1ZTxEYXRhVGFibGVGaWx0ZXJUeXBlPiB7XHJcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIudHlwZS5raW5kKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2lkJzoge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgW29wZXJhdG9yLCB0ZXJtXSA9IHZhbHVlLnNwbGl0KCcsJykgYXMgW2tleW9mIFN0cmluZ09wZXJhdG9ycywgc3RyaW5nXTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IG9wZXJhdG9yLCB0ZXJtIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAndGV4dCc6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFtvcGVyYXRvciwgdGVybV0gPSB2YWx1ZS5zcGxpdCgnLCcpIGFzIFtrZXlvZiBTdHJpbmdPcGVyYXRvcnMsIHN0cmluZ107XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBvcGVyYXRvciwgdGVybSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFtvcGVyYXRvciwgYW1vdW50XSA9IHZhbHVlLnNwbGl0KCcsJykgYXMgW2tleW9mIE51bWJlck9wZXJhdG9ycywgc3RyaW5nXTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IG9wZXJhdG9yLCBhbW91bnQ6ICthbW91bnQgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdzZWxlY3QnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09PSAnMSc7XHJcbiAgICAgICAgICAgIGNhc2UgJ2RhdGVSYW5nZSc6XHJcbiAgICAgICAgICAgICAgICBsZXQgbW9kZSA9ICdyZWxhdGl2ZSc7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVsYXRpdmVWYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlbGF0aXZlVW5pdDogJ2RheScgfCAnbW9udGgnIHwgJ3llYXInIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgbGV0IHN0YXJ0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgZW5kOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgncmVsYXRpdmUnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPSAncmVsYXRpdmUnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFtfLCByZWxhdGl2ZVZhbHVlU3RyLCByZWxhdGl2ZVVuaXRTdHJdID0gdmFsdWUuc3BsaXQoJywnKTtcclxuICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVZhbHVlID0gTnVtYmVyKHJlbGF0aXZlVmFsdWVTdHIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlVW5pdCA9IHJlbGF0aXZlVW5pdFN0ciBhcyAnZGF5JyB8ICdtb250aCcgfCAneWVhcic7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPSAncmFuZ2UnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFtzdGFydFRpbWVzdGFtcCwgZW5kVGltZXN0YW1wXSA9IHZhbHVlLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBzdGFydFRpbWVzdGFtcCA/IG5ldyBEYXRlKE51bWJlcihzdGFydFRpbWVzdGFtcCkpLnRvSVNPU3RyaW5nKCkgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICBlbmQgPSBlbmRUaW1lc3RhbXAgPyBuZXcgRGF0ZShOdW1iZXIoZW5kVGltZXN0YW1wKSkudG9JU09TdHJpbmcoKSA6ICcnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbW9kZSwgcmVsYXRpdmVWYWx1ZSwgcmVsYXRpdmVVbml0LCBzdGFydCwgZW5kIH07XHJcbiAgICAgICAgICAgIGNhc2UgJ2N1c3RvbSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyLnR5cGUuZGVzZXJpYWxpemVWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBhc3NlcnROZXZlcihmaWx0ZXIudHlwZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25BY3RpdmF0ZUZpbHRlcihmaWx0ZXI6IERhdGFUYWJsZUZpbHRlcjxhbnksIGFueT4sIHZhbHVlOiBEYXRhVGFibGVGaWx0ZXJWYWx1ZTxhbnk+KSB7XHJcbiAgICAgICAgdGhpcy4jYWN0aXZlRmlsdGVycy5wdXNoKHRoaXMuY3JlYXRlRmlsdGVyV2l0aFZhbHVlKGZpbHRlciwgdmFsdWUpKTtcclxuICAgICAgICB0aGlzLiN2YWx1ZUNoYW5nZXMkLm5leHQodGhpcy4jYWN0aXZlRmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVGaWx0ZXJXaXRoVmFsdWUoXHJcbiAgICAgICAgZmlsdGVyOiBEYXRhVGFibGVGaWx0ZXI8YW55LCBhbnk+LFxyXG4gICAgICAgIHZhbHVlOiBEYXRhVGFibGVGaWx0ZXJWYWx1ZTxEYXRhVGFibGVGaWx0ZXJUeXBlPixcclxuICAgICkge1xyXG4gICAgICAgIHJldHVybiBuZXcgRmlsdGVyV2l0aFZhbHVlKGZpbHRlciwgdmFsdWUsIHYgPT4gdGhpcy4jdmFsdWVDaGFuZ2VzJC5uZXh0KHYpKTtcclxuICAgIH1cclxufVxyXG4iXX0=