@one-paragon/angular-utilities 1.2.11 → 1.2.13

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 (26) hide show
  1. package/action-state/ngrx.d.ts +1 -1
  2. package/esm2022/table-builder/classes/TableBuilderDataSource.mjs +18 -27
  3. package/esm2022/table-builder/classes/table-builder.mjs +2 -2
  4. package/esm2022/table-builder/classes/table-store.mjs +9 -13
  5. package/esm2022/table-builder/components/column-builder/column-helpers.mjs +1 -3
  6. package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +11 -17
  7. package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +21 -20
  8. package/esm2022/table-builder/components/generic-table/paginator.component.mjs +58 -56
  9. package/esm2022/table-builder/components/table-container/table-container.mjs +55 -51
  10. package/esm2022/table-builder/components/table-container/virtual-scroll-container.mjs +57 -34
  11. package/esm2022/table-builder/directives/tb-filter.directive.mjs +10 -19
  12. package/esm2022/table-builder/services/export-to-csv.service.mjs +6 -16
  13. package/fesm2022/one-paragon-angular-utilities.mjs +239 -242
  14. package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -1
  15. package/package.json +1 -1
  16. package/table-builder/classes/TableBuilderDataSource.d.ts +4 -4
  17. package/table-builder/classes/table-store.d.ts +5 -3
  18. package/table-builder/components/gen-col-displayer/gen-col-displayer.component.d.ts +5 -3
  19. package/table-builder/components/generic-table/generic-table.component.d.ts +3 -1
  20. package/table-builder/components/generic-table/paginator.component.d.ts +20 -19
  21. package/table-builder/components/table-container/table-container-imports.d.ts +2 -2
  22. package/table-builder/components/table-container/table-container.d.ts +10 -11
  23. package/table-builder/components/table-container/virtual-scroll-container.d.ts +15 -2
  24. package/table-builder/directives/table-wrapper.directive.d.ts +1 -1
  25. package/table-builder/directives/tb-filter.directive.d.ts +2 -3
  26. package/table-builder/services/export-to-csv.service.d.ts +1 -6
@@ -26,6 +26,6 @@ export interface State extends EntityState<ActionStatus> {
26
26
  }
27
27
  export declare const initialState: StatusState;
28
28
  export declare const getStatusState: import("@ngrx/store").MemoizedSelector<object, State, import("@ngrx/store").DefaultProjectorFn<State>>;
29
- export declare const selectIds: import("@ngrx/store").MemoizedSelector<object, string[] | number[], (entityState: EntityState<ActionStatus>) => string[] | number[]>, selectEntities: import("@ngrx/store").MemoizedSelector<object, import("@ngrx/entity").Dictionary<ActionStatus>, (entityState: EntityState<ActionStatus>) => import("@ngrx/entity").Dictionary<ActionStatus>>, selectAll: import("@ngrx/store").MemoizedSelector<object, ActionStatus[], (entityState: EntityState<ActionStatus>) => ActionStatus[]>, selectTotal: import("@ngrx/store").MemoizedSelector<object, number, (entityState: EntityState<ActionStatus>) => number>;
29
+ export declare const selectIds: import("@ngrx/store").MemoizedSelector<object, number[] | string[], (entityState: EntityState<ActionStatus>) => number[] | string[]>, selectEntities: import("@ngrx/store").MemoizedSelector<object, import("@ngrx/entity").Dictionary<ActionStatus>, (entityState: EntityState<ActionStatus>) => import("@ngrx/entity").Dictionary<ActionStatus>>, selectAll: import("@ngrx/store").MemoizedSelector<object, ActionStatus[], (entityState: EntityState<ActionStatus>) => ActionStatus[]>, selectTotal: import("@ngrx/store").MemoizedSelector<object, number, (entityState: EntityState<ActionStatus>) => number>;
30
30
  export declare const selectEntity: (id: string) => import("@ngrx/store").MemoizedSelector<object, any, (s1: import("@ngrx/entity").Dictionary<ActionStatus>) => any>;
31
31
  export declare function actionStatusReducer(state: StatusState | undefined, action: Action): StatusState;
@@ -1,46 +1,37 @@
1
1
  import { MatTableDataSource } from '@angular/material/table';
2
- import { combineLatest, delay, distinctUntilChanged, first, map, merge, skip } from 'rxjs';
3
- import { defaultShareReplay } from '../../rxjs';
2
+ import { computed, effect } from '@angular/core';
4
3
  export class TableBuilderDataSource extends MatTableDataSource {
5
4
  dataSrc;
6
5
  subscription;
7
6
  constructor(dataSrc, state, data) {
8
7
  super([]);
9
8
  this.dataSrc = dataSrc;
10
- const viewType$ = state.viewType$.pipe(distinctUntilChanged(), defaultShareReplay());
11
- const distinctSizingData = combineLatest([state.state$, data.state$]).pipe(map(([{ currentPage, pageSize }, { virtualEnds }]) => ({ currentPage, pageSize, virtualEnd: virtualEnds?.end, virtualStart: virtualEnds?.start })), distinctUntilChanged((d1, d2) => d1.currentPage === d2.currentPage
12
- && d1.pageSize === d2.pageSize
13
- && d1.virtualEnd === d2.virtualEnd
14
- && d1.virtualStart === d2.virtualStart));
15
- const _dataLength = this.dataSrc.pipe(map((data) => data.length), distinctUntilChanged());
16
- const firstDataLength = _dataLength.pipe(first());
17
- const subsequentDataLength = _dataLength.pipe(skip(1), delay(0));
18
- const dataLength = merge(firstDataLength, subsequentDataLength);
19
- const dataSize$ = combineLatest([viewType$, distinctSizingData, dataLength]).pipe(map(([viewType, { currentPage, pageSize, virtualEnd, virtualStart }, length]) => {
9
+ const $currentPage = state.$currentPage;
10
+ const $pageSize = state.$pageSize;
11
+ const $virtualEnds = data.selectSignal(d => d.virtualEnds);
12
+ const $dataLength = computed(() => dataSrc().length);
13
+ const $dataSize = computed(() => {
14
+ const viewType = state.$viewType();
15
+ const dataLength = $dataLength();
16
+ const currentPage = $currentPage();
17
+ const pageSize = $pageSize();
18
+ const virtualEnds = $virtualEnds();
20
19
  const previousPageRecords = currentPage * pageSize;
21
20
  if (viewType === 'virtual paginator') {
22
- return ({ start: virtualStart + previousPageRecords, end: Math.min(virtualEnd, pageSize) + previousPageRecords });
21
+ return ({ start: virtualEnds.start + previousPageRecords, end: Math.min(virtualEnds.end, pageSize) + previousPageRecords });
23
22
  }
24
23
  if (viewType === 'paginator') {
25
24
  return ({ start: previousPageRecords, end: previousPageRecords + pageSize });
26
25
  }
27
26
  if (viewType === 'all') {
28
- return ({ start: 0, end: length });
27
+ return ({ start: 0, end: dataLength });
29
28
  }
30
- return ({ start: virtualStart, end: virtualEnd });
31
- }))
32
- .pipe(distinctUntilChanged((a, b) => a.start === b.start && a.end === b.end), defaultShareReplay());
33
- this.dataToShow$ = combineLatest([this.dataSrc, dataSize$])
34
- .pipe(map(([data, size]) => data.slice(size.start, size.end)))
35
- .pipe(defaultShareReplay());
29
+ return ({ start: virtualEnds.start, end: virtualEnds.end });
30
+ });
31
+ const $dataToShow = computed(() => dataSrc().slice($dataSize().start, $dataSize().end));
32
+ effect(() => this.data = $dataToShow());
36
33
  }
37
- dataToShow$;
38
34
  connect() {
39
- if (!this.subscription) {
40
- this.subscription = this.dataToShow$.subscribe((data) => {
41
- this.data = data;
42
- });
43
- }
44
35
  return super.connect();
45
36
  }
46
37
  disconnect() {
@@ -51,4 +42,4 @@ export class TableBuilderDataSource extends MatTableDataSource {
51
42
  super.disconnect();
52
43
  }
53
44
  }
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVCdWlsZGVyRGF0YVNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NsYXNzZXMvVGFibGVCdWlsZGVyRGF0YVNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQTRCLGFBQWEsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUdoRCxNQUFNLE9BQU8sc0JBQTBCLFNBQVEsa0JBQXFCO0lBR3pEO0lBRlQsWUFBWSxDQUFnQjtJQUM1QixZQUNTLE9BQXdCLEVBQy9CLEtBQWlCLEVBQ2pCLElBQWU7UUFFZixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFKSCxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQU0vQixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDcEMsb0JBQW9CLEVBQUUsRUFDdEIsa0JBQWtCLEVBQUUsQ0FDckIsQ0FBQztRQUVGLE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3hFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUUsUUFBUSxFQUFDLEVBQUUsRUFBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDaEQsQ0FBQyxFQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFL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RTdCLE9BQU87UUFDTCxJQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBQyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDdEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUNELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGNvbWJpbmVMYXRlc3QsIGRlbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlyc3QsIG1hcCwgbWVyZ2UsIHNraXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4vdGFibGUtc3RvcmUnO1xyXG5pbXBvcnQgeyBkZWZhdWx0U2hhcmVSZXBsYXkgfSBmcm9tICcuLi8uLi9yeGpzJztcclxuaW1wb3J0IHsgRGF0YVN0b3JlIH0gZnJvbSAnLi9kYXRhLXN0b3JlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUJ1aWxkZXJEYXRhU291cmNlPFQ+IGV4dGVuZHMgTWF0VGFibGVEYXRhU291cmNlPFQ+IHtcclxuICBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGF0YVNyYzogT2JzZXJ2YWJsZTxUW10+LFxyXG4gICAgc3RhdGU6IFRhYmxlU3RvcmUsXHJcbiAgICBkYXRhOiBEYXRhU3RvcmVcclxuICApIHtcclxuICAgIHN1cGVyKFtdKTtcclxuICBcclxuICAgIGNvbnN0IHZpZXdUeXBlJCA9IHN0YXRlLnZpZXdUeXBlJC5waXBlKFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICBkZWZhdWx0U2hhcmVSZXBsYXkoKVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBkaXN0aW5jdFNpemluZ0RhdGEgPSBjb21iaW5lTGF0ZXN0KFtzdGF0ZS5zdGF0ZSQsIGRhdGEuc3RhdGUkXSkucGlwZShcclxuICAgICAgbWFwKChbe2N1cnJlbnRQYWdlLCBwYWdlU2l6ZX0sIHt2aXJ0dWFsRW5kcyB9XSkgPT4gXHJcbiAgICAgICAgKHtjdXJyZW50UGFnZSwgcGFnZVNpemUsIHZpcnR1YWxFbmQ6IHZpcnR1YWxFbmRzPy5lbmQsIHZpcnR1YWxTdGFydDogdmlydHVhbEVuZHM/LnN0YXJ0fSlcclxuICAgICAgKSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGQxLCBkMikgPT5cclxuICAgICAgICBkMS5jdXJyZW50UGFnZSA9PT0gZDIuY3VycmVudFBhZ2VcclxuICAgICAgICAmJiBkMS5wYWdlU2l6ZSA9PT0gZDIucGFnZVNpemVcclxuICAgICAgICAmJiBkMS52aXJ0dWFsRW5kID09PSBkMi52aXJ0dWFsRW5kXHJcbiAgICAgICAgJiYgZDEudmlydHVhbFN0YXJ0ID09PSBkMi52aXJ0dWFsU3RhcnRcclxuICAgICAgKVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBfZGF0YUxlbmd0aCA9IHRoaXMuZGF0YVNyYy5waXBlKG1hcCgoZGF0YSkgPT4gZGF0YS5sZW5ndGgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuICAgIGNvbnN0IGZpcnN0RGF0YUxlbmd0aCA9IF9kYXRhTGVuZ3RoLnBpcGUoZmlyc3QoKSk7XHJcbiAgICBjb25zdCBzdWJzZXF1ZW50RGF0YUxlbmd0aCA9IF9kYXRhTGVuZ3RoLnBpcGUoc2tpcCgxKSwgZGVsYXkoMCkpO1xyXG4gICAgY29uc3QgZGF0YUxlbmd0aCA9IG1lcmdlKGZpcnN0RGF0YUxlbmd0aCwgc3Vic2VxdWVudERhdGFMZW5ndGgpO1xyXG4gIFxyXG4gICAgY29uc3QgZGF0YVNpemUkID0gY29tYmluZUxhdGVzdChbdmlld1R5cGUkLCBkaXN0aW5jdFNpemluZ0RhdGEsIGRhdGFMZW5ndGhdKS5waXBlKFxyXG4gICAgICBtYXAoKFt2aWV3VHlwZSwgeyBjdXJyZW50UGFnZSwgcGFnZVNpemUsIHZpcnR1YWxFbmQsIHZpcnR1YWxTdGFydH0sIGxlbmd0aCBdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNQYWdlUmVjb3JkcyA9IGN1cnJlbnRQYWdlICogcGFnZVNpemU7XHJcbiAgICAgICAgaWYodmlld1R5cGUgPT09ICd2aXJ0dWFsIHBhZ2luYXRvcicpe1xyXG4gICAgICAgICAgcmV0dXJuICh7IHN0YXJ0OnZpcnR1YWxTdGFydCArIHByZXZpb3VzUGFnZVJlY29yZHMsIGVuZDogTWF0aC5taW4odmlydHVhbEVuZCwgcGFnZVNpemUpICsgcHJldmlvdXNQYWdlUmVjb3JkcyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodmlld1R5cGUgPT09ICdwYWdpbmF0b3InKXtcclxuICAgICAgICAgIHJldHVybiAoeyBzdGFydDogcHJldmlvdXNQYWdlUmVjb3JkcywgZW5kOiBwcmV2aW91c1BhZ2VSZWNvcmRzICsgcGFnZVNpemUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHZpZXdUeXBlID09PSAnYWxsJyl7XHJcbiAgICAgICAgICByZXR1cm4gKHsgc3RhcnQ6IDAsIGVuZDogbGVuZ3RoIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gKHsgc3RhcnQ6IHZpcnR1YWxTdGFydCwgZW5kOiB2aXJ0dWFsRW5kIH0pO1xyXG4gICAgfSkpXHJcbiAgICAucGlwZShcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsYikgPT4gYS5zdGFydCA9PT0gYi5zdGFydCAmJiBhLmVuZCA9PT0gYi5lbmQpLFxyXG4gICAgICBkZWZhdWx0U2hhcmVSZXBsYXkoKVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmRhdGFUb1Nob3ckID0gY29tYmluZUxhdGVzdChbdGhpcy5kYXRhU3JjLCBkYXRhU2l6ZSRdKVxyXG4gICAgICAucGlwZShtYXAoKFtkYXRhLCBzaXplXSkgPT4gZGF0YS5zbGljZShzaXplLnN0YXJ0LCBzaXplLmVuZCkpKVxyXG4gICAgICAucGlwZShkZWZhdWx0U2hhcmVSZXBsYXkoKSk7XHJcbiAgfVxyXG5cclxuICBkYXRhVG9TaG93JDogT2JzZXJ2YWJsZTxUW10+O1xyXG5cclxuICBjb25uZWN0KCkge1xyXG4gICAgaWYoIXRoaXMuc3Vic2NyaXB0aW9uKXtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmRhdGFUb1Nob3ckLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdXBlci5jb25uZWN0KCk7XHJcbiAgfVxyXG4gIGRpc2Nvbm5lY3QoKSB7XHJcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBzdXBlci5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVCdWlsZGVyRGF0YVNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NsYXNzZXMvVGFibGVCdWlsZGVyRGF0YVNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUk3RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxNQUFNLE9BQU8sc0JBQTBCLFNBQVEsa0JBQXFCO0lBR3pEO0lBRlQsWUFBWSxDQUFnQjtJQUM1QixZQUNTLE9BQW9CLEVBQzNCLEtBQWlCLEVBQ2pCLElBQWU7UUFFZixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFKSCxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBTzNCLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDeEMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNsQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTNELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVyRCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxNQUFNLFVBQVUsR0FBRyxXQUFXLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFdBQVcsR0FBRyxZQUFZLEVBQUUsQ0FBQztZQUNuQyxNQUFNLFFBQVEsR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUM3QixNQUFNLFdBQVcsR0FBRyxZQUFZLEVBQUUsQ0FBQztZQUNuQyxNQUFNLG1CQUFtQixHQUFHLFdBQVcsR0FBRyxRQUFRLENBQUM7WUFDbkQsSUFBRyxRQUFRLEtBQUssbUJBQW1CLEVBQUMsQ0FBQztnQkFDbkMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7WUFDN0gsQ0FBQztZQUNELElBQUcsUUFBUSxLQUFLLFdBQVcsRUFBQyxDQUFDO2dCQUMzQixPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLG1CQUFtQixHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDL0UsQ0FBQztZQUNELElBQUcsUUFBUSxLQUFLLEtBQUssRUFBQyxDQUFDO2dCQUNyQixPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFDRCxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQ2hDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2RCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFHRCxPQUFPO1FBQ0wsT0FBTyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUNELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4vdGFibGUtc3RvcmUnO1xyXG5pbXBvcnQgeyBEYXRhU3RvcmUgfSBmcm9tICcuL2RhdGEtc3RvcmUnO1xyXG5pbXBvcnQgeyBjb21wdXRlZCwgZWZmZWN0LCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUJ1aWxkZXJEYXRhU291cmNlPFQ+IGV4dGVuZHMgTWF0VGFibGVEYXRhU291cmNlPFQ+IHtcclxuICBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGF0YVNyYzogU2lnbmFsPFRbXT4sXHJcbiAgICBzdGF0ZTogVGFibGVTdG9yZSxcclxuICAgIGRhdGE6IERhdGFTdG9yZSxcclxuICApIHtcclxuICAgIHN1cGVyKFtdKTtcclxuICBcclxuXHJcbiAgICBjb25zdCAkY3VycmVudFBhZ2UgPSBzdGF0ZS4kY3VycmVudFBhZ2U7XHJcbiAgICBjb25zdCAkcGFnZVNpemUgPSBzdGF0ZS4kcGFnZVNpemU7XHJcbiAgICBjb25zdCAkdmlydHVhbEVuZHMgPSBkYXRhLnNlbGVjdFNpZ25hbChkID0+IGQudmlydHVhbEVuZHMpO1xyXG5cclxuICAgIGNvbnN0ICRkYXRhTGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4gZGF0YVNyYygpLmxlbmd0aCk7XHJcblxyXG4gICAgY29uc3QgJGRhdGFTaXplID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBjb25zdCB2aWV3VHlwZSA9IHN0YXRlLiR2aWV3VHlwZSgpO1xyXG4gICAgICBjb25zdCBkYXRhTGVuZ3RoID0gJGRhdGFMZW5ndGgoKTtcclxuICAgICAgY29uc3QgY3VycmVudFBhZ2UgPSAkY3VycmVudFBhZ2UoKTtcclxuICAgICAgY29uc3QgcGFnZVNpemUgPSAkcGFnZVNpemUoKTtcclxuICAgICAgY29uc3QgdmlydHVhbEVuZHMgPSAkdmlydHVhbEVuZHMoKTtcclxuICAgICAgY29uc3QgcHJldmlvdXNQYWdlUmVjb3JkcyA9IGN1cnJlbnRQYWdlICogcGFnZVNpemU7XHJcbiAgICAgIGlmKHZpZXdUeXBlID09PSAndmlydHVhbCBwYWdpbmF0b3InKXtcclxuICAgICAgICByZXR1cm4gKHsgc3RhcnQ6dmlydHVhbEVuZHMuc3RhcnQgKyBwcmV2aW91c1BhZ2VSZWNvcmRzLCBlbmQ6IE1hdGgubWluKHZpcnR1YWxFbmRzLmVuZCwgcGFnZVNpemUpICsgcHJldmlvdXNQYWdlUmVjb3JkcyB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZih2aWV3VHlwZSA9PT0gJ3BhZ2luYXRvcicpe1xyXG4gICAgICAgIHJldHVybiAoeyBzdGFydDogcHJldmlvdXNQYWdlUmVjb3JkcywgZW5kOiBwcmV2aW91c1BhZ2VSZWNvcmRzICsgcGFnZVNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYodmlld1R5cGUgPT09ICdhbGwnKXtcclxuICAgICAgICByZXR1cm4gKHsgc3RhcnQ6IDAsIGVuZDogZGF0YUxlbmd0aCB9KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gKHsgc3RhcnQ6IHZpcnR1YWxFbmRzLnN0YXJ0LCBlbmQ6IHZpcnR1YWxFbmRzLmVuZCB9KTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgJGRhdGFUb1Nob3cgPSBjb21wdXRlZCgoKSA9PlxyXG4gICAgICBkYXRhU3JjKCkuc2xpY2UoJGRhdGFTaXplKCkuc3RhcnQsICRkYXRhU2l6ZSgpLmVuZCkpO1xyXG4gICAgZWZmZWN0KCgpID0+IHRoaXMuZGF0YSA9ICRkYXRhVG9TaG93KCkpO1xyXG4gIH1cclxuXHJcblxyXG4gIGNvbm5lY3QoKSB7XHJcbiAgICByZXR1cm4gc3VwZXIuY29ubmVjdCgpO1xyXG4gIH1cclxuICBkaXNjb25uZWN0KCkge1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgc3VwZXIuZGlzY29ubmVjdCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -28,7 +28,7 @@ export class TableBuilder {
28
28
  cleaned[initIndexSymbol] = i * ((ii % 2) + 1);
29
29
  return cleaned;
30
30
  });
31
- }))));
31
+ }))), defaultShareReplay());
32
32
  }
33
33
  createMetaData(obj) {
34
34
  return Object.keys(obj ?? {})
@@ -74,4 +74,4 @@ export const CreateTableBuilder = (reportDef$) => {
74
74
  reportDef$ = reportDef$.pipe(defaultShareReplay());
75
75
  return new TableBuilder(reportDef$.pipe(map(r => r.data)), reportDef$.pipe(map(r => r.metaData)));
76
76
  };
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NsYXNzZXMvdGFibGUtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQVksU0FBUyxFQUFhLE1BQU0sMEJBQTBCLENBQUM7QUFDMUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUF3QixNQUFNLGtDQUFrQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxRQUFRLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTFELE1BQU0sT0FBTyxZQUFZO0lBRXZCLFNBQVMsQ0FBNEI7SUFDckMsS0FBSyxDQUFrQjtJQUN2QixRQUFRLENBQW9DO0lBRTVDLFlBQ0UsSUFBMkIsRUFDM0IsUUFBOEMsRUFDOUMsV0FBbUQsSUFBSSxvQkFBb0IsRUFBRTtRQUU3RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUM7YUFDdEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFF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LFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxDQUF1QjtRQUNwQyxJQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBQyxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFVBQWlDLEVBQWlCLEVBQUU7SUFDckYsVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELE9BQU8sSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFFLEdBQUcsQ0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNZXRhRGF0YSwgRmllbGRUeXBlLCBSZXBvcnREZWYgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xyXG5pbXBvcnQgeyBmaXJzdCwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEdlbmVyYWxUYWJsZVNldHRpbmdzLCBUYWJsZUJ1aWxkZXJTZXR0aW5ncyB9IGZyb20gJy4vdGFibGUtYnVpbGRlci1nZW5lcmFsLXNldHRpbmdzJztcclxuaW1wb3J0IHsgZGVmYXVsdFNoYXJlUmVwbGF5LCBub3ROdWxsIH0gZnJvbSAnLi4vLi4vcnhqcyc7XHJcbmltcG9ydCB7IGluaXRJbmRleFN5bWJvbCB9IGZyb20gJy4uL2NvbXBvbmVudHMvdGFibGUtY29udGFpbmVyL3RhYmxlLWNvbnRhaW5lci5oZWxwZXJzL3NvcnQtc3RhdGUuaGVscGVycyc7XHJcbmltcG9ydCB7IGNyZWF0ZURhdGFDbGVhbmVycyB9IGZyb20gJy4uL2NvbXBvbmVudHMvdGFibGUtY29udGFpbmVyL3RhYmxlLWNvbnRhaW5lci5oZWxwZXJzL2RhdGEtc3RhdGUuaGVscGVycyc7XHJcbmltcG9ydCB7IGlzU2lnbmFsLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRhYmxlQnVpbGRlcjxUID0gYW55PiB7XHJcblxyXG4gIG1ldGFEYXRhJDogT2JzZXJ2YWJsZTxNZXRhRGF0YTxUPltdPjtcclxuICBkYXRhJDogT2JzZXJ2YWJsZTxUW10+O1xyXG4gIHNldHRpbmdzIDogT2JzZXJ2YWJsZTxHZW5lcmFsVGFibGVTZXR0aW5ncz47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgZGF0YTogVGFibGVCdWlsZGVyQXJnczxUW10+LCBcclxuICAgIG1ldGFEYXRhPzogVGFibGVCdWlsZGVyQXJnczxNZXRhRGF0YTxULGFueT5bXT4sXHJcbiAgICBzZXR0aW5nczogVGFibGVCdWlsZGVyQXJnczxUYWJsZUJ1aWxkZXJTZXR0aW5ncz4gPSBuZXcgR2VuZXJhbFRhYmxlU2V0dGluZ3MoKVxyXG4gICkge1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IHRoaXMuY29lcmNlU2V0dGluZ3NUb09ic2VydmFibGUoc2V0dGluZ3MpXHJcbiAgICAgIC5waXBlKG1hcChzZXR0ID0+IG5ldyBHZW5lcmFsVGFibGVTZXR0aW5ncyhzZXR0KSksIGRlZmF1bHRTaGFyZVJlcGxheSgpKTtcclxuXHJcbiAgICB0aGlzLmRhdGEkID0gdGhpcy5jb2VyY2VUb09ic2VydmFibGUoZGF0YSwgdGhpcy5zZXR0aW5ncylcclxuICAgICAgLnBpcGUobm90TnVsbCgpLCBkZWZhdWx0U2hhcmVSZXBsYXkoKSk7XHJcblxyXG4gICAgdGhpcy5tZXRhRGF0YSQgPSBtZXRhRGF0YSA/XHJcbiAgICAgIHRoaXMuY29lcmNlVG9PYnNlcnZhYmxlKG1ldGFEYXRhLCB0aGlzLnNldHRpbmdzKS5waXBlKGRlZmF1bHRTaGFyZVJlcGxheSgpKSBcclxuICAgICAgOlxyXG4gICAgICB0aGlzLmRhdGEkLnBpcGUoZmlyc3QoKSwgbWFwKCBkPT4gdGhpcy5jcmVhdGVNZXRhRGF0YShkWzBdKSApLCBkZWZhdWx0U2hhcmVSZXBsYXkoKSk7XHJcbiAgfVxyXG5cclxuICBnZXREYXRhJCgpOiBPYnNlcnZhYmxlPGFueVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5tZXRhRGF0YSQucGlwZShcclxuICAgICAgbWFwKG1kID0+IGNyZWF0ZURhdGFDbGVhbmVycyhtZCkpLFxyXG4gICAgICBzd2l0Y2hNYXAoIGNsZWFuZXIgPT4gdGhpcy5kYXRhJC5waXBlKFxyXG4gICAgICAgIG1hcCgoZGF0YXMsIGlpKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gZGF0YXMubWFwKChkYXRhLCBpKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsZWFuZWQgPSBjbGVhbmVyKGRhdGEpO1xyXG4gICAgICAgICAgICBjbGVhbmVkW2luaXRJbmRleFN5bWJvbF0gPSBpICogKChpaSAlIDIpICsgMSlcclxuICAgICAgICAgICAgcmV0dXJuIGNsZWFuZWQ7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0gKSxcclxuICAgICAgKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVNZXRhRGF0YShvYmo6IGFueSk6IE1ldGFEYXRhIFtdIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmogPz8ge30pXHJcbiAgICAubWFwKCBrZXkgPT4gKHtcclxuICAgICAga2V5LFxyXG4gICAgICBmaWVsZFR5cGU6IEZpZWxkVHlwZS5Vbmtub3duLFxyXG4gICAgICBvcmRlcjogLTFcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIGNvZXJjZVRvT2JzZXJ2YWJsZTxUPihhcmc6IFRhYmxlQnVpbGRlckFyZ3M8VD4sIHNldHRpbmdzOiBPYnNlcnZhYmxlPFRhYmxlQnVpbGRlclNldHRpbmdzPil7XHJcbiAgICBpZihpc09ic2VydmFibGUoYXJnKSl7XHJcbiAgICAgIHJldHVybiBhcmc7XHJcbiAgICB9IGVsc2UgaWYoaXNTaWduYWwoYXJnKSl7XHJcbiAgICAgIHJldHVybiBzZXR0aW5ncy5waXBlKHN3aXRjaE1hcChzID0+IHtcclxuICAgICAgICB0aGlzLmFzc2VydEluamVjdG9yKHMpO1xyXG4gICAgICAgIHJldHVybiB0b09ic2VydmFibGUoYXJnLCB7IGluamVjdG9yOiBzLmluamVjdG9yIH0pXHJcbiAgICAgIH0pKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG9mKGFyZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb2VyY2VTZXR0aW5nc1RvT2JzZXJ2YWJsZShzZXR0aW5nczogVGFibGVCdWlsZGVyQXJnczxUYWJsZUJ1aWxkZXJTZXR0aW5ncz4pe1xyXG4gICAgaWYoaXNPYnNlcnZhYmxlKHNldHRpbmdzKSl7XHJcbiAgICAgIHJldHVybiBzZXR0aW5ncztcclxuICAgIH0gZWxzZSBpZihpc1NpZ25hbChzZXR0aW5ncykpe1xyXG4gICAgICB0aGlzLmFzc2VydEluamVjdG9yKHNldHRpbmdzKCkpO1xyXG4gICAgICByZXR1cm4gdG9PYnNlcnZhYmxlKHNldHRpbmdzLCB7IGluamVjdG9yOiBzZXR0aW5ncygpLmluamVjdG9yIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG9mKHNldHRpbmdzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzc2VydEluamVjdG9yKHM6IFRhYmxlQnVpbGRlclNldHRpbmdzKXtcclxuICAgIGlmKCFzLmluamVjdG9yKXtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbmplY3RvciBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gcGFzc2luZyBhIHNpZ25hbCB0byB0YWJsZSBidWlsZGVyJyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQ3JlYXRlVGFibGVCdWlsZGVyID0gKHJlcG9ydERlZiQ6IE9ic2VydmFibGU8UmVwb3J0RGVmPiApOiBUYWJsZUJ1aWxkZXIgPT4ge1xyXG4gIHJlcG9ydERlZiQgPSByZXBvcnREZWYkLnBpcGUoZGVmYXVsdFNoYXJlUmVwbGF5KCkpO1xyXG4gIHJldHVybiBuZXcgVGFibGVCdWlsZGVyKHJlcG9ydERlZiQucGlwZShtYXAoIHIgPT4gci5kYXRhKSApLCByZXBvcnREZWYkLnBpcGUoIG1hcCAoIHIgPT4gci5tZXRhRGF0YSkgKSk7XHJcbn07XHJcblxyXG50eXBlIFRhYmxlQnVpbGRlckFyZ3M8VD4gPSBUIHwgT2JzZXJ2YWJsZTxUPiB8IFNpZ25hbDxUPjsgXHJcbiJdfQ==
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NsYXNzZXMvdGFibGUtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQVksU0FBUyxFQUFhLE1BQU0sMEJBQTBCLENBQUM7QUFDMUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUF3QixNQUFNLGtDQUFrQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxRQUFRLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTFELE1BQU0sT0FBTyxZQUFZO0lBRXZCLFNBQVMsQ0FBNEI7SUFDckMsS0FBSyxDQUFrQjtJQUN2QixRQUFRLENBQW9DO0lBRTVDLFlBQ0UsSUFBMkIsRUFDM0IsUUFBOEMsRUFDOUMsV0FBbUQsSUFBSSxvQkFBb0IsRUFBRTtRQUU3RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUM7YUFDdEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFF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QUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxDQUF1QjtRQUNwQyxJQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBQyxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFVBQWlDLEVBQWlCLEVBQUU7SUFDckYsVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELE9BQU8sSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFFLEdBQUcsQ0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNZXRhRGF0YSwgRmllbGRUeXBlLCBSZXBvcnREZWYgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xyXG5pbXBvcnQgeyBmaXJzdCwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEdlbmVyYWxUYWJsZVNldHRpbmdzLCBUYWJsZUJ1aWxkZXJTZXR0aW5ncyB9IGZyb20gJy4vdGFibGUtYnVpbGRlci1nZW5lcmFsLXNldHRpbmdzJztcclxuaW1wb3J0IHsgZGVmYXVsdFNoYXJlUmVwbGF5LCBub3ROdWxsIH0gZnJvbSAnLi4vLi4vcnhqcyc7XHJcbmltcG9ydCB7IGluaXRJbmRleFN5bWJvbCB9IGZyb20gJy4uL2NvbXBvbmVudHMvdGFibGUtY29udGFpbmVyL3RhYmxlLWNvbnRhaW5lci5oZWxwZXJzL3NvcnQtc3RhdGUuaGVscGVycyc7XHJcbmltcG9ydCB7IGNyZWF0ZURhdGFDbGVhbmVycyB9IGZyb20gJy4uL2NvbXBvbmVudHMvdGFibGUtY29udGFpbmVyL3RhYmxlLWNvbnRhaW5lci5oZWxwZXJzL2RhdGEtc3RhdGUuaGVscGVycyc7XHJcbmltcG9ydCB7IGlzU2lnbmFsLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRhYmxlQnVpbGRlcjxUID0gYW55PiB7XHJcblxyXG4gIG1ldGFEYXRhJDogT2JzZXJ2YWJsZTxNZXRhRGF0YTxUPltdPjtcclxuICBkYXRhJDogT2JzZXJ2YWJsZTxUW10+O1xyXG4gIHNldHRpbmdzIDogT2JzZXJ2YWJsZTxHZW5lcmFsVGFibGVTZXR0aW5ncz47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgZGF0YTogVGFibGVCdWlsZGVyQXJnczxUW10+LCBcclxuICAgIG1ldGFEYXRhPzogVGFibGVCdWlsZGVyQXJnczxNZXRhRGF0YTxULGFueT5bXT4sXHJcbiAgICBzZXR0aW5nczogVGFibGVCdWlsZGVyQXJnczxUYWJsZUJ1aWxkZXJTZXR0aW5ncz4gPSBuZXcgR2VuZXJhbFRhYmxlU2V0dGluZ3MoKVxyXG4gICkge1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IHRoaXMuY29lcmNlU2V0dGluZ3NUb09ic2VydmFibGUoc2V0dGluZ3MpXHJcbiAgICAgIC5waXBlKG1hcChzZXR0ID0+IG5ldyBHZW5lcmFsVGFibGVTZXR0aW5ncyhzZXR0KSksIGRlZmF1bHRTaGFyZVJlcGxheSgpKTtcclxuXHJcbiAgICB0aGlzLmRhdGEkID0gdGhpcy5jb2VyY2VUb09ic2VydmFibGUoZGF0YSwgdGhpcy5zZXR0aW5ncylcclxuICAgICAgLnBpcGUobm90TnVsbCgpLCBkZWZhdWx0U2hhcmVSZXBsYXkoKSk7XHJcblxyXG4gICAgdGhpcy5tZXRhRGF0YSQgPSBtZXRhRGF0YSA/XHJcbiAgICAgIHRoaXMuY29lcmNlVG9PYnNlcnZhYmxlKG1ldGFEYXRhLCB0aGlzLnNldHRpbmdzKS5waXBlKGRlZmF1bHRTaGFyZVJlcGxheSgpKSBcclxuICAgICAgOlxyXG4gICAgICB0aGlzLmRhdGEkLnBpcGUoZmlyc3QoKSwgbWFwKCBkPT4gdGhpcy5jcmVhdGVNZXRhRGF0YShkWzBdKSApLCBkZWZhdWx0U2hhcmVSZXBsYXkoKSk7XHJcbiAgfVxyXG5cclxuICBnZXREYXRhJCgpOiBPYnNlcnZhYmxlPGFueVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5tZXRhRGF0YSQucGlwZShcclxuICAgICAgbWFwKG1kID0+IGNyZWF0ZURhdGFDbGVhbmVycyhtZCkpLFxyXG4gICAgICBzd2l0Y2hNYXAoIGNsZWFuZXIgPT4gdGhpcy5kYXRhJC5waXBlKFxyXG4gICAgICAgIG1hcCgoZGF0YXMsIGlpKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gZGF0YXMubWFwKChkYXRhLCBpKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsZWFuZWQgPSBjbGVhbmVyKGRhdGEpO1xyXG4gICAgICAgICAgICBjbGVhbmVkW2luaXRJbmRleFN5bWJvbF0gPSBpICogKChpaSAlIDIpICsgMSlcclxuICAgICAgICAgICAgcmV0dXJuIGNsZWFuZWQ7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0gKSxcclxuICAgICAgKSksXHJcbiAgICAgIGRlZmF1bHRTaGFyZVJlcGxheSgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlTWV0YURhdGEob2JqOiBhbnkpOiBNZXRhRGF0YSBbXSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqID8/IHt9KVxyXG4gICAgLm1hcCgga2V5ID0+ICh7XHJcbiAgICAgIGtleSxcclxuICAgICAgZmllbGRUeXBlOiBGaWVsZFR5cGUuVW5rbm93bixcclxuICAgICAgb3JkZXI6IC0xXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBjb2VyY2VUb09ic2VydmFibGU8VD4oYXJnOiBUYWJsZUJ1aWxkZXJBcmdzPFQ+LCBzZXR0aW5nczogT2JzZXJ2YWJsZTxUYWJsZUJ1aWxkZXJTZXR0aW5ncz4pe1xyXG4gICAgaWYoaXNPYnNlcnZhYmxlKGFyZykpe1xyXG4gICAgICByZXR1cm4gYXJnO1xyXG4gICAgfSBlbHNlIGlmKGlzU2lnbmFsKGFyZykpe1xyXG4gICAgICByZXR1cm4gc2V0dGluZ3MucGlwZShzd2l0Y2hNYXAocyA9PiB7XHJcbiAgICAgICAgdGhpcy5hc3NlcnRJbmplY3RvcihzKTtcclxuICAgICAgICByZXR1cm4gdG9PYnNlcnZhYmxlKGFyZywgeyBpbmplY3Rvcjogcy5pbmplY3RvciB9KVxyXG4gICAgICB9KSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZihhcmcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29lcmNlU2V0dGluZ3NUb09ic2VydmFibGUoc2V0dGluZ3M6IFRhYmxlQnVpbGRlckFyZ3M8VGFibGVCdWlsZGVyU2V0dGluZ3M+KXtcclxuICAgIGlmKGlzT2JzZXJ2YWJsZShzZXR0aW5ncykpe1xyXG4gICAgICByZXR1cm4gc2V0dGluZ3M7XHJcbiAgICB9IGVsc2UgaWYoaXNTaWduYWwoc2V0dGluZ3MpKXtcclxuICAgICAgdGhpcy5hc3NlcnRJbmplY3RvcihzZXR0aW5ncygpKTtcclxuICAgICAgcmV0dXJuIHRvT2JzZXJ2YWJsZShzZXR0aW5ncywgeyBpbmplY3Rvcjogc2V0dGluZ3MoKS5pbmplY3RvciB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZihzZXR0aW5ncyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3NlcnRJbmplY3RvcihzOiBUYWJsZUJ1aWxkZXJTZXR0aW5ncyl7XHJcbiAgICBpZighcy5pbmplY3Rvcil7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW5qZWN0b3IgbXVzdCBiZSBwcm92aWRlZCB3aGVuIHBhc3NpbmcgYSBzaWduYWwgdG8gdGFibGUgYnVpbGRlcicpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IENyZWF0ZVRhYmxlQnVpbGRlciA9IChyZXBvcnREZWYkOiBPYnNlcnZhYmxlPFJlcG9ydERlZj4gKTogVGFibGVCdWlsZGVyID0+IHtcclxuICByZXBvcnREZWYkID0gcmVwb3J0RGVmJC5waXBlKGRlZmF1bHRTaGFyZVJlcGxheSgpKTtcclxuICByZXR1cm4gbmV3IFRhYmxlQnVpbGRlcihyZXBvcnREZWYkLnBpcGUobWFwKCByID0+IHIuZGF0YSkgKSwgcmVwb3J0RGVmJC5waXBlKCBtYXAgKCByID0+IHIubWV0YURhdGEpICkpO1xyXG59O1xyXG5cclxudHlwZSBUYWJsZUJ1aWxkZXJBcmdzPFQ+ID0gVCB8IE9ic2VydmFibGU8VD4gfCBTaWduYWw8VD47IFxyXG4iXX0=
@@ -5,13 +5,12 @@ import { Injectable, computed, inject } from '@angular/core';
5
5
  import { TableBuilderConfigToken } from './TableBuilderConfig';
6
6
  import { isCustomFilter, isFilterInfo } from './filter-info';
7
7
  import { ComponentStore } from '@ngrx/component-store';
8
- import { distinctUntilChanged, filter, map, tap } from 'rxjs/operators';
8
+ import { debounceTime, distinctUntilChanged, filter, map, tap } from 'rxjs/operators';
9
9
  import { moveItemInArray } from '@angular/cdk/drag-drop';
10
10
  import { notNull, onceWhen } from '../../rxjs/rxjs-operators';
11
11
  import { NotPersistedTableSettings, PersistedTableSettings } from './table-builder-general-settings';
12
12
  import { replaceInArrayWithClone } from '../../utilities/array-helpers';
13
13
  import { isDifferent } from '../directives';
14
- import { toObservable } from '@angular/core/rxjs-interop';
15
14
  import * as i0 from "@angular/core";
16
15
  export function stateIs(initializationState) {
17
16
  return (state) => state.initializationState === initializationState;
@@ -23,7 +22,7 @@ export class TableStore extends ComponentStore {
23
22
  }
24
23
  selectStateReady = this.select(state => state.initializationState).pipe(filter(i => i === InitializationState.Ready));
25
24
  getSavableState() {
26
- return this.state$.pipe(map(s => {
25
+ return this.state$.pipe(debounceTime(300), map(s => {
27
26
  return this.mapSaveableState(s);
28
27
  }));
29
28
  }
@@ -241,6 +240,8 @@ export class TableStore extends ComponentStore {
241
240
  tableSettings.collapseFooter = !tableSettings.collapseFooter;
242
241
  return ({ ...state, persistedTableSettings: new PersistedTableSettings(tableSettings) });
243
242
  });
243
+ $collapseFooter = this.selectSignal(state => state.persistedTableSettings.collapseFooter);
244
+ $collapseHeader = this.selectSignal(state => state.persistedTableSettings.collapseHeader);
244
245
  addGroupByKey = this.updater((state, metaDataKey) => ({
245
246
  ...state,
246
247
  groupBy: [...state.groupBy, { key: metaDataKey, expandedHeaders: [] }]
@@ -323,27 +324,22 @@ export class TableStore extends ComponentStore {
323
324
  return 'all';
324
325
  }
325
326
  });
326
- viewType$ = toObservable(this.$viewType);
327
- $orderedVisibleColumns = this.selectSignal(this.$metaData, this.$userDefinedOrder, this.$hiddenKeys, (m, u, h) => orderedVisibleMetaData(m, u, h).map(md => md.key), { equal: (a, b) => b.length === a.length && b.every((s, i) => a[i] === s) });
327
+ $orderedCodeVisibleMetaDatas = this.selectSignal(this.$metaDataArray, (mds) => mds.filter(m => m.fieldType !== FieldType.Hidden), { equal: (a, b) => b.length === a.length && b.every((s, i) => a[i].key === s.key) });
328
+ $orderedVisibleColumns = this.selectSignal(this.$orderedCodeVisibleMetaDatas, this.$hiddenKeys, (cs, hiddenKeys) => cs.filter(m => !hiddenKeys.includes(m.key)).map(m => m.key));
329
+ $currentPage = this.selectSignal(state => state.currentPage);
330
+ $pageSize = this.selectSignal(s => s.userDefined?.pageSize || s.pageSize);
328
331
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TableStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
329
332
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TableStore });
330
333
  }
331
334
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TableStore, decorators: [{
332
335
  type: Injectable
333
336
  }], ctorParameters: () => [] });
334
- export const orderedVisibleColumns = (state) => orderedStateVisibleMetaData(state).map(md => md.key);
335
337
  export const orderedStateVisibleMetaData = (state) => {
336
338
  const ordered = orderStateMetaData(state);
337
339
  const orderedVisible = ordered
338
340
  .filter(metaData => !state.hiddenKeys.includes(metaData.key) && state.metaData[metaData.key].fieldType !== FieldType.Hidden);
339
341
  return orderedVisible;
340
342
  };
341
- export const orderedVisibleMetaData = (metaData, userDefinedOrder, hiddenKeys) => {
342
- const ordered = orderMetaData(metaData, userDefinedOrder);
343
- const orderedVisible = ordered
344
- .filter(m => !hiddenKeys.includes(m.key) && metaData[m.key].fieldType !== FieldType.Hidden);
345
- return orderedVisible;
346
- };
347
343
  export const orderedCodeVisibleMetaData = (state) => orderStateMetaData(state).filter(md => md.fieldType !== FieldType.Hidden);
348
344
  export const orderStateMetaData = (state) => {
349
345
  return orderMetaData(state.metaData, state.userDefined.order);
@@ -384,4 +380,4 @@ function cleanPersistedState(state, pState) {
384
380
  const sorted = pState.sorted.filter(s => metas.some(m => m.key === s.active));
385
381
  return ({ ...pState, filters, sorted });
386
382
  }
387
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jbGFzc2VzL3RhYmxlLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFlLG1CQUFtQixFQUFFLFlBQVksRUFBbUMsTUFBTSxjQUFjLENBQUM7QUFDbEksT0FBTyxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBNEIsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUc7QUFFekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUF3Qix5QkFBeUIsRUFBRSxzQkFBc0IsRUFBd0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqSixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFMUQs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QjtJQUN4RSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3BKLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUyxDQUFDLENBQUM7UUFDekQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDUCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzlFLE9BQU8sQ0FBQyxFQUFDLEdBQUcsTUFBTSxFQUFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsQ0FBQyxDQUFBO0FBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWVsZFR5cGUsIE1ldGFEYXRhLCBTb3J0RGVmIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlZmF1bHRUYWJsZVN0YXRlLCBHcm91cGVkRGF0YSwgSW5pdGlhbGl6YXRpb25TdGF0ZSwga2V5c1RvRGVsZXRlLCBQZXJzaXN0ZWRUYWJsZVN0YXRlLCBUYWJsZVN0YXRlIH0gZnJvbSAnLi9UYWJsZVN0YXRlJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgUHJlZGljYXRlLCBjb21wdXRlZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuIH0gZnJvbSAnLi9UYWJsZUJ1aWxkZXJDb25maWcnO1xyXG5pbXBvcnQgeyBDdXN0b21GaWx0ZXIsIEZpbHRlckluZm8sIGlzQ3VzdG9tRmlsdGVyLCBpc0ZpbHRlckluZm8gfSBmcm9tICcuL2ZpbHRlci1pbmZvJztcclxuaW1wb3J0IHsgU29ydCwgU29ydERpcmVjdGlvbiB9ICBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JyA7XHJcbmltcG9ydCB7IENvbXBvbmVudFN0b3JlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50LXN0b3JlJyAgO1xyXG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kaWN0aW9uYXJ5JztcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbGFzdCwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IG5vdE51bGwsIG9uY2VXaGVuIH0gZnJvbSAnLi4vLi4vcnhqcy9yeGpzLW9wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEdlbmVyYWxUYWJsZVNldHRpbmdzLCBOb3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzLCBQZXJzaXN0ZWRUYWJsZVNldHRpbmdzLCBWaXJ0dWFsU2Nyb2xsT3B0aW9ucyB9IGZyb20gJy4vdGFibGUtYnVpbGRlci1nZW5lcmFsLXNldHRpbmdzJztcclxuaW1wb3J0IHsgcmVwbGFjZUluQXJyYXlXaXRoQ2xvbmUgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvYXJyYXktaGVscGVycyc7XHJcbmltcG9ydCB7IGlzRGlmZmVyZW50IH0gZnJvbSAnLi4vZGlyZWN0aXZlcyc7XHJcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZUlzKGluaXRpYWxpemF0aW9uU3RhdGU6IEluaXRpYWxpemF0aW9uU3RhdGUpIHtcclxuICByZXR1cm4gKHN0YXRlOiBUYWJsZVN0YXRlKSA9PiBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09PSBpbml0aWFsaXphdGlvblN0YXRlO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBUYWJsZVN0b3JlIGV4dGVuZHMgQ29tcG9uZW50U3RvcmU8VGFibGVTdGF0ZT4ge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgY29uc3QgY29uZmlnID0gaW5qZWN0KFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuKTtcclxuXHJcbiAgIHN1cGVyKCB7IC4uLmRlZmF1bHRUYWJsZVN0YXRlLCAuLi5jb25maWcuZGVmYXVsdFRhYmxlU3RhdGV9KTtcclxuICB9XHJcbiAgc2VsZWN0U3RhdGVSZWFkeSA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUpLnBpcGUoZmlsdGVyKGkgPT4gaSA9PT0gSW5pdGlhbGl6YXRpb25TdGF0ZS5SZWFkeSkpO1xyXG4gIGdldFNhdmFibGVTdGF0ZSgpIDogT2JzZXJ2YWJsZTxQZXJzaXN0ZWRUYWJsZVN0YXRlPiB7XHJcbiAgICByZXR1cm4gIHRoaXMuc3RhdGUkLnBpcGUoXHJcbiAgICAgIG1hcCggcyA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwU2F2ZWFibGVTdGF0ZShzKTtcclxuICAgICAgfSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2F2YWJsZVN0YXRlU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlKCk7XHJcbiAgICByZXR1cm4gdGhpcy5tYXBTYXZlYWJsZVN0YXRlKHN0YXRlKTtcclxuICB9KTtcclxuXHJcbiAgcHJpdmF0ZSBtYXBTYXZlYWJsZVN0YXRlID0gKHM6IFBlcnNpc3RlZFRhYmxlU3RhdGUpID0+IHtcclxuICAgIGNvbnN0IHNhdmFibGVTdGF0ZSA9IHsuLi5zfSBhcyBQYXJ0aWFsPFRhYmxlU3RhdGU+O1xyXG4gICAga2V5c1RvRGVsZXRlLmZvckVhY2goa2V5ID0+IGRlbGV0ZSBzYXZhYmxlU3RhdGVba2V5XSk7XHJcbiAgICByZXR1cm4gc2F2YWJsZVN0YXRlIGFzIFBlcnNpc3RlZFRhYmxlU3RhdGU7XHJcbiAgfVxyXG5cclxuICBvbiA9IDxWPihzcmNPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFY+LCBmdW5jOiAob2JqOiBWKSA9PiB2b2lkKSA9PiB7XHJcbiAgICB0aGlzLmVmZmVjdCgoKSA9PiBzcmNPYnNlcnZhYmxlLnBpcGUoXHJcbiAgICAgIHRhcChmdW5jKVxyXG4gICAgKSk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IG1ldGFEYXRhJCA9IHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5tZXRhRGF0YSk7XHJcbiAgJG1ldGFEYXRhID0gdGhpcy5zZWxlY3RTaWduYWwoIHN0YXRlID0+IHN0YXRlLm1ldGFEYXRhKTtcclxuICAkdXNlckRlZmluZWRPcmRlciA9IHRoaXMuc2VsZWN0U2lnbmFsKCBzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC5vcmRlcik7XHJcbiAgJGhpZGRlbktleXMgPSB0aGlzLnNlbGVjdFNpZ25hbCggc3RhdGUgPT4gc3RhdGUuaGlkZGVuS2V5cyk7XHJcbiAgJG1ldGFEYXRhQXJyYXkgPSB0aGlzLnNlbGVjdFNpZ25hbChcclxuICAgIHRoaXMuJG1ldGFEYXRhLFxyXG4gICAgdGhpcy4kdXNlckRlZmluZWRPcmRlcixcclxuICAgIG9yZGVyTWV0YURhdGFcclxuICApO1xyXG5cclxuICBnZXRNZXRhRGF0YSQgPSAoa2V5OiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxNZXRhRGF0YT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5tZXRhRGF0YVtrZXldICApLnBpcGUoXHJcbiAgICAgIHRhcChtZXRhID0+IHtpZighbWV0YSljb25zb2xlLndhcm4oYE1ldGEgZGF0YSB3aXRoIGtleSAke2tleX0gbm90IGZvdW5kYCl9KSxcclxuICAgICAgbm90TnVsbCgpKVxyXG4gIH1cclxuXHJcbiAgJGdldFVzZXJEZWZpbmVkV2lkdGggPSAoa2V5OnN0cmluZykgPT4gdGhpcy5zZWxlY3RTaWduYWwoc3RhdGUgPT4gc3RhdGUudXNlckRlZmluZWQud2lkdGhzW2tleV0pO1xyXG4gICRnZXRVc2VyRGVmaW5lZFdpZHRocyA9IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHN0YXRlLnVzZXJEZWZpbmVkLndpZHRocyk7XHJcbiAgdGFibGVTZXR0aW5nc01pbldpZHRoID0gdGhpcy5zZWxlY3RTaWduYWwoc3RhdGUgPT4gc3RhdGUubWluQ29sdW1uV2lkdGgpO1xyXG5cclxuICByZWFkb25seSByZXNldFN0YXRlID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4ge1xyXG4gICAgY29uc3Qgc29ydGVkID0gdGhpcy5jcmVhdGVQcmVTb3J0KHN0YXRlLm1ldGFEYXRhKTtcclxuICAgIHJldHVybiAoey4uLnN0YXRlLCBoaWRkZW5LZXlzOiBbXSwgc29ydGVkLCBmaWx0ZXJzOiB7fSAsIGdyb3VwQnk6IFtdLCAgdXNlckRlZmluZWQ6IHsgd2lkdGhzOiB7fSwgb3JkZXI6IHt9LCB0YWJsZToge30gfSB9KTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgc2hvd0NvbHVtbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogc3RyaW5nKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBoaWRkZW5LZXlzOiBzdGF0ZS5oaWRkZW5LZXlzLmZpbHRlciggayA9PiBrICE9PSBrZXkpLFxyXG4gIH0pKTtcclxuXHJcbiAgcmVhZG9ubHkgaGlkZUNvbHVtbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogc3RyaW5nKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBoaWRkZW5LZXlzOiBbLi4uc3RhdGUuaGlkZGVuS2V5cy5maWx0ZXIoIGsgPT4gayAhPT0ga2V5KSwga2V5XSxcclxuICB9KSk7XHJcblxyXG4gIHJlYWRvbmx5IHNldEhpZGRlbkNvbHVtbnMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBkaXNwbGF5Q29sczoge2tleTogc3RyaW5nLCB2aXNpYmxlOiBib29sZWFufVtdKSA9PiB7XHJcbiAgICByZXR1cm4gKHsuLi5zdGF0ZSwgaGlkZGVuS2V5czogZGlzcGxheUNvbHMuZmlsdGVyKGQgPT4gIWQudmlzaWJsZSkubWFwKGQgPT4gZC5rZXkpfSlcclxuICB9KTtcclxuXHJcblxyXG4gIHNldFVzZXJEZWZpbmVkV2lkdGggPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLGNvbFdpZHRoczp7a2V5OiBzdHJpbmcsIHdpZHRoSW5QaXhlbDpudW1iZXJ9W10pID0+IHtcclxuICAgIGNvbnN0IHVzZXJEZWZpbmVkV2lkdGhzID0gey4uLnN0YXRlLnVzZXJEZWZpbmVkLndpZHRoc307XHJcbiAgICBjb2xXaWR0aHMuZm9yRWFjaChjdyA9PiB7XHJcbiAgICAgIHVzZXJEZWZpbmVkV2lkdGhzW2N3LmtleV0gPSBjdy53aWR0aEluUGl4ZWw7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7Li4uc3RhdGUsIHVzZXJEZWZpbmVkOiB7Li4uc3RhdGUudXNlckRlZmluZWQsIHdpZHRoczp1c2VyRGVmaW5lZFdpZHRoc319O1xyXG4gIH0pO1xyXG5cclxuICBzZXRVc2VyRGVmaW5lZE9yZGVyID0gdGhpcy51cGRhdGVyKChzdGF0ZSxtb3ZlZDogeyBuZXdPcmRlcjogbnVtYmVyLCBvbGRPcmRlcjogbnVtYmVyIH0pPT57XHJcbiAgICBjb25zdCB7IG5ld09yZGVyLCBvbGRPcmRlciB9ID0gbW92ZWQ7XHJcbiAgICBjb25zdCBtZHNBcnIgPSBvcmRlcmVkU3RhdGVWaXNpYmxlTWV0YURhdGEoc3RhdGUpO1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KG1kc0Fyciwgb2xkT3JkZXIsIG5ld09yZGVyKTtcclxuXHJcbiAgICBjb25zdCB1c2VyRGVmaW5lZE9yZGVyID0gbWRzQXJyLnJlZHVjZSgoYWdncmVnYXRlOiBhbnksY3VycmVudCxpbmRleCkgPT4ge1xyXG4gICAgICBhZ2dyZWdhdGVbY3VycmVudC5rZXldID0gaW5kZXg7XHJcbiAgICAgIHJldHVybiBhZ2dyZWdhdGVcclxuICAgIH0se30pO1xyXG4gICAgcmV0dXJuKHsgLi4uc3RhdGUsIHVzZXJEZWZpbmVkOiB7IC4uLnN0YXRlLnVzZXJEZWZpbmVkLCBvcmRlcjogdXNlckRlZmluZWRPcmRlciB9IH0pXHJcbiAgfSlcclxuXHJcbiAgJGZpbHRlcnMgPSB0aGlzLnNlbGVjdFNpZ25hbChzdGF0ZSA9PiBzdGF0ZS5maWx0ZXJzKTtcclxuICByZWFkb25seSBmaWx0ZXJzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmZpbHRlcnMgKTtcclxuXHJcbiAgcmVhZG9ubHkgZ2V0RmlsdGVyJCA9IChmaWx0ZXJJZDogc3RyaW5nKSA6IE9ic2VydmFibGU8RmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlciB8IHVuZGVmaW5lZD4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5maWx0ZXJzW2ZpbHRlcklkXSApO1xyXG4gIH1cclxuICByZWFkb25seSBhZGRGaWx0ZXIgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgZmlsdGVyOiBGaWx0ZXJJbmZvIHwgQ3VzdG9tRmlsdGVyICkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkRmlsdGVyc1RvU3RhdGUoc3RhdGUsIFtmaWx0ZXJdKTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgYWRkRmlsdGVycyA9IHRoaXMudXBkYXRlcigoc3RhdGUsZmlsdGVyczooRmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlciApW10pPT57XHJcbiAgICByZXR1cm4gdGhpcy5hZGRGaWx0ZXJzVG9TdGF0ZShzdGF0ZSwgZmlsdGVycyk7XHJcbiAgfSlcclxuXHJcblxyXG4gIHByaXZhdGUgYWRkRmlsdGVyc1RvU3RhdGUgPSAoc3RhdGU6VGFibGVTdGF0ZSwgZmlsdGVyczooRmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlcilbXSkgOiBUYWJsZVN0YXRlID0+IHtcclxuXHJcbiAgICB2YXIgY3VzdG9tRmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKCAgaXNDdXN0b21GaWx0ZXIgKTtcclxuXHJcbiAgICB2YXIgZmlsdGVySW5mb3MgPSBmaWx0ZXJzLmZpbHRlcihpc0ZpbHRlckluZm8pO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlcnNPYmogPSBmaWx0ZXJJbmZvc1xyXG4gICAgICAuZmlsdGVyKGZsdHIgPT4gT2JqZWN0LmtleXMoc3RhdGUubWV0YURhdGEpLnNvbWUoa2V5ID0+IGtleSA9PT0gZmx0ci5rZXkpIHx8IGNvbnNvbGUud2FybihgTWV0YSBkYXRhIHdpdGgga2V5ICR7Zmx0ci5rZXl9IG5vdCBmb3VuZGApKVxyXG4gICAgICAucmVkdWNlKChmaWx0ZXJzT2JqOiB7W2s6IHN0cmluZ106IGFueX0sZmlsdGVyKT0+e1xyXG4gICAgICAgIGlmICghZmlsdGVyLmZpbHRlcklkKSB7XHJcbiAgICAgICAgICBmaWx0ZXIuZmlsdGVySWQgPSB1dWlkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbHRlcnNPYmpbZmlsdGVyLmZpbHRlcklkXSA9IGZpbHRlcjtcclxuICAgICAgICByZXR1cm4gZmlsdGVyc09iajtcclxuICAgICAgfSx7fSk7XHJcblxyXG4gICAgY3VzdG9tRmlsdGVycy5mb3JFYWNoKCBmbHRyID0+IHtcclxuICAgICAgaWYoIWZsdHIuZmlsdGVySWQpIHtcclxuICAgICAgICBmbHRyLmZpbHRlcklkID0gdXVpZCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGZpbHRlcnNPYmpbZmx0ci5maWx0ZXJJZF0gPSBmbHRyO1xyXG4gICAgfSlcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBmaWx0ZXJzIDogey4uLnN0YXRlLmZpbHRlcnMsIC4uLmZpbHRlcnNPYmogfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHJlbW92ZUZpbHRlciA9IHRoaXMudXBkYXRlciggKHN0YXRlLCBmaWx0ZXJJZDogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBmaWx0ZXJzQ29weSA9IHsgLi4uc3RhdGUuZmlsdGVycyB9O1xyXG4gICAgZGVsZXRlIGZpbHRlcnNDb3B5W2ZpbHRlcklkXTtcclxuICAgIHJldHVybiAoey4uLnN0YXRlLCBmaWx0ZXJzOiBmaWx0ZXJzQ29weSB9KTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgcmVtb3ZlRmlsdGVycyA9IHRoaXMudXBkYXRlciggKHN0YXRlLCBmaWx0ZXJJZHM6IHN0cmluZ1tdKSA9PiB7XHJcbiAgICBjb25zdCBmaWx0ZXJzQ29weSA9IHsgLi4uc3RhdGUuZmlsdGVycyB9O1xyXG4gICAgZmlsdGVySWRzLmZvckVhY2goaWQgPT4geyBkZWxldGUgZmlsdGVyc0NvcHlbaWRdIH0pXHJcbiAgICByZXR1cm4gKHsuLi5zdGF0ZSwgZmlsdGVyczogZmlsdGVyc0NvcHkgfSk7XHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGNsZWFyRmlsdGVycyA9IHRoaXMudXBkYXRlcigoc3RhdGUpPT5cclxuICAgICh7Li4uc3RhdGUsZmlsdGVyczp7fX0pKVxyXG5cclxuXHJcbiAgc2VsZWN0U29ydGVkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc29ydGVkKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKChmLHMpID0+ICFpc0RpZmZlcmVudChmLHMpKSk7XHJcbiAgcmVhZG9ubHkgc29ydCQgPSB0aGlzLnNlbGVjdCh0aGlzLnNlbGVjdFN0YXRlUmVhZHksIHRoaXMuc2VsZWN0U29ydGVkLCAoXyxzKSA9PiBzICk7XHJcbiAgXHJcbiAgY3JlYXRlUHJlU29ydCA9IChtZXRhRGF0YXM6IERpY3Rpb25hcnk8TWV0YURhdGE+KTogU29ydFtdID0+IHtcclxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKG1ldGFEYXRhcykuZmlsdGVyKCggbWV0YURhdGEgKSA6IG1ldGFEYXRhIGlzIE1ldGFEYXRhICYge3ByZVNvcnQ6IFNvcnREZWZ9ID0+ICEhbWV0YURhdGEucHJlU29ydClcclxuICAgICAgLnNvcnQoKHsgIHByZVNvcnQ6IHBzMSAgfSwgeyBwcmVTb3J0OiBwczIgfSApID0+IChwczEucHJlY2VkZW5jZSB8fCBOdW1iZXIuTUFYX1ZBTFVFKSAtICggcHMyLnByZWNlZGVuY2UgfHwgTnVtYmVyLk1BWF9WQUxVRSkpXHJcbiAgICAgIC5tYXAoKCB7a2V5LCBwcmVTb3J0OiB7IGRpcmVjdGlvbiB9fSApID0+ICh7IGFjdGl2ZToga2V5LCBkaXJlY3Rpb24gfSkpXHJcbiAgfVxyXG5cclxuICByZWFkb25seSBzZXRTb3J0ID0gdGhpcy51cGRhdGVyPHtrZXk6IHN0cmluZywgZGlyZWN0aW9uPzogU29ydERpcmVjdGlvbn0+KChzdGF0ZSwge2tleSwgZGlyZWN0aW9ufSApID0+IHtcclxuICAgIGNvbnN0IHNvcnRBcnJheSA9IHN0YXRlLnNvcnRlZC5maWx0ZXIoIHMgPT4gcy5hY3RpdmUgIT09IGtleSApO1xyXG4gICAgaWYoZGlyZWN0aW9uKSB7XHJcbiAgICAgIHNvcnRBcnJheS51bnNoaWZ0KHthY3RpdmU6IGtleSwgZGlyZWN0aW9ufSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgc29ydGVkOiBzb3J0QXJyYXksXHJcbiAgICB9O1xyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBzZXRBbGxTb3J0ID0gdGhpcy51cGRhdGVyKChzdGF0ZSxzb3J0QXJyYXk6U29ydFtdKT0+e1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uc3RhdGUsXHJcbiAgICAgIHNvcnRlZDogc29ydEFycmF5LFxyXG4gICAgfTtcclxuICB9KTtcclxuXHJcbiAgdXBkYXRlU3RhdGVGdW5jID0gKHN0YXRlOiBUYWJsZVN0YXRlLCBpbmNvbWluZ1RhYmxlU3RhdGU6IFBhcnRpYWw8VGFibGVTdGF0ZT4pIDogVGFibGVTdGF0ZSA9PiB7XHJcbiAgICBjb25zdCBtZXRhRGF0YSA9IHN0YXRlLm1ldGFEYXRhO1xyXG4gICAgY29uc3Qgc29ydGVkID0gaW5jb21pbmdUYWJsZVN0YXRlLnNvcnRlZD8ubGVuZ3RoID8gaW5jb21pbmdUYWJsZVN0YXRlLnNvcnRlZFxyXG4gICAgICA6IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPT09IEluaXRpYWxpemF0aW9uU3RhdGUuQ3JlYXRlZCA/IHRoaXMuY3JlYXRlUHJlU29ydChtZXRhRGF0YSkgOiBzdGF0ZS5zb3J0ZWQ7XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLCAuLi5pbmNvbWluZ1RhYmxlU3RhdGUsIG1ldGFEYXRhICwgc29ydGVkfTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHNldFBhZ2VTaXplID0gdGhpcy51cGRhdGVyKCAoc3RhdGUsIHBhZ2VTaXplOiBudW1iZXIpPT4gKHsgLi4uc3RhdGUsIHBhZ2VTaXplLCB1c2VyRGVmaW5lZDogeyAuLi5zdGF0ZS51c2VyRGVmaW5lZCwgcGFnZVNpemUgfSB9KSk7XHJcbiAgZ2V0UGFnZVNpemUgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC5wYWdlU2l6ZSB8fCBzdGF0ZS5wYWdlU2l6ZSk7XHJcbiAgcmVhZG9ubHkgdXBkYXRlU3RhdGUgPSB0aGlzLnVwZGF0ZXI8UGFydGlhbDxUYWJsZVN0YXRlPj4odGhpcy51cGRhdGVTdGF0ZUZ1bmMpO1xyXG5cclxuXHJcblxyXG4gIHJlYWRvbmx5IHVwZGF0ZVN0YXRlRnJvbVBlcnNpc3RlZFN0YXRlID0gdGhpcy51cGRhdGVyKCAoIHN0YXRlOiBUYWJsZVN0YXRlLCBwZXJzaXN0ZWRTdGF0ZTogUGVyc2lzdGVkVGFibGVTdGF0ZSkgOiBUYWJsZVN0YXRlID0+IHtcclxuICAgIGNvbnN0IGluY29taW5nVGFibGVTdGF0ZTogUGFydGlhbDxUYWJsZVN0YXRlPiA9IGNsZWFuUGVyc2lzdGVkU3RhdGUoc3RhdGUscGVyc2lzdGVkU3RhdGUpO1xyXG4gICAgY29uc3QgbmV3U3RhdGUgPSAgdGhpcy51cGRhdGVTdGF0ZUZ1bmMoc3RhdGUsaW5jb21pbmdUYWJsZVN0YXRlKTtcclxuICAgIG5ld1N0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPSBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09PSBJbml0aWFsaXphdGlvblN0YXRlLk1ldGFEYXRhTG9hZGVkID8gSW5pdGlhbGl6YXRpb25TdGF0ZS5Mb2FkZWRGcm9tU3RvcmUgOiBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlO1xyXG4gICAgcmV0dXJuIG5ld1N0YXRlO1xyXG4gIH0pO1xyXG5cclxuICBnZXRVc2VyRGVmaW5lZFRhYmxlU2l6ZSA9IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHN0YXRlLnVzZXJEZWZpbmVkLnRhYmxlLndpZHRoKTtcclxuICBnZXRVc2VyRGVmaW5lZFRhYmxlU2l6ZSQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC50YWJsZS53aWR0aCk7XHJcbiAgc2V0VGFibGVXaWR0aCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHdpZHRoSW5QaXhlbHM6bnVtYmVyKSA9PiAoey4uLnN0YXRlLCB1c2VyRGVmaW5lZDogeyAuLi5zdGF0ZS51c2VyRGVmaW5lZCwgdGFibGU6IHsgd2lkdGg6IHdpZHRoSW5QaXhlbHMgfSB9IH0pKSA7XHJcblxyXG4gIG1lcmdlTWV0YSA9IChvcmlnOiBNZXRhRGF0YSwgbWVyZ2U6IE1ldGFEYXRhKTogTWV0YURhdGEgPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBrZXk6IG9yaWcua2V5LFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiBtZXJnZS5kaXNwbGF5TmFtZSA/PyBvcmlnLmRpc3BsYXlOYW1lLFxyXG4gICAgICAgIGZpZWxkVHlwZTogbWVyZ2UuZmllbGRUeXBlIHx8IG9yaWcuZmllbGRUeXBlLFxyXG4gICAgICAgIGFkZGl0aW9uYWw6IHsuLi5vcmlnLmFkZGl0aW9uYWwsIC4uLm1lcmdlLmFkZGl0aW9uYWx9LFxyXG4gICAgICAgIG9yZGVyOiBtZXJnZS5vcmRlciA/PyBvcmlnLm9yZGVyLFxyXG4gICAgICAgIHByZVNvcnQ6IG1lcmdlLnByZVNvcnQgPz8gb3JpZy5wcmVTb3J0LFxyXG4gICAgICAgIHdpZHRoOiBtZXJnZS53aWR0aCA/PyBvcmlnLndpZHRoLFxyXG4gICAgICAgIG5vRXhwb3J0OiBtZXJnZS5ub0V4cG9ydCB8fCBvcmlnLm5vRXhwb3J0LFxyXG4gICAgICAgIG5vRmlsdGVyOiBtZXJnZS5ub0ZpbHRlciB8fCBvcmlnLm5vRmlsdGVyLFxyXG4gICAgICAgIGN1c3RvbUNlbGw6IG1lcmdlLmN1c3RvbUNlbGwgPz8gb3JpZy5jdXN0b21DZWxsLFxyXG4gICAgICAgIHRyYW5zZm9ybTogbWVyZ2UudHJhbnNmb3JtID8/IG9yaWcudHJhbnNmb3JtLFxyXG4gICAgICAgIG1hcDogbWVyZ2UubWFwID8/IG9yaWcubWFwLFxyXG4gICAgICAgIGNsaWNrOiBtZXJnZS5jbGljayA/PyBvcmlnLmNsaWNrLFxyXG4gICAgICAgIGNsYXNzZXM6IG1lcmdlLmNsYXNzZXMgPz8gb3JpZy5jbGFzc2VzLFxyXG4gICAgICAgIG5vU29ydDogbWVyZ2Uubm9Tb3J0ID8/IG9yaWcubm9Tb3J0LFxyXG4gICAgICAgIHRlbXBsYXRlOiBtZXJnZS50ZW1wbGF0ZSA/PyBvcmlnLnRlbXBsYXRlLFxyXG4gICAgICAgIHRvb2xUaXA6IG1lcmdlLnRvb2xUaXAgPz8gb3JpZy50b29sVGlwLFxyXG4gICAgICAgIHVzZUljb246IG1lcmdlLnVzZUljb24gPz8gb3JpZy51c2VJY29uLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHNldEluaXRpYWxpemF0aW9uU3RhdGUgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgaW5pdGlhbGl6YXRpb25TdGF0ZTogIEluaXRpYWxpemF0aW9uU3RhdGUpID0+IHtcclxuICAgIHJldHVybiB7Li4uc3RhdGUsIGluaXRpYWxpemF0aW9uU3RhdGV9O1xyXG4gIH0pO1xyXG5cclxuICBydW5PbmNlV2hlbihwcmVkaWNhdGU6IFByZWRpY2F0ZTxUYWJsZVN0YXRlPiwgZnVuYzogKHN0YXRlOlRhYmxlU3RhdGUpID0+IHZvaWQpIHtcclxuICAgIGNvbnN0IG9icyA9IHRoaXMuc3RhdGUkLnBpcGUob25jZVdoZW4ocHJlZGljYXRlKSk7XHJcbiAgICB0aGlzLm9uKG9icywgKHN0YXRlKSA9PiB7XHJcbiAgICAgIGZ1bmMoc3RhdGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblJlYWR5KCBmdW5jOiAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHZvaWQgKSB7XHJcbiAgICB0aGlzLnJ1bk9uY2VXaGVuKHN0YXRlSXMoSW5pdGlhbGl6YXRpb25TdGF0ZS5SZWFkeSksZnVuYyk7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBzZXRNZXRhRGF0YSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIG1kOiBNZXRhRGF0YVtdKSA9PiB7XHJcbiAgICBjb25zdCBtZXRhRGF0YSA9IG1kXHJcbiAgICAgIC5yZWR1Y2UoKHByZXY6IERpY3Rpb25hcnk8TWV0YURhdGE+LGN1cnIpID0+IHtcclxuICAgICAgICBpZihwcmV2W2N1cnIua2V5XSkge1xyXG4gICAgICAgICAgcHJldltjdXJyLmtleV0gPSB0aGlzLm1lcmdlTWV0YShwcmV2W2N1cnIua2V5XSxjdXJyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcHJldltjdXJyLmtleV0gPSBjdXJyO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcHJldjtcclxuICAgICAgfSAse30pO1xyXG4gICAgbGV0IHNvcnRlZCA9IHN0YXRlLnNvcnRlZDtcclxuICAgIGlmKHNvcnRlZC5sZW5ndGggPT09IDApIHtcclxuICAgICAgc29ydGVkID0gdGhpcy5jcmVhdGVQcmVTb3J0KG1ldGFEYXRhKTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9yZGVyID0gdGhpcy5pbml0aWFsaXplT3JkZXIoc3RhdGUsIG1ldGFEYXRhKTtcclxuICAgIGNvbnN0IGluaXRpYWxpemF0aW9uU3RhdGUgPSBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09IEluaXRpYWxpemF0aW9uU3RhdGUuQ3JlYXRlZCA/ICBJbml0aWFsaXphdGlvblN0YXRlLk1ldGFEYXRhTG9hZGVkIDogc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZTtcclxuICAgIHJldHVybiB7IC4uLnN0YXRlLCBpbml0aWFsaXphdGlvblN0YXRlLCBtZXRhRGF0YSwgc29ydGVkLCB1c2VyRGVmaW5lZDogeyAuLi5zdGF0ZS51c2VyRGVmaW5lZCwgb3JkZXI6IG9yZGVyfSB9O1xyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVPcmRlciA9IChzdGF0ZTpUYWJsZVN0YXRlLG1kczogRGljdGlvbmFyeTxNZXRhRGF0YT4pIDogRGljdGlvbmFyeTxudW1iZXI+ID0+IHtcclxuICAgIGNvbnN0IHZpZXdhYmxlTWV0YURhdGFBcnIgPSBPYmplY3QudmFsdWVzKG1kcykuZmlsdGVyKGEgPT4gYS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pO1xyXG4gICAgbGV0IHVzZXJEZWZpbmVkT3JkZXIgPSBzdGF0ZS51c2VyRGVmaW5lZC5vcmRlcjtcclxuICAgIGlmKHZpZXdhYmxlTWV0YURhdGFBcnIuc29tZShtZXRhID0+IHVzZXJEZWZpbmVkT3JkZXJbbWV0YS5rZXldID09IG51bGwpKXtcclxuICAgICAgcmV0dXJuIHt9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXNlckRlZmluZWRPcmRlcjtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNvbGxhcHNlSGVhZGVyID0gdGhpcy51cGRhdGVyKChzdGF0ZSk9PntcclxuICAgIGNvbnN0IHRhYmxlU2V0dGluZ3MgPSB7Li4uc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5nc307XHJcbiAgICB0YWJsZVNldHRpbmdzLmNvbGxhcHNlSGVhZGVyID0gIXRhYmxlU2V0dGluZ3MuY29sbGFwc2VIZWFkZXI7XHJcbiAgICByZXR1cm4gKHsuLi5zdGF0ZSxwZXJzaXN0ZWRUYWJsZVNldHRpbmdzIDogbmV3IFBlcnNpc3RlZFRhYmxlU2V0dGluZ3ModGFibGVTZXR0aW5ncyl9KTtcclxuICB9KVxyXG5cclxuICB0b2dnbGVDb2xsYXBzZUZvb3RlciA9IHRoaXMudXBkYXRlcigoc3RhdGUpPT57XHJcbiAgICBjb25zdCB0YWJsZVNldHRpbmdzID0gey4uLnN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3N9O1xyXG4gICAgdGFibGVTZXR0aW5ncy5jb2xsYXBzZUZvb3RlciA9ICF0YWJsZVNldHRpbmdzLmNvbGxhcHNlRm9vdGVyO1xyXG4gICAgcmV0dXJuICh7Li4uc3RhdGUscGVyc2lzdGVkVGFibGVTZXR0aW5ncyA6IG5ldyBQZXJzaXN0ZWRUYWJsZVNldHRpbmdzKHRhYmxlU2V0dGluZ3MpfSk7XHJcbiAgfSlcclxuXHJcbiAgYWRkR3JvdXBCeUtleSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIG1ldGFEYXRhS2V5OiBzdHJpbmcpID0+ICh7XHJcbiAgICAuLi5zdGF0ZSxcclxuICAgIGdyb3VwQnk6IFsuLi5zdGF0ZS5ncm91cEJ5LCB7IGtleTogbWV0YURhdGFLZXksIGV4cGFuZGVkSGVhZGVyczogW10gfV1cclxuICB9KSk7XHJcblxyXG4gIHJlbW92ZUdyb3VwQnlLZXkgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBncm91cEJ5S2V5OiBzdHJpbmcpID0+ICh7XHJcbiAgICAuLi5zdGF0ZSxcclxuICAgIGdyb3VwQnk6IHN0YXRlLmdyb3VwQnkuZmlsdGVyKGtleSA9PiBncm91cEJ5S2V5ICE9PSBrZXkua2V5KVxyXG4gIH0pKTtcclxuXHJcbiAgdXBkYXRlRXhwYW5kZWRHcm91cHMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBkYXRhOiB7a2V5OiBzdHJpbmcsIGdyb3VwS2V5OiBzdHJpbmcsIGlzRXhwYW5kZWQ6IGJvb2xlYW59KSA9PiB7XHJcbiAgICBjb25zdCBnYmsgPSByZXBsYWNlSW5BcnJheVdpdGhDbG9uZShzdGF0ZS5ncm91cEJ5LCBrID0+IGsua2V5ID09PSBkYXRhLmtleSwgZ2sgPT4ge1xyXG4gICAgICBnay5leHBhbmRlZEhlYWRlcnMgPSBkYXRhLmlzRXhwYW5kZWQgPyBbLi4uZ2suZXhwYW5kZWRIZWFkZXJzLCBkYXRhLmdyb3VwS2V5XSA6IGdrLmV4cGFuZGVkSGVhZGVycy5maWx0ZXIoZyA9PiBnICE9PSBkYXRhLmdyb3VwS2V5KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuICh7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBncm91cEJ5OiBnYmtcclxuICAgIH0pfVxyXG4gICk7XHJcblxyXG4gIGV4cGFuZEFsbE9mR3JvdXAgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBkYXRhOiB7IGdyb3VwSGVhZGVyc0J5S2V5OiBEaWN0aW9uYXJ5PHsgZ3JvdXBOYW1lOiBzdHJpbmcgfVtdPiB9KSA9PiB7XHJcbiAgICBjb25zdCBuZXdHcm91cGVkRGF0YSA9IHN0YXRlLmdyb3VwQnkubWFwKGdiID0+ICh7XHJcbiAgICAgIGtleTogZ2Iua2V5LFxyXG4gICAgICBleHBhbmRlZEhlYWRlcnM6IGRhdGEuZ3JvdXBIZWFkZXJzQnlLZXlbZ2Iua2V5XT8ubWFwKGcgPT4gZy5ncm91cE5hbWUpID8/IGdiLmV4cGFuZGVkSGVhZGVyc1xyXG4gICAgfSBhcyBHcm91cGVkRGF0YSkpO1xyXG4gICAgcmV0dXJuICh7IC4uLnN0YXRlLCBncm91cEJ5OiBuZXdHcm91cGVkRGF0YSB9KTtcclxuICB9KTtcclxuXHJcbiAgY29sbGFwc2VBbGwgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBncm91cEJ5OiBzdGF0ZS5ncm91cEJ5Lm1hcChnYiA9PiAoeyBrZXk6IGdiLmtleSwgZXhwYW5kZWRIZWFkZXJzOiBbXSB9KSlcclxuICB9KSk7XHJcblxyXG4gIGNvbGxhcHNlQWxsT2ZLZXkgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBkYXRhOiB7IGtleXM6IHN0cmluZ1tdIH0pID0+ICh7XHJcbiAgICAuLi5zdGF0ZSxcclxuICAgIGdyb3VwQnk6IHN0YXRlLmdyb3VwQnkubWFwKGdiID0+ICh7XHJcbiAgICAgIGtleTogZ2Iua2V5LFxyXG4gICAgICBleHBhbmRlZEhlYWRlcnM6IGRhdGEua2V5cy5pbmNsdWRlcyhnYi5rZXkpID8gW10gOiBnYi5leHBhbmRlZEhlYWRlcnNcclxuICAgIH0pKVxyXG4gIH0pKTtcclxuXHJcbiAgZ3JvdXBCeUtleXMkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuZ3JvdXBCeS5tYXAoZ2JrID0+IGdiay5rZXkpKVxyXG4gICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQ8c3RyaW5nW10+KChwcmV2LCBjdXJyKSA9PiBwcmV2Lmxlbmd0aCA9PT0gY3Vyci5sZW5ndGggJiYgY3Vyci5ldmVyeSgoayxpKSA9PiBwcmV2W2ldID09PSBrKSkpO1xyXG5cclxuICBleHBhbmRlZEdyb3VwcyQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5ncm91cEJ5KS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiB7XHJcbiAgICBjb25zdCBhYSA9IGEuZmxhdE1hcChnID0+IGcuZXhwYW5kZWRIZWFkZXJzKTtcclxuICAgIGNvbnN0IGJiID0gYi5mbGF0TWFwKGcgPT4gZy5leHBhbmRlZEhlYWRlcnMpO1xyXG4gICAgcmV0dXJuIGFhLmxlbmd0aCA9PT0gYmIubGVuZ3RoICYmIGFhLmV2ZXJ5KChrKSA9PiBiYi5pbmNsdWRlcyhrKSk7XHJcbiAgfSkpO1xyXG4gIFxyXG4gIHNldFRhYmxlU2V0dGluZ3MgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLHNldHRpbmdzOkdlbmVyYWxUYWJsZVNldHRpbmdzKT0+e1xyXG4gICAgY29uc3QgczpUYWJsZVN0YXRlID0ge1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgcGVyc2lzdGVkVGFibGVTZXR0aW5ncyA6IG5ldyBQZXJzaXN0ZWRUYWJsZVNldHRpbmdzKHNldHRpbmdzKSxcclxuICAgICAgbm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncyA6IG5ldyBOb3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzKHNldHRpbmdzKVxyXG4gICAgICB9O1xyXG4gICAgcmV0dXJuIHM7XHJcbiAgfSk7XHJcblxyXG4gIHRhYmxlU2V0dGluZ3MgPSB0aGlzLnNlbGVjdFNpZ25hbChzdGF0ZSA9PiB7XHJcbiAgICBjb25zdCB0cyA6IFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgJiBOb3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzID1cclxuICAgICAgey4uLnN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3MsIC4uLnN0YXRlLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3N9O1xyXG4gICAgcmV0dXJuIHRzO1xyXG4gIH0pO1xyXG5cclxuICB0YWJsZVNldHRpbmdzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHtcclxuICAgIGNvbnN0IHRzIDogUGVyc2lzdGVkVGFibGVTZXR0aW5ncyAmIE5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgPVxyXG4gICAgICB7Li4uc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5ncywuLi5zdGF0ZS5ub3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzfTtcclxuICAgIHJldHVybiB0cztcclxuICB9KVxyXG5cclxuICBwcm9wcyA9IHRoaXMuc2VsZWN0U2lnbmFsKHMgPT4gcy5wcm9wcyk7XHJcblxyXG4gIHNldExpbmtNYXBzID0gdGhpcy51cGRhdGVyKChzdGF0ZSxtYXBzOiBhbnkpPT57XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLGxpbmtNYXBzOm1hcHN9O1xyXG4gIH0pO1xyXG5cclxuICBnZXRMaW5rSW5mbyA9IChtZDpNZXRhRGF0YSkgPT4gdGhpcy5zZWxlY3RTaWduYWwoc3RhdGUgPT4gc3RhdGUubGlua01hcHNbbWQua2V5XSk7XHJcblxyXG4gIGdldElzRXhwYW5kZWQgPSAoY29sdW1uS2V5OiBzdHJpbmcsIGdyb3VwSGVhZGVyS2V5OiBzdHJpbmcpID0+IHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdFNpZ25hbChzdGF0ZSA9PiAhIXN0YXRlLmdyb3VwQnkuZmlsdGVyKGcgPT4gZy5rZXkgPT09IGNvbHVtbktleSAmJiBnLmV4cGFuZGVkSGVhZGVycy5pbmNsdWRlcyhncm91cEhlYWRlcktleSkpLmxlbmd0aCk7XHJcbiAgfVxyXG4gICRpc1ZpcnR1YWwgPSB0aGlzLnNlbGVjdFNpZ25hbChzdGF0ZSA9PiBzdGF0ZS5ub3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzLnVzZVZpcnR1YWxTY3JvbGwgPT09IHRydWUgfHwgKHN0YXRlLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MudXNlVmlydHVhbFNjcm9sbCBhcyBWaXJ0dWFsU2Nyb2xsT3B0aW9ucyk/LnZpcnR1YWxBc0RlZmF1bHQgfHwgc3RhdGUuc2hvd0FsbCk7XHJcbiAgJHZpZXdUeXBlID0gdGhpcy5zZWxlY3RTaWduYWw8Vmlld1R5cGU+KHN0YXRlID0+IHtcclxuICAgIGNvbnN0IHVzZVBhZ2luYXRvciA9IHN0YXRlLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MudXNlUGFnaW5hdG9yO1xyXG4gICAgaWYoc3RhdGUuc2hvd0FsbCB8fCAodGhpcy4kaXNWaXJ0dWFsKCkgJiYgIXVzZVBhZ2luYXRvcikpe1xyXG4gICAgICByZXR1cm4gJ3ZpcnR1YWwgYWxsJztcclxuICAgIH0gZWxzZSBpZih0aGlzLiRpc1ZpcnR1YWwoKSAmJiB1c2VQYWdpbmF0b3IpIHtcclxuICAgICAgcmV0dXJuICd2aXJ0dWFsIHBhZ2luYXRvcic7XHJcbiAgICB9IGVsc2UgaWYodXNlUGFnaW5hdG9yKSB7XHJcbiAgICAgIHJldHVybiAncGFnaW5hdG9yJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnYWxsJztcclxuICAgIH1cclxuICB9KTtcclxuICB2aWV3VHlwZSQgPSB0b09ic2VydmFibGUodGhpcy4kdmlld1R5cGUpO1xyXG5cclxuICAkb3JkZXJlZFZpc2libGVDb2x1bW5zID0gdGhpcy5zZWxlY3RTaWduYWwoXHJcbiAgICB0aGlzLiRtZXRhRGF0YSwgdGhpcy4kdXNlckRlZmluZWRPcmRlciwgdGhpcy4kaGlkZGVuS2V5cywgKG0sdSxoKSA9PiBvcmRlcmVkVmlzaWJsZU1ldGFEYXRhKG0sdSxoKS5tYXAobWQgPT4gbWQua2V5KSxcclxuICAgIHtlcXVhbDogKGE6IHN0cmluZ1tdLGIpID0+IGIubGVuZ3RoID09PSBhLmxlbmd0aCAmJiBiLmV2ZXJ5KChzLGkpID0+IGFbaV0gPT09IHMpfVxyXG4gIClcclxuXHJcbn1cclxuZXhwb3J0IGNvbnN0IG9yZGVyZWRWaXNpYmxlQ29sdW1ucyA9IChzdGF0ZTogVGFibGVTdGF0ZSkgPT4gb3JkZXJlZFN0YXRlVmlzaWJsZU1ldGFEYXRhKHN0YXRlKS5tYXAobWQgPT4gbWQua2V5KTtcclxuXHJcbmV4cG9ydCBjb25zdCBvcmRlcmVkU3RhdGVWaXNpYmxlTWV0YURhdGEgPSAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHtcclxuICBjb25zdCBvcmRlcmVkID0gb3JkZXJTdGF0ZU1ldGFEYXRhKHN0YXRlKTtcclxuICBjb25zdCBvcmRlcmVkVmlzaWJsZSA9IG9yZGVyZWRcclxuICAgIC5maWx0ZXIobWV0YURhdGEgPT4gIXN0YXRlLmhpZGRlbktleXMuaW5jbHVkZXMobWV0YURhdGEua2V5KSAmJiBzdGF0ZS5tZXRhRGF0YVttZXRhRGF0YS5rZXldLmZpZWxkVHlwZSAhPT0gRmllbGRUeXBlLkhpZGRlbik7XHJcbiAgcmV0dXJuIG9yZGVyZWRWaXNpYmxlO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgb3JkZXJlZFZpc2libGVNZXRhRGF0YSA9IChtZXRhRGF0YTogRGljdGlvbmFyeTxNZXRhRGF0YT4sIHVzZXJEZWZpbmVkT3JkZXI6IERpY3Rpb25hcnk8bnVtYmVyPiwgaGlkZGVuS2V5czogc3RyaW5nW10pID0+IHtcclxuICBjb25zdCBvcmRlcmVkID0gb3JkZXJNZXRhRGF0YShtZXRhRGF0YSwgdXNlckRlZmluZWRPcmRlcik7XHJcbiAgY29uc3Qgb3JkZXJlZFZpc2libGUgPSBvcmRlcmVkXHJcbiAgICAuZmlsdGVyKG0gPT4gIWhpZGRlbktleXMuaW5jbHVkZXMobS5rZXkpICYmIG1ldGFEYXRhW20ua2V5XS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pO1xyXG4gIHJldHVybiBvcmRlcmVkVmlzaWJsZTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IG9yZGVyZWRDb2RlVmlzaWJsZU1ldGFEYXRhID0gKHN0YXRlOiBUYWJsZVN0YXRlKSA9PlxyXG4gIG9yZGVyU3RhdGVNZXRhRGF0YShzdGF0ZSkuZmlsdGVyKG1kID0+IG1kLmZpZWxkVHlwZSAhPT0gRmllbGRUeXBlLkhpZGRlbik7XHJcblxyXG5leHBvcnQgY29uc3Qgb3JkZXJTdGF0ZU1ldGFEYXRhID0gKHN0YXRlOlRhYmxlU3RhdGUpID0+IHtcclxuICByZXR1cm4gb3JkZXJNZXRhRGF0YShzdGF0ZS5tZXRhRGF0YSwgc3RhdGUudXNlckRlZmluZWQub3JkZXIpO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgb3JkZXJNZXRhRGF0YSA9IChtZXRhRGF0YTogRGljdGlvbmFyeTxNZXRhRGF0YT4sIHVzZXJEZWZpbmVkOiBEaWN0aW9uYXJ5PG51bWJlcj4pID0+IHtcclxuICBjb25zdCB1c2VyT3JkZXJBcnIgPSBPYmplY3QuZW50cmllcyh1c2VyRGVmaW5lZCk7XHJcbiAgcmV0dXJuIHVzZXJPcmRlckFyci5sZW5ndGggP1xyXG4gICBPYmplY3QudmFsdWVzKG1ldGFEYXRhKS5zb3J0KChhLGIpPT4ge1xyXG4gICAgY29uc3Qgb3JkZXJBID0gdXNlckRlZmluZWRbYS5rZXldO1xyXG4gICAgY29uc3Qgb3JkZXJCID0gdXNlckRlZmluZWRbYi5rZXldO1xyXG4gICAgcmV0dXJuIG9yZGVyKG9yZGVyQSwgb3JkZXJCKTtcclxuICB9KVxyXG4gICA6XHJcbiAgIE9iamVjdC52YWx1ZXMobWV0YURhdGEpLnNvcnQoKGEsYik9PiB7XHJcbiAgICBjb25zdCBvcmRlckEgPSBhLm9yZGVyO1xyXG4gICAgY29uc3Qgb3JkZXJCID0gYi5vcmRlcjtcclxuICAgIHJldHVybiBvcmRlcihvcmRlckEsIG9yZGVyQik7XHJcbiAgfSlcclxufVxyXG5cclxuZnVuY3Rpb24gb3JkZXIob3JkZXJBOiBudW1iZXIgfCB1bmRlZmluZWQsIG9yZGVyQjogbnVtYmVyIHwgdW5kZWZpbmVkKXtcclxuICBpZihvcmRlckEgPT0gbnVsbCAmJiBvcmRlckIgPT0gbnVsbCkge1xyXG4gICAgcmV0dXJuIDA7XHJcbiAgfVxyXG4gIGlmKG9yZGVyQSA9PSBudWxsKSB7XHJcbiAgICByZXR1cm4gMTtcclxuICB9XHJcbiAgaWYob3JkZXJCID09IG51bGwpIHtcclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcbiAgcmV0dXJuIG9yZGVyQSAtIG9yZGVyQjtcclxufVxyXG5cclxuZnVuY3Rpb24gY2xlYW5QZXJzaXN0ZWRTdGF0ZShzdGF0ZTogVGFibGVTdGF0ZSxwU3RhdGU6IFBlcnNpc3RlZFRhYmxlU3RhdGUpIHtcclxuICBjb25zdCBtZXRhcyA9IE9iamVjdC52YWx1ZXMoc3RhdGUubWV0YURhdGEpO1xyXG4gIGNvbnN0IGZpbHRlcnMgPSBPYmplY3QudmFsdWVzKHBTdGF0ZS5maWx0ZXJzKS5maWx0ZXIoZmx0ciA9PiBpc0N1c3RvbUZpbHRlcihmbHRyKSB8fCBtZXRhcy5zb21lKG0gPT4gbS5rZXkgPT09IGZsdHIua2V5KSkucmVkdWNlKChvYmo6IGFueSwgZmlsdGVyKSA9PiB7XHJcbiAgICBvYmpbZmlsdGVyLmZpbHRlcklkIV0gPSBwU3RhdGUuZmlsdGVyc1tmaWx0ZXIuZmlsdGVySWQhXTtcclxuICAgIHJldHVybiBvYmo7XHJcbiAgfSwge30pO1xyXG4gIGNvbnN0IHNvcnRlZCA9IHBTdGF0ZS5zb3J0ZWQuZmlsdGVyKHMgPT4gbWV0YXMuc29tZShtID0+IG0ua2V5ID09PSBzLmFjdGl2ZSkpO1xyXG4gIHJldHVybiAoey4uLnBTdGF0ZSxmaWx0ZXJzLHNvcnRlZH0pXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFZpZXdUeXBlID0gJ3ZpcnR1YWwgcGFnaW5hdG9yJyB8ICdwYWdpbmF0b3InIHwgJ3ZpcnR1YWwgYWxsJyB8ICdhbGwnO1xyXG4iXX0=
383
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jbGFzc2VzL3RhYmxlLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFlLG1CQUFtQixFQUFFLFlBQVksRUFBbUMsTUFBTSxjQUFjLENBQUM7QUFDbEksT0FBTyxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBNEIsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUc7QUFFekQsT0FBTyxFQUFZLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBd0IseUJBQXlCLEVBQUUsc0JBQXNCLEVBQXdCLE1BQU0sa0NBQWtDLENBQUM7QUFDakosT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHNUMsTUFBTSxVQUFVLE9BQU8sQ0FBQyxtQkFBd0M7SUFDOUQs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O0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxLQUFpQixFQUFDLE1BQTJCO0lBQ3hFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDcEosR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFTLENBQUMsQ0FBQztRQUN6RCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNQLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDOUUsT0FBTyxDQUFDLEVBQUMsR0FBRyxNQUFNLEVBQUMsT0FBTyxFQUFDLE1BQU0sRUFBQyxDQUFDLENBQUE7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkVHlwZSwgTWV0YURhdGEsIFNvcnREZWYgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVmYXVsdFRhYmxlU3RhdGUsIEdyb3VwZWREYXRhLCBJbml0aWFsaXphdGlvblN0YXRlLCBrZXlzVG9EZWxldGUsIFBlcnNpc3RlZFRhYmxlU3RhdGUsIFRhYmxlU3RhdGUgfSBmcm9tICcuL1RhYmxlU3RhdGUnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBQcmVkaWNhdGUsIGNvbXB1dGVkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4gfSBmcm9tICcuL1RhYmxlQnVpbGRlckNvbmZpZyc7XHJcbmltcG9ydCB7IEN1c3RvbUZpbHRlciwgRmlsdGVySW5mbywgaXNDdXN0b21GaWx0ZXIsIGlzRmlsdGVySW5mbyB9IGZyb20gJy4vZmlsdGVyLWluZm8nO1xyXG5pbXBvcnQgeyBTb3J0LCBTb3J0RGlyZWN0aW9uIH0gIGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnIDtcclxuaW1wb3J0IHsgQ29tcG9uZW50U3RvcmUgfSBmcm9tICdAbmdyeC9jb21wb25lbnQtc3RvcmUnICA7XHJcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2RpY3Rpb25hcnknO1xyXG5pbXBvcnQgeyBkZWJvdW5jZSwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBsYXN0LCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5pbXBvcnQgeyBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgbm90TnVsbCwgb25jZVdoZW4gfSBmcm9tICcuLi8uLi9yeGpzL3J4anMtb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgR2VuZXJhbFRhYmxlU2V0dGluZ3MsIE5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MsIFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MsIFZpcnR1YWxTY3JvbGxPcHRpb25zIH0gZnJvbSAnLi90YWJsZS1idWlsZGVyLWdlbmVyYWwtc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyByZXBsYWNlSW5BcnJheVdpdGhDbG9uZSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9hcnJheS1oZWxwZXJzJztcclxuaW1wb3J0IHsgaXNEaWZmZXJlbnQgfSBmcm9tICcuLi9kaXJlY3RpdmVzJztcclxuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlSXMoaW5pdGlhbGl6YXRpb25TdGF0ZTogSW5pdGlhbGl6YXRpb25TdGF0ZSkge1xyXG4gIHJldHVybiAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPT09IGluaXRpYWxpemF0aW9uU3RhdGU7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRhYmxlU3RvcmUgZXh0ZW5kcyBDb21wb25lbnRTdG9yZTxUYWJsZVN0YXRlPiB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICBjb25zdCBjb25maWcgPSBpbmplY3QoVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4pO1xyXG5cclxuICAgc3VwZXIoIHsgLi4uZGVmYXVsdFRhYmxlU3RhdGUsIC4uLmNvbmZpZy5kZWZhdWx0VGFibGVTdGF0ZX0pO1xyXG4gIH1cclxuICBzZWxlY3RTdGF0ZVJlYWR5ID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZSkucGlwZShmaWx0ZXIoaSA9PiBpID09PSBJbml0aWFsaXphdGlvblN0YXRlLlJlYWR5KSk7XHJcbiAgZ2V0U2F2YWJsZVN0YXRlKCkgOiBPYnNlcnZhYmxlPFBlcnNpc3RlZFRhYmxlU3RhdGU+IHtcclxuICAgIHJldHVybiAgdGhpcy5zdGF0ZSQucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXHJcbiAgICAgIG1hcCggcyA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwU2F2ZWFibGVTdGF0ZShzKTtcclxuICAgICAgfSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2F2YWJsZVN0YXRlU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlKCk7XHJcbiAgICByZXR1cm4gdGhpcy5tYXBTYXZlYWJsZVN0YXRlKHN0YXRlKTtcclxuICB9KTtcclxuXHJcbiAgcHJpdmF0ZSBtYXBTYXZlYWJsZVN0YXRlID0gKHM6IFBlcnNpc3RlZFRhYmxlU3RhdGUpID0+IHtcclxuICAgIGNvbnN0IHNhdmFibGVTdGF0ZSA9IHsuLi5zfSBhcyBQYXJ0aWFsPFRhYmxlU3RhdGU+O1xyXG4gICAga2V5c1RvRGVsZXRlLmZvckVhY2goa2V5ID0+IGRlbGV0ZSBzYXZhYmxlU3RhdGVba2V5XSk7XHJcbiAgICByZXR1cm4gc2F2YWJsZVN0YXRlIGFzIFBlcnNpc3RlZFRhYmxlU3RhdGU7XHJcbiAgfVxyXG5cclxuICBvbiA9IDxWPihzcmNPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFY+LCBmdW5jOiAob2JqOiBWKSA9PiB2b2lkKSA9PiB7XHJcbiAgICB0aGlzLmVmZmVjdCgoKSA9PiBzcmNPYnNlcnZhYmxlLnBpcGUoXHJcbiAgICAgIHRhcChmdW5jKVxyXG4gICAgKSk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IG1ldGFEYXRhJCA9IHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5tZXRhRGF0YSk7XHJcbiAgJG1ldGFEYXRhID0gdGhpcy5zZWxlY3RTaWduYWwoIHN0YXRlID0+IHN0YXRlLm1ldGFEYXRhKTtcclxuICAkdXNlckRlZmluZWRPcmRlciA9IHRoaXMuc2VsZWN0U2lnbmFsKCBzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC5vcmRlcik7XHJcbiAgJGhpZGRlbktleXMgPSB0aGlzLnNlbGVjdFNpZ25hbCggc3RhdGUgPT4gc3RhdGUuaGlkZGVuS2V5cyk7XHJcbiAgJG1ldGFEYXRhQXJyYXkgPSB0aGlzLnNlbGVjdFNpZ25hbChcclxuICAgIHRoaXMuJG1ldGFEYXRhLFxyXG4gICAgdGhpcy4kdXNlckRlZmluZWRPcmRlcixcclxuICAgIG9yZGVyTWV0YURhdGFcclxuICApO1xyXG5cclxuICBnZXRNZXRhRGF0YSQgPSAoa2V5OiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxNZXRhRGF0YT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5tZXRhRGF0YVtrZXldICApLnBpcGUoXHJcbiAgICAgIHRhcChtZXRhID0+IHtpZighbWV0YSljb25zb2xlLndhcm4oYE1ldGEgZGF0YSB3aXRoIGtleSAke2tleX0gbm90IGZvdW5kYCl9KSxcclxuICAgICAgbm90TnVsbCgpKVxyXG4gIH1cclxuXHJcbiAgJGdldFVzZXJEZWZpbmVkV2lkdGggPSAoa2V5OnN0cmluZykgPT4gdGhpcy5zZWxlY3RTaWduYWwoc3RhdGUgPT4gc3RhdGUudXNlckRlZmluZWQud2lkdGhzW2tleV0pO1xyXG4gICRnZXRVc2VyRGVmaW5lZFdpZHRocyA9IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHN0YXRlLnVzZXJEZWZpbmVkLndpZHRocyk7XHJcbiAgdGFibGVTZXR0aW5nc01pbldpZHRoID0gdGhpcy5zZWxlY3RTaWduYWwoc3RhdGUgPT4gc3RhdGUubWluQ29sdW1uV2lkdGgpO1xyXG5cclxuICByZWFkb25seSByZXNldFN0YXRlID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4ge1xyXG4gICAgY29uc3Qgc29ydGVkID0gdGhpcy5jcmVhdGVQcmVTb3J0KHN0YXRlLm1ldGFEYXRhKTtcclxuICAgIHJldHVybiAoey4uLnN0YXRlLCBoaWRkZW5LZXlzOiBbXSwgc29ydGVkLCBmaWx0ZXJzOiB7fSAsIGdyb3VwQnk6IFtdLCAgdXNlckRlZmluZWQ6IHsgd2lkdGhzOiB7fSwgb3JkZXI6IHt9LCB0YWJsZToge30gfSB9KTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgc2hvd0NvbHVtbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogc3RyaW5nKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBoaWRkZW5LZXlzOiBzdGF0ZS5oaWRkZW5LZXlzLmZpbHRlciggayA9PiBrICE9PSBrZXkpLFxyXG4gIH0pKTtcclxuXHJcbiAgcmVhZG9ubHkgaGlkZUNvbHVtbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogc3RyaW5nKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBoaWRkZW5LZXlzOiBbLi4uc3RhdGUuaGlkZGVuS2V5cy5maWx0ZXIoIGsgPT4gayAhPT0ga2V5KSwga2V5XSxcclxuICB9KSk7XHJcblxyXG4gIHJlYWRvbmx5IHNldEhpZGRlbkNvbHVtbnMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBkaXNwbGF5Q29sczoge2tleTogc3RyaW5nLCB2aXNpYmxlOiBib29sZWFufVtdKSA9PiB7XHJcbiAgICByZXR1cm4gKHsuLi5zdGF0ZSwgaGlkZGVuS2V5czogZGlzcGxheUNvbHMuZmlsdGVyKGQgPT4gIWQudmlzaWJsZSkubWFwKGQgPT4gZC5rZXkpfSlcclxuICB9KTtcclxuXHJcblxyXG4gIHNldFVzZXJEZWZpbmVkV2lkdGggPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLGNvbFdpZHRoczp7a2V5OiBzdHJpbmcsIHdpZHRoSW5QaXhlbDpudW1iZXJ9W10pID0+IHtcclxuICAgIGNvbnN0IHVzZXJEZWZpbmVkV2lkdGhzID0gey4uLnN0YXRlLnVzZXJEZWZpbmVkLndpZHRoc307XHJcbiAgICBjb2xXaWR0aHMuZm9yRWFjaChjdyA9PiB7XHJcbiAgICAgIHVzZXJEZWZpbmVkV2lkdGhzW2N3LmtleV0gPSBjdy53aWR0aEluUGl4ZWw7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7Li4uc3RhdGUsIHVzZXJEZWZpbmVkOiB7Li4uc3RhdGUudXNlckRlZmluZWQsIHdpZHRoczp1c2VyRGVmaW5lZFdpZHRoc319O1xyXG4gIH0pO1xyXG5cclxuICBzZXRVc2VyRGVmaW5lZE9yZGVyID0gdGhpcy51cGRhdGVyKChzdGF0ZSxtb3ZlZDogeyBuZXdPcmRlcjogbnVtYmVyLCBvbGRPcmRlcjogbnVtYmVyIH0pPT57XHJcbiAgICBjb25zdCB7IG5ld09yZGVyLCBvbGRPcmRlciB9ID0gbW92ZWQ7XHJcbiAgICBjb25zdCBtZHNBcnIgPSBvcmRlcmVkU3RhdGVWaXNpYmxlTWV0YURhdGEoc3RhdGUpO1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KG1kc0Fyciwgb2xkT3JkZXIsIG5ld09yZGVyKTtcclxuXHJcbiAgICBjb25zdCB1c2VyRGVmaW5lZE9yZGVyID0gbWRzQXJyLnJlZHVjZSgoYWdncmVnYXRlOiBhbnksY3VycmVudCxpbmRleCkgPT4ge1xyXG4gICAgICBhZ2dyZWdhdGVbY3VycmVudC5rZXldID0gaW5kZXg7XHJcbiAgICAgIHJldHVybiBhZ2dyZWdhdGVcclxuICAgIH0se30pO1xyXG4gICAgcmV0dXJuKHsgLi4uc3RhdGUsIHVzZXJEZWZpbmVkOiB7IC4uLnN0YXRlLnVzZXJEZWZpbmVkLCBvcmRlcjogdXNlckRlZmluZWRPcmRlciB9IH0pXHJcbiAgfSlcclxuXHJcbiAgJGZpbHRlcnMgPSB0aGlzLnNlbGVjdFNpZ25hbChzdGF0ZSA9PiBzdGF0ZS5maWx0ZXJzKTtcclxuICByZWFkb25seSBmaWx0ZXJzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmZpbHRlcnMgKTtcclxuXHJcbiAgcmVhZG9ubHkgZ2V0RmlsdGVyJCA9IChmaWx0ZXJJZDogc3RyaW5nKSA6IE9ic2VydmFibGU8RmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlciB8IHVuZGVmaW5lZD4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5maWx0ZXJzW2ZpbHRlcklkXSApO1xyXG4gIH1cclxuICByZWFkb25seSBhZGRGaWx0ZXIgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgZmlsdGVyOiBGaWx0ZXJJbmZvIHwgQ3VzdG9tRmlsdGVyICkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkRmlsdGVyc1RvU3RhdGUoc3RhdGUsIFtmaWx0ZXJdKTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgYWRkRmlsdGVycyA9IHRoaXMudXBkYXRlcigoc3RhdGUsZmlsdGVyczooRmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlciApW10pPT57XHJcbiAgICByZXR1cm4gdGhpcy5hZGRGaWx0ZXJzVG9TdGF0ZShzdGF0ZSwgZmlsdGVycyk7XHJcbiAgfSlcclxuXHJcblxyXG4gIHByaXZhdGUgYWRkRmlsdGVyc1RvU3RhdGUgPSAoc3RhdGU6VGFibGVTdGF0ZSwgZmlsdGVyczooRmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlcilbXSkgOiBUYWJsZVN0YXRlID0+IHtcclxuXHJcbiAgICB2YXIgY3VzdG9tRmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKCAgaXNDdXN0b21GaWx0ZXIgKTtcclxuXHJcbiAgICB2YXIgZmlsdGVySW5mb3MgPSBmaWx0ZXJzLmZpbHRlcihpc0ZpbHRlckluZm8pO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlcnNPYmogPSBmaWx0ZXJJbmZvc1xyXG4gICAgICAuZmlsdGVyKGZsdHIgPT4gT2JqZWN0LmtleXMoc3RhdGUubWV0YURhdGEpLnNvbWUoa2V5ID0+IGtleSA9PT0gZmx0ci5rZXkpIHx8IGNvbnNvbGUud2FybihgTWV0YSBkYXRhIHdpdGgga2V5ICR7Zmx0ci5rZXl9IG5vdCBmb3VuZGApKVxyXG4gICAgICAucmVkdWNlKChmaWx0ZXJzT2JqOiB7W2s6IHN0cmluZ106IGFueX0sZmlsdGVyKT0+e1xyXG4gICAgICAgIGlmICghZmlsdGVyLmZpbHRlcklkKSB7XHJcbiAgICAgICAgICBmaWx0ZXIuZmlsdGVySWQgPSB1dWlkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbHRlcnNPYmpbZmlsdGVyLmZpbHRlcklkXSA9IGZpbHRlcjtcclxuICAgICAgICByZXR1cm4gZmlsdGVyc09iajtcclxuICAgICAgfSx7fSk7XHJcblxyXG4gICAgY3VzdG9tRmlsdGVycy5mb3JFYWNoKCBmbHRyID0+IHtcclxuICAgICAgaWYoIWZsdHIuZmlsdGVySWQpIHtcclxuICAgICAgICBmbHRyLmZpbHRlcklkID0gdXVpZCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGZpbHRlcnNPYmpbZmx0ci5maWx0ZXJJZF0gPSBmbHRyO1xyXG4gICAgfSlcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBmaWx0ZXJzIDogey4uLnN0YXRlLmZpbHRlcnMsIC4uLmZpbHRlcnNPYmogfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHJlbW92ZUZpbHRlciA9IHRoaXMudXBkYXRlciggKHN0YXRlLCBmaWx0ZXJJZDogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBmaWx0ZXJzQ29weSA9IHsgLi4uc3RhdGUuZmlsdGVycyB9O1xyXG4gICAgZGVsZXRlIGZpbHRlcnNDb3B5W2ZpbHRlcklkXTtcclxuICAgIHJldHVybiAoey4uLnN0YXRlLCBmaWx0ZXJzOiBmaWx0ZXJzQ29weSB9KTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgcmVtb3ZlRmlsdGVycyA9IHRoaXMudXBkYXRlciggKHN0YXRlLCBmaWx0ZXJJZHM6IHN0cmluZ1tdKSA9PiB7XHJcbiAgICBjb25zdCBmaWx0ZXJzQ29weSA9IHsgLi4uc3RhdGUuZmlsdGVycyB9O1xyXG4gICAgZmlsdGVySWRzLmZvckVhY2goaWQgPT4geyBkZWxldGUgZmlsdGVyc0NvcHlbaWRdIH0pXHJcbiAgICByZXR1cm4gKHsuLi5zdGF0ZSwgZmlsdGVyczogZmlsdGVyc0NvcHkgfSk7XHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGNsZWFyRmlsdGVycyA9IHRoaXMudXBkYXRlcigoc3RhdGUpPT5cclxuICAgICh7Li4uc3RhdGUsZmlsdGVyczp7fX0pKVxyXG5cclxuXHJcbiAgc2VsZWN0U29ydGVkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc29ydGVkKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKChmLHMpID0+ICFpc0RpZmZlcmVudChmLHMpKSk7XHJcbiAgcmVhZG9ubHkgc29ydCQgPSB0aGlzLnNlbGVjdCh0aGlzLnNlbGVjdFN0YXRlUmVhZHksIHRoaXMuc2VsZWN0U29ydGVkLCAoXyxzKSA9PiBzICk7XHJcbiAgXHJcbiAgY3JlYXRlUHJlU29ydCA9IChtZXRhRGF0YXM6IERpY3Rpb25hcnk8TWV0YURhdGE+KTogU29ydFtdID0+IHtcclxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKG1ldGFEYXRhcykuZmlsdGVyKCggbWV0YURhdGEgKSA6IG1ldGFEYXRhIGlzIE1ldGFEYXRhICYge3ByZVNvcnQ6IFNvcnREZWZ9ID0+ICEhbWV0YURhdGEucHJlU29ydClcclxuICAgICAgLnNvcnQoKHsgIHByZVNvcnQ6IHBzMSAgfSwgeyBwcmVTb3J0OiBwczIgfSApID0+IChwczEucHJlY2VkZW5jZSB8fCBOdW1iZXIuTUFYX1ZBTFVFKSAtICggcHMyLnByZWNlZGVuY2UgfHwgTnVtYmVyLk1BWF9WQUxVRSkpXHJcbiAgICAgIC5tYXAoKCB7a2V5LCBwcmVTb3J0OiB7IGRpcmVjdGlvbiB9fSApID0+ICh7IGFjdGl2ZToga2V5LCBkaXJlY3Rpb24gfSkpXHJcbiAgfVxyXG5cclxuICByZWFkb25seSBzZXRTb3J0ID0gdGhpcy51cGRhdGVyPHtrZXk6IHN0cmluZywgZGlyZWN0aW9uPzogU29ydERpcmVjdGlvbn0+KChzdGF0ZSwge2tleSwgZGlyZWN0aW9ufSApID0+IHtcclxuICAgIGNvbnN0IHNvcnRBcnJheSA9IHN0YXRlLnNvcnRlZC5maWx0ZXIoIHMgPT4gcy5hY3RpdmUgIT09IGtleSApO1xyXG4gICAgaWYoZGlyZWN0aW9uKSB7XHJcbiAgICAgIHNvcnRBcnJheS51bnNoaWZ0KHthY3RpdmU6IGtleSwgZGlyZWN0aW9ufSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgc29ydGVkOiBzb3J0QXJyYXksXHJcbiAgICB9O1xyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBzZXRBbGxTb3J0ID0gdGhpcy51cGRhdGVyKChzdGF0ZSxzb3J0QXJyYXk6U29ydFtdKT0+e1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uc3RhdGUsXHJcbiAgICAgIHNvcnRlZDogc29ydEFycmF5LFxyXG4gICAgfTtcclxuICB9KTtcclxuXHJcbiAgdXBkYXRlU3RhdGVGdW5jID0gKHN0YXRlOiBUYWJsZVN0YXRlLCBpbmNvbWluZ1RhYmxlU3RhdGU6IFBhcnRpYWw8VGFibGVTdGF0ZT4pIDogVGFibGVTdGF0ZSA9PiB7XHJcbiAgICBjb25zdCBtZXRhRGF0YSA9IHN0YXRlLm1ldGFEYXRhO1xyXG4gICAgY29uc3Qgc29ydGVkID0gaW5jb21pbmdUYWJsZVN0YXRlLnNvcnRlZD8ubGVuZ3RoID8gaW5jb21pbmdUYWJsZVN0YXRlLnNvcnRlZFxyXG4gICAgICA6IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPT09IEluaXRpYWxpemF0aW9uU3RhdGUuQ3JlYXRlZCA/IHRoaXMuY3JlYXRlUHJlU29ydChtZXRhRGF0YSkgOiBzdGF0ZS5zb3J0ZWQ7XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLCAuLi5pbmNvbWluZ1RhYmxlU3RhdGUsIG1ldGFEYXRhICwgc29ydGVkfTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHNldFBhZ2VTaXplID0gdGhpcy51cGRhdGVyKCAoc3RhdGUsIHBhZ2VTaXplOiBudW1iZXIpPT4gKHsgLi4uc3RhdGUsIHBhZ2VTaXplLCB1c2VyRGVmaW5lZDogeyAuLi5zdGF0ZS51c2VyRGVmaW5lZCwgcGFnZVNpemUgfSB9KSk7XHJcbiAgZ2V0UGFnZVNpemUgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC5wYWdlU2l6ZSB8fCBzdGF0ZS5wYWdlU2l6ZSk7XHJcbiAgXHJcbiAgcmVhZG9ubHkgdXBkYXRlU3RhdGUgPSB0aGlzLnVwZGF0ZXI8UGFydGlhbDxUYWJsZVN0YXRlPj4odGhpcy51cGRhdGVTdGF0ZUZ1bmMpO1xyXG5cclxuXHJcblxyXG4gIHJlYWRvbmx5IHVwZGF0ZVN0YXRlRnJvbVBlcnNpc3RlZFN0YXRlID0gdGhpcy51cGRhdGVyKCAoIHN0YXRlOiBUYWJsZVN0YXRlLCBwZXJzaXN0ZWRTdGF0ZTogUGVyc2lzdGVkVGFibGVTdGF0ZSkgOiBUYWJsZVN0YXRlID0+IHtcclxuICAgIGNvbnN0IGluY29taW5nVGFibGVTdGF0ZTogUGFydGlhbDxUYWJsZVN0YXRlPiA9IGNsZWFuUGVyc2lzdGVkU3RhdGUoc3RhdGUscGVyc2lzdGVkU3RhdGUpO1xyXG4gICAgY29uc3QgbmV3U3RhdGUgPSAgdGhpcy51cGRhdGVTdGF0ZUZ1bmMoc3RhdGUsaW5jb21pbmdUYWJsZVN0YXRlKTtcclxuICAgIG5ld1N0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPSBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09PSBJbml0aWFsaXphdGlvblN0YXRlLk1ldGFEYXRhTG9hZGVkID8gSW5pdGlhbGl6YXRpb25TdGF0ZS5Mb2FkZWRGcm9tU3RvcmUgOiBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlO1xyXG4gICAgcmV0dXJuIG5ld1N0YXRlO1xyXG4gIH0pO1xyXG5cclxuICBnZXRVc2VyRGVmaW5lZFRhYmxlU2l6ZSA9IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHN0YXRlLnVzZXJEZWZpbmVkLnRhYmxlLndpZHRoKTtcclxuICBnZXRVc2VyRGVmaW5lZFRhYmxlU2l6ZSQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC50YWJsZS53aWR0aCk7XHJcbiAgc2V0VGFibGVXaWR0aCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHdpZHRoSW5QaXhlbHM6bnVtYmVyKSA9PiAoey4uLnN0YXRlLCB1c2VyRGVmaW5lZDogeyAuLi5zdGF0ZS51c2VyRGVmaW5lZCwgdGFibGU6IHsgd2lkdGg6IHdpZHRoSW5QaXhlbHMgfSB9IH0pKSA7XHJcblxyXG4gIG1lcmdlTWV0YSA9IChvcmlnOiBNZXRhRGF0YSwgbWVyZ2U6IE1ldGFEYXRhKTogTWV0YURhdGEgPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBrZXk6IG9yaWcua2V5LFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiBtZXJnZS5kaXNwbGF5TmFtZSA/PyBvcmlnLmRpc3BsYXlOYW1lLFxyXG4gICAgICAgIGZpZWxkVHlwZTogbWVyZ2UuZmllbGRUeXBlIHx8IG9yaWcuZmllbGRUeXBlLFxyXG4gICAgICAgIGFkZGl0aW9uYWw6IHsuLi5vcmlnLmFkZGl0aW9uYWwsIC4uLm1lcmdlLmFkZGl0aW9uYWx9LFxyXG4gICAgICAgIG9yZGVyOiBtZXJnZS5vcmRlciA/PyBvcmlnLm9yZGVyLFxyXG4gICAgICAgIHByZVNvcnQ6IG1lcmdlLnByZVNvcnQgPz8gb3JpZy5wcmVTb3J0LFxyXG4gICAgICAgIHdpZHRoOiBtZXJnZS53aWR0aCA/PyBvcmlnLndpZHRoLFxyXG4gICAgICAgIG5vRXhwb3J0OiBtZXJnZS5ub0V4cG9ydCB8fCBvcmlnLm5vRXhwb3J0LFxyXG4gICAgICAgIG5vRmlsdGVyOiBtZXJnZS5ub0ZpbHRlciB8fCBvcmlnLm5vRmlsdGVyLFxyXG4gICAgICAgIGN1c3RvbUNlbGw6IG1lcmdlLmN1c3RvbUNlbGwgPz8gb3JpZy5jdXN0b21DZWxsLFxyXG4gICAgICAgIHRyYW5zZm9ybTogbWVyZ2UudHJhbnNmb3JtID8/IG9yaWcudHJhbnNmb3JtLFxyXG4gICAgICAgIG1hcDogbWVyZ2UubWFwID8/IG9yaWcubWFwLFxyXG4gICAgICAgIGNsaWNrOiBtZXJnZS5jbGljayA/PyBvcmlnLmNsaWNrLFxyXG4gICAgICAgIGNsYXNzZXM6IG1lcmdlLmNsYXNzZXMgPz8gb3JpZy5jbGFzc2VzLFxyXG4gICAgICAgIG5vU29ydDogbWVyZ2Uubm9Tb3J0ID8/IG9yaWcubm9Tb3J0LFxyXG4gICAgICAgIHRlbXBsYXRlOiBtZXJnZS50ZW1wbGF0ZSA/PyBvcmlnLnRlbXBsYXRlLFxyXG4gICAgICAgIHRvb2xUaXA6IG1lcmdlLnRvb2xUaXAgPz8gb3JpZy50b29sVGlwLFxyXG4gICAgICAgIHVzZUljb246IG1lcmdlLnVzZUljb24gPz8gb3JpZy51c2VJY29uLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHNldEluaXRpYWxpemF0aW9uU3RhdGUgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgaW5pdGlhbGl6YXRpb25TdGF0ZTogIEluaXRpYWxpemF0aW9uU3RhdGUpID0+IHtcclxuICAgIHJldHVybiB7Li4uc3RhdGUsIGluaXRpYWxpemF0aW9uU3RhdGV9O1xyXG4gIH0pO1xyXG5cclxuICBydW5PbmNlV2hlbihwcmVkaWNhdGU6IFByZWRpY2F0ZTxUYWJsZVN0YXRlPiwgZnVuYzogKHN0YXRlOlRhYmxlU3RhdGUpID0+IHZvaWQpIHtcclxuICAgIGNvbnN0IG9icyA9IHRoaXMuc3RhdGUkLnBpcGUob25jZVdoZW4ocHJlZGljYXRlKSk7XHJcbiAgICB0aGlzLm9uKG9icywgKHN0YXRlKSA9PiB7XHJcbiAgICAgIGZ1bmMoc3RhdGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblJlYWR5KCBmdW5jOiAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHZvaWQgKSB7XHJcbiAgICB0aGlzLnJ1bk9uY2VXaGVuKHN0YXRlSXMoSW5pdGlhbGl6YXRpb25TdGF0ZS5SZWFkeSksZnVuYyk7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBzZXRNZXRhRGF0YSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIG1kOiBNZXRhRGF0YVtdKSA9PiB7XHJcbiAgICBjb25zdCBtZXRhRGF0YSA9IG1kXHJcbiAgICAgIC5yZWR1Y2UoKHByZXY6IERpY3Rpb25hcnk8TWV0YURhdGE+LGN1cnIpID0+IHtcclxuICAgICAgICBpZihwcmV2W2N1cnIua2V5XSkge1xyXG4gICAgICAgICAgcHJldltjdXJyLmtleV0gPSB0aGlzLm1lcmdlTWV0YShwcmV2W2N1cnIua2V5XSxjdXJyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcHJldltjdXJyLmtleV0gPSBjdXJyO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcHJldjtcclxuICAgICAgfSAse30pO1xyXG4gICAgbGV0IHNvcnRlZCA9IHN0YXRlLnNvcnRlZDtcclxuICAgIGlmKHNvcnRlZC5sZW5ndGggPT09IDApIHtcclxuICAgICAgc29ydGVkID0gdGhpcy5jcmVhdGVQcmVTb3J0KG1ldGFEYXRhKTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9yZGVyID0gdGhpcy5pbml0aWFsaXplT3JkZXIoc3RhdGUsIG1ldGFEYXRhKTtcclxuICAgIGNvbnN0IGluaXRpYWxpemF0aW9uU3RhdGUgPSBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09IEluaXRpYWxpemF0aW9uU3RhdGUuQ3JlYXRlZCA/ICBJbml0aWFsaXphdGlvblN0YXRlLk1ldGFEYXRhTG9hZGVkIDogc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZTtcclxuICAgIHJldHVybiB7IC4uLnN0YXRlLCBpbml0aWFsaXphdGlvblN0YXRlLCBtZXRhRGF0YSwgc29ydGVkLCB1c2VyRGVmaW5lZDogeyAuLi5zdGF0ZS51c2VyRGVmaW5lZCwgb3JkZXI6IG9yZGVyfSB9O1xyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVPcmRlciA9IChzdGF0ZTpUYWJsZVN0YXRlLG1kczogRGljdGlvbmFyeTxNZXRhRGF0YT4pIDogRGljdGlvbmFyeTxudW1iZXI+ID0+IHtcclxuICAgIGNvbnN0IHZpZXdhYmxlTWV0YURhdGFBcnIgPSBPYmplY3QudmFsdWVzKG1kcykuZmlsdGVyKGEgPT4gYS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pO1xyXG4gICAgbGV0IHVzZXJEZWZpbmVkT3JkZXIgPSBzdGF0ZS51c2VyRGVmaW5lZC5vcmRlcjtcclxuICAgIGlmKHZpZXdhYmxlTWV0YURhdGFBcnIuc29tZShtZXRhID0+IHVzZXJEZWZpbmVkT3JkZXJbbWV0YS5rZXldID09IG51bGwpKXtcclxuICAgICAgcmV0dXJuIHt9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXNlckRlZmluZWRPcmRlcjtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNvbGxhcHNlSGVhZGVyID0gdGhpcy51cGRhdGVyKChzdGF0ZSk9PntcclxuICAgIGNvbnN0IHRhYmxlU2V0dGluZ3MgPSB7Li4uc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5nc307XHJcbiAgICB0YWJsZVNldHRpbmdzLmNvbGxhcHNlSGVhZGVyID0gIXRhYmxlU2V0dGluZ3MuY29sbGFwc2VIZWFkZXI7XHJcbiAgICByZXR1cm4gKHsuLi5zdGF0ZSxwZXJzaXN0ZWRUYWJsZVNldHRpbmdzIDogbmV3IFBlcnNpc3RlZFRhYmxlU2V0dGluZ3ModGFibGVTZXR0aW5ncyl9KTtcclxuICB9KVxyXG5cclxuICB0b2dnbGVDb2xsYXBzZUZvb3RlciA9IHRoaXMudXBkYXRlcigoc3RhdGUpPT57XHJcbiAgICBjb25zdCB0YWJsZVNldHRpbmdzID0gey4uLnN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3N9O1xyXG4gICAgdGFibGVTZXR0aW5ncy5jb2xsYXBzZUZvb3RlciA9ICF0YWJsZVNldHRpbmdzLmNvbGxhcHNlRm9vdGVyO1xyXG4gICAgcmV0dXJuICh7Li4uc3RhdGUscGVyc2lzdGVkVGFibGVTZXR0aW5ncyA6IG5ldyBQZXJzaXN0ZWRUYWJsZVNldHRpbmdzKHRhYmxlU2V0dGluZ3MpfSk7XHJcbiAgfSk7XHJcblxyXG4gICRjb2xsYXBzZUZvb3RlciA9IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3MuY29sbGFwc2VGb290ZXIpO1xyXG4gICRjb2xsYXBzZUhlYWRlciA9IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3MuY29sbGFwc2VIZWFkZXIpO1xyXG5cclxuICBhZGRHcm91cEJ5S2V5ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgbWV0YURhdGFLZXk6IHN0cmluZykgPT4gKHtcclxuICAgIC4uLnN0YXRlLFxyXG4gICAgZ3JvdXBCeTogWy4uLnN0YXRlLmdyb3VwQnksIHsga2V5OiBtZXRhRGF0YUtleSwgZXhwYW5kZWRIZWFkZXJzOiBbXSB9XVxyXG4gIH0pKTtcclxuXHJcbiAgcmVtb3ZlR3JvdXBCeUtleSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGdyb3VwQnlLZXk6IHN0cmluZykgPT4gKHtcclxuICAgIC4uLnN0YXRlLFxyXG4gICAgZ3JvdXBCeTogc3RhdGUuZ3JvdXBCeS5maWx0ZXIoa2V5ID0+IGdyb3VwQnlLZXkgIT09IGtleS5rZXkpXHJcbiAgfSkpO1xyXG5cclxuICB1cGRhdGVFeHBhbmRlZEdyb3VwcyA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGRhdGE6IHtrZXk6IHN0cmluZywgZ3JvdXBLZXk6IHN0cmluZywgaXNFeHBhbmRlZDogYm9vbGVhbn0pID0+IHtcclxuICAgIGNvbnN0IGdiayA9IHJlcGxhY2VJbkFycmF5V2l0aENsb25lKHN0YXRlLmdyb3VwQnksIGsgPT4gay5rZXkgPT09IGRhdGEua2V5LCBnayA9PiB7XHJcbiAgICAgIGdrLmV4cGFuZGVkSGVhZGVycyA9IGRhdGEuaXNFeHBhbmRlZCA/IFsuLi5nay5leHBhbmRlZEhlYWRlcnMsIGRhdGEuZ3JvdXBLZXldIDogZ2suZXhwYW5kZWRIZWFkZXJzLmZpbHRlcihnID0+IGcgIT09IGRhdGEuZ3JvdXBLZXkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gKHtcclxuICAgICAgLi4uc3RhdGUsXHJcbiAgICAgIGdyb3VwQnk6IGdia1xyXG4gICAgfSl9XHJcbiAgKTtcclxuXHJcbiAgZXhwYW5kQWxsT2ZHcm91cCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGRhdGE6IHsgZ3JvdXBIZWFkZXJzQnlLZXk6IERpY3Rpb25hcnk8eyBncm91cE5hbWU6IHN0cmluZyB9W10+IH0pID0+IHtcclxuICAgIGNvbnN0IG5ld0dyb3VwZWREYXRhID0gc3RhdGUuZ3JvdXBCeS5tYXAoZ2IgPT4gKHtcclxuICAgICAga2V5OiBnYi5rZXksXHJcbiAgICAgIGV4cGFuZGVkSGVhZGVyczogZGF0YS5ncm91cEhlYWRlcnNCeUtleVtnYi5rZXldPy5tYXAoZyA9PiBnLmdyb3VwTmFtZSkgPz8gZ2IuZXhwYW5kZWRIZWFkZXJzXHJcbiAgICB9IGFzIEdyb3VwZWREYXRhKSk7XHJcbiAgICByZXR1cm4gKHsgLi4uc3RhdGUsIGdyb3VwQnk6IG5ld0dyb3VwZWREYXRhIH0pO1xyXG4gIH0pO1xyXG5cclxuICBjb2xsYXBzZUFsbCA9IHRoaXMudXBkYXRlcigoc3RhdGUpID0+ICh7XHJcbiAgICAuLi5zdGF0ZSxcclxuICAgIGdyb3VwQnk6IHN0YXRlLmdyb3VwQnkubWFwKGdiID0+ICh7IGtleTogZ2Iua2V5LCBleHBhbmRlZEhlYWRlcnM6IFtdIH0pKVxyXG4gIH0pKTtcclxuXHJcbiAgY29sbGFwc2VBbGxPZktleSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGRhdGE6IHsga2V5czogc3RyaW5nW10gfSkgPT4gKHtcclxuICAgIC4uLnN0YXRlLFxyXG4gICAgZ3JvdXBCeTogc3RhdGUuZ3JvdXBCeS5tYXAoZ2IgPT4gKHtcclxuICAgICAga2V5OiBnYi5rZXksXHJcbiAgICAgIGV4cGFuZGVkSGVhZGVyczogZGF0YS5rZXlzLmluY2x1ZGVzKGdiLmtleSkgPyBbXSA6IGdiLmV4cGFuZGVkSGVhZGVyc1xyXG4gICAgfSkpXHJcbiAgfSkpO1xyXG5cclxuICBncm91cEJ5S2V5cyQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5ncm91cEJ5Lm1hcChnYmsgPT4gZ2JrLmtleSkpXHJcbiAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZDxzdHJpbmdbXT4oKHByZXYsIGN1cnIpID0+IHByZXYubGVuZ3RoID09PSBjdXJyLmxlbmd0aCAmJiBjdXJyLmV2ZXJ5KChrLGkpID0+IHByZXZbaV0gPT09IGspKSk7XHJcblxyXG4gIGV4cGFuZGVkR3JvdXBzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmdyb3VwQnkpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IHtcclxuICAgIGNvbnN0IGFhID0gYS5mbGF0TWFwKGcgPT4gZy5leHBhbmRlZEhlYWRlcnMpO1xyXG4gICAgY29uc3QgYmIgPSBiLmZsYXRNYXAoZyA9PiBnLmV4cGFuZGVkSGVhZGVycyk7XHJcbiAgICByZXR1cm4gYWEubGVuZ3RoID09PSBiYi5sZW5ndGggJiYgYWEuZXZlcnkoKGspID0+IGJiLmluY2x1ZGVzKGspKTtcclxuICB9KSk7XHJcbiAgXHJcbiAgc2V0VGFibGVTZXR0aW5ncyA9IHRoaXMudXBkYXRlcigoc3RhdGUsc2V0dGluZ3M6R2VuZXJhbFRhYmxlU2V0dGluZ3MpPT57XHJcbiAgICBjb25zdCBzOlRhYmxlU3RhdGUgPSB7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBwZXJzaXN0ZWRUYWJsZVNldHRpbmdzIDogbmV3IFBlcnNpc3RlZFRhYmxlU2V0dGluZ3Moc2V0dGluZ3MpLFxyXG4gICAgICBub3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzIDogbmV3IE5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3Moc2V0dGluZ3MpXHJcbiAgICAgIH07XHJcbiAgICByZXR1cm4gcztcclxuICB9KTtcclxuXHJcbiAgdGFibGVTZXR0aW5ncyA9IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHtcclxuICAgIGNvbnN0IHRzIDogUGVyc2lzdGVkVGFibGVTZXR0aW5ncyAmIE5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgPVxyXG4gICAgICB7Li4uc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5ncywgLi4uc3RhdGUubm90UGVyc2lzdGVkVGFibGVTZXR0aW5nc307XHJcbiAgICByZXR1cm4gdHM7XHJcbiAgfSk7XHJcblxyXG4gIHRhYmxlU2V0dGluZ3MkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4ge1xyXG4gICAgY29uc3QgdHMgOiBQZXJzaXN0ZWRUYWJsZVNldHRpbmdzICYgTm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncyA9XHJcbiAgICAgIHsuLi5zdGF0ZS5wZXJzaXN0ZWRUYWJsZVNldHRpbmdzLC4uLnN0YXRlLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3N9O1xyXG4gICAgcmV0dXJuIHRzO1xyXG4gIH0pXHJcblxyXG4gIHByb3BzID0gdGhpcy5zZWxlY3RTaWduYWwocyA9PiBzLnByb3BzKTtcclxuXHJcbiAgc2V0TGlua01hcHMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLG1hcHM6IGFueSk9PntcclxuICAgIHJldHVybiB7Li4uc3RhdGUsbGlua01hcHM6bWFwc307XHJcbiAgfSk7XHJcblxyXG4gIGdldExpbmtJbmZvID0gKG1kOk1ldGFEYXRhKSA9PiB0aGlzLnNlbGVjdFNpZ25hbChzdGF0ZSA9PiBzdGF0ZS5saW5rTWFwc1ttZC5rZXldKTtcclxuXHJcbiAgZ2V0SXNFeHBhbmRlZCA9IChjb2x1bW5LZXk6IHN0cmluZywgZ3JvdXBIZWFkZXJLZXk6IHN0cmluZykgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+ICEhc3RhdGUuZ3JvdXBCeS5maWx0ZXIoZyA9PiBnLmtleSA9PT0gY29sdW1uS2V5ICYmIGcuZXhwYW5kZWRIZWFkZXJzLmluY2x1ZGVzKGdyb3VwSGVhZGVyS2V5KSkubGVuZ3RoKTtcclxuICB9XHJcbiAgJGlzVmlydHVhbCA9IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHN0YXRlLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MudXNlVmlydHVhbFNjcm9sbCA9PT0gdHJ1ZSB8fCAoc3RhdGUubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy51c2VWaXJ0dWFsU2Nyb2xsIGFzIFZpcnR1YWxTY3JvbGxPcHRpb25zKT8udmlydHVhbEFzRGVmYXVsdCB8fCBzdGF0ZS5zaG93QWxsKTtcclxuICAkdmlld1R5cGUgPSB0aGlzLnNlbGVjdFNpZ25hbDxWaWV3VHlwZT4oc3RhdGUgPT4ge1xyXG4gICAgY29uc3QgdXNlUGFnaW5hdG9yID0gc3RhdGUubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy51c2VQYWdpbmF0b3I7XHJcbiAgICBpZihzdGF0ZS5zaG93QWxsIHx8ICh0aGlzLiRpc1ZpcnR1YWwoKSAmJiAhdXNlUGFnaW5hdG9yKSl7XHJcbiAgICAgIHJldHVybiAndmlydHVhbCBhbGwnO1xyXG4gICAgfSBlbHNlIGlmKHRoaXMuJGlzVmlydHVhbCgpICYmIHVzZVBhZ2luYXRvcikge1xyXG4gICAgICByZXR1cm4gJ3ZpcnR1YWwgcGFnaW5hdG9yJztcclxuICAgIH0gZWxzZSBpZih1c2VQYWdpbmF0b3IpIHtcclxuICAgICAgcmV0dXJuICdwYWdpbmF0b3InO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdhbGwnO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICAkb3JkZXJlZENvZGVWaXNpYmxlTWV0YURhdGFzID0gdGhpcy5zZWxlY3RTaWduYWwoXHJcbiAgICB0aGlzLiRtZXRhRGF0YUFycmF5LCAobWRzKSA9PiBtZHMuZmlsdGVyKG0gPT4gbS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pLFxyXG4gICAge2VxdWFsOiAoYTogTWV0YURhdGFbXSxiKSA9PiBiLmxlbmd0aCA9PT0gYS5sZW5ndGggJiYgYi5ldmVyeSgocyxpKSA9PiBhW2ldLmtleSA9PT0gcy5rZXkpfVxyXG4gIClcclxuXHJcbiAgJG9yZGVyZWRWaXNpYmxlQ29sdW1ucyA9IHRoaXMuc2VsZWN0U2lnbmFsKHRoaXMuJG9yZGVyZWRDb2RlVmlzaWJsZU1ldGFEYXRhcywgdGhpcy4kaGlkZGVuS2V5cyxcclxuICAgIChjcywgaGlkZGVuS2V5cykgPT4gY3MuZmlsdGVyKG0gPT4gIWhpZGRlbktleXMuaW5jbHVkZXMobS5rZXkpKS5tYXAobSA9PiBtLmtleSkpO1xyXG5cclxuICAkY3VycmVudFBhZ2UgPSB0aGlzLnNlbGVjdFNpZ25hbChzdGF0ZSA9PiBzdGF0ZS5jdXJyZW50UGFnZSk7XHJcbiAgJHBhZ2VTaXplID0gdGhpcy5zZWxlY3RTaWduYWwocyA9PiBzLnVzZXJEZWZpbmVkPy5wYWdlU2l6ZSB8fCBzLnBhZ2VTaXplKTtcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBvcmRlcmVkU3RhdGVWaXNpYmxlTWV0YURhdGEgPSAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHtcclxuICBjb25zdCBvcmRlcmVkID0gb3JkZXJTdGF0ZU1ldGFEYXRhKHN0YXRlKTtcclxuICBjb25zdCBvcmRlcmVkVmlzaWJsZSA9IG9yZGVyZWRcclxuICAgIC5maWx0ZXIobWV0YURhdGEgPT4gIXN0YXRlLmhpZGRlbktleXMuaW5jbHVkZXMobWV0YURhdGEua2V5KSAmJiBzdGF0ZS5tZXRhRGF0YVttZXRhRGF0YS5rZXldLmZpZWxkVHlwZSAhPT0gRmllbGRUeXBlLkhpZGRlbik7XHJcbiAgcmV0dXJuIG9yZGVyZWRWaXNpYmxlO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgb3JkZXJlZENvZGVWaXNpYmxlTWV0YURhdGEgPSAoc3RhdGU6IFRhYmxlU3RhdGUpID0+XHJcbiAgb3JkZXJTdGF0ZU1ldGFEYXRhKHN0YXRlKS5maWx0ZXIobWQgPT4gbWQuZmllbGRUeXBlICE9PSBGaWVsZFR5cGUuSGlkZGVuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBvcmRlclN0YXRlTWV0YURhdGEgPSAoc3RhdGU6VGFibGVTdGF0ZSkgPT4ge1xyXG4gIHJldHVybiBvcmRlck1ldGFEYXRhKHN0YXRlLm1ldGFEYXRhLCBzdGF0ZS51c2VyRGVmaW5lZC5vcmRlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBvcmRlck1ldGFEYXRhID0gKG1ldGFEYXRhOiBEaWN0aW9uYXJ5PE1ldGFEYXRhPiwgdXNlckRlZmluZWQ6IERpY3Rpb25hcnk8bnVtYmVyPikgPT4ge1xyXG4gIGNvbnN0IHVzZXJPcmRlckFyciA9IE9iamVjdC5lbnRyaWVzKHVzZXJEZWZpbmVkKTtcclxuICByZXR1cm4gdXNlck9yZGVyQXJyLmxlbmd0aCA/XHJcbiAgIE9iamVjdC52YWx1ZXMobWV0YURhdGEpLnNvcnQoKGEsYik9PiB7XHJcbiAgICBjb25zdCBvcmRlckEgPSB1c2VyRGVmaW5lZFthLmtleV07XHJcbiAgICBjb25zdCBvcmRlckIgPSB1c2VyRGVmaW5lZFtiLmtleV07XHJcbiAgICByZXR1cm4gb3JkZXIob3JkZXJBLCBvcmRlckIpO1xyXG4gIH0pXHJcbiAgIDpcclxuICAgT2JqZWN0LnZhbHVlcyhtZXRhRGF0YSkuc29ydCgoYSxiKT0+IHtcclxuICAgIGNvbnN0IG9yZGVyQSA9IGEub3JkZXI7XHJcbiAgICBjb25zdCBvcmRlckIgPSBiLm9yZGVyO1xyXG4gICAgcmV0dXJuIG9yZGVyKG9yZGVyQSwgb3JkZXJCKTtcclxuICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiBvcmRlcihvcmRlckE6IG51bWJlciB8IHVuZGVmaW5lZCwgb3JkZXJCOiBudW1iZXIgfCB1bmRlZmluZWQpe1xyXG4gIGlmKG9yZGVyQSA9PSBudWxsICYmIG9yZGVyQiA9PSBudWxsKSB7XHJcbiAgICByZXR1cm4gMDtcclxuICB9XHJcbiAgaWYob3JkZXJBID09IG51bGwpIHtcclxuICAgIHJldHVybiAxO1xyXG4gIH1cclxuICBpZihvcmRlckIgPT0gbnVsbCkge1xyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuICByZXR1cm4gb3JkZXJBIC0gb3JkZXJCO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjbGVhblBlcnNpc3RlZFN0YXRlKHN0YXRlOiBUYWJsZVN0YXRlLHBTdGF0ZTogUGVyc2lzdGVkVGFibGVTdGF0ZSkge1xyXG4gIGNvbnN0IG1ldGFzID0gT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhRGF0YSk7XHJcbiAgY29uc3QgZmlsdGVycyA9IE9iamVjdC52YWx1ZXMocFN0YXRlLmZpbHRlcnMpLmZpbHRlcihmbHRyID0+IGlzQ3VzdG9tRmlsdGVyKGZsdHIpIHx8IG1ldGFzLnNvbWUobSA9PiBtLmtleSA9PT0gZmx0ci5rZXkpKS5yZWR1Y2UoKG9iajogYW55LCBmaWx0ZXIpID0+IHtcclxuICAgIG9ialtmaWx0ZXIuZmlsdGVySWQhXSA9IHBTdGF0ZS5maWx0ZXJzW2ZpbHRlci5maWx0ZXJJZCFdO1xyXG4gICAgcmV0dXJuIG9iajtcclxuICB9LCB7fSk7XHJcbiAgY29uc3Qgc29ydGVkID0gcFN0YXRlLnNvcnRlZC5maWx0ZXIocyA9PiBtZXRhcy5zb21lKG0gPT4gbS5rZXkgPT09IHMuYWN0aXZlKSk7XHJcbiAgcmV0dXJuICh7Li4ucFN0YXRlLGZpbHRlcnMsc29ydGVkfSlcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVmlld1R5cGUgPSAndmlydHVhbCBwYWdpbmF0b3InIHwgJ3BhZ2luYXRvcicgfCAndmlydHVhbCBhbGwnIHwgJ2FsbCc7XHJcbiJdfQ==
@@ -18,8 +18,6 @@ export function calculateTableDefinedWidth(metaData, tableSettingsMinWidth) {
18
18
  }
19
19
  export const calculateFlexWidth = (metaData, userDefinedWidth, tableSettingsMinWidth) => {
20
20
  const definedWidth = calculateWidths(metaData, userDefinedWidth);
21
- if (definedWidth)
22
- console.log(metaData.key, definedWidth);
23
21
  if (definedWidth)
24
22
  return ({ flex: `0 0 ${definedWidth}`, maxWidth: 'none' });
25
23
  const style = { flex: `${1}` };
@@ -44,4 +42,4 @@ export const calculateFlexWidths = (metaDatas, userDefinedWidths, tableSettingsM
44
42
  export const columnsStyles = (metaDatas, userDefinedWidths) => {
45
43
  return metaDataArrToDict(metaDatas, md => columnStyles(md, userDefinedWidths[md.key]));
46
44
  };
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2NvbHVtbi1idWlsZGVyL2NvbHVtbi1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVyxpQkFBaUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBR3hFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQWtCLEVBQUUsZ0JBQW9DLEVBQUUsRUFBRTtJQUMxRixNQUFNLFlBQVksR0FBRyxDQUFDLGdCQUFnQixJQUFJLEdBQUcsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDckYsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLGdCQUFvQztJQUM1RSxJQUFHLGdCQUFnQjtRQUFFLE9BQU8sRUFBQyxJQUFJLEVBQUUsT0FBTyxnQkFBZ0IsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNuRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLFFBQWtCLEVBQUUscUJBQXlDO0lBQ3RHLElBQUcsUUFBUSxDQUFDLEtBQUs7UUFBRSxPQUFPLENBQUMsRUFBQyxJQUFJLEVBQUUsT0FBTyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7SUFDOUUsTUFBTSxLQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBQyxDQUFDO0lBQzlCLElBQUcscUJBQXFCO1FBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcscUJBQXFCLElBQUksQ0FBQztJQUMzRSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFFBQWtCLEVBQUUsZ0JBQW9DLEVBQUUscUJBQXlDLEVBQUUsRUFBRTtJQUN4SSxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDakUsSUFBRyxZQUFZO1FBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3pELElBQUcsWUFBWTtRQUFFLE9BQU8sQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sS0FBSyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUMsQ0FBQztJQUM5QixJQUFHLHFCQUFxQjtRQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLHFCQUFxQixJQUFJLENBQUM7SUFDM0UsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFrQixFQUFFLGdCQUFvQyxFQUFFLHFCQUEwQyxFQUFFLEVBQUU7SUFDbkksTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3pELE1BQU0sU0FBUyxHQUFHLHlCQUF5QixDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BFLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3ZHLE1BQU0sTUFBTSxHQUlSO1FBQ0YsTUFBTSxFQUFFLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxjQUFjLEVBQUUsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxHQUFHLFNBQVMsRUFBQztRQUMzRyxNQUFNLEVBQUUsRUFBRSxHQUFHLFVBQVUsRUFBRSxHQUFHLGNBQWMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxFQUFDO1FBQzNHLElBQUksRUFBRSxFQUFFLEdBQUcsVUFBVSxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsR0FBRyxTQUFTLEVBQUM7S0FDeEcsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsU0FBcUIsRUFBRSxpQkFBcUMsRUFBRSxxQkFBeUMsRUFBRSxFQUFFO0lBQzdJLE9BQU8saUJBQWlCLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7QUFDdEgsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsU0FBcUIsRUFBRSxpQkFBcUMsRUFBRSxFQUFFO0lBQzVGLE9BQU8saUJBQWlCLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGljdGlvbmFyeX0gZnJvbSBcIkBuZ3J4L2VudGl0eVwiO1xyXG5pbXBvcnQge01ldGFEYXRhLCBtZXRhRGF0YUFyclRvRGljdH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZlwiO1xyXG5pbXBvcnQge1N0eWxlclN0eWxlfSBmcm9tIFwiLi4vLi4vLi4vdXRpbGl0aWVzL2RpcmVjdGl2ZXMvc3R5bGVyXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlV2lkdGhzID0gKG1ldGFEYXRhOiBNZXRhRGF0YSwgdXNlckRlZmluZWRXaWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgY29uc3QgZGVmaW5lZFdpZHRoID0gKHVzZXJEZWZpbmVkV2lkdGggJiYgYCR7dXNlckRlZmluZWRXaWR0aH1weGApIHx8IG1ldGFEYXRhLndpZHRoO1xyXG4gIHJldHVybiBkZWZpbmVkV2lkdGg7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVVc2VyRGVmaW5lZFdpZHRoKHVzZXJEZWZpbmVkV2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZCl7XHJcbiAgaWYodXNlckRlZmluZWRXaWR0aCkgcmV0dXJuIHtmbGV4OiBgMCAwICR7dXNlckRlZmluZWRXaWR0aH1weGAsIG1heFdpZHRoOiAnbm9uZScgfTtcclxuICByZXR1cm4gdW5kZWZpbmVkO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlVGFibGVEZWZpbmVkV2lkdGgobWV0YURhdGE6IE1ldGFEYXRhLCB0YWJsZVNldHRpbmdzTWluV2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZCl7XHJcbiAgaWYobWV0YURhdGEud2lkdGgpIHJldHVybiAoe2ZsZXg6IGAwIDAgJHttZXRhRGF0YS53aWR0aH1gLCBtYXhXaWR0aDogJ25vbmUnfSk7XHJcbiAgY29uc3Qgc3R5bGUgPSB7IGZsZXg6IGAkezF9YH07XHJcbiAgaWYodGFibGVTZXR0aW5nc01pbldpZHRoKSBzdHlsZVsnbWluV2lkdGgnXSA9IGAke3RhYmxlU2V0dGluZ3NNaW5XaWR0aH1weGA7XHJcbiAgcmV0dXJuIHN0eWxlO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlRmxleFdpZHRoID0gKG1ldGFEYXRhOiBNZXRhRGF0YSwgdXNlckRlZmluZWRXaWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkLCB0YWJsZVNldHRpbmdzTWluV2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZCkgPT4ge1xyXG4gIGNvbnN0IGRlZmluZWRXaWR0aCA9IGNhbGN1bGF0ZVdpZHRocyhtZXRhRGF0YSwgdXNlckRlZmluZWRXaWR0aCk7XHJcbiAgaWYoZGVmaW5lZFdpZHRoKSBjb25zb2xlLmxvZyhtZXRhRGF0YS5rZXksIGRlZmluZWRXaWR0aCk7XHJcbiAgaWYoZGVmaW5lZFdpZHRoKSByZXR1cm4gKHtmbGV4OiBgMCAwICR7ZGVmaW5lZFdpZHRofWAsIG1heFdpZHRoOiAnbm9uZScgfSk7XHJcbiAgY29uc3Qgc3R5bGUgPSB7IGZsZXg6IGAkezF9YH07XHJcbiAgaWYodGFibGVTZXR0aW5nc01pbldpZHRoKSBzdHlsZVsnbWluV2lkdGgnXSA9IGAke3RhYmxlU2V0dGluZ3NNaW5XaWR0aH1weGA7XHJcbiAgcmV0dXJuIHN0eWxlO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgY29sdW1uU3R5bGVzID0gKG1ldGFEYXRhOiBNZXRhRGF0YSwgdXNlckRlZmluZWRXaWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkLCB0YWJsZVNldHRpbmdzTWluV2lkdGg/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IHtcclxuICBjb25zdCBmdWxsTWV0YVN0eWxlcyA9IG1ldGFEYXRhLmFkZGl0aW9uYWw/LnN0eWxlcyA/PyB7fTtcclxuICBjb25zdCB1c2VyV2lkdGggPSBjYWxjdWxhdGVVc2VyRGVmaW5lZFdpZHRoKHVzZXJEZWZpbmVkV2lkdGgpID8/IHt9O1xyXG4gIGNvbnN0IHRhYmxlV2lkdGggPSB1c2VyRGVmaW5lZFdpZHRoID8ge30gOiBjYWxjdWxhdGVUYWJsZURlZmluZWRXaWR0aChtZXRhRGF0YSwgdGFibGVTZXR0aW5nc01pbldpZHRoKTtcclxuICBjb25zdCBzdHlsZXM6IHtcclxuICAgIGhlYWRlcjogRGljdGlvbmFyeTxzdHJpbmc+O1xyXG4gICAgYm9keTogU3R5bGVyU3R5bGU7XHJcbiAgICBmb290ZXI6IERpY3Rpb25hcnk8c3RyaW5nPjtcclxuICB9ID0ge1xyXG4gICAgaGVhZGVyOiB7IC4uLnRhYmxlV2lkdGgsIC4uLmZ1bGxNZXRhU3R5bGVzLCAuLi5tZXRhRGF0YS5hZGRpdGlvbmFsPy5jb2x1bW5QYXJ0U3R5bGVzPy5oZWFkZXIsIC4uLnVzZXJXaWR0aH0sXHJcbiAgICBmb290ZXI6IHsgLi4udGFibGVXaWR0aCwgLi4uZnVsbE1ldGFTdHlsZXMsIC4uLm1ldGFEYXRhLmFkZGl0aW9uYWw/LmNvbHVtblBhcnRTdHlsZXM/LmZvb3RlciwgLi4udXNlcldpZHRofSxcclxuICAgIGJvZHk6IHsgLi4udGFibGVXaWR0aCwgLi4uZnVsbE1ldGFTdHlsZXMsIC4uLm1ldGFEYXRhLmFkZGl0aW9uYWw/LmNvbHVtblBhcnRTdHlsZXM/LmJvZHksIC4uLnVzZXJXaWR0aH0sXHJcbiAgfTtcclxuICByZXR1cm4gc3R5bGVzO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlRmxleFdpZHRocyA9IChtZXRhRGF0YXM6IE1ldGFEYXRhW10sIHVzZXJEZWZpbmVkV2lkdGhzOiBEaWN0aW9uYXJ5PG51bWJlcj4sIHRhYmxlU2V0dGluZ3NNaW5XaWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgcmV0dXJuIG1ldGFEYXRhQXJyVG9EaWN0KG1ldGFEYXRhcywgbWQgPT4gY2FsY3VsYXRlRmxleFdpZHRoKG1kLCB1c2VyRGVmaW5lZFdpZHRoc1ttZC5rZXldLCB0YWJsZVNldHRpbmdzTWluV2lkdGgpKTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNvbHVtbnNTdHlsZXMgPSAobWV0YURhdGFzOiBNZXRhRGF0YVtdLCB1c2VyRGVmaW5lZFdpZHRoczogRGljdGlvbmFyeTxudW1iZXI+KSA9PiB7XHJcbiAgcmV0dXJuIG1ldGFEYXRhQXJyVG9EaWN0KG1ldGFEYXRhcywgbWQgPT4gY29sdW1uU3R5bGVzKG1kLCB1c2VyRGVmaW5lZFdpZHRoc1ttZC5rZXldKSk7XHJcbn1cclxuIl19
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2NvbHVtbi1idWlsZGVyL2NvbHVtbi1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVyxpQkFBaUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBR3hFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQWtCLEVBQUUsZ0JBQW9DLEVBQUUsRUFBRTtJQUMxRixNQUFNLFlBQVksR0FBRyxDQUFDLGdCQUFnQixJQUFJLEdBQUcsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDckYsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLGdCQUFvQztJQUM1RSxJQUFHLGdCQUFnQjtRQUFFLE9BQU8sRUFBQyxJQUFJLEVBQUUsT0FBTyxnQkFBZ0IsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNuRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLFFBQWtCLEVBQUUscUJBQXlDO0lBQ3RHLElBQUcsUUFBUSxDQUFDLEtBQUs7UUFBRSxPQUFPLENBQUMsRUFBQyxJQUFJLEVBQUUsT0FBTyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7SUFDOUUsTUFBTSxLQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBQyxDQUFDO0lBQzlCLElBQUcscUJBQXFCO1FBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcscUJBQXFCLElBQUksQ0FBQztJQUMzRSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFFBQWtCLEVBQUUsZ0JBQW9DLEVBQUUscUJBQXlDLEVBQUUsRUFBRTtJQUN4SSxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDakUsSUFBRyxZQUFZO1FBQUUsT0FBTyxDQUFDLEVBQUMsSUFBSSxFQUFFLE9BQU8sWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDM0UsTUFBTSxLQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBQyxDQUFDO0lBQzlCLElBQUcscUJBQXFCO1FBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcscUJBQXFCLElBQUksQ0FBQztJQUMzRSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFFBQWtCLEVBQUUsZ0JBQW9DLEVBQUUscUJBQTBDLEVBQUUsRUFBRTtJQUNuSSxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDekQsTUFBTSxTQUFTLEdBQUcseUJBQXlCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEUsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsUUFBUSxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDdkcsTUFBTSxNQUFNLEdBSVI7UUFDRixNQUFNLEVBQUUsRUFBRSxHQUFHLFVBQVUsRUFBRSxHQUFHLGNBQWMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxFQUFDO1FBQzNHLE1BQU0sRUFBRSxFQUFFLEdBQUcsVUFBVSxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxTQUFTLEVBQUM7UUFDM0csSUFBSSxFQUFFLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxjQUFjLEVBQUUsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxHQUFHLFNBQVMsRUFBQztLQUN4RyxDQUFDO0lBQ0YsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxTQUFxQixFQUFFLGlCQUFxQyxFQUFFLHFCQUF5QyxFQUFFLEVBQUU7SUFDN0ksT0FBTyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLHFCQUFxQixDQUFDLENBQUMsQ0FBQztBQUN0SCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxTQUFxQixFQUFFLGlCQUFxQyxFQUFFLEVBQUU7SUFDNUYsT0FBTyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekYsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaWN0aW9uYXJ5fSBmcm9tIFwiQG5ncngvZW50aXR5XCI7XHJcbmltcG9ydCB7TWV0YURhdGEsIG1ldGFEYXRhQXJyVG9EaWN0fSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmXCI7XHJcbmltcG9ydCB7U3R5bGVyU3R5bGV9IGZyb20gXCIuLi8uLi8uLi91dGlsaXRpZXMvZGlyZWN0aXZlcy9zdHlsZXJcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVXaWR0aHMgPSAobWV0YURhdGE6IE1ldGFEYXRhLCB1c2VyRGVmaW5lZFdpZHRoOiBudW1iZXIgfCB1bmRlZmluZWQpID0+IHtcclxuICBjb25zdCBkZWZpbmVkV2lkdGggPSAodXNlckRlZmluZWRXaWR0aCAmJiBgJHt1c2VyRGVmaW5lZFdpZHRofXB4YCkgfHwgbWV0YURhdGEud2lkdGg7XHJcbiAgcmV0dXJuIGRlZmluZWRXaWR0aDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZVVzZXJEZWZpbmVkV2lkdGgodXNlckRlZmluZWRXaWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkKXtcclxuICBpZih1c2VyRGVmaW5lZFdpZHRoKSByZXR1cm4ge2ZsZXg6IGAwIDAgJHt1c2VyRGVmaW5lZFdpZHRofXB4YCwgbWF4V2lkdGg6ICdub25lJyB9O1xyXG4gIHJldHVybiB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVUYWJsZURlZmluZWRXaWR0aChtZXRhRGF0YTogTWV0YURhdGEsIHRhYmxlU2V0dGluZ3NNaW5XaWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkKXtcclxuICBpZihtZXRhRGF0YS53aWR0aCkgcmV0dXJuICh7ZmxleDogYDAgMCAke21ldGFEYXRhLndpZHRofWAsIG1heFdpZHRoOiAnbm9uZSd9KTtcclxuICBjb25zdCBzdHlsZSA9IHsgZmxleDogYCR7MX1gfTtcclxuICBpZih0YWJsZVNldHRpbmdzTWluV2lkdGgpIHN0eWxlWydtaW5XaWR0aCddID0gYCR7dGFibGVTZXR0aW5nc01pbldpZHRofXB4YDtcclxuICByZXR1cm4gc3R5bGU7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVGbGV4V2lkdGggPSAobWV0YURhdGE6IE1ldGFEYXRhLCB1c2VyRGVmaW5lZFdpZHRoOiBudW1iZXIgfCB1bmRlZmluZWQsIHRhYmxlU2V0dGluZ3NNaW5XaWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgY29uc3QgZGVmaW5lZFdpZHRoID0gY2FsY3VsYXRlV2lkdGhzKG1ldGFEYXRhLCB1c2VyRGVmaW5lZFdpZHRoKTtcclxuICBpZihkZWZpbmVkV2lkdGgpIHJldHVybiAoe2ZsZXg6IGAwIDAgJHtkZWZpbmVkV2lkdGh9YCwgbWF4V2lkdGg6ICdub25lJyB9KTtcclxuICBjb25zdCBzdHlsZSA9IHsgZmxleDogYCR7MX1gfTtcclxuICBpZih0YWJsZVNldHRpbmdzTWluV2lkdGgpIHN0eWxlWydtaW5XaWR0aCddID0gYCR7dGFibGVTZXR0aW5nc01pbldpZHRofXB4YDtcclxuICByZXR1cm4gc3R5bGU7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjb2x1bW5TdHlsZXMgPSAobWV0YURhdGE6IE1ldGFEYXRhLCB1c2VyRGVmaW5lZFdpZHRoOiBudW1iZXIgfCB1bmRlZmluZWQsIHRhYmxlU2V0dGluZ3NNaW5XaWR0aD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4ge1xyXG4gIGNvbnN0IGZ1bGxNZXRhU3R5bGVzID0gbWV0YURhdGEuYWRkaXRpb25hbD8uc3R5bGVzID8/IHt9O1xyXG4gIGNvbnN0IHVzZXJXaWR0aCA9IGNhbGN1bGF0ZVVzZXJEZWZpbmVkV2lkdGgodXNlckRlZmluZWRXaWR0aCkgPz8ge307XHJcbiAgY29uc3QgdGFibGVXaWR0aCA9IHVzZXJEZWZpbmVkV2lkdGggPyB7fSA6IGNhbGN1bGF0ZVRhYmxlRGVmaW5lZFdpZHRoKG1ldGFEYXRhLCB0YWJsZVNldHRpbmdzTWluV2lkdGgpO1xyXG4gIGNvbnN0IHN0eWxlczoge1xyXG4gICAgaGVhZGVyOiBEaWN0aW9uYXJ5PHN0cmluZz47XHJcbiAgICBib2R5OiBTdHlsZXJTdHlsZTtcclxuICAgIGZvb3RlcjogRGljdGlvbmFyeTxzdHJpbmc+O1xyXG4gIH0gPSB7XHJcbiAgICBoZWFkZXI6IHsgLi4udGFibGVXaWR0aCwgLi4uZnVsbE1ldGFTdHlsZXMsIC4uLm1ldGFEYXRhLmFkZGl0aW9uYWw/LmNvbHVtblBhcnRTdHlsZXM/LmhlYWRlciwgLi4udXNlcldpZHRofSxcclxuICAgIGZvb3RlcjogeyAuLi50YWJsZVdpZHRoLCAuLi5mdWxsTWV0YVN0eWxlcywgLi4ubWV0YURhdGEuYWRkaXRpb25hbD8uY29sdW1uUGFydFN0eWxlcz8uZm9vdGVyLCAuLi51c2VyV2lkdGh9LFxyXG4gICAgYm9keTogeyAuLi50YWJsZVdpZHRoLCAuLi5mdWxsTWV0YVN0eWxlcywgLi4ubWV0YURhdGEuYWRkaXRpb25hbD8uY29sdW1uUGFydFN0eWxlcz8uYm9keSwgLi4udXNlcldpZHRofSxcclxuICB9O1xyXG4gIHJldHVybiBzdHlsZXM7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVGbGV4V2lkdGhzID0gKG1ldGFEYXRhczogTWV0YURhdGFbXSwgdXNlckRlZmluZWRXaWR0aHM6IERpY3Rpb25hcnk8bnVtYmVyPiwgdGFibGVTZXR0aW5nc01pbldpZHRoOiBudW1iZXIgfCB1bmRlZmluZWQpID0+IHtcclxuICByZXR1cm4gbWV0YURhdGFBcnJUb0RpY3QobWV0YURhdGFzLCBtZCA9PiBjYWxjdWxhdGVGbGV4V2lkdGgobWQsIHVzZXJEZWZpbmVkV2lkdGhzW21kLmtleV0sIHRhYmxlU2V0dGluZ3NNaW5XaWR0aCkpO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgY29sdW1uc1N0eWxlcyA9IChtZXRhRGF0YXM6IE1ldGFEYXRhW10sIHVzZXJEZWZpbmVkV2lkdGhzOiBEaWN0aW9uYXJ5PG51bWJlcj4pID0+IHtcclxuICByZXR1cm4gbWV0YURhdGFBcnJUb0RpY3QobWV0YURhdGFzLCBtZCA9PiBjb2x1bW5TdHlsZXMobWQsIHVzZXJEZWZpbmVkV2lkdGhzW21kLmtleV0pKTtcclxufVxyXG4iXX0=