@angular-generic-table/core 5.0.0-rc.11 → 5.0.0-rc.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/core.component.mjs +50 -32
- package/esm2020/lib/core.module.mjs +24 -7
- package/esm2020/lib/core.service.mjs +5 -5
- package/esm2020/lib/enums/order.enum.mjs +1 -1
- package/esm2020/lib/gt-delta/gt-delta.component.mjs +115 -0
- package/esm2020/lib/models/gt-pagination.mjs +2 -0
- package/esm2020/lib/models/table-config.interface.mjs +1 -1
- package/esm2020/lib/pagination/pagination.component.mjs +47 -12
- package/esm2020/lib/pagination/pagination.module.mjs +5 -5
- package/esm2020/lib/pipes/capital-case.pipe.mjs +4 -4
- package/esm2020/lib/pipes/dash-case.pipe.mjs +5 -5
- package/esm2020/lib/pipes/dynamic.pipe.mjs +4 -4
- package/esm2020/lib/pipes/highlight.pipe.mjs +6 -6
- package/esm2020/lib/pipes/sort-class.pipe.mjs +5 -5
- package/esm2020/lib/utilities/utilities.mjs +20 -6
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/angular-generic-table-core.mjs +284 -86
- package/fesm2015/angular-generic-table-core.mjs.map +1 -1
- package/fesm2020/angular-generic-table-core.mjs +282 -87
- package/fesm2020/angular-generic-table-core.mjs.map +1 -1
- package/lib/core.component.d.ts +5 -5
- package/lib/core.module.d.ts +3 -2
- package/lib/gt-delta/gt-delta.component.d.ts +20 -0
- package/lib/models/gt-pagination.d.ts +10 -0
- package/lib/models/table-config.interface.d.ts +4 -0
- package/lib/pagination/pagination.component.d.ts +11 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/scss/index.scss +170 -13
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject, combineLatest, EMPTY, isObservable, of, ReplaySubject, Subject } from 'rxjs';
|
|
3
|
-
import { map, shareReplay, startWith, switchMap, withLatestFrom } from 'rxjs/operators';
|
|
2
|
+
import { BehaviorSubject, combineLatest, EMPTY, isObservable, of, ReplaySubject, Subject, } from 'rxjs';
|
|
3
|
+
import { map, shareReplay, startWith, switchMap, withLatestFrom, } from 'rxjs/operators';
|
|
4
4
|
import { Order } from './enums/order.enum';
|
|
5
5
|
import { chunk, search } from './utilities/utilities';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@angular/common";
|
|
8
|
-
import * as i2 from "./pipes/
|
|
9
|
-
import * as i3 from "./pipes/
|
|
8
|
+
import * as i2 from "./pipes/dash-case.pipe";
|
|
9
|
+
import * as i3 from "./pipes/sort-class.pipe";
|
|
10
10
|
import * as i4 from "./pipes/capital-case.pipe";
|
|
11
11
|
import * as i5 from "./pipes/highlight.pipe";
|
|
12
12
|
import * as i6 from "./pipes/dynamic.pipe";
|
|
@@ -23,29 +23,37 @@ export class CoreComponent {
|
|
|
23
23
|
this._data$ = new ReplaySubject(1);
|
|
24
24
|
this.data$ = this._data$.pipe(map((value) => (isObservable(value) ? value : of(value))), switchMap((obs) => combineLatest([obs])), withLatestFrom(this.tableConfig$), map(([[data], config]) => {
|
|
25
25
|
// if columns or rows contains config for mapTo...
|
|
26
|
-
if (config.columns &&
|
|
27
|
-
|
|
26
|
+
if ((config.columns &&
|
|
27
|
+
!!Object.values(config.columns).find((column) => !!column.mapTo)) ||
|
|
28
|
+
(config.rows &&
|
|
29
|
+
!!Object.values(config.rows).find((column) => !!column.mapTo))) {
|
|
28
30
|
// ...map data to new keys on row...
|
|
29
|
-
data = data.map(row => {
|
|
31
|
+
data = data.map((row) => {
|
|
30
32
|
const newKeys = Object.entries(config.columns || config.rows || [])
|
|
31
33
|
.filter(([key, value]) => !!value.mapTo) // add keys for columns with mapTo config...
|
|
32
34
|
.reduce((previousValue, currentValue) => ({
|
|
33
35
|
...previousValue,
|
|
34
36
|
// tslint:disable-next-line:no-non-null-assertion
|
|
35
|
-
[currentValue[0]]: this.nestedValue(row, currentValue[1].mapTo.path, currentValue[1].mapTo?.missingValue)
|
|
37
|
+
[currentValue[0]]: this.nestedValue(row, currentValue[1].mapTo.path, currentValue[1].mapTo?.missingValue),
|
|
36
38
|
}), {});
|
|
37
39
|
return { ...row, ...newKeys };
|
|
38
40
|
});
|
|
39
41
|
}
|
|
40
42
|
return { data, config };
|
|
41
|
-
}), switchMap(obs => combineLatest([
|
|
43
|
+
}), switchMap((obs) => combineLatest([
|
|
44
|
+
of(obs),
|
|
45
|
+
this.sortBy$.pipe(startWith(EMPTY)),
|
|
46
|
+
this.searchBy$,
|
|
47
|
+
])), map(([table, sortBy, searchBy]) => {
|
|
42
48
|
// create a new array reference and sort new array (prevent mutating existing state)
|
|
43
49
|
table.data = [...table.data];
|
|
44
50
|
return !sortBy
|
|
45
51
|
? searchBy
|
|
46
52
|
? search(searchBy, false, table.data, table.config)
|
|
47
53
|
: table.data
|
|
48
|
-
: (searchBy
|
|
54
|
+
: (searchBy
|
|
55
|
+
? search(searchBy, false, table.data, table.config)
|
|
56
|
+
: table.data)?.sort((a, b) => {
|
|
49
57
|
// TODO: improve logic
|
|
50
58
|
const typed = sortBy;
|
|
51
59
|
return a[typed.sortBy] > b[typed.sortBy]
|
|
@@ -59,11 +67,18 @@ export class CoreComponent {
|
|
|
59
67
|
: 0;
|
|
60
68
|
});
|
|
61
69
|
}), shareReplay(1));
|
|
62
|
-
this.table$ = combineLatest([
|
|
70
|
+
this.table$ = combineLatest([
|
|
71
|
+
this.data$,
|
|
72
|
+
this.tableConfig$,
|
|
73
|
+
]).pipe(map(([sorted, config]) => {
|
|
63
74
|
// if pagination is disabled...
|
|
64
75
|
if (!config.pagination || config.pagination.length === 0) {
|
|
65
76
|
// ...return unaltered array
|
|
66
|
-
return {
|
|
77
|
+
return {
|
|
78
|
+
data: [sorted],
|
|
79
|
+
config,
|
|
80
|
+
info: { records: sorted.length, pageTotal: 1 },
|
|
81
|
+
};
|
|
67
82
|
}
|
|
68
83
|
// return record set
|
|
69
84
|
return {
|
|
@@ -78,7 +93,8 @@ export class CoreComponent {
|
|
|
78
93
|
this._currentPage$ = new BehaviorSubject(0);
|
|
79
94
|
this.currentPage$ = combineLatest([this._currentPage$, this.table$]).pipe(map(([page, table]) => {
|
|
80
95
|
// determine last page
|
|
81
|
-
const lastPage = Math.ceil(table.info.records /
|
|
96
|
+
const lastPage = Math.ceil(table.info.records /
|
|
97
|
+
(table.config?.pagination?.length || table.info.records)) - 1;
|
|
82
98
|
// determine max/min position
|
|
83
99
|
return +page < 0 ? 0 : +page > lastPage ? lastPage : +page;
|
|
84
100
|
}), shareReplay(1));
|
|
@@ -89,26 +105,28 @@ export class CoreComponent {
|
|
|
89
105
|
return (a.value.order || 0) - (b.value.order || 0);
|
|
90
106
|
};
|
|
91
107
|
}
|
|
92
|
-
set loading(
|
|
93
|
-
this._loading$.next(
|
|
108
|
+
set loading(isLoading) {
|
|
109
|
+
this._loading$.next(isLoading);
|
|
94
110
|
}
|
|
95
|
-
set page(
|
|
96
|
-
this._currentPage$.next(
|
|
111
|
+
set page(page) {
|
|
112
|
+
this._currentPage$.next(page);
|
|
97
113
|
}
|
|
98
|
-
set search(
|
|
99
|
-
this._searchBy$.next(
|
|
114
|
+
set search(string) {
|
|
115
|
+
this._searchBy$.next(string);
|
|
100
116
|
}
|
|
101
|
-
set config(
|
|
102
|
-
this._tableConfig$.next(
|
|
117
|
+
set config(config) {
|
|
118
|
+
this._tableConfig$.next(config);
|
|
103
119
|
}
|
|
104
|
-
set data(
|
|
105
|
-
this._data$.next(
|
|
120
|
+
set data(data) {
|
|
121
|
+
this._data$.next(data);
|
|
106
122
|
}
|
|
107
123
|
get loading$() {
|
|
108
124
|
return this._loading$.pipe(startWith(false), map((value) => (isObservable(value) ? value : of(value))), switchMap((obs) => obs), shareReplay(1));
|
|
109
125
|
}
|
|
110
126
|
sort(property) {
|
|
111
|
-
const newSortOrder = this._sortBy?.sortBy !== property ||
|
|
127
|
+
const newSortOrder = this._sortBy?.sortBy !== property ||
|
|
128
|
+
this._sortBy?.sortByOrder === Order.DESC ||
|
|
129
|
+
!this._sortBy.sortByOrder
|
|
112
130
|
? Order.ASC
|
|
113
131
|
: Order.DESC;
|
|
114
132
|
const newSortBy = {
|
|
@@ -119,16 +137,16 @@ export class CoreComponent {
|
|
|
119
137
|
this._sortBy = newSortBy;
|
|
120
138
|
}
|
|
121
139
|
nestedValue(object, mapTo, missingValue = null) {
|
|
122
|
-
const levels = mapTo
|
|
123
|
-
|
|
124
|
-
|
|
140
|
+
const levels = mapTo.split('.');
|
|
141
|
+
return levels.reduce((previousValue, currentValue, index) => previousValue[currentValue] ||
|
|
142
|
+
(index === levels.length - 1 ? missingValue : {}), object);
|
|
125
143
|
}
|
|
126
144
|
}
|
|
127
|
-
CoreComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
128
|
-
CoreComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
129
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
145
|
+
CoreComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CoreComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
146
|
+
CoreComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CoreComponent, selector: "angular-generic-table", inputs: { loading: "loading", page: "page", search: "search", config: "config", data: "data" }, ngImport: i0, template: "<table\n [ngClass]=\"(tableConfig$ | async)?.class || 'table'\"\n [class.table-mobile]=\"(tableConfig$ | async)?.mobileLayout\"\n [class.table-horizontal]=\"(tableConfig$ | async)?.rows\"\n [class.table-loading]=\"loading$ | async\"\n [class.gt-sticky-row-header]=\"\n (tableConfig$ | async)?.stickyHeaders?.row && (tableConfig$ | async)?.rows\n \"\n [class.gt-sticky-column-header]=\"\n (tableConfig$ | async)?.stickyHeaders?.column\n \"\n [attr.aria-busy]=\"(loading$ | async) === true ? true : null\"\n>\n <thead>\n <tr\n *ngIf=\"{\n config: (tableConfig$ | async)!,\n isLoading: loading$ | async\n } as table\"\n >\n <ng-container\n *ngFor=\"let column of table?.config?.columns | keyvalue: columnOrder\"\n >\n <th\n *ngIf=\"!column.value?.hidden\"\n ngClass=\"{{ (column.key | dashCase) + '-column' }} {{\n column.value.class\n }}\"\n [class.disabled]=\"table.isLoading\"\n [attr.aria-sort]=\"sortBy$ | async | sortClass: column.key:true\"\n [class.gt-sortable]=\"true\"\n scope=\"col\"\n >\n <button\n *ngIf=\"column.value?.sortable\"\n class=\"gt-sort\"\n (click)=\"\n table.isLoading || !column.value?.sortable || sort(column.key)\n \"\n >\n <span *ngIf=\"column.value?.header !== false\">{{\n column.value?.header || column.key | capitalCase\n }}</span>\n </button>\n <span\n *ngIf=\"!column.value?.sortable && column.value?.header !== false\"\n >{{ column.value?.header || column.key | capitalCase }}</span\n >\n </th>\n </ng-container>\n <ng-container\n *ngIf=\"\n ((table?.config?.rows | keyvalue: columnOrder) || [])[0] as headerRow\n \"\n >\n <th\n class=\"row-header\"\n [attr.aria-sort]=\"sortBy$ | async | sortClass: headerRow.key:true\"\n ngClass=\"{{ headerRow.value?.sortable ? 'sort ' : '' }} {{\n sortBy$ | async | sortClass: headerRow.key\n }} {{ (headerRow.key | dashCase) + '-column' }}\"\n (click)=\"\n table.isLoading || !headerRow.value?.sortable || sort(headerRow.key)\n \"\n scope=\"col\"\n >\n <ng-container *ngIf=\"headerRow?.value?.header !== false\">{{\n headerRow?.value?.header || headerRow.key | capitalCase\n }}</ng-container>\n </th>\n <th\n *ngFor=\"let column of ((table$ | async)?.data || [])[0]\"\n ngClass=\"{{ headerRow.value?.class }}\"\n >\n <ng-container\n [ngTemplateOutlet]=\"\n (table.config?.rows || {})[headerRow.key].templateRef\n ? templateRef\n : (table.config?.rows || {})[headerRow.key].transform\n ? transformData\n : rawData\n \"\n [ngTemplateOutletContext]=\"{\n row: column,\n column: headerRow,\n transform: (table.config?.rows || {})[headerRow.key].transform,\n templateRef: (table.config?.rows || {})[headerRow.key]\n .templateRef,\n index: 0\n }\"\n >\n </ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody *ngIf=\"loading$ | async; else tableContent\">\n <tr>\n <td class=\"p-0\" [colSpan]=\"colspan$ | async\">\n <ng-content select=\".table-loading\"></ng-content>\n </td>\n </tr>\n </tbody>\n</table>\n<ng-template #tableContent>\n <ng-container *ngIf=\"(table$ | async)! as table\">\n <tbody *ngIf=\"(table!.data![0] || table!.data!).length > 0; else noData\">\n <ng-container *ngIf=\"table.config.columns\">\n <tr\n *ngFor=\"\n let row of table!.data![(currentPage$ | async) || 0];\n let i = index\n \"\n [attr.id]=\"'tableRow_' + i\"\n >\n <ng-container\n *ngFor=\"let column of table.config?.columns | keyvalue: columnOrder\"\n >\n <td\n *ngIf=\"!column.value?.hidden\"\n ngClass=\"{{ (column.key | dashCase) + '-column' }} {{\n column.value?.class\n }}\"\n [attr.data-label]=\"\n table.config?.mobileLayout && column.value?.mobileHeader\n ? column.value?.mobileHeader !== true\n ? column.value?.mobileHeader\n : (column.value?.header || column.key | capitalCase)\n : null\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"\n (searchBy$ | async) &&\n !(table.config?.columns || {})[column.key].templateRef\n ? highlighted\n : (table.config?.columns || {})[column.key].templateRef\n ? templateRef\n : (table.config?.columns || {})[column.key].transform\n ? transformData\n : rawData\n \"\n [ngTemplateOutletContext]=\"{\n row: row,\n column: column,\n search: (searchBy$ | async),\n transform: (table.config?.columns || {})[column.key]\n .transform,\n templateRef: (table.config?.columns || {})[column.key]\n .templateRef,\n index: i,\n data: table.data[(currentPage$ | async) || 0]\n }\"\n ></ng-container>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n <ng-container *ngIf=\"table.config.rows\">\n <ng-container\n *ngFor=\"\n let row of table?.config?.rows | keyvalue: columnOrder | slice: 1;\n let i = index\n \"\n >\n <tr\n *ngIf=\"!row.value?.hidden\"\n [attr.id]=\"'tableRow_' + i\"\n ngClass=\"{{ (row.key | dashCase) + '-row' }}\"\n >\n <th class=\"row-header\" scope=\"row\">\n {{ row.value?.header || row.key | capitalCase }}\n </th>\n <td\n *ngFor=\"let column of (table?.data || [])[0]; let y = index\"\n ngClass=\"{{ row.value?.class }}\"\n >\n <ng-container\n [ngTemplateOutlet]=\"\n (table.config?.rows || {})[row.key].templateRef\n ? templateRef\n : (table.config?.rows || {})[row.key].transform\n ? transformData\n : rawData\n \"\n [ngTemplateOutletContext]=\"{\n row: column,\n column: row,\n transform: (table.config?.rows || {})[row.key].transform,\n templateRef: (table.config?.rows || {})[row.key].templateRef,\n index: table.config?.rows ? y : i,\n data: table.data[(currentPage$ | async) || 0]\n }\"\n >\n </ng-container>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n </tbody>\n </ng-container>\n</ng-template>\n<ng-template #noData>\n <tbody>\n <tr>\n <td class=\"p-0\" [colSpan]=\"colspan$ | async\">\n <ng-content select=\".table-no-data\"></ng-content>\n </td>\n </tr>\n </tbody>\n</ng-template>\n<ng-template #highlighted let-row=\"row\" let-column=\"column\" let-search=\"search\">\n <div [innerHTML]=\"row[column.key] | highlight: search\"></div>\n</ng-template>\n<ng-template #rawData let-row=\"row\" let-column=\"column\">\n {{ row[column.key] }}\n</ng-template>\n<ng-template\n #transformData\n let-row=\"row\"\n let-column=\"column\"\n let-transform=\"transform\"\n let-data=\"data\"\n>\n {{ row[column.key] | dynamicPipe: transform.pipe:transform?.args }}\n</ng-template>\n<ng-template\n #templateRef\n let-row=\"row\"\n let-column=\"column\"\n let-index=\"index\"\n let-templateRef=\"templateRef\"\n let-data=\"data\"\n>\n <ng-container\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"{\n row: row,\n col: column,\n index: index,\n data: data\n }\"\n ></ng-container>\n</ng-template>\n", directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i1.AsyncPipe, "keyvalue": i1.KeyValuePipe, "dashCase": i2.DashCasePipe, "sortClass": i3.SortClassPipe, "capitalCase": i4.CapitalCasePipe, "slice": i1.SlicePipe, "highlight": i5.HighlightPipe, "dynamicPipe": i6.DynamicPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CoreComponent, decorators: [{
|
|
130
148
|
type: Component,
|
|
131
|
-
args: [{ selector: 'angular-generic-table', styles: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<table
|
|
149
|
+
args: [{ selector: 'angular-generic-table', styles: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<table\n [ngClass]=\"(tableConfig$ | async)?.class || 'table'\"\n [class.table-mobile]=\"(tableConfig$ | async)?.mobileLayout\"\n [class.table-horizontal]=\"(tableConfig$ | async)?.rows\"\n [class.table-loading]=\"loading$ | async\"\n [class.gt-sticky-row-header]=\"\n (tableConfig$ | async)?.stickyHeaders?.row && (tableConfig$ | async)?.rows\n \"\n [class.gt-sticky-column-header]=\"\n (tableConfig$ | async)?.stickyHeaders?.column\n \"\n [attr.aria-busy]=\"(loading$ | async) === true ? true : null\"\n>\n <thead>\n <tr\n *ngIf=\"{\n config: (tableConfig$ | async)!,\n isLoading: loading$ | async\n } as table\"\n >\n <ng-container\n *ngFor=\"let column of table?.config?.columns | keyvalue: columnOrder\"\n >\n <th\n *ngIf=\"!column.value?.hidden\"\n ngClass=\"{{ (column.key | dashCase) + '-column' }} {{\n column.value.class\n }}\"\n [class.disabled]=\"table.isLoading\"\n [attr.aria-sort]=\"sortBy$ | async | sortClass: column.key:true\"\n [class.gt-sortable]=\"true\"\n scope=\"col\"\n >\n <button\n *ngIf=\"column.value?.sortable\"\n class=\"gt-sort\"\n (click)=\"\n table.isLoading || !column.value?.sortable || sort(column.key)\n \"\n >\n <span *ngIf=\"column.value?.header !== false\">{{\n column.value?.header || column.key | capitalCase\n }}</span>\n </button>\n <span\n *ngIf=\"!column.value?.sortable && column.value?.header !== false\"\n >{{ column.value?.header || column.key | capitalCase }}</span\n >\n </th>\n </ng-container>\n <ng-container\n *ngIf=\"\n ((table?.config?.rows | keyvalue: columnOrder) || [])[0] as headerRow\n \"\n >\n <th\n class=\"row-header\"\n [attr.aria-sort]=\"sortBy$ | async | sortClass: headerRow.key:true\"\n ngClass=\"{{ headerRow.value?.sortable ? 'sort ' : '' }} {{\n sortBy$ | async | sortClass: headerRow.key\n }} {{ (headerRow.key | dashCase) + '-column' }}\"\n (click)=\"\n table.isLoading || !headerRow.value?.sortable || sort(headerRow.key)\n \"\n scope=\"col\"\n >\n <ng-container *ngIf=\"headerRow?.value?.header !== false\">{{\n headerRow?.value?.header || headerRow.key | capitalCase\n }}</ng-container>\n </th>\n <th\n *ngFor=\"let column of ((table$ | async)?.data || [])[0]\"\n ngClass=\"{{ headerRow.value?.class }}\"\n >\n <ng-container\n [ngTemplateOutlet]=\"\n (table.config?.rows || {})[headerRow.key].templateRef\n ? templateRef\n : (table.config?.rows || {})[headerRow.key].transform\n ? transformData\n : rawData\n \"\n [ngTemplateOutletContext]=\"{\n row: column,\n column: headerRow,\n transform: (table.config?.rows || {})[headerRow.key].transform,\n templateRef: (table.config?.rows || {})[headerRow.key]\n .templateRef,\n index: 0\n }\"\n >\n </ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody *ngIf=\"loading$ | async; else tableContent\">\n <tr>\n <td class=\"p-0\" [colSpan]=\"colspan$ | async\">\n <ng-content select=\".table-loading\"></ng-content>\n </td>\n </tr>\n </tbody>\n</table>\n<ng-template #tableContent>\n <ng-container *ngIf=\"(table$ | async)! as table\">\n <tbody *ngIf=\"(table!.data![0] || table!.data!).length > 0; else noData\">\n <ng-container *ngIf=\"table.config.columns\">\n <tr\n *ngFor=\"\n let row of table!.data![(currentPage$ | async) || 0];\n let i = index\n \"\n [attr.id]=\"'tableRow_' + i\"\n >\n <ng-container\n *ngFor=\"let column of table.config?.columns | keyvalue: columnOrder\"\n >\n <td\n *ngIf=\"!column.value?.hidden\"\n ngClass=\"{{ (column.key | dashCase) + '-column' }} {{\n column.value?.class\n }}\"\n [attr.data-label]=\"\n table.config?.mobileLayout && column.value?.mobileHeader\n ? column.value?.mobileHeader !== true\n ? column.value?.mobileHeader\n : (column.value?.header || column.key | capitalCase)\n : null\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"\n (searchBy$ | async) &&\n !(table.config?.columns || {})[column.key].templateRef\n ? highlighted\n : (table.config?.columns || {})[column.key].templateRef\n ? templateRef\n : (table.config?.columns || {})[column.key].transform\n ? transformData\n : rawData\n \"\n [ngTemplateOutletContext]=\"{\n row: row,\n column: column,\n search: (searchBy$ | async),\n transform: (table.config?.columns || {})[column.key]\n .transform,\n templateRef: (table.config?.columns || {})[column.key]\n .templateRef,\n index: i,\n data: table.data[(currentPage$ | async) || 0]\n }\"\n ></ng-container>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n <ng-container *ngIf=\"table.config.rows\">\n <ng-container\n *ngFor=\"\n let row of table?.config?.rows | keyvalue: columnOrder | slice: 1;\n let i = index\n \"\n >\n <tr\n *ngIf=\"!row.value?.hidden\"\n [attr.id]=\"'tableRow_' + i\"\n ngClass=\"{{ (row.key | dashCase) + '-row' }}\"\n >\n <th class=\"row-header\" scope=\"row\">\n {{ row.value?.header || row.key | capitalCase }}\n </th>\n <td\n *ngFor=\"let column of (table?.data || [])[0]; let y = index\"\n ngClass=\"{{ row.value?.class }}\"\n >\n <ng-container\n [ngTemplateOutlet]=\"\n (table.config?.rows || {})[row.key].templateRef\n ? templateRef\n : (table.config?.rows || {})[row.key].transform\n ? transformData\n : rawData\n \"\n [ngTemplateOutletContext]=\"{\n row: column,\n column: row,\n transform: (table.config?.rows || {})[row.key].transform,\n templateRef: (table.config?.rows || {})[row.key].templateRef,\n index: table.config?.rows ? y : i,\n data: table.data[(currentPage$ | async) || 0]\n }\"\n >\n </ng-container>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n </tbody>\n </ng-container>\n</ng-template>\n<ng-template #noData>\n <tbody>\n <tr>\n <td class=\"p-0\" [colSpan]=\"colspan$ | async\">\n <ng-content select=\".table-no-data\"></ng-content>\n </td>\n </tr>\n </tbody>\n</ng-template>\n<ng-template #highlighted let-row=\"row\" let-column=\"column\" let-search=\"search\">\n <div [innerHTML]=\"row[column.key] | highlight: search\"></div>\n</ng-template>\n<ng-template #rawData let-row=\"row\" let-column=\"column\">\n {{ row[column.key] }}\n</ng-template>\n<ng-template\n #transformData\n let-row=\"row\"\n let-column=\"column\"\n let-transform=\"transform\"\n let-data=\"data\"\n>\n {{ row[column.key] | dynamicPipe: transform.pipe:transform?.args }}\n</ng-template>\n<ng-template\n #templateRef\n let-row=\"row\"\n let-column=\"column\"\n let-index=\"index\"\n let-templateRef=\"templateRef\"\n let-data=\"data\"\n>\n <ng-container\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"{\n row: row,\n col: column,\n index: index,\n data: data\n }\"\n ></ng-container>\n</ng-template>\n" }]
|
|
132
150
|
}], propDecorators: { loading: [{
|
|
133
151
|
type: Input
|
|
134
152
|
}], page: [{
|
|
@@ -140,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
140
158
|
}], data: [{
|
|
141
159
|
type: Input
|
|
142
160
|
}] } });
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvY29yZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvY29yZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFjLEVBQUUsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR2pILE9BQU8sRUFBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEYsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7O0FBV3BELE1BQU0sT0FBTyxhQUFhO0lBTjFCO1FBdUNVLGNBQVMsR0FBaUQsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkYsWUFBTyxHQUF1QixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBSTVDLHlDQUF5QztRQUNqQyxlQUFVLEdBQXNELElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdGLGNBQVMsR0FBOEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pELFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFDYixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxL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QyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzSixDQUFDOzswR0FuS1UsYUFBYTs4RkFBYixhQUFhLDZKQ2xCMUIsa2pPQWtLQTsyRkRoSmEsYUFBYTtrQkFOekIsU0FBUzsrQkFDRSx1QkFBdUIsVUFFekIsRUFBRSxtQkFDTyx1QkFBdUIsQ0FBQyxNQUFNOzhCQUdsQyxPQUFPO3NCQUFuQixLQUFLO2dCQUlGLElBQUk7c0JBRFAsS0FBSztnQkFNRixNQUFNO3NCQURULEtBQUs7Z0JBTUYsTUFBTTtzQkFEVCxLQUFLO2dCQU1GLElBQUk7c0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBpc09ic2VydmFibGUsIE9ic2VydmFibGUsIG9mLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7VGFibGVDb25maWd9IGZyb20gJy4vbW9kZWxzL3RhYmxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtLZXlWYWx1ZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7bWFwLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHdpdGhMYXRlc3RGcm9tfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1RhYmxlQ29sdW1ufSBmcm9tICcuL21vZGVscy90YWJsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7T3JkZXJ9IGZyb20gJy4vZW51bXMvb3JkZXIuZW51bSc7XG5pbXBvcnQge2NodW5rLCBzZWFyY2h9IGZyb20gJy4vdXRpbGl0aWVzL3V0aWxpdGllcyc7XG5pbXBvcnQge1RhYmxlUm93fSBmcm9tICcuL21vZGVscy90YWJsZS1yb3cuaW50ZXJmYWNlJztcbmltcG9ydCB7VGFibGVTb3J0fSBmcm9tICcuL21vZGVscy90YWJsZS1zb3J0LmludGVyZmFjZSc7XG5pbXBvcnQge1RhYmxlTWV0YX0gZnJvbSAnLi9tb2RlbHMvdGFibGUtbWV0YS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhbmd1bGFyLWdlbmVyaWMtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb3JlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc2V0IGxvYWRpbmcodmFsdWU6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBib29sZWFuKSB7XG4gICAgdGhpcy5fbG9hZGluZyQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IHBhZ2UodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2N1cnJlbnRQYWdlJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBzZWFyY2godmFsdWU6IE9ic2VydmFibGU8c3RyaW5nPiB8IHN0cmluZyB8IG51bGwpIHtcbiAgICB0aGlzLl9zZWFyY2hCeSQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgY29uZmlnKHZhbHVlOiBPYnNlcnZhYmxlPFRhYmxlQ29uZmlnPiB8IFRhYmxlQ29uZmlnKSB7XG4gICAgdGhpcy5fdGFibGVDb25maWckLm5leHQodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGRhdGEodmFsdWU6IE9ic2VydmFibGU8QXJyYXk8VGFibGVSb3c+PiB8IEFycmF5PFRhYmxlUm93Pikge1xuICAgIHRoaXMuX2RhdGEkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC5waXBlKFxuICAgICAgc3RhcnRXaXRoKGZhbHNlKSxcbiAgICAgIG1hcCgodmFsdWUpID0+IChpc09ic2VydmFibGUodmFsdWUpID8gdmFsdWUgOiBvZih2YWx1ZSkpKSxcbiAgICAgIHN3aXRjaE1hcCgob2JzKSA9PiBvYnMpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9hZGluZyQ6IFJlcGxheVN1YmplY3Q8T2JzZXJ2YWJsZTxib29sZWFuPiB8IGJvb2xlYW4+ID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XG4gIHNvcnRCeSQ6IFN1YmplY3Q8VGFibGVTb3J0PiA9IG5ldyBTdWJqZWN0KCk7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByaXZhdGUgX3NvcnRCeTogVGFibGVTb3J0IHwgdW5kZWZpbmVkO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByaXZhdGUgX3NlYXJjaEJ5JDogUmVwbGF5U3ViamVjdDxPYnNlcnZhYmxlPHN0cmluZz4gfCBzdHJpbmcgfCBudWxsPiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICBzZWFyY2hCeSQ6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4gPSB0aGlzLl9zZWFyY2hCeSQucGlwZShcbiAgICBzdGFydFdpdGgoJycpLFxuICAgIG1hcCgodmFsdWUpID0+IChpc09ic2VydmFibGUodmFsdWUpID8gdmFsdWUgOiBvZih2YWx1ZSkpKSxcbiAgICBzd2l0Y2hNYXAoKG9icykgPT4gb2JzKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByaXZhdGUgX3RhYmxlQ29uZmlnJDogUmVwbGF5U3ViamVjdDxUYWJsZUNvbmZpZyB8IE9ic2VydmFibGU8VGFibGVDb25maWc+PiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICB0YWJsZUNvbmZpZyQ6IE9ic2VydmFibGU8VGFibGVDb25maWc+ID0gdGhpcy5fdGFibGVDb25maWckLnBpcGUoXG4gICAgbWFwKCh2YWx1ZSkgPT4gKGlzT2JzZXJ2YWJsZSh2YWx1ZSkgPyB2YWx1ZSA6IG9mKHZhbHVlKSkpLFxuICAgIHN3aXRjaE1hcCgob2JzKSA9PiBvYnMpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcHJpdmF0ZSBfZGF0YSQ6IFJlcGxheVN1YmplY3Q8QXJyYXk8VGFibGVSb3c+IHwgT2JzZXJ2YWJsZTxBcnJheTxUYWJsZVJvdz4+PiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICBkYXRhJDogT2JzZXJ2YWJsZTxBcnJheTxUYWJsZVJvdz4+ID0gdGhpcy5fZGF0YSQucGlwZShcbiAgICBtYXAoKHZhbHVlKSA9PiAoaXNPYnNlcnZhYmxlKHZhbHVlKSA/IHZhbHVlIDogb2YodmFsdWUpKSksXG4gICAgc3dpdGNoTWFwKChvYnMpID0+IGNvbWJpbmVMYXRlc3QoW29ic10pKSxcbiAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnRhYmxlQ29uZmlnJCksXG4gICAgbWFwKChbW2RhdGFdLCBjb25maWddKSA9PiB7XG4gICAgICAvLyBpZiBjb2x1bW5zIG9yIHJvd3MgY29udGFpbnMgY29uZmlnIGZvciBtYXBUby4uLlxuICAgICAgaWYgKGNvbmZpZy5jb2x1bW5zICYmICEhT2JqZWN0LnZhbHVlcyhjb25maWcuY29sdW1ucykuZmluZChjb2x1bW4gPT4gISFjb2x1bW4ubWFwVG8pIHx8XG4gICAgICAgIChjb25maWcucm93cyAmJiAhIU9iamVjdC52YWx1ZXMoY29uZmlnLnJvd3MpLmZpbmQoY29sdW1uID0+ICEhY29sdW1uLm1hcFRvKSkpIHtcbiAgICAgICAgLy8gLi4ubWFwIGRhdGEgdG8gbmV3IGtleXMgb24gcm93Li4uXG4gICAgICAgIGRhdGEgPSBkYXRhLm1hcChyb3cgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0tleXMgPSBPYmplY3QuZW50cmllcyhjb25maWcuY29sdW1ucyB8fCBjb25maWcucm93cyB8fCBbXSlcbiAgICAgICAgICAgICAgLmZpbHRlcigoW2tleSwgdmFsdWVdKSA9PiAhIXZhbHVlLm1hcFRvKSAvLyBhZGQga2V5cyBmb3IgY29sdW1ucyB3aXRoIG1hcFRvIGNvbmZpZy4uLlxuICAgICAgICAgICAgICAucmVkdWNlKChwcmV2aW91c1ZhbHVlLCBjdXJyZW50VmFsdWUpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ucHJldmlvdXNWYWx1ZSxcbiAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgICAgICAgICAgW2N1cnJlbnRWYWx1ZVswXV06IHRoaXMubmVzdGVkVmFsdWUocm93LCBjdXJyZW50VmFsdWVbMV0ubWFwVG8hLnBhdGgsIGN1cnJlbnRWYWx1ZVsxXS5tYXBUbz8ubWlzc2luZ1ZhbHVlKVxuICAgICAgICAgICAgICB9KSwge30pO1xuICAgICAgICAgIHJldHVybiB7Li4ucm93LCAuLi5uZXdLZXlzfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7ZGF0YSwgY29uZmlnfVxuICAgIH0pLFxuICAgIHN3aXRjaE1hcChvYnMgPT4gY29tYmluZUxhdGVzdChbb2Yob2JzKSwgdGhpcy5zb3J0QnkkLnBpcGUoc3RhcnRXaXRoKEVNUFRZKSksIHRoaXMuc2VhcmNoQnkkXSkpLFxuICAgIG1hcCgoW3RhYmxlLCBzb3J0QnksIHNlYXJjaEJ5XSkgPT4ge1xuICAgICAgLy8gY3JlYXRlIGEgbmV3IGFycmF5IHJlZmVyZW5jZSBhbmQgc29ydCBuZXcgYXJyYXkgKHByZXZlbnQgbXV0YXRpbmcgZXhpc3Rpbmcgc3RhdGUpXG4gICAgICB0YWJsZS5kYXRhID0gWy4uLnRhYmxlLmRhdGFdO1xuICAgICAgcmV0dXJuICFzb3J0QnlcbiAgICAgICAgPyBzZWFyY2hCeVxuICAgICAgICAgID8gc2VhcmNoKHNlYXJjaEJ5LCBmYWxzZSwgdGFibGUuZGF0YSwgdGFibGUuY29uZmlnKVxuICAgICAgICAgIDogdGFibGUuZGF0YVxuICAgICAgICA6IChzZWFyY2hCeSA/IHNlYXJjaChzZWFyY2hCeSwgZmFsc2UsIHRhYmxlLmRhdGEsIHRhYmxlLmNvbmZpZykgOiB0YWJsZS5kYXRhKT8uc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgLy8gVE9ETzogaW1wcm92ZSBsb2dpY1xuICAgICAgICAgICAgY29uc3QgdHlwZWQgPSBzb3J0QnkgYXMgVGFibGVTb3J0O1xuICAgICAgICAgICAgcmV0dXJuIGFbdHlwZWQuc29ydEJ5XSA+IGJbdHlwZWQuc29ydEJ5XVxuICAgICAgICAgICAgICA/IHR5cGVkLnNvcnRCeU9yZGVyID09PSBPcmRlci5BU0NcbiAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICA6IC0xXG4gICAgICAgICAgICAgIDogYlt0eXBlZC5zb3J0QnldID4gYVt0eXBlZC5zb3J0QnldXG4gICAgICAgICAgICAgID8gdHlwZWQuc29ydEJ5T3JkZXIgPT09IE9yZGVyLkFTQ1xuICAgICAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgICAgICA6IDFcbiAgICAgICAgICAgICAgOiAwO1xuICAgICAgICAgIH0pO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgdGFibGUkOiBPYnNlcnZhYmxlPFRhYmxlTWV0YT4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmRhdGEkLCB0aGlzLnRhYmxlQ29uZmlnJF0pLnBpcGUoXG4gICAgbWFwKChbc29ydGVkLCBjb25maWddKSA9PiB7XG4gICAgICAvLyBpZiBwYWdpbmF0aW9uIGlzIGRpc2FibGVkLi4uXG4gICAgICBpZiAoIWNvbmZpZy5wYWdpbmF0aW9uIHx8IGNvbmZpZy5wYWdpbmF0aW9uLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAvLyAuLi5yZXR1cm4gdW5hbHRlcmVkIGFycmF5XG4gICAgICAgIHJldHVybiB7IGRhdGE6IFtzb3J0ZWRdLCBjb25maWcsIGluZm86IHsgcmVjb3Jkczogc29ydGVkLmxlbmd0aCwgcGFnZVRvdGFsOiAxIH0gfTtcbiAgICAgIH1cbiAgICAgIC8vIHJldHVybiByZWNvcmQgc2V0XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiBjaHVuayhzb3J0ZWQsICsoY29uZmlnLnBhZ2luYXRpb24ubGVuZ3RoIHx8IDApKSxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBpbmZvOiB7XG4gICAgICAgICAgcmVjb3Jkczogc29ydGVkLmxlbmd0aCxcbiAgICAgICAgICBwYWdlVG90YWw6IE1hdGguY2VpbChzb3J0ZWQubGVuZ3RoIC8gKyhjb25maWcucGFnaW5hdGlvbi5sZW5ndGggfHwgMCkpLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHByaXZhdGUgX2N1cnJlbnRQYWdlJDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KDApO1xuICBjdXJyZW50UGFnZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9jdXJyZW50UGFnZSQsIHRoaXMudGFibGUkXSkucGlwZShcbiAgICBtYXAoKFtwYWdlLCB0YWJsZV06IGFueSkgPT4ge1xuICAgICAgLy8gZGV0ZXJtaW5lIGxhc3QgcGFnZVxuICAgICAgY29uc3QgbGFzdFBhZ2UgPSBNYXRoLmNlaWwodGFibGUuaW5mby5yZWNvcmRzIC8gKHRhYmxlLmNvbmZpZz8ucGFnaW5hdGlvbj8ubGVuZ3RoIHx8IHRhYmxlLmluZm8ucmVjb3JkcykpIC0gMTtcbiAgICAgIC8vIGRldGVybWluZSBtYXgvbWluIHBvc2l0aW9uXG4gICAgICByZXR1cm4gK3BhZ2UgPCAwID8gMCA6ICtwYWdlID4gbGFzdFBhZ2UgPyBsYXN0UGFnZSA6ICtwYWdlO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29sc3BhbiQgPSB0aGlzLnRhYmxlQ29uZmlnJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoY29uZmlnKSA9PlxuICAgICAgY29uZmlnLmNvbHVtbnNcbiAgICAgICAgPyBvZihPYmplY3QudmFsdWVzKGNvbmZpZy5jb2x1bW5zIHx8IGNvbmZpZy5yb3dzIHx8IHt9KS5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZS5oaWRkZW4gIT09IHRydWUpLmxlbmd0aClcbiAgICAgICAgOiB0aGlzLmRhdGEkLnBpcGUobWFwKChkYXRhKSA9PiBkYXRhLmxlbmd0aCArIDEpKVxuICAgIClcbiAgKTtcblxuICBzb3J0KHByb3BlcnR5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdTb3J0T3JkZXIgPVxuICAgICAgdGhpcy5fc29ydEJ5Py5zb3J0QnkgIT09IHByb3BlcnR5IHx8IHRoaXMuX3NvcnRCeT8uc29ydEJ5T3JkZXIgPT09IE9yZGVyLkRFU0MgfHwgIXRoaXMuX3NvcnRCeS5zb3J0QnlPcmRlclxuICAgICAgICA/IE9yZGVyLkFTQ1xuICAgICAgICA6IE9yZGVyLkRFU0M7XG4gICAgY29uc3QgbmV3U29ydEJ5ID0ge1xuICAgICAgc29ydEJ5OiBwcm9wZXJ0eSxcbiAgICAgIHNvcnRCeU9yZGVyOiBuZXdTb3J0T3JkZXIsXG4gICAgfTtcbiAgICB0aGlzLnNvcnRCeSQubmV4dChuZXdTb3J0QnkpO1xuICAgIHRoaXMuX3NvcnRCeSA9IG5ld1NvcnRCeTtcbiAgfVxuXG4gIGNvbHVtbk9yZGVyID0gKGE6IEtleVZhbHVlPHN0cmluZywgVGFibGVDb2x1bW4+LCBiOiBLZXlWYWx1ZTxzdHJpbmcsIFRhYmxlQ29sdW1uPik6IG51bWJlciA9PiB7XG4gICAgcmV0dXJuIChhLnZhbHVlLm9yZGVyIHx8IDApIC0gKGIudmFsdWUub3JkZXIgfHwgMCk7XG4gIH07XG5cbiAgbmVzdGVkVmFsdWUob2JqZWN0OiBhbnksIG1hcFRvOiBzdHJpbmcsIG1pc3NpbmdWYWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCA9IG51bGwpOiB1bmtub3duIHtcbiAgICBjb25zdCBsZXZlbHMgPSBtYXBUb1xuICAgICAgLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIGxldmVscy5yZWR1Y2UoKHByZXZpb3VzVmFsdWUsIGN1cnJlbnRWYWx1ZSwgaW5kZXgpID0+IChwcmV2aW91c1ZhbHVlKVtjdXJyZW50VmFsdWVdIHx8IChpbmRleCA9PT0gbGV2ZWxzLmxlbmd0aCAtIDEgPyBtaXNzaW5nVmFsdWUgOiB7fSksIG9iamVjdCk7XG4gIH1cbn1cbiIsIjx0YWJsZSBbbmdDbGFzc109XCIodGFibGVDb25maWckIHwgYXN5bmMpPy5jbGFzcyB8fCAndGFibGUnXCIgW2NsYXNzLnRhYmxlLW1vYmlsZV09XCIodGFibGVDb25maWckIHwgYXN5bmMpPy5tb2JpbGVMYXlvdXRcIj5cbiAgPHRoZWFkPlxuICAgIDx0clxuICAgICAgKm5nSWY9XCJ7XG4gICAgICAgIGNvbmZpZzogKHRhYmxlQ29uZmlnJCB8IGFzeW5jKSEsXG4gICAgICAgIGxvYWRpbmc6IGxvYWRpbmckIHwgYXN5bmNcbiAgICAgIH0gYXMgdGFibGVcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB0YWJsZT8uY29uZmlnPy5jb2x1bW5zIHwga2V5dmFsdWU6IGNvbHVtbk9yZGVyXCI+XG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiIWNvbHVtbi52YWx1ZT8uaGlkZGVuXCJcbiAgICAgICAgICBuZ0NsYXNzPVwie3sgY29sdW1uLnZhbHVlPy5zb3J0YWJsZSA/ICdzb3J0ICcgOiAnJyB9fSB7eyBzb3J0QnkkIHwgYXN5bmMgfCBzb3J0Q2xhc3M6IGNvbHVtbi5rZXkgfX0ge3tcbiAgICAgICAgICAgIChjb2x1bW4ua2V5IHwgZGFzaENhc2UpICsgJy1jb2x1bW4nXG4gICAgICAgICAgfX0ge3sgY29sdW1uLnZhbHVlLmNsYXNzIH19XCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwidGFibGUubG9hZGluZ1wiXG4gICAgICAgICAgKGNsaWNrKT1cInRhYmxlLmxvYWRpbmcgfHwgIWNvbHVtbi52YWx1ZT8uc29ydGFibGUgfHwgc29ydChjb2x1bW4ua2V5KVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1zb3J0XT1cInNvcnRCeSQgfCBhc3luYyB8IHNvcnRDbGFzczogY29sdW1uLmtleTp0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29sdW1uLnZhbHVlPy5oZWFkZXIgIT09IGZhbHNlXCI+e3sgY29sdW1uLnZhbHVlPy5oZWFkZXIgfHwgY29sdW1uLmtleSB8IGNhcGl0YWxDYXNlIH19PC9zcGFuPlxuICAgICAgICA8L3RoPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKCh0YWJsZT8uY29uZmlnPy5yb3dzIHwga2V5dmFsdWU6IGNvbHVtbk9yZGVyKSB8fCBbXSlbMF0gYXMgaGVhZGVyUm93XCI+XG4gICAgICAgIDx0aFxuICAgICAgICAgIGNsYXNzPVwicm93LWhlYWRlclwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1zb3J0XT1cInNvcnRCeSQgfCBhc3luYyB8IHNvcnRDbGFzczogaGVhZGVyUm93LmtleTp0cnVlXCJcbiAgICAgICAgICBuZ0NsYXNzPVwie3sgaGVhZGVyUm93LnZhbHVlPy5zb3J0YWJsZSA/ICdzb3J0ICcgOiAnJyB9fSB7eyBzb3J0QnkkIHwgYXN5bmMgfCBzb3J0Q2xhc3M6IGhlYWRlclJvdy5rZXkgfX0ge3tcbiAgICAgICAgICAgIChoZWFkZXJSb3cua2V5IHwgZGFzaENhc2UpICsgJy1jb2x1bW4nXG4gICAgICAgICAgfX1cIlxuICAgICAgICAgIChjbGljayk9XCJ0YWJsZS5sb2FkaW5nIHx8ICFoZWFkZXJSb3cudmFsdWU/LnNvcnRhYmxlIHx8IHNvcnQoaGVhZGVyUm93LmtleSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlclJvdz8udmFsdWU/LmhlYWRlciAhPT0gZmFsc2VcIj57e1xuICAgICAgICAgICAgaGVhZGVyUm93Py52YWx1ZT8uaGVhZGVyIHx8IGhlYWRlclJvdy5rZXkgfCBjYXBpdGFsQ2FzZVxuICAgICAgICAgIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mICgodGFibGUkIHwgYXN5bmMpPy5kYXRhIHx8IFtdKVswXVwiIG5nQ2xhc3M9XCJ7eyBoZWFkZXJSb3cudmFsdWU/LmNsYXNzIH19XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiXG4gICAgICAgICAgICAgICh0YWJsZS5jb25maWc/LnJvd3MgfHwge30pW2hlYWRlclJvdy5rZXldLnRlbXBsYXRlUmVmXG4gICAgICAgICAgICAgICAgPyB0ZW1wbGF0ZVJlZlxuICAgICAgICAgICAgICAgIDogKHRhYmxlLmNvbmZpZz8ucm93cyB8fCB7fSlbaGVhZGVyUm93LmtleV0udHJhbnNmb3JtXG4gICAgICAgICAgICAgICAgPyB0cmFuc2Zvcm1EYXRhXG4gICAgICAgICAgICAgICAgOiByYXdEYXRhXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgcm93OiBjb2x1bW4sXG4gICAgICAgICAgICAgIGNvbHVtbjogaGVhZGVyUm93LFxuICAgICAgICAgICAgICB0cmFuc2Zvcm06ICh0YWJsZS5jb25maWc/LnJvd3MgfHwge30pW2hlYWRlclJvdy5rZXldLnRyYW5zZm9ybSxcbiAgICAgICAgICAgICAgdGVtcGxhdGVSZWY6ICh0YWJsZS5jb25maWc/LnJvd3MgfHwge30pW2hlYWRlclJvdy5rZXldLnRlbXBsYXRlUmVmLFxuICAgICAgICAgICAgICBpbmRleDogMFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RoPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90cj5cbiAgPC90aGVhZD5cbiAgPHRib2R5ICpuZ0lmPVwibG9hZGluZyQgfCBhc3luYzsgZWxzZSB0YWJsZUNvbnRlbnRcIj5cbiAgICA8dHI+XG4gICAgICA8dGQgY2xhc3M9XCJwLTBcIiBbY29sU3Bhbl09XCJjb2xzcGFuJCB8IGFzeW5jXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIi50YWJsZS1sb2FkaW5nXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICA8L3Rib2R5PlxuPC90YWJsZT5cbjxuZy10ZW1wbGF0ZSAjdGFibGVDb250ZW50PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHRhYmxlJCB8IGFzeW5jKSEgYXMgdGFibGVcIj5cbiAgICA8dGJvZHkgKm5nSWY9XCIodGFibGUhLmRhdGEhWzBdIHx8IHRhYmxlIS5kYXRhISkubGVuZ3RoID4gMDsgZWxzZSBub0RhdGFcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZS5jb25maWcuY29sdW1uc1wiPlxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiB0YWJsZSEuZGF0YSFbKGN1cnJlbnRQYWdlJCB8IGFzeW5jKSB8fCAwXTsgbGV0IGkgPSBpbmRleFwiIFthdHRyLmlkXT1cIid0YWJsZVJvd18nICsgaVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB0YWJsZS5jb25maWc/LmNvbHVtbnMgfCBrZXl2YWx1ZTogY29sdW1uT3JkZXJcIj5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAqbmdJZj1cIiFjb2x1bW4udmFsdWU/LmhpZGRlblwiXG4gICAgICAgICAgICAgIG5nQ2xhc3M9XCJ7eyAoY29sdW1uLmtleSB8IGRhc2hDYXNlKSArICctY29sdW1uJyB9fSB7eyBjb2x1bW4udmFsdWU/LmNsYXNzIH19XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb2x1bW4udmFsdWU/Lm1vYmlsZUhlYWRlciAmJiB0YWJsZS5jb25maWc/Lm1vYmlsZUxheW91dFwiIGNsYXNzPVwibW9iaWxlLWhlYWRlclwiPnt7XG4gICAgICAgICAgICAgICAgY29sdW1uLnZhbHVlPy5tb2JpbGVIZWFkZXIgIT09IHRydWVcbiAgICAgICAgICAgICAgICAgID8gY29sdW1uLnZhbHVlPy5tb2JpbGVIZWFkZXJcbiAgICAgICAgICAgICAgICAgIDogKGNvbHVtbi52YWx1ZT8uaGVhZGVyIHx8IGNvbHVtbi5rZXkgfCBjYXBpdGFsQ2FzZSlcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJcbiAgICAgICAgICAgICAgICAgIChzZWFyY2hCeSQgfCBhc3luYykgJiYgISh0YWJsZS5jb25maWc/LmNvbHVtbnMgfHwge30pW2NvbHVtbi5rZXldLnRlbXBsYXRlUmVmXG4gICAgICAgICAgICAgICAgICAgID8gaGlnaGxpZ2h0ZWRcbiAgICAgICAgICAgICAgICAgICAgOiAodGFibGUuY29uZmlnPy5jb2x1bW5zIHx8IHt9KVtjb2x1bW4ua2V5XS50ZW1wbGF0ZVJlZlxuICAgICAgICAgICAgICAgICAgICA/IHRlbXBsYXRlUmVmXG4gICAgICAgICAgICAgICAgICAgIDogKHRhYmxlLmNvbmZpZz8uY29sdW1ucyB8fCB7fSlbY29sdW1uLmtleV0udHJhbnNmb3JtXG4gICAgICAgICAgICAgICAgICAgID8gdHJhbnNmb3JtRGF0YVxuICAgICAgICAgICAgICAgICAgICA6IHJhd0RhdGFcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICByb3c6IHJvdyxcbiAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLFxuICAgICAgICAgICAgICAgICAgc2VhcmNoOiAoc2VhcmNoQnkkIHwgYXN5bmMpLFxuICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAodGFibGUuY29uZmlnPy5jb2x1bW5zIHx8IHt9KVtjb2x1bW4ua2V5XS50cmFuc2Zvcm0sXG4gICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVJlZjogKHRhYmxlLmNvbmZpZz8uY29sdW1ucyB8fCB7fSlbY29sdW1uLmtleV0udGVtcGxhdGVSZWYsXG4gICAgICAgICAgICAgICAgICBpbmRleDogaVxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGUuY29uZmlnLnJvd3NcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIHRhYmxlPy5jb25maWc/LnJvd3MgfCBrZXl2YWx1ZTogY29sdW1uT3JkZXIgfCBzbGljZTogMTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDx0ciAqbmdJZj1cIiFyb3cudmFsdWU/LmhpZGRlblwiIFthdHRyLmlkXT1cIid0YWJsZVJvd18nICsgaVwiIG5nQ2xhc3M9XCJ7eyAocm93LmtleSB8IGRhc2hDYXNlKSArICctcm93JyB9fVwiPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwicm93LWhlYWRlclwiPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvdy52YWx1ZS5tb2JpbGVIZWFkZXJcIiBjbGFzcz1cIm1vYmlsZS1oZWFkZXJcIj57e1xuICAgICAgICAgICAgICAgIHJvdy52YWx1ZT8ubW9iaWxlSGVhZGVyICE9PSB0cnVlXG4gICAgICAgICAgICAgICAgICA/IHJvdy52YWx1ZT8ubW9iaWxlSGVhZGVyXG4gICAgICAgICAgICAgICAgICA6IChyb3cudmFsdWU/LmhlYWRlciB8fCByb3cua2V5IHwgY2FwaXRhbENhc2UpXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICB7eyByb3cudmFsdWU/LmhlYWRlciB8fCByb3cua2V5IHwgY2FwaXRhbENhc2UgfX1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiAodGFibGU/LmRhdGEgfHwgW10pWzBdXCIgbmdDbGFzcz1cInt7IHJvdy52YWx1ZT8uY2xhc3MgfX1cIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlxuICAgICAgICAgICAgICAgICAgKHRhYmxlLmNvbmZpZz8ucm93cyB8fCB7fSlbcm93LmtleV0udGVtcGxhdGVSZWZcbiAgICAgICAgICAgICAgICAgICAgPyB0ZW1wbGF0ZVJlZlxuICAgICAgICAgICAgICAgICAgICA6ICh0YWJsZS5jb25maWc/LnJvd3MgfHwge30pW3Jvdy5rZXldLnRyYW5zZm9ybVxuICAgICAgICAgICAgICAgICAgICA/IHRyYW5zZm9ybURhdGFcbiAgICAgICAgICAgICAgICAgICAgOiByYXdEYXRhXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgcm93OiBjb2x1bW4sXG4gICAgICAgICAgICAgICAgICBjb2x1bW46IHJvdyxcbiAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogKHRhYmxlLmNvbmZpZz8ucm93cyB8fCB7fSlbcm93LmtleV0udHJhbnNmb3JtLFxuICAgICAgICAgICAgICAgICAgdGVtcGxhdGVSZWY6ICh0YWJsZS5jb25maWc/LnJvd3MgfHwge30pW3Jvdy5rZXldLnRlbXBsYXRlUmVmLFxuICAgICAgICAgICAgICAgICAgaW5kZXg6IGlcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3Rib2R5PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI25vRGF0YT5cbiAgPHRib2R5PlxuICAgIDx0cj5cbiAgICAgIDx0ZCBjbGFzcz1cInAtMFwiIFtjb2xTcGFuXT1cImNvbHNwYW4kIHwgYXN5bmNcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLnRhYmxlLW5vLWRhdGFcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvdGJvZHk+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNoaWdobGlnaHRlZCBsZXQtcm93PVwicm93XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiIGxldC1zZWFyY2g9XCJzZWFyY2hcIj5cbiAgPGRpdiBbaW5uZXJIVE1MXT1cInJvd1tjb2x1bW4ua2V5XSB8IGhpZ2hsaWdodDogc2VhcmNoXCI+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNyYXdEYXRhIGxldC1yb3c9XCJyb3dcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIHt7IHJvd1tjb2x1bW4ua2V5XSB9fVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjdHJhbnNmb3JtRGF0YSBsZXQtcm93PVwicm93XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiIGxldC10cmFuc2Zvcm09XCJ0cmFuc2Zvcm1cIj5cbiAge3sgcm93W2NvbHVtbi5rZXldIHwgZHluYW1pY1BpcGU6IHRyYW5zZm9ybS5waXBlOnRyYW5zZm9ybT8uYXJncyB9fVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVSZWYgbGV0LXJvdz1cInJvd1wiIGxldC1jb2x1bW49XCJjb2x1bW5cIiBsZXQtaW5kZXg9XCJpbmRleFwiIGxldC10ZW1wbGF0ZVJlZj1cInRlbXBsYXRlUmVmXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVJlZlwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIGNvbDogY29sdW1uLCBpbmRleDogaW5kZXggfVwiXG4gID48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvY29yZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvY29yZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixLQUFLLEVBQ0wsWUFBWSxFQUVaLEVBQUUsRUFDRixhQUFhLEVBQ2IsT0FBTyxHQUNSLE1BQU0sTUFBTSxDQUFDO0FBR2QsT0FBTyxFQUNMLEdBQUcsRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsRUFDVCxjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7QUFXdEQsTUFBTSxPQUFPLGFBQWE7SUFOMUI7UUF1Q1UsY0FBUyxHQUNmLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLFlBQU8sR0FBdUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUk1Qyx5Q0FBeUM7UUFDakMsZUFBVSxHQUNoQixJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixjQUFTLEdBQThCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6RCxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQ2IsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FB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RyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQ25ELE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQzs7MkdBek5VLGFBQWE7K0ZBQWIsYUFBYSw2SkNqQzFCLDAxUUFvUEE7NEZEbk5hLGFBQWE7a0JBTnpCLFNBQVM7K0JBQ0UsdUJBQXVCLFVBRXpCLEVBQUUsbUJBQ08sdUJBQXVCLENBQUMsTUFBTTs4QkFHbEMsT0FBTztzQkFBbkIsS0FBSztnQkFJRixJQUFJO3NCQURQLEtBQUs7Z0JBTUYsTUFBTTtzQkFEVCxLQUFLO2dCQU1GLE1BQU07c0JBRFQsS0FBSztnQkFNRixJQUFJO3NCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBFTVBUWSxcbiAgaXNPYnNlcnZhYmxlLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgUmVwbGF5U3ViamVjdCxcbiAgU3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUYWJsZUNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL3RhYmxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG4gIHdpdGhMYXRlc3RGcm9tLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4vbW9kZWxzL3RhYmxlLWNvbHVtbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT3JkZXIgfSBmcm9tICcuL2VudW1zL29yZGVyLmVudW0nO1xuaW1wb3J0IHsgY2h1bmssIHNlYXJjaCB9IGZyb20gJy4vdXRpbGl0aWVzL3V0aWxpdGllcyc7XG5pbXBvcnQgeyBUYWJsZVJvdyB9IGZyb20gJy4vbW9kZWxzL3RhYmxlLXJvdy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFibGVTb3J0IH0gZnJvbSAnLi9tb2RlbHMvdGFibGUtc29ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFibGVNZXRhIH0gZnJvbSAnLi9tb2RlbHMvdGFibGUtbWV0YS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhbmd1bGFyLWdlbmVyaWMtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb3JlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc2V0IGxvYWRpbmcoaXNMb2FkaW5nOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbikge1xuICAgIHRoaXMuX2xvYWRpbmckLm5leHQoaXNMb2FkaW5nKTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgcGFnZShwYWdlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9jdXJyZW50UGFnZSQubmV4dChwYWdlKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBzZWFyY2goc3RyaW5nOiBPYnNlcnZhYmxlPHN0cmluZz4gfCBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5fc2VhcmNoQnkkLm5leHQoc3RyaW5nKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBjb25maWcoY29uZmlnOiBPYnNlcnZhYmxlPFRhYmxlQ29uZmlnPiB8IFRhYmxlQ29uZmlnKSB7XG4gICAgdGhpcy5fdGFibGVDb25maWckLm5leHQoY29uZmlnKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBkYXRhKGRhdGE6IE9ic2VydmFibGU8QXJyYXk8VGFibGVSb3c+PiB8IEFycmF5PFRhYmxlUm93Pikge1xuICAgIHRoaXMuX2RhdGEkLm5leHQoZGF0YSk7XG4gIH1cblxuICBnZXQgbG9hZGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmckLnBpcGUoXG4gICAgICBzdGFydFdpdGgoZmFsc2UpLFxuICAgICAgbWFwKCh2YWx1ZSkgPT4gKGlzT2JzZXJ2YWJsZSh2YWx1ZSkgPyB2YWx1ZSA6IG9mKHZhbHVlKSkpLFxuICAgICAgc3dpdGNoTWFwKChvYnMpID0+IG9icyksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkaW5nJDogUmVwbGF5U3ViamVjdDxPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbj4gPVxuICAgIG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICBzb3J0QnkkOiBTdWJqZWN0PFRhYmxlU29ydD4gPSBuZXcgU3ViamVjdCgpO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF9zb3J0Qnk6IFRhYmxlU29ydCB8IHVuZGVmaW5lZDtcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF9zZWFyY2hCeSQ6IFJlcGxheVN1YmplY3Q8T2JzZXJ2YWJsZTxzdHJpbmc+IHwgc3RyaW5nIHwgbnVsbD4gPVxuICAgIG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICBzZWFyY2hCeSQ6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4gPSB0aGlzLl9zZWFyY2hCeSQucGlwZShcbiAgICBzdGFydFdpdGgoJycpLFxuICAgIG1hcCgodmFsdWUpID0+IChpc09ic2VydmFibGUodmFsdWUpID8gdmFsdWUgOiBvZih2YWx1ZSkpKSxcbiAgICBzd2l0Y2hNYXAoKG9icykgPT4gb2JzKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByaXZhdGUgX3RhYmxlQ29uZmlnJDogUmVwbGF5U3ViamVjdDxUYWJsZUNvbmZpZyB8IE9ic2VydmFibGU8VGFibGVDb25maWc+PiA9XG4gICAgbmV3IFJlcGxheVN1YmplY3QoMSk7XG4gIHRhYmxlQ29uZmlnJDogT2JzZXJ2YWJsZTxUYWJsZUNvbmZpZz4gPSB0aGlzLl90YWJsZUNvbmZpZyQucGlwZShcbiAgICBtYXAoKHZhbHVlKSA9PiAoaXNPYnNlcnZhYmxlKHZhbHVlKSA/IHZhbHVlIDogb2YodmFsdWUpKSksXG4gICAgc3dpdGNoTWFwKChvYnMpID0+IG9icyksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBwcml2YXRlIF9kYXRhJDogUmVwbGF5U3ViamVjdDxBcnJheTxUYWJsZVJvdz4gfCBPYnNlcnZhYmxlPEFycmF5PFRhYmxlUm93Pj4+ID1cbiAgICBuZXcgUmVwbGF5U3ViamVjdCgxKTtcbiAgZGF0YSQ6IE9ic2VydmFibGU8QXJyYXk8VGFibGVSb3c+PiA9IHRoaXMuX2RhdGEkLnBpcGUoXG4gICAgbWFwKCh2YWx1ZSkgPT4gKGlzT2JzZXJ2YWJsZSh2YWx1ZSkgPyB2YWx1ZSA6IG9mKHZhbHVlKSkpLFxuICAgIHN3aXRjaE1hcCgob2JzKSA9PiBjb21iaW5lTGF0ZXN0KFtvYnNdKSksXG4gICAgd2l0aExhdGVzdEZyb20odGhpcy50YWJsZUNvbmZpZyQpLFxuICAgIG1hcCgoW1tkYXRhXSwgY29uZmlnXSkgPT4ge1xuICAgICAgLy8gaWYgY29sdW1ucyBvciByb3dzIGNvbnRhaW5zIGNvbmZpZyBmb3IgbWFwVG8uLi5cbiAgICAgIGlmIChcbiAgICAgICAgKGNvbmZpZy5jb2x1bW5zICYmXG4gICAgICAgICAgISFPYmplY3QudmFsdWVzKGNvbmZpZy5jb2x1bW5zKS5maW5kKChjb2x1bW4pID0+ICEhY29sdW1uLm1hcFRvKSkgfHxcbiAgICAgICAgKGNvbmZpZy5yb3dzICYmXG4gICAgICAgICAgISFPYmplY3QudmFsdWVzKGNvbmZpZy5yb3dzKS5maW5kKChjb2x1bW4pID0+ICEhY29sdW1uLm1hcFRvKSlcbiAgICAgICkge1xuICAgICAgICAvLyAuLi5tYXAgZGF0YSB0byBuZXcga2V5cyBvbiByb3cuLi5cbiAgICAgICAgZGF0YSA9IGRhdGEubWFwKChyb3cpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdLZXlzID0gT2JqZWN0LmVudHJpZXMoY29uZmlnLmNvbHVtbnMgfHwgY29uZmlnLnJvd3MgfHwgW10pXG4gICAgICAgICAgICAuZmlsdGVyKChba2V5LCB2YWx1ZV0pID0+ICEhdmFsdWUubWFwVG8pIC8vIGFkZCBrZXlzIGZvciBjb2x1bW5zIHdpdGggbWFwVG8gY29uZmlnLi4uXG4gICAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgICAocHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlKSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLnByZXZpb3VzVmFsdWUsXG4gICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgICAgICAgIFtjdXJyZW50VmFsdWVbMF1dOiB0aGlzLm5lc3RlZFZhbHVlKFxuICAgICAgICAgICAgICAgICAgcm93LFxuICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlWzFdLm1hcFRvIS5wYXRoLFxuICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlWzFdLm1hcFRvPy5taXNzaW5nVmFsdWVcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ucm93LCAuLi5uZXdLZXlzIH07XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgZGF0YSwgY29uZmlnIH07XG4gICAgfSksXG4gICAgc3dpdGNoTWFwKChvYnMpID0+XG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgb2Yob2JzKSxcbiAgICAgICAgdGhpcy5zb3J0QnkkLnBpcGUoc3RhcnRXaXRoKEVNUFRZKSksXG4gICAgICAgIHRoaXMuc2VhcmNoQnkkLFxuICAgICAgXSlcbiAgICApLFxuICAgIG1hcCgoW3RhYmxlLCBzb3J0QnksIHNlYXJjaEJ5XSkgPT4ge1xuICAgICAgLy8gY3JlYXRlIGEgbmV3IGFycmF5IHJlZmVyZW5jZSBhbmQgc29ydCBuZXcgYXJyYXkgKHByZXZlbnQgbXV0YXRpbmcgZXhpc3Rpbmcgc3RhdGUpXG4gICAgICB0YWJsZS5kYXRhID0gWy4uLnRhYmxlLmRhdGFdO1xuICAgICAgcmV0dXJuICFzb3J0QnlcbiAgICAgICAgPyBzZWFyY2hCeVxuICAgICAgICAgID8gc2VhcmNoKHNlYXJjaEJ5LCBmYWxzZSwgdGFibGUuZGF0YSwgdGFibGUuY29uZmlnKVxuICAgICAgICAgIDogdGFibGUuZGF0YVxuICAgICAgICA6IChzZWFyY2hCeVxuICAgICAgICAgICAgPyBzZWFyY2goc2VhcmNoQnksIGZhbHNlLCB0YWJsZS5kYXRhLCB0YWJsZS5jb25maWcpXG4gICAgICAgICAgICA6IHRhYmxlLmRhdGFcbiAgICAgICAgICApPy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICAvLyBUT0RPOiBpbXByb3ZlIGxvZ2ljXG4gICAgICAgICAgICBjb25zdCB0eXBlZCA9IHNvcnRCeSBhcyBUYWJsZVNvcnQ7XG4gICAgICAgICAgICByZXR1cm4gYVt0eXBlZC5zb3J0QnldID4gYlt0eXBlZC5zb3J0QnldXG4gICAgICAgICAgICAgID8gdHlwZWQuc29ydEJ5T3JkZXIgPT09IE9yZGVyLkFTQ1xuICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgIDogLTFcbiAgICAgICAgICAgICAgOiBiW3R5cGVkLnNvcnRCeV0gPiBhW3R5cGVkLnNvcnRCeV1cbiAgICAgICAgICAgICAgPyB0eXBlZC5zb3J0QnlPcmRlciA9PT0gT3JkZXIuQVNDXG4gICAgICAgICAgICAgICAgPyAtMVxuICAgICAgICAgICAgICAgIDogMVxuICAgICAgICAgICAgICA6IDA7XG4gICAgICAgICAgfSk7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICB0YWJsZSQ6IE9ic2VydmFibGU8VGFibGVNZXRhPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuZGF0YSQsXG4gICAgdGhpcy50YWJsZUNvbmZpZyQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbc29ydGVkLCBjb25maWddKSA9PiB7XG4gICAgICAvLyBpZiBwYWdpbmF0aW9uIGlzIGRpc2FibGVkLi4uXG4gICAgICBpZiAoIWNvbmZpZy5wYWdpbmF0aW9uIHx8IGNvbmZpZy5wYWdpbmF0aW9uLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAvLyAuLi5yZXR1cm4gdW5hbHRlcmVkIGFycmF5XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YTogW3NvcnRlZF0sXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGluZm86IHsgcmVjb3Jkczogc29ydGVkLmxlbmd0aCwgcGFnZVRvdGFsOiAxIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyByZXR1cm4gcmVjb3JkIHNldFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogY2h1bmsoc29ydGVkLCArKGNvbmZpZy5wYWdpbmF0aW9uLmxlbmd0aCB8fCAwKSksXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgaW5mbzoge1xuICAgICAgICAgIHJlY29yZHM6IHNvcnRlZC5sZW5ndGgsXG4gICAgICAgICAgcGFnZVRvdGFsOiBNYXRoLmNlaWwoXG4gICAgICAgICAgICBzb3J0ZWQubGVuZ3RoIC8gKyhjb25maWcucGFnaW5hdGlvbi5sZW5ndGggfHwgMClcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHByaXZhdGUgX2N1cnJlbnRQYWdlJDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KDApO1xuICBjdXJyZW50UGFnZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9jdXJyZW50UGFnZSQsIHRoaXMudGFibGUkXSkucGlwZShcbiAgICBtYXAoKFtwYWdlLCB0YWJsZV06IGFueSkgPT4ge1xuICAgICAgLy8gZGV0ZXJtaW5lIGxhc3QgcGFnZVxuICAgICAgY29uc3QgbGFzdFBhZ2UgPVxuICAgICAgICBNYXRoLmNlaWwoXG4gICAgICAgICAgdGFibGUuaW5mby5yZWNvcmRzIC9cbiAgICAgICAgICAgICh0YWJsZS5jb25maWc/LnBhZ2luYXRpb24/Lmxlbmd0aCB8fCB0YWJsZS5pbmZvLnJlY29yZHMpXG4gICAgICAgICkgLSAxO1xuICAgICAgLy8gZGV0ZXJtaW5lIG1heC9taW4gcG9zaXRpb25cbiAgICAgIHJldHVybiArcGFnZSA8IDAgPyAwIDogK3BhZ2UgPiBsYXN0UGFnZSA/IGxhc3RQYWdlIDogK3BhZ2U7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBjb2xzcGFuJCA9IHRoaXMudGFibGVDb25maWckLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb25maWcpID0+XG4gICAgICBjb25maWcuY29sdW1uc1xuICAgICAgICA/IG9mKFxuICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhjb25maWcuY29sdW1ucyB8fCBjb25maWcucm93cyB8fCB7fSkuZmlsdGVyKFxuICAgICAgICAgICAgICAodmFsdWUpID0+IHZhbHVlLmhpZGRlbiAhPT0gdHJ1ZVxuICAgICAgICAgICAgKS5sZW5ndGhcbiAgICAgICAgICApXG4gICAgICAgIDogdGhpcy5kYXRhJC5waXBlKG1hcCgoZGF0YSkgPT4gZGF0YS5sZW5ndGggKyAxKSlcbiAgICApXG4gICk7XG5cbiAgc29ydChwcm9wZXJ0eTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmV3U29ydE9yZGVyID1cbiAgICAgIHRoaXMuX3NvcnRCeT8uc29ydEJ5ICE9PSBwcm9wZXJ0eSB8fFxuICAgICAgdGhpcy5fc29ydEJ5Py5zb3J0QnlPcmRlciA9PT0gT3JkZXIuREVTQyB8fFxuICAgICAgIXRoaXMuX3NvcnRCeS5zb3J0QnlPcmRlclxuICAgICAgICA/IE9yZGVyLkFTQ1xuICAgICAgICA6IE9yZGVyLkRFU0M7XG4gICAgY29uc3QgbmV3U29ydEJ5ID0ge1xuICAgICAgc29ydEJ5OiBwcm9wZXJ0eSxcbiAgICAgIHNvcnRCeU9yZGVyOiBuZXdTb3J0T3JkZXIsXG4gICAgfTtcbiAgICB0aGlzLnNvcnRCeSQubmV4dChuZXdTb3J0QnkpO1xuICAgIHRoaXMuX3NvcnRCeSA9IG5ld1NvcnRCeTtcbiAgfVxuXG4gIGNvbHVtbk9yZGVyID0gKFxuICAgIGE6IEtleVZhbHVlPHN0cmluZywgVGFibGVDb2x1bW4+LFxuICAgIGI6IEtleVZhbHVlPHN0cmluZywgVGFibGVDb2x1bW4+XG4gICk6IG51bWJlciA9PiB7XG4gICAgcmV0dXJuIChhLnZhbHVlLm9yZGVyIHx8IDApIC0gKGIudmFsdWUub3JkZXIgfHwgMCk7XG4gIH07XG5cbiAgbmVzdGVkVmFsdWUoXG4gICAgb2JqZWN0OiBhbnksXG4gICAgbWFwVG86IHN0cmluZyxcbiAgICBtaXNzaW5nVmFsdWU6IHN0cmluZyB8IG51bWJlciB8IG51bGwgPSBudWxsXG4gICk6IHVua25vd24ge1xuICAgIGNvbnN0IGxldmVscyA9IG1hcFRvLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIGxldmVscy5yZWR1Y2UoXG4gICAgICAocHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlLCBpbmRleCkgPT5cbiAgICAgICAgcHJldmlvdXNWYWx1ZVtjdXJyZW50VmFsdWVdIHx8XG4gICAgICAgIChpbmRleCA9PT0gbGV2ZWxzLmxlbmd0aCAtIDEgPyBtaXNzaW5nVmFsdWUgOiB7fSksXG4gICAgICBvYmplY3RcbiAgICApO1xuICB9XG59XG4iLCI8dGFibGVcbiAgW25nQ2xhc3NdPVwiKHRhYmxlQ29uZmlnJCB8IGFzeW5jKT8uY2xhc3MgfHwgJ3RhYmxlJ1wiXG4gIFtjbGFzcy50YWJsZS1tb2JpbGVdPVwiKHRhYmxlQ29uZmlnJCB8IGFzeW5jKT8ubW9iaWxlTGF5b3V0XCJcbiAgW2NsYXNzLnRhYmxlLWhvcml6b250YWxdPVwiKHRhYmxlQ29uZmlnJCB8IGFzeW5jKT8ucm93c1wiXG4gIFtjbGFzcy50YWJsZS1sb2FkaW5nXT1cImxvYWRpbmckIHwgYXN5bmNcIlxuICBbY2xhc3MuZ3Qtc3RpY2t5LXJvdy1oZWFkZXJdPVwiXG4gICAgKHRhYmxlQ29uZmlnJCB8IGFzeW5jKT8uc3RpY2t5SGVhZGVycz8ucm93ICYmICh0YWJsZUNvbmZpZyQgfCBhc3luYyk/LnJvd3NcbiAgXCJcbiAgW2NsYXNzLmd0LXN0aWNreS1jb2x1bW4taGVhZGVyXT1cIlxuICAgICh0YWJsZUNvbmZpZyQgfCBhc3luYyk/LnN0aWNreUhlYWRlcnM/LmNvbHVtblxuICBcIlxuICBbYXR0ci5hcmlhLWJ1c3ldPVwiKGxvYWRpbmckIHwgYXN5bmMpID09PSB0cnVlID8gdHJ1ZSA6IG51bGxcIlxuPlxuICA8dGhlYWQ+XG4gICAgPHRyXG4gICAgICAqbmdJZj1cIntcbiAgICAgICAgY29uZmlnOiAodGFibGVDb25maWckIHwgYXN5bmMpISxcbiAgICAgICAgaXNMb2FkaW5nOiBsb2FkaW5nJCB8IGFzeW5jXG4gICAgICB9IGFzIHRhYmxlXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGU/LmNvbmZpZz8uY29sdW1ucyB8IGtleXZhbHVlOiBjb2x1bW5PcmRlclwiXG4gICAgICA+XG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiIWNvbHVtbi52YWx1ZT8uaGlkZGVuXCJcbiAgICAgICAgICBuZ0NsYXNzPVwie3sgKGNvbHVtbi5rZXkgfCBkYXNoQ2FzZSkgKyAnLWNvbHVtbicgfX0ge3tcbiAgICAgICAgICAgIGNvbHVtbi52YWx1ZS5jbGFzc1xuICAgICAgICAgIH19XCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwidGFibGUuaXNMb2FkaW5nXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLXNvcnRdPVwic29ydEJ5JCB8IGFzeW5jIHwgc29ydENsYXNzOiBjb2x1bW4ua2V5OnRydWVcIlxuICAgICAgICAgIFtjbGFzcy5ndC1zb3J0YWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICBzY29wZT1cImNvbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImNvbHVtbi52YWx1ZT8uc29ydGFibGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJndC1zb3J0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgdGFibGUuaXNMb2FkaW5nIHx8ICFjb2x1bW4udmFsdWU/LnNvcnRhYmxlIHx8IHNvcnQoY29sdW1uLmtleSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb2x1bW4udmFsdWU/LmhlYWRlciAhPT0gZmFsc2VcIj57e1xuICAgICAgICAgICAgICBjb2x1bW4udmFsdWU/LmhlYWRlciB8fCBjb2x1bW4ua2V5IHwgY2FwaXRhbENhc2VcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIiFjb2x1bW4udmFsdWU/LnNvcnRhYmxlICYmIGNvbHVtbi52YWx1ZT8uaGVhZGVyICE9PSBmYWxzZVwiXG4gICAgICAgICAgICA+e3sgY29sdW1uLnZhbHVlPy5oZWFkZXIgfHwgY29sdW1uLmtleSB8IGNhcGl0YWxDYXNlIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L3RoPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgKCh0YWJsZT8uY29uZmlnPy5yb3dzIHwga2V5dmFsdWU6IGNvbHVtbk9yZGVyKSB8fCBbXSlbMF0gYXMgaGVhZGVyUm93XG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDx0aFxuICAgICAgICAgIGNsYXNzPVwicm93LWhlYWRlclwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1zb3J0XT1cInNvcnRCeSQgfCBhc3luYyB8IHNvcnRDbGFzczogaGVhZGVyUm93LmtleTp0cnVlXCJcbiAgICAgICAgICBuZ0NsYXNzPVwie3sgaGVhZGVyUm93LnZhbHVlPy5zb3J0YWJsZSA/ICdzb3J0ICcgOiAnJyB9fSB7e1xuICAgICAgICAgICAgc29ydEJ5JCB8IGFzeW5jIHwgc29ydENsYXNzOiBoZWFkZXJSb3cua2V5XG4gICAgICAgICAgfX0ge3sgKGhlYWRlclJvdy5rZXkgfCBkYXNoQ2FzZSkgKyAnLWNvbHVtbicgfX1cIlxuICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgIHRhYmxlLmlzTG9hZGluZyB8fCAhaGVhZGVyUm93LnZhbHVlPy5zb3J0YWJsZSB8fCBzb3J0KGhlYWRlclJvdy5rZXkpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBzY29wZT1cImNvbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyUm93Py52YWx1ZT8uaGVhZGVyICE9PSBmYWxzZVwiPnt7XG4gICAgICAgICAgICBoZWFkZXJSb3c/LnZhbHVlPy5oZWFkZXIgfHwgaGVhZGVyUm93LmtleSB8IGNhcGl0YWxDYXNlXG4gICAgICAgICAgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiAoKHRhYmxlJCB8IGFzeW5jKT8uZGF0YSB8fCBbXSlbMF1cIlxuICAgICAgICAgIG5nQ2xhc3M9XCJ7eyBoZWFkZXJSb3cudmFsdWU/LmNsYXNzIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlxuICAgICAgICAgICAgICAodGFibGUuY29uZmlnPy5yb3dzIHx8IHt9KVtoZWFkZXJSb3cua2V5XS50ZW1wbGF0ZVJlZlxuICAgICAgICAgICAgICAgID8gdGVtcGxhdGVSZWZcbiAgICAgICAgICAgICAgICA6ICh0YWJsZS5jb25maWc/LnJvd3MgfHwge30pW2hlYWRlclJvdy5rZXldLnRyYW5zZm9ybVxuICAgICAgICAgICAgICAgID8gdHJhbnNmb3JtRGF0YVxuICAgICAgICAgICAgICAgIDogcmF3RGF0YVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgIHJvdzogY29sdW1uLFxuICAgICAgICAgICAgICBjb2x1bW46IGhlYWRlclJvdyxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiAodGFibGUuY29uZmlnPy5yb3dzIHx8IHt9KVtoZWFkZXJSb3cua2V5XS50cmFuc2Zvcm0sXG4gICAgICAgICAgICAgIHRlbXBsYXRlUmVmOiAodGFibGUuY29uZmlnPy5yb3dzIHx8IHt9KVtoZWFkZXJSb3cua2V5XVxuICAgICAgICAgICAgICAgIC50ZW1wbGF0ZVJlZixcbiAgICAgICAgICAgICAgaW5kZXg6IDBcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90aD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdHI+XG4gIDwvdGhlYWQ+XG4gIDx0Ym9keSAqbmdJZj1cImxvYWRpbmckIHwgYXN5bmM7IGVsc2UgdGFibGVDb250ZW50XCI+XG4gICAgPHRyPlxuICAgICAgPHRkIGNsYXNzPVwicC0wXCIgW2NvbFNwYW5dPVwiY29sc3BhbiQgfCBhc3luY1wiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCIudGFibGUtbG9hZGluZ1wiPjwvbmctY29udGVudD5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC90Ym9keT5cbjwvdGFibGU+XG48bmctdGVtcGxhdGUgI3RhYmxlQ29udGVudD5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih0YWJsZSQgfCBhc3luYykhIGFzIHRhYmxlXCI+XG4gICAgPHRib2R5ICpuZ0lmPVwiKHRhYmxlIS5kYXRhIVswXSB8fCB0YWJsZSEuZGF0YSEpLmxlbmd0aCA+IDA7IGVsc2Ugbm9EYXRhXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGUuY29uZmlnLmNvbHVtbnNcIj5cbiAgICAgICAgPHRyXG4gICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICBsZXQgcm93IG9mIHRhYmxlIS5kYXRhIVsoY3VycmVudFBhZ2UkIHwgYXN5bmMpIHx8IDBdO1xuICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2F0dHIuaWRdPVwiJ3RhYmxlUm93XycgKyBpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGUuY29uZmlnPy5jb2x1bW5zIHwga2V5dmFsdWU6IGNvbHVtbk9yZGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nSWY9XCIhY29sdW1uLnZhbHVlPy5oaWRkZW5cIlxuICAgICAgICAgICAgICBuZ0NsYXNzPVwie3sgKGNvbHVtbi5rZXkgfCBkYXNoQ2FzZSkgKyAnLWNvbHVtbicgfX0ge3tcbiAgICAgICAgICAgICAgICBjb2x1bW4udmFsdWU/LmNsYXNzXG4gICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICB0YWJsZS5jb25maWc/Lm1vYmlsZUxheW91dCAmJiBjb2x1bW4udmFsdWU/Lm1vYmlsZUhlYWRlclxuICAgICAgICAgICAgICAgICAgPyBjb2x1bW4udmFsdWU/Lm1vYmlsZUhlYWRlciAhPT0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICA/IGNvbHVtbi52YWx1ZT8ubW9iaWxlSGVhZGVyXG4gICAgICAgICAgICAgICAgICAgIDogKGNvbHVtbi52YWx1ZT8uaGVhZGVyIHx8IGNvbHVtbi5rZXkgfCBjYXBpdGFsQ2FzZSlcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiXG4gICAgICAgICAgICAgICAgICAoc2VhcmNoQnkkIHwgYXN5bmMpICYmXG4gICAgICAgICAgICAgICAgICAhKHRhYmxlLmNvbmZpZz8uY29sdW1ucyB8fCB7fSlbY29sdW1uLmtleV0udGVtcGxhdGVSZWZcbiAgICAgICAgICAgICAgICAgICAgPyBoaWdobGlnaHRlZFxuICAgICAgICAgICAgICAgICAgICA6ICh0YWJsZS5jb25maWc/LmNvbHVtbnMgfHwge30pW2NvbHVtbi5rZXldLnRlbXBsYXRlUmVmXG4gICAgICAgICAgICAgICAgICAgID8gdGVtcGxhdGVSZWZcbiAgICAgICAgICAgICAgICAgICAgOiAodGFibGUuY29uZmlnPy5jb2x1bW5zIHx8IHt9KVtjb2x1bW4ua2V5XS50cmFuc2Zvcm1cbiAgICAgICAgICAgICAgICAgICAgPyB0cmFuc2Zvcm1EYXRhXG4gICAgICAgICAgICAgICAgICAgIDogcmF3RGF0YVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgIHJvdzogcm93LFxuICAgICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW4sXG4gICAgICAgICAgICAgICAgICBzZWFyY2g6IChzZWFyY2hCeSQgfCBhc3luYyksXG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICh0YWJsZS5jb25maWc/LmNvbHVtbnMgfHwge30pW2NvbHVtbi5rZXldXG4gICAgICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0sXG4gICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVJlZjogKHRhYmxlLmNvbmZpZz8uY29sdW1ucyB8fCB7fSlbY29sdW1uLmtleV1cbiAgICAgICAgICAgICAgICAgICAgLnRlbXBsYXRlUmVmLFxuICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICBkYXRhOiB0YWJsZS5kYXRhWyhjdXJyZW50UGFnZSQgfCBhc3luYykgfHwgMF1cbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlLmNvbmZpZy5yb3dzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCByb3cgb2YgdGFibGU/LmNvbmZpZz8ucm93cyB8IGtleXZhbHVlOiBjb2x1bW5PcmRlciB8IHNsaWNlOiAxO1xuICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8dHJcbiAgICAgICAgICAgICpuZ0lmPVwiIXJvdy52YWx1ZT8uaGlkZGVuXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cIid0YWJsZVJvd18nICsgaVwiXG4gICAgICAgICAgICBuZ0NsYXNzPVwie3sgKHJvdy5rZXkgfCBkYXNoQ2FzZSkgKyAnLXJvdycgfX1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cInJvdy1oZWFkZXJcIiBzY29wZT1cInJvd1wiPlxuICAgICAgICAgICAgICB7eyByb3cudmFsdWU/LmhlYWRlciB8fCByb3cua2V5IHwgY2FwaXRhbENhc2UgfX1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiAodGFibGU/LmRhdGEgfHwgW10pWzBdOyBsZXQgeSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgbmdDbGFzcz1cInt7IHJvdy52YWx1ZT8uY2xhc3MgfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiXG4gICAgICAgICAgICAgICAgICAodGFibGUuY29uZmlnPy5yb3dzIHx8IHt9KVtyb3cua2V5XS50ZW1wbGF0ZVJlZlxuICAgICAgICAgICAgICAgICAgICA/IHRlbXBsYXRlUmVmXG4gICAgICAgICAgICAgICAgICAgIDogKHRhYmxlLmNvbmZpZz8ucm93cyB8fCB7fSlbcm93LmtleV0udHJhbnNmb3JtXG4gICAgICAgICAgICAgICAgICAgID8gdHJhbnNmb3JtRGF0YVxuICAgICAgICAgICAgICAgICAgICA6IHJhd0RhdGFcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICByb3c6IGNvbHVtbixcbiAgICAgICAgICAgICAgICAgIGNvbHVtbjogcm93LFxuICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAodGFibGUuY29uZmlnPy5yb3dzIHx8IHt9KVtyb3cua2V5XS50cmFuc2Zvcm0sXG4gICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVJlZjogKHRhYmxlLmNvbmZpZz8ucm93cyB8fCB7fSlbcm93LmtleV0udGVtcGxhdGVSZWYsXG4gICAgICAgICAgICAgICAgICBpbmRleDogdGFibGUuY29uZmlnPy5yb3dzID8geSA6IGksXG4gICAgICAgICAgICAgICAgICBkYXRhOiB0YWJsZS5kYXRhWyhjdXJyZW50UGFnZSQgfCBhc3luYykgfHwgMF1cbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3Rib2R5PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI25vRGF0YT5cbiAgPHRib2R5PlxuICAgIDx0cj5cbiAgICAgIDx0ZCBjbGFzcz1cInAtMFwiIFtjb2xTcGFuXT1cImNvbHNwYW4kIHwgYXN5bmNcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLnRhYmxlLW5vLWRhdGFcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvdGJvZHk+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNoaWdobGlnaHRlZCBsZXQtcm93PVwicm93XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiIGxldC1zZWFyY2g9XCJzZWFyY2hcIj5cbiAgPGRpdiBbaW5uZXJIVE1MXT1cInJvd1tjb2x1bW4ua2V5XSB8IGhpZ2hsaWdodDogc2VhcmNoXCI+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNyYXdEYXRhIGxldC1yb3c9XCJyb3dcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIHt7IHJvd1tjb2x1bW4ua2V5XSB9fVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZVxuICAjdHJhbnNmb3JtRGF0YVxuICBsZXQtcm93PVwicm93XCJcbiAgbGV0LWNvbHVtbj1cImNvbHVtblwiXG4gIGxldC10cmFuc2Zvcm09XCJ0cmFuc2Zvcm1cIlxuICBsZXQtZGF0YT1cImRhdGFcIlxuPlxuICB7eyByb3dbY29sdW1uLmtleV0gfCBkeW5hbWljUGlwZTogdHJhbnNmb3JtLnBpcGU6dHJhbnNmb3JtPy5hcmdzIH19XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlXG4gICN0ZW1wbGF0ZVJlZlxuICBsZXQtcm93PVwicm93XCJcbiAgbGV0LWNvbHVtbj1cImNvbHVtblwiXG4gIGxldC1pbmRleD1cImluZGV4XCJcbiAgbGV0LXRlbXBsYXRlUmVmPVwidGVtcGxhdGVSZWZcIlxuICBsZXQtZGF0YT1cImRhdGFcIlxuPlxuICA8bmctY29udGFpbmVyXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVSZWZcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICByb3c6IHJvdyxcbiAgICAgIGNvbDogY29sdW1uLFxuICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgZGF0YTogZGF0YVxuICAgIH1cIlxuICA+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -6,18 +6,35 @@ import { DashCasePipe } from './pipes/dash-case.pipe';
|
|
|
6
6
|
import { HighlightPipe } from './pipes/highlight.pipe';
|
|
7
7
|
import { CapitalCasePipe } from './pipes/capital-case.pipe';
|
|
8
8
|
import { DynamicPipe } from './pipes/dynamic.pipe';
|
|
9
|
+
import { GtDeltaComponent } from './gt-delta/gt-delta.component';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
11
|
export class GenericTableCoreModule {
|
|
11
12
|
}
|
|
12
|
-
GenericTableCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
13
|
-
GenericTableCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
GenericTableCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GenericTableCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
14
|
+
GenericTableCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GenericTableCoreModule, declarations: [CoreComponent,
|
|
15
|
+
SortClassPipe,
|
|
16
|
+
DashCasePipe,
|
|
17
|
+
HighlightPipe,
|
|
18
|
+
CapitalCasePipe,
|
|
19
|
+
CapitalCasePipe,
|
|
20
|
+
DynamicPipe,
|
|
21
|
+
GtDeltaComponent], imports: [CommonModule], exports: [CoreComponent, GtDeltaComponent] });
|
|
22
|
+
GenericTableCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GenericTableCoreModule, imports: [[CommonModule]] });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GenericTableCoreModule, decorators: [{
|
|
16
24
|
type: NgModule,
|
|
17
25
|
args: [{
|
|
18
|
-
declarations: [
|
|
26
|
+
declarations: [
|
|
27
|
+
CoreComponent,
|
|
28
|
+
SortClassPipe,
|
|
29
|
+
DashCasePipe,
|
|
30
|
+
HighlightPipe,
|
|
31
|
+
CapitalCasePipe,
|
|
32
|
+
CapitalCasePipe,
|
|
33
|
+
DynamicPipe,
|
|
34
|
+
GtDeltaComponent,
|
|
35
|
+
],
|
|
19
36
|
imports: [CommonModule],
|
|
20
|
-
exports: [CoreComponent],
|
|
37
|
+
exports: [CoreComponent, GtDeltaComponent],
|
|
21
38
|
}]
|
|
22
39
|
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBZ0JqRSxNQUFNLE9BQU8sc0JBQXNCOztvSEFBdEIsc0JBQXNCO3FIQUF0QixzQkFBc0IsaUJBWi9CLGFBQWE7UUFDYixhQUFhO1FBQ2IsWUFBWTtRQUNaLGFBQWE7UUFDYixlQUFlO1FBQ2YsZUFBZTtRQUNmLFdBQVc7UUFDWCxnQkFBZ0IsYUFFUixZQUFZLGFBQ1osYUFBYSxFQUFFLGdCQUFnQjtxSEFFOUIsc0JBQXNCLFlBSHhCLENBQUMsWUFBWSxDQUFDOzRGQUdaLHNCQUFzQjtrQkFkbEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osYUFBYTt3QkFDYixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxnQkFBZ0I7cUJBQ2pCO29CQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDO2lCQUMzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb3JlQ29tcG9uZW50IH0gZnJvbSAnLi9jb3JlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU29ydENsYXNzUGlwZSB9IGZyb20gJy4vcGlwZXMvc29ydC1jbGFzcy5waXBlJztcbmltcG9ydCB7IERhc2hDYXNlUGlwZSB9IGZyb20gJy4vcGlwZXMvZGFzaC1jYXNlLnBpcGUnO1xuaW1wb3J0IHsgSGlnaGxpZ2h0UGlwZSB9IGZyb20gJy4vcGlwZXMvaGlnaGxpZ2h0LnBpcGUnO1xuaW1wb3J0IHsgQ2FwaXRhbENhc2VQaXBlIH0gZnJvbSAnLi9waXBlcy9jYXBpdGFsLWNhc2UucGlwZSc7XG5pbXBvcnQgeyBEeW5hbWljUGlwZSB9IGZyb20gJy4vcGlwZXMvZHluYW1pYy5waXBlJztcbmltcG9ydCB7IEd0RGVsdGFDb21wb25lbnQgfSBmcm9tICcuL2d0LWRlbHRhL2d0LWRlbHRhLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIENvcmVDb21wb25lbnQsXG4gICAgU29ydENsYXNzUGlwZSxcbiAgICBEYXNoQ2FzZVBpcGUsXG4gICAgSGlnaGxpZ2h0UGlwZSxcbiAgICBDYXBpdGFsQ2FzZVBpcGUsXG4gICAgQ2FwaXRhbENhc2VQaXBlLFxuICAgIER5bmFtaWNQaXBlLFxuICAgIEd0RGVsdGFDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBleHBvcnRzOiBbQ29yZUNvbXBvbmVudCwgR3REZWx0YUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNUYWJsZUNvcmVNb2R1bGUge31cbiJdfQ==
|
|
@@ -3,12 +3,12 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
export class CoreService {
|
|
4
4
|
constructor() { }
|
|
5
5
|
}
|
|
6
|
-
CoreService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
7
|
-
CoreService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
6
|
+
CoreService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CoreService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
7
|
+
CoreService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CoreService, providedIn: 'root' });
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CoreService, decorators: [{
|
|
9
9
|
type: Injectable,
|
|
10
10
|
args: [{
|
|
11
|
-
providedIn: 'root'
|
|
11
|
+
providedIn: 'root',
|
|
12
12
|
}]
|
|
13
13
|
}], ctorParameters: function () { return []; } });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sV0FBVztJQUN0QixnQkFBZSxDQUFDOzt5R0FETCxXQUFXOzZHQUFYLFdBQVcsY0FGVixNQUFNOzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29yZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHt9XG59XG4iXX0=
|
|
@@ -3,4 +3,4 @@ export var Order;
|
|
|
3
3
|
Order["ASC"] = "asc";
|
|
4
4
|
Order["DESC"] = "desc";
|
|
5
5
|
})(Order || (Order = {}));
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXIuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9lbnVtcy9vcmRlci5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLEtBR1g7QUFIRCxXQUFZLEtBQUs7SUFDZixvQkFBVyxDQUFBO0lBQ1gsc0JBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxLQUFLLEtBQUwsS0FBSyxRQUdoQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIE9yZGVyIHtcbiAgQVNDID0gJ2FzYycsXG4gIERFU0MgPSAnZGVzYycsXG59XG4iXX0=
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class GtDeltaComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.Math = Math;
|
|
7
|
+
this.Number = Number;
|
|
8
|
+
this.data = [];
|
|
9
|
+
this.index = 0;
|
|
10
|
+
this.classes = {
|
|
11
|
+
span: 'gt-delta',
|
|
12
|
+
positive: 'text-success',
|
|
13
|
+
negative: 'text-danger',
|
|
14
|
+
};
|
|
15
|
+
this.key = 'value';
|
|
16
|
+
this.notApplicableValue = 'n/a';
|
|
17
|
+
this.initialValue = '-';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
GtDeltaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GtDeltaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
21
|
+
GtDeltaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: GtDeltaComponent, selector: "gt-delta", inputs: { data: "data", index: "index", baseIndex: "baseIndex", classes: "classes", key: "key", notApplicableValue: "notApplicableValue", initialValue: "initialValue" }, ngImport: i0, template: `<span
|
|
22
|
+
*ngIf="{
|
|
23
|
+
value:
|
|
24
|
+
index === 0
|
|
25
|
+
? initialValue
|
|
26
|
+
: ((baseIndex === undefined
|
|
27
|
+
? data[index - 1][key]
|
|
28
|
+
: data[baseIndex][key]) -
|
|
29
|
+
data[index][key]) /
|
|
30
|
+
-Math.abs(
|
|
31
|
+
baseIndex === undefined
|
|
32
|
+
? data[index - 1][key]
|
|
33
|
+
: data[baseIndex][key]
|
|
34
|
+
)
|
|
35
|
+
} as delta"
|
|
36
|
+
[class]="[
|
|
37
|
+
classes.span,
|
|
38
|
+
!delta.value || !Number.isFinite(delta.value)
|
|
39
|
+
? null
|
|
40
|
+
: delta.value > 0
|
|
41
|
+
? classes.positive
|
|
42
|
+
: classes.negative
|
|
43
|
+
]"
|
|
44
|
+
[class.gt-delta-positive]="delta.value > 0 && Number.isFinite(delta.value)"
|
|
45
|
+
[class.gt-delta-negative]="delta.value < 0"
|
|
46
|
+
>{{
|
|
47
|
+
Number.isFinite(delta.value)
|
|
48
|
+
? (delta.value | percent)
|
|
49
|
+
: delta.value === initialValue
|
|
50
|
+
? initialValue
|
|
51
|
+
: notApplicableValue
|
|
52
|
+
}}</span
|
|
53
|
+
>`, isInline: true, styles: [":host{display:inline-block}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "percent": i1.PercentPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GtDeltaComponent, decorators: [{
|
|
55
|
+
type: Component,
|
|
56
|
+
args: [{
|
|
57
|
+
selector: 'gt-delta',
|
|
58
|
+
template: `<span
|
|
59
|
+
*ngIf="{
|
|
60
|
+
value:
|
|
61
|
+
index === 0
|
|
62
|
+
? initialValue
|
|
63
|
+
: ((baseIndex === undefined
|
|
64
|
+
? data[index - 1][key]
|
|
65
|
+
: data[baseIndex][key]) -
|
|
66
|
+
data[index][key]) /
|
|
67
|
+
-Math.abs(
|
|
68
|
+
baseIndex === undefined
|
|
69
|
+
? data[index - 1][key]
|
|
70
|
+
: data[baseIndex][key]
|
|
71
|
+
)
|
|
72
|
+
} as delta"
|
|
73
|
+
[class]="[
|
|
74
|
+
classes.span,
|
|
75
|
+
!delta.value || !Number.isFinite(delta.value)
|
|
76
|
+
? null
|
|
77
|
+
: delta.value > 0
|
|
78
|
+
? classes.positive
|
|
79
|
+
: classes.negative
|
|
80
|
+
]"
|
|
81
|
+
[class.gt-delta-positive]="delta.value > 0 && Number.isFinite(delta.value)"
|
|
82
|
+
[class.gt-delta-negative]="delta.value < 0"
|
|
83
|
+
>{{
|
|
84
|
+
Number.isFinite(delta.value)
|
|
85
|
+
? (delta.value | percent)
|
|
86
|
+
: delta.value === initialValue
|
|
87
|
+
? initialValue
|
|
88
|
+
: notApplicableValue
|
|
89
|
+
}}</span
|
|
90
|
+
>`,
|
|
91
|
+
styles: [
|
|
92
|
+
`
|
|
93
|
+
:host {
|
|
94
|
+
display: inline-block;
|
|
95
|
+
}
|
|
96
|
+
`,
|
|
97
|
+
],
|
|
98
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
99
|
+
}]
|
|
100
|
+
}], ctorParameters: function () { return []; }, propDecorators: { data: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], index: [{
|
|
103
|
+
type: Input
|
|
104
|
+
}], baseIndex: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}], classes: [{
|
|
107
|
+
type: Input
|
|
108
|
+
}], key: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}], notApplicableValue: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], initialValue: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}] } });
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3QtZGVsdGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2d0LWRlbHRhL2d0LWRlbHRhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBK0MxRSxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCO1FBQ0EsU0FBSSxHQUFHLElBQUksQ0FBQztRQUNaLFdBQU0sR0FBRyxNQUFNLENBQUM7UUFDUCxTQUFJLEdBQWMsRUFBRSxDQUFDO1FBQ3JCLFVBQUssR0FBVyxDQUFDLENBQUM7UUFFbEIsWUFBTyxHQUFHO1lBQ2pCLElBQUksRUFBRSxVQUFVO1lBQ2hCLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFFBQVEsRUFBRSxhQUFhO1NBQ3hCLENBQUM7UUFDTyxRQUFHLEdBQVcsT0FBTyxDQUFDO1FBQ3RCLHVCQUFrQixHQUFXLEtBQUssQ0FBQztRQUNuQyxpQkFBWSxHQUFXLEdBQUcsQ0FBQztJQWJyQixDQUFDOzs4R0FETCxnQkFBZ0I7a0dBQWhCLGdCQUFnQiwwTkExQ2pCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWdDUjs0RkFVUyxnQkFBZ0I7a0JBNUM1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxVQUFVO29CQUNwQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBZ0NSO29CQUNGLE1BQU0sRUFBRTt3QkFDTjs7OztLQUlDO3FCQUNGO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDswRUFLVSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUtHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJsZVJvd3MgfSBmcm9tICcuLi9tb2RlbHMvdGFibGUtcm93LmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2d0LWRlbHRhJyxcbiAgdGVtcGxhdGU6IGA8c3BhblxuICAgICpuZ0lmPVwie1xuICAgICAgdmFsdWU6XG4gICAgICAgIGluZGV4ID09PSAwXG4gICAgICAgICAgPyBpbml0aWFsVmFsdWVcbiAgICAgICAgICA6ICgoYmFzZUluZGV4ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgPyBkYXRhW2luZGV4IC0gMV1ba2V5XVxuICAgICAgICAgICAgICA6IGRhdGFbYmFzZUluZGV4XVtrZXldKSAtXG4gICAgICAgICAgICAgIGRhdGFbaW5kZXhdW2tleV0pIC9cbiAgICAgICAgICAgIC1NYXRoLmFicyhcbiAgICAgICAgICAgICAgYmFzZUluZGV4ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IGRhdGFbaW5kZXggLSAxXVtrZXldXG4gICAgICAgICAgICAgICAgOiBkYXRhW2Jhc2VJbmRleF1ba2V5XVxuICAgICAgICAgICAgKVxuICAgIH0gYXMgZGVsdGFcIlxuICAgIFtjbGFzc109XCJbXG4gICAgICBjbGFzc2VzLnNwYW4sXG4gICAgICAhZGVsdGEudmFsdWUgfHwgIU51bWJlci5pc0Zpbml0ZShkZWx0YS52YWx1ZSlcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogZGVsdGEudmFsdWUgPiAwXG4gICAgICAgID8gY2xhc3Nlcy5wb3NpdGl2ZVxuICAgICAgICA6IGNsYXNzZXMubmVnYXRpdmVcbiAgICBdXCJcbiAgICBbY2xhc3MuZ3QtZGVsdGEtcG9zaXRpdmVdPVwiZGVsdGEudmFsdWUgPiAwICYmIE51bWJlci5pc0Zpbml0ZShkZWx0YS52YWx1ZSlcIlxuICAgIFtjbGFzcy5ndC1kZWx0YS1uZWdhdGl2ZV09XCJkZWx0YS52YWx1ZSA8IDBcIlxuICAgID57e1xuICAgICAgTnVtYmVyLmlzRmluaXRlKGRlbHRhLnZhbHVlKVxuICAgICAgICA/IChkZWx0YS52YWx1ZSB8IHBlcmNlbnQpXG4gICAgICAgIDogZGVsdGEudmFsdWUgPT09IGluaXRpYWxWYWx1ZVxuICAgICAgICA/IGluaXRpYWxWYWx1ZVxuICAgICAgICA6IG5vdEFwcGxpY2FibGVWYWx1ZVxuICAgIH19PC9zcGFuXG4gID5gLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH1cbiAgICBgLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgR3REZWx0YUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKCkge31cbiAgTWF0aCA9IE1hdGg7XG4gIE51bWJlciA9IE51bWJlcjtcbiAgQElucHV0KCkgZGF0YTogVGFibGVSb3dzID0gW107XG4gIEBJbnB1dCgpIGluZGV4OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBiYXNlSW5kZXg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIGNsYXNzZXMgPSB7XG4gICAgc3BhbjogJ2d0LWRlbHRhJyxcbiAgICBwb3NpdGl2ZTogJ3RleHQtc3VjY2VzcycsXG4gICAgbmVnYXRpdmU6ICd0ZXh0LWRhbmdlcicsXG4gIH07XG4gIEBJbnB1dCgpIGtleTogc3RyaW5nID0gJ3ZhbHVlJztcbiAgQElucHV0KCkgbm90QXBwbGljYWJsZVZhbHVlOiBzdHJpbmcgPSAnbi9hJztcbiAgQElucHV0KCkgaW5pdGlhbFZhbHVlOiBzdHJpbmcgPSAnLSc7XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3QtcGFnaW5hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9tb2RlbHMvZ3QtcGFnaW5hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBHdFBhZ2luYXRpb25DbGFzc2VzIHtcbiAgbmF2Pzogc3RyaW5nO1xuICB1bD86IHN0cmluZztcbiAgbGk/OiBzdHJpbmc7XG4gIGJ1dHRvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHdFBhZ2luYXRpb25BcmlhTGFiZWxzIHtcbiAgbmF2OiBzdHJpbmc7XG4gIGJ1dHRvbjogc3RyaW5nO1xufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29uZmlnLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9tb2RlbHMvdGFibGUtY29uZmlnLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFibGVDb2x1bW4gfSBmcm9tICcuL3RhYmxlLWNvbHVtbi5pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29uZmlnIHtcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgbW9iaWxlTGF5b3V0PzogYm9vbGVhbjtcbiAgc3RpY2t5SGVhZGVycz86IHtcbiAgICByb3c/OiBib29sZWFuO1xuICAgIGNvbHVtbj86IGJvb2xlYW47XG4gIH07XG4gIGNsYXNzPzogc3RyaW5nO1xuICByb3dzPzoge1xuICAgIFtrZXk6IHN0cmluZ106IFRhYmxlQ29sdW1uO1xuICB9O1xuICBjb2x1bW5zPzoge1xuICAgIFtrZXk6IHN0cmluZ106IFRhYmxlQ29sdW1uO1xuICB9O1xuICBwYWdpbmF0aW9uPzoge1xuICAgIGxlbmd0aD86IG51bWJlcjtcbiAgfTtcbn1cbiJdfQ==
|