@datorama/core 22.8.1-rc.1 → 22.8.1
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/bundles/datorama-core.umd.js +97 -118
- package/bundles/datorama-core.umd.js.map +1 -1
- package/bundles/datorama-core.umd.min.js +15 -15
- package/bundles/datorama-core.umd.min.js.map +1 -1
- package/datorama-core.d.ts +0 -1
- package/datorama-core.metadata.json +1 -1
- package/esm2015/datorama-core.js +1 -2
- package/esm2015/lib/breadcrumbs/breadcrumbs.component.js +2 -4
- package/esm2015/lib/grid-v2/grid/grid-v2.types.js +1 -1
- package/esm2015/lib/grid-v2/grid-column-header/grid-column-header.component.js +9 -3
- package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +3 -6
- package/esm2015/lib/grid-v2/grid-settings.js +2 -2
- package/esm2015/lib/grid-v2/grid-store/grid.query.js +23 -22
- package/esm2015/lib/grid-v2/grid-store/grid.service.js +22 -22
- package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -7
- package/esm2015/lib/rich-text/rich-text.directive.js +33 -15
- package/esm2015/lib/select/select.component.js +10 -5
- package/esm2015/lib/version.js +2 -2
- package/esm5/datorama-core.js +1 -2
- package/esm5/lib/breadcrumbs/breadcrumbs.component.js +2 -4
- package/esm5/lib/grid-v2/grid/grid-v2.types.js +1 -1
- package/esm5/lib/grid-v2/grid-column-header/grid-column-header.component.js +9 -3
- package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +3 -6
- package/esm5/lib/grid-v2/grid-settings.js +2 -2
- package/esm5/lib/grid-v2/grid-store/grid.query.js +24 -22
- package/esm5/lib/grid-v2/grid-store/grid.service.js +22 -22
- package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -13
- package/esm5/lib/rich-text/rich-text.directive.js +34 -16
- package/esm5/lib/select/select.component.js +10 -5
- package/esm5/lib/version.js +2 -2
- package/fesm2015/datorama-core.js +96 -110
- package/fesm2015/datorama-core.js.map +1 -1
- package/fesm5/datorama-core.js +98 -118
- package/fesm5/datorama-core.js.map +1 -1
- package/lib/grid-v2/grid/grid-v2.types.d.ts +1 -1
- package/lib/grid-v2/grid-settings.d.ts +2 -2
- package/lib/grid-v2/grid-store/grid.query.d.ts +3 -3
- package/lib/grid-v2/grid-store/grid.service.d.ts +1 -0
- package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +0 -2
- package/lib/rich-text/rich-text.directive.d.ts +6 -4
- package/package.json +1 -1
- package/esm2015/lib/rich-text/rich-text.service.js +0 -50
- package/esm5/lib/rich-text/rich-text.service.js +0 -51
- package/lib/rich-text/rich-text.service.d.ts +0 -10
|
@@ -62,7 +62,7 @@ let GridQuery = class GridQuery extends Query {
|
|
|
62
62
|
const storeSettings = this.getValue().settings;
|
|
63
63
|
const settings = {
|
|
64
64
|
gridAlignment: storeSettings.gridAlignment,
|
|
65
|
-
sort: this.
|
|
65
|
+
sort: this.getGridOptions().sortByStore ? this.getSavedSort() : this.getSortModel(),
|
|
66
66
|
hiddenColumns,
|
|
67
67
|
groupedColumns: groupedColumns.map(toColId),
|
|
68
68
|
filter: this.getFilter(),
|
|
@@ -76,30 +76,31 @@ let GridQuery = class GridQuery extends Query {
|
|
|
76
76
|
}
|
|
77
77
|
return settings;
|
|
78
78
|
}
|
|
79
|
-
|
|
79
|
+
getSortModel() {
|
|
80
80
|
return this.api.grid.getSortModel().pop();
|
|
81
81
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if (
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
82
|
+
getSavedSort() {
|
|
83
|
+
return this.getValue().settings.sort || this.getSortModel();
|
|
84
|
+
}
|
|
85
|
+
getSort(savedSort = this.getSavedSort()) {
|
|
86
|
+
if (savedSort) {
|
|
87
|
+
const { colId, sort, sortIndex } = savedSort;
|
|
88
|
+
const column = this.api.columns.getColumn(colId);
|
|
89
|
+
const allColumns = this.api.columns.getAllGridColumns();
|
|
90
|
+
if (column) {
|
|
91
|
+
const field = getColField(column.getColDef());
|
|
92
|
+
return { colId, sort, field };
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const secondaryColumn = this.getSecondaryColumn(colId);
|
|
96
|
+
if (secondaryColumn) {
|
|
97
|
+
const columnIndex = sortIndex || allColumns.indexOf(secondaryColumn);
|
|
98
|
+
const field = getColField(secondaryColumn.getColDef());
|
|
99
|
+
return { colId, sort, field, sortIndex: columnIndex };
|
|
100
|
+
}
|
|
98
101
|
}
|
|
99
102
|
}
|
|
100
|
-
|
|
101
|
-
selectSort() {
|
|
102
|
-
return this.select(state => state.settings.sort);
|
|
103
|
+
return { colId: null, sort: null };
|
|
103
104
|
}
|
|
104
105
|
/* @internal */
|
|
105
106
|
_setApi(api, gridRef) {
|
|
@@ -212,4 +213,4 @@ GridQuery = __decorate([
|
|
|
212
213
|
__metadata("design:paramtypes", [GridStore])
|
|
213
214
|
], GridQuery);
|
|
214
215
|
export { GridQuery };
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1zdG9yZS9ncmlkLnF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQVUsTUFBTSxFQUFXLE1BQU0sbUJBQW1CLENBQUM7QUFHNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUV0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFJOUMsSUFBYSxTQUFTLEdBQXRCLE1BQWEsU0FBVSxTQUFRLEtBQXFCO0lBNkNsRCxZQUFzQixLQUFnQjtRQUNwQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFETyxVQUFLLEdBQUwsS0FBSyxDQUFXO1FBMUN0QyxXQUFXO1FBQ1gsZUFBVSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLGVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLFdBQVc7UUFDWCxzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBNEIsQ0FBQztRQUM1RCxzQkFBaUIs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Q0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDO1NBQy9EO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sNkJBQTZCLENBQUMsT0FBaUI7UUFDckQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUNuQixDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLGlCQUFpQixDQUN6RyxDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUE7O1lBN044QixTQUFTOztBQTdDM0IsU0FBUztJQURyQixVQUFVLEVBQUU7cUNBOENrQixTQUFTO0dBN0MzQixTQUFTLENBMFFyQjtTQTFRWSxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VtcHR5LCBRdWVyeSB9IGZyb20gJ0BkYXRvcmFtYS9ha2l0YSc7XG5pbXBvcnQgeyBHcmlkU3RvcmUgfSBmcm9tICcuL2dyaWQuc3RvcmUnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncywgR3JpZFN0b3JlU3RhdGUsIFNlcnZlclNpZGVQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSAnLi9ncmlkLnN0b3JlLnR5cGVzJztcbmltcG9ydCB7IENvbHVtbiwgRXZlbnRzLCBSb3dOb2RlIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgRGF0b0dyaWRBcGkgfSBmcm9tICcuLi9ncmlkLWNvbnRyb2xsZXIvZ3JpZC1jb250cm9sbGVyLnR5cGVzJztcbmltcG9ydCB7IEFnR3JpZE5nMiB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBEYXRvR3JpZEFsaWdubWVudCxcbiAgRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50LFxuICBEYXRvR3JpZE9wdGlvbnMsXG4gIERhdG9HcmlkU29ydCxcbiAgR3JpZFJvd3NTZWxlY3Rpb25EYXRhXG59IGZyb20gJy4uL2dyaWQvZ3JpZC12Mi50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZEV4dGVybmFsRmlsdGVyLCBEYXRvR3JpZEZpbHRlcnNNYXAgfSBmcm9tICcuLi9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci50eXBlcyc7XG5pbXBvcnQgeyBnZXRDb2xGaWVsZCwgZ2V0Q29sdW1uc1NpemVzIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IEhhc2hNYXAgfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sbGVjdGlvbic7XG5pbXBvcnQgeyB1bmlxIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXknO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR3JpZFF1ZXJ5IGV4dGVuZHMgUXVlcnk8R3JpZFN0b3JlU3RhdGU+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgYXBpOiBEYXRvR3JpZEFwaTtcbiAgZ3JpZFJlZjogQWdHcmlkTmcyO1xuICAvL0BpbnRlcm5hbFxuICBfZ3JpZFJlYWR5ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIGdyaWRSZWFkeSQgPSB0aGlzLl9ncmlkUmVhZHkuYXNPYnNlcnZhYmxlKCkucGlwZShmaWx0ZXIocmVhZHkgPT4gcmVhZHkpKTtcbiAgLy9AaW50ZXJuYWxcbiAgX3NlcnZlckRhdGFMb2FkZWQgPSBuZXcgU3ViamVjdDxEYXRvR3JpZERhdGFDaGFuZ2VkRXZlbnQ+KCk7XG4gIHNlcnZlckRhdGFMb2FkZWQkID0gdGhpcy5fc2VydmVyRGF0YUxvYWRlZC5hc09ic2VydmFibGUoKTtcbiAgcm93RGF0YUNoYW5nZWQkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLndhaXRGb3JHcmlkKCgpID0+XG4gICAgbWVyZ2UodGhpcy5ncmlkUmVmLnJvd0RhdGFDaGFuZ2VkLCB0aGlzLmdyaWRSZWYucm93RGF0YVVwZGF0ZWQsIHRoaXMuZ3JpZFJlZi5maWx0ZXJDaGFuZ2VkLCB0aGlzLnNlcnZlckRhdGFMb2FkZWQkKVxuICApO1xuICBzZWxlY3RlZFJvd3NDaGFuZ2UkID0gdGhpcy53YWl0Rm9yR3JpZCgoKSA9PlxuICAgIGZyb21FdmVudCh0aGlzLmFwaS5ncmlkLCBFdmVudHMuRVZFTlRfU0VMRUNUSU9OX0NIQU5HRUQpLnBpcGUobWFwKCh7IGFwaSB9KSA9PiBhcGkuZ2V0U2VsZWN0ZWRSb3dzKCkpKVxuICApO1xuXG4gIHJvd3NTZWxlY3Rpb25EYXRhJDogT2JzZXJ2YWJsZTxHcmlkUm93c1NlbGVjdGlvbkRhdGE+ID0gdGhpcy53YWl0Rm9yR3JpZCgoKSA9PiB7XG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3NDaGFuZ2UkLFxuICAgICAgdGhpcy5yb3dEYXRhQ2hhbmdlZCQsXG4gICAgICB0aGlzLnNlbGVjdFNlcnZlclBhZ2luYXRpb25Db25maWcoKSxcbiAgICAgIHRoaXMud2FpdEZvckdyaWQoKCkgPT4gbWVyZ2UodGhpcy5ncmlkUmVmLnNvcnRDaGFuZ2VkLCB0aGlzLmdyaWRSZWYucGFnaW5hdGlvbkNoYW5nZWQpKVxuICAgICkucGlwZShcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdGFsUm93c0NvdW50ID0gdGhpcy5pc1NlcnZlclNpZGVcbiAgICAgICAgICA/IHRoaXMuc2VydmVyU2lkZUNvbmZpZy50b3RhbFJvd3NcbiAgICAgICAgICA6IHRoaXMuYXBpLmdyaWQuZ2V0RGlzcGxheWVkUm93Q291bnQoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3dzQ291bnQgPSB0aGlzLmdldFNlbGVjdGVkUm93c0NvdW50KCk7XG5cbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VSb3dzID0gdGhpcy5nZXRDdXJyZW50UGFnZVJvd3MoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRQYWdlUm93c0NvdW50ID0gc2l6ZShjdXJyZW50UGFnZVJvd3MuZmlsdGVyKChub2RlOiBSb3dOb2RlKSA9PiBub2RlLmlzU2VsZWN0ZWQoKSkpO1xuICAgICAgICBjb25zdCBpc0FsbFBhZ2VSb3dzU2VsZWN0ZWQgPVxuICAgICAgICAgIChzZWxlY3RlZFBhZ2VSb3dzQ291bnQgPiAwICYmIHNlbGVjdGVkUGFnZVJvd3NDb3VudCA9PT0gc2l6ZShjdXJyZW50UGFnZVJvd3MpKSB8fFxuICAgICAgICAgICh0aGlzLmlzU2VydmVyU2VsZWN0QWxsUm93c0VuYWJsZWQgJiYgaXNFbXB0eSh0aGlzLnNlcnZlclNpZGVDb25maWcuZXhjbHVkZWRGcm9tU2VsZWN0QWxsKSk7XG5cbiAgICAgICAgcmV0dXJuIHsgdG90YWxSb3dzQ291bnQsIHNlbGVjdGVkUm93c0NvdW50LCBzZWxlY3RlZFBhZ2VSb3dzQ291bnQsIGlzQWxsUGFnZVJvd3NTZWxlY3RlZCB9O1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICBmaWx0ZXJBY3RpdmUkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2V0dGluZ3MpLnBpcGUoXG4gICAgbWFwKCh7IGZpbHRlciwgc2VhcmNoVGVybSB9OiBEYXRvR3JpZFNldHRpbmdzKSA9PiBzaXplKGZpbHRlcikgPiAwIHx8ICEhc2VhcmNoVGVybSlcbiAgKTtcbiAgc2VydmVyU2lkZUVycm9yJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnNlcnZlclNpZGVQYWdpbmF0aW9uLmhhc0Vycm9yKTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc3RvcmU6IEdyaWRTdG9yZSkge1xuICAgIHN1cGVyKHN0b3JlKTtcbiAgfVxuXG4gIGdldCBzZXJ2ZXJTaWRlQ29uZmlnKCk6IFNlcnZlclNpZGVQYWdpbmF0aW9uQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNlcnZlclNpZGVQYWdpbmF0aW9uO1xuICB9XG5cbiAgZ2V0IGlzU2VydmVyU2lkZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2ZXJTaWRlQ29uZmlnLmVuYWJsZWQ7XG4gIH1cblxuICBnZXQgaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2ZXJTaWRlQ29uZmlnLnNlbGVjdEFsbFJvd3NFbmFibGVkO1xuICB9XG5cbiAgZ2V0IGdyaWRBbGlnbm1lbnQoKTogRGF0b0dyaWRBbGlnbm1lbnQge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2V0dGluZ3MuZ3JpZEFsaWdubWVudDtcbiAgfVxuXG4gIGdldENvbHVtblNpemVzKCk6IEhhc2hNYXA8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5jb2x1bW5zU2l6ZXM7XG4gIH1cblxuICBnZXRDdXJyZW50R3JpZFNldHRpbmdzKCk6IERhdG9HcmlkU2V0dGluZ3Mge1xuICAgIGNvbnN0IHRvQ29sSWQgPSBjb2x1bW4gPT4gY29sdW1uLmdldENvbElkKCk7XG4gICAgY29uc3QgeyBjb2x1bW5zIH0gPSB0aGlzLmFwaTtcbiAgICBjb25zdCBncm91cGVkQ29sdW1ucyA9IGNvbHVtbnMuZ2V0Um93R3JvdXBDb2x1bW5zKCk7XG4gICAgY29uc3QgY29sdW1uc09yZGVyID0gY29sdW1ucy5nZXRBbGxDb2x1bW5zKCk7XG4gICAgY29uc3QgYWxsR3JpZENvbHVtbnMgPSBjb2x1bW5zLmdldEFsbEdyaWRDb2x1bW5zKCk7XG4gICAgY29uc3QgaGlkZGVuQ29sdW1ucyA9IGNvbHVtbnNPcmRlclxuICAgICAgLmZpbHRlcihjb2x1bW4gPT4gIWNvbHVtbi5pc1Zpc2libGUoKSAmJiAhZ3JvdXBlZENvbHVtbnMuaW5jbHVkZXMoY29sdW1uKSlcbiAgICAgIC5tYXAodG9Db2xJZCk7XG4gICAgY29uc3Qgc3RvcmVTZXR0aW5ncyA9IHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncztcbiAgICBjb25zdCBzZXR0aW5nczogRGF0b0dyaWRTZXR0aW5ncyA9IHtcbiAgICAgIGdyaWRBbGlnbm1lbnQ6IHN0b3JlU2V0dGluZ3MuZ3JpZEFsaWdubWVudCxcbiAgICAgIHNvcnQ6IHRoaXMuZ2V0U29ydCgpLFxuICAgICAgaGlkZGVuQ29sdW1ucyxcbiAgICAgIGdyb3VwZWRDb2x1bW5zOiBncm91cGVkQ29sdW1ucy5tYXAodG9Db2xJZCksXG4gICAgICBmaWx0ZXI6IHRoaXMuZ2V0RmlsdGVyKCksXG4gICAgICBwaW5uZWRDb2x1bW5zOiBjb2x1bW5zLmdldERpc3BsYXllZExlZnRDb2x1bW5zKCkubWFwKHRvQ29sSWQpLFxuICAgICAgY29sdW1uc09yZGVyOiBhbGxHcmlkQ29sdW1ucy5tYXAodG9Db2xJZCksXG4gICAgICBjb2x1bW5zU2l6ZXM6IG51bGwsXG4gICAgICBzZWFyY2hUZXJtOiBudWxsXG4gICAgfTtcblxuICAgIGlmIChzdG9yZVNldHRpbmdzLmdyaWRBbGlnbm1lbnQgPT09IERhdG9HcmlkQWxpZ25tZW50LkNVU1RPTSkge1xuICAgICAgc2V0dGluZ3MuY29sdW1uc1NpemVzID0gZ2V0Q29sdW1uc1NpemVzKGFsbEdyaWRDb2x1bW5zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V0dGluZ3M7XG4gIH1cblxuICBnZXRTb3J0KCk6IERhdG9HcmlkU29ydCB7XG4gICAgcmV0dXJuIHRoaXMuYXBpLmdyaWQuZ2V0U29ydE1vZGVsKCkucG9wKCkgYXMgRGF0b0dyaWRTb3J0O1xuICB9XG5cbiAgZ2V0RXh0ZXJuYWxTb3J0KCk6IERhdG9HcmlkU29ydCB7XG4gICAgY29uc3QgeyBzb3J0LCBjb2xJZCB9ID0gdGhpcy5nZXRTb3J0KCkgfHwge307XG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5hcGkuY29sdW1ucy5nZXRDb2x1bW4oY29sSWQpO1xuICAgIGNvbnN0IGFsbENvbHVtbnMgPSB0aGlzLmFwaS5jb2x1bW5zLmdldEFsbEdyaWRDb2x1bW5zKCk7XG5cbiAgICBpZiAoY29sdW1uKSB7XG4gICAgICByZXR1cm4geyBjb2xJZCwgc29ydCwgZmllbGQ6IGdldENvbEZpZWxkKGNvbHVtbi5nZXRDb2xEZWYoKSksIHNvcnRJbmRleDogYWxsQ29sdW1ucy5pbmRleE9mKGNvbHVtbikgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2Vjb25kYXJ5Q29sdW1uID0gdGhpcy5nZXRTZWNvbmRhcnlDb2x1bW4oY29sSWQpO1xuXG4gICAgICBpZiAoc2Vjb25kYXJ5Q29sdW1uKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29sSWQsXG4gICAgICAgICAgc29ydCxcbiAgICAgICAgICBmaWVsZDogZ2V0Q29sRmllbGQoc2Vjb25kYXJ5Q29sdW1uLmdldENvbERlZigpKSxcbiAgICAgICAgICBzb3J0SW5kZXg6IGFsbENvbHVtbnMuaW5kZXhPZihzZWNvbmRhcnlDb2x1bW4pXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0U29ydCgpOiBPYnNlcnZhYmxlPERhdG9HcmlkU29ydD4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5ncy5zb3J0KTtcbiAgfVxuXG4gIC8qIEBpbnRlcm5hbCAqL1xuICBfc2V0QXBpKGFwaTogRGF0b0dyaWRBcGksIGdyaWRSZWY6IEFnR3JpZE5nMikge1xuICAgIHRoaXMuYXBpID0gYXBpO1xuICAgIHRoaXMuZ3JpZFJlZiA9IGdyaWRSZWY7XG4gIH1cblxuICAvKiogUmV0dXJucyBqdXN0IHRoZSByb3dzIGRhdGEgKi9cbiAgZ2V0U2VsZWN0ZWRSb3dzPFQ+KCk6IFRbXTtcbiAgZ2V0U2VsZWN0ZWRSb3dzPFQ+KG9ubHlGaXJzdFJvdzogdHJ1ZSk6IFQgfCB1bmRlZmluZWQ7XG4gIGdldFNlbGVjdGVkUm93czxUPihvbmx5Rmlyc3RSb3c6IGZhbHNlKTogVFtdO1xuICBnZXRTZWxlY3RlZFJvd3M8VD4ob25seUZpcnN0Um93PzogYm9vbGVhbik6IFRbXSB8IFQge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmFwaS5ncmlkLmdldFNlbGVjdGVkUm93cygpO1xuICAgIHJldHVybiBvbmx5Rmlyc3RSb3cgPyByb3dzWzBdIDogcm93cztcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBlbnRpcmUgcm93IG5vZGUgKi9cbiAgZ2V0U2VsZWN0ZWRSb3dOb2RlcygpOiBSb3dOb2RlW107XG4gIGdldFNlbGVjdGVkUm93Tm9kZXMob25seUZpcnN0Um93OiB0cnVlKTogUm93Tm9kZSB8IHVuZGVmaW5lZDtcbiAgZ2V0U2VsZWN0ZWRSb3dOb2Rlcyhvbmx5Rmlyc3RSb3c6IGZhbHNlKTogUm93Tm9kZVtdO1xuICBnZXRTZWxlY3RlZFJvd05vZGVzKG9ubHlGaXJzdFJvdz86IGJvb2xlYW4pOiBSb3dOb2RlW10gfCBSb3dOb2RlIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5hcGkuZ3JpZC5nZXRTZWxlY3RlZE5vZGVzKCk7XG4gICAgcmV0dXJuIG9ubHlGaXJzdFJvdyA/IHJvd3NbMF0gOiByb3dzO1xuICB9XG5cbiAgZ2V0RmlsdGVyKCk6IERhdG9HcmlkRmlsdGVyc01hcCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5maWx0ZXI7XG4gIH1cblxuICBzZWxlY3RGaWx0ZXIoKTogT2JzZXJ2YWJsZTxEYXRvR3JpZEZpbHRlcnNNYXA+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2V0dGluZ3MuZmlsdGVyKTtcbiAgfVxuXG4gIGdldEV4dGVybmFsRmlsdGVyKCk6IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXJbXSB7XG4gICAgY29uc3QgZ3JpZEZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcigpO1xuXG4gICAgaWYgKGdyaWRGaWx0ZXJzKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoZ3JpZEZpbHRlcnMpLnJlZHVjZSgoZmlsdGVycywgZmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyID0gZ3JpZEZpbHRlcnNbZmllbGRdO1xuXG4gICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICBmaWx0ZXJzLnB1c2goeyBmaWVsZCwgZmlsdGVyIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcnM7XG4gICAgICB9LCBbXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0U2VhcmNoVGVybSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2V0dGluZ3Muc2VhcmNoVGVybTtcbiAgfVxuXG4gIHNlbGVjdFNlYXJjaFRlcm0oKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3QoKHN0YXRlOiBHcmlkU3RvcmVTdGF0ZSkgPT4gc3RhdGUuc2V0dGluZ3Muc2VhcmNoVGVybSk7XG4gIH1cblxuICB3YWl0Rm9yR3JpZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICB3YWl0Rm9yR3JpZDxUID0gYW55Pihzb3VyY2U6ICgpID0+IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+O1xuICB3YWl0Rm9yR3JpZDxUID0gYW55Pihzb3VyY2U/OiAoKSA9PiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB8IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBzb3VyY2UgPyB0aGlzLmdyaWRSZWFkeSQucGlwZShzd2l0Y2hNYXAoc291cmNlKSkgOiB0aGlzLmdyaWRSZWFkeSQ7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9ncmlkUmVhZHkuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zZXJ2ZXJEYXRhTG9hZGVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBnZXRHcmlkT3B0aW9ucygpOiBEYXRvR3JpZE9wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLmdyaWRSZWYgPyAodGhpcy5ncmlkUmVmLmdyaWRPcHRpb25zIGFzIERhdG9HcmlkT3B0aW9ucykgOiBudWxsO1xuICB9XG5cbiAgc2VsZWN0U2VydmVyUGFnaW5hdGlvbkNvbmZpZygpOiBPYnNlcnZhYmxlPFNlcnZlclNpZGVQYWdpbmF0aW9uQ29uZmlnPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KChzdGF0ZTogR3JpZFN0b3JlU3RhdGUpID0+IHN0YXRlLnNlcnZlclNpZGVQYWdpbmF0aW9uKTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkUm93c0NvdW50KCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZCkge1xuICAgICAgY29uc3QgeyB0b3RhbFJvd3MsIGV4Y2x1ZGVkRnJvbVNlbGVjdEFsbCB9ID0gdGhpcy5zZXJ2ZXJTaWRlQ29uZmlnO1xuICAgICAgcmV0dXJuIHRvdGFsUm93cyAtIHNpemUoZXhjbHVkZWRGcm9tU2VsZWN0QWxsKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpemUodGhpcy5nZXRTZWxlY3RlZFJvd3MoKSk7XG4gIH1cblxuICBnZXRDdXJyZW50UGFnZVJvd3MoKTogUm93Tm9kZVtdIHtcbiAgICBjb25zdCBwYWdlUm93czogUm93Tm9kZVtdID0gW107XG4gICAgY29uc3QgcHVzaFBhZ2VSb3cgPSAobm9kZTogUm93Tm9kZSkgPT4ge1xuICAgICAgcGFnZVJvd3MucHVzaChub2RlKTtcbiAgICB9O1xuICAgIGNvbnN0IGdyaWQgPSB0aGlzLmFwaS5ncmlkO1xuICAgIGNvbnN0IHBhZ2VTaXplID0gZ3JpZC5wYWdpbmF0aW9uR2V0UGFnZVNpemUoKTtcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9IGdyaWQucGFnaW5hdGlvbkdldEN1cnJlbnRQYWdlKCk7XG4gICAgY29uc3QgdG90YWxSb3dzID0gZ3JpZC5wYWdpbmF0aW9uR2V0Um93Q291bnQoKTtcbiAgICBjb25zdCBmaXJzdFBhZ2VJbmRleCA9IGN1cnJlbnRQYWdlICogcGFnZVNpemU7XG4gICAgbGV0IGxhc3RQYWdlSW5kZXggPSBmaXJzdFBhZ2VJbmRleCArIHBhZ2VTaXplO1xuICAgIGlmIChsYXN0UGFnZUluZGV4ID4gdG90YWxSb3dzKSB7XG4gICAgICBsYXN0UGFnZUluZGV4ID0gdG90YWxSb3dzO1xuICAgIH1cbiAgICBjb25zdCBwZXJmb3JtQWN0aW9uID0gKG5vZGU6IFJvd05vZGUpID0+IHtcbiAgICAgIGlmIChub2RlLnJvd0luZGV4IDwgbGFzdFBhZ2VJbmRleCAmJiBub2RlLnJvd0luZGV4ID49IGZpcnN0UGFnZUluZGV4KSB7XG4gICAgICAgIHB1c2hQYWdlUm93KG5vZGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5pc1NlcnZlclNpZGUgPyBncmlkLmZvckVhY2hOb2RlKHBlcmZvcm1BY3Rpb24pIDogZ3JpZC5mb3JFYWNoTm9kZUFmdGVyRmlsdGVyQW5kU29ydChwZXJmb3JtQWN0aW9uKTtcbiAgICByZXR1cm4gcGFnZVJvd3M7XG4gIH1cblxuICBnZXRBbGxDb2x1bW5zKCk6IENvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJDaGVja2JveFNlbGVjdGlvbkNvbHVtbih0aGlzLmFwaS5jb2x1bW5zLmdldEFsbENvbHVtbnMoKSk7XG4gIH1cblxuICBnZXRBbGxEaXNwbGF5ZWRDb2x1bW5zKCk6IENvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJDaGVja2JveFNlbGVjdGlvbkNvbHVtbih0aGlzLmFwaS5jb2x1bW5zLmdldEFsbERpc3BsYXllZENvbHVtbnMoKSk7XG4gIH1cblxuICBnZXRBbGxQaXZvdENvbHVtbnMoKTogQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbENvbHVtbnMoKS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5pc1Bpdm90QWN0aXZlKCkpO1xuICB9XG5cbiAgc2VsZWN0SXNTZWxlY3RBbGxSb3dzRW5hYmxlZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2VydmVyU2lkZVBhZ2luYXRpb24uc2VsZWN0QWxsUm93c0VuYWJsZWQpO1xuICB9XG5cbiAgZ2V0U2Vjb25kYXJ5Q29sdW1uKGNvbElkOiBzdHJpbmcpOiBDb2x1bW4ge1xuICAgIGNvbnN0IHNlY29uZGFyeUNvbHVtbnMgPSB0aGlzLmFwaS5jb2x1bW5zLmdldFNlY29uZGFyeUNvbHVtbnMoKTtcblxuICAgIGlmIChzZWNvbmRhcnlDb2x1bW5zKSB7XG4gICAgICByZXR1cm4gc2Vjb25kYXJ5Q29sdW1ucy5maW5kKGNvbCA9PiBjb2wuZ2V0Q29sSWQoKSA9PT0gY29sSWQpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJDaGVja2JveFNlbGVjdGlvbkNvbHVtbihjb2x1bW5zOiBDb2x1bW5bXSk6IENvbHVtbltdIHtcbiAgICByZXR1cm4gY29sdW1ucy5maWx0ZXIoXG4gICAgICAoY29sdW1uOiBDb2x1bW4pID0+ICFjb2x1bW4uZ2V0VXNlclByb3ZpZGVkQ29sRGVmKCkgfHwgIWNvbHVtbi5nZXRVc2VyUHJvdmlkZWRDb2xEZWYoKS5jaGVja2JveFNlbGVjdGlvblxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1zdG9yZS9ncmlkLnF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQVUsTUFBTSxFQUFXLE1BQU0sbUJBQW1CLENBQUM7QUFHNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUV0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHOUMsSUFBYSxTQUFTLEdBQXRCLE1BQWEsU0FBVSxTQUFRLEtBQXFCO0lBNkNsRCxZQUFzQixLQUFnQjtRQUNwQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFETyxVQUFLLEdBQUwsS0FBSyxDQUFXO1FBMUN0QyxXQUFXO1FBQ1gsZUFBVSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLGVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLFdBQVc7UUFDWCxzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBNEIsQ0FBQztRQUM1RCxzQkFBaUIs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Q0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQWE7UUFDOUIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRWhFLElBQUksZ0JBQWdCLEVBQUU7WUFDcEIsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUM7U0FDL0Q7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyw2QkFBNkIsQ0FBQyxPQUFpQjtRQUNyRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQ25CLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUMsaUJBQWlCLENBQ3pHLENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQTs7WUFqTzhCLFNBQVM7O0FBN0MzQixTQUFTO0lBRHJCLFVBQVUsRUFBRTtxQ0E4Q2tCLFNBQVM7R0E3QzNCLFNBQVMsQ0E4UXJCO1NBOVFZLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzRW1wdHksIFF1ZXJ5IH0gZnJvbSAnQGRhdG9yYW1hL2FraXRhJztcbmltcG9ydCB7IEdyaWRTdG9yZSB9IGZyb20gJy4vZ3JpZC5zdG9yZSc7XG5pbXBvcnQgeyBEYXRvR3JpZFNldHRpbmdzLCBHcmlkU3RvcmVTdGF0ZSwgU2VydmVyU2lkZVBhZ2luYXRpb25Db25maWcgfSBmcm9tICcuL2dyaWQuc3RvcmUudHlwZXMnO1xuaW1wb3J0IHsgQ29sdW1uLCBFdmVudHMsIFJvd05vZGUgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBEYXRvR3JpZEFwaSB9IGZyb20gJy4uL2dyaWQtY29udHJvbGxlci9ncmlkLWNvbnRyb2xsZXIudHlwZXMnO1xuaW1wb3J0IHsgQWdHcmlkTmcyIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIERhdG9HcmlkQWxpZ25tZW50LFxuICBEYXRvR3JpZERhdGFDaGFuZ2VkRXZlbnQsXG4gIERhdG9HcmlkT3B0aW9ucyxcbiAgRGF0b0dyaWRTb3J0LFxuICBHcmlkUm93c1NlbGVjdGlvbkRhdGFcbn0gZnJvbSAnLi4vZ3JpZC9ncmlkLXYyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXIsIERhdG9HcmlkRmlsdGVyc01hcCB9IGZyb20gJy4uL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLnR5cGVzJztcbmltcG9ydCB7IGdldENvbEZpZWxkLCBnZXRDb2x1bW5zU2l6ZXMgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgSGFzaE1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzJztcbmltcG9ydCB7IHNpemUgfSBmcm9tICcuLi8uLi91dGlscy9jb2xsZWN0aW9uJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdyaWRRdWVyeSBleHRlbmRzIFF1ZXJ5PEdyaWRTdG9yZVN0YXRlPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGFwaTogRGF0b0dyaWRBcGk7XG4gIGdyaWRSZWY6IEFnR3JpZE5nMjtcbiAgLy9AaW50ZXJuYWxcbiAgX2dyaWRSZWFkeSA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBncmlkUmVhZHkkID0gdGhpcy5fZ3JpZFJlYWR5LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZmlsdGVyKHJlYWR5ID0+IHJlYWR5KSk7XG4gIC8vQGludGVybmFsXG4gIF9zZXJ2ZXJEYXRhTG9hZGVkID0gbmV3IFN1YmplY3Q8RGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50PigpO1xuICBzZXJ2ZXJEYXRhTG9hZGVkJCA9IHRoaXMuX3NlcnZlckRhdGFMb2FkZWQuYXNPYnNlcnZhYmxlKCk7XG4gIHJvd0RhdGFDaGFuZ2VkJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy53YWl0Rm9yR3JpZCgoKSA9PlxuICAgIG1lcmdlKHRoaXMuZ3JpZFJlZi5yb3dEYXRhQ2hhbmdlZCwgdGhpcy5ncmlkUmVmLnJvd0RhdGFVcGRhdGVkLCB0aGlzLmdyaWRSZWYuZmlsdGVyQ2hhbmdlZCwgdGhpcy5zZXJ2ZXJEYXRhTG9hZGVkJClcbiAgKTtcbiAgc2VsZWN0ZWRSb3dzQ2hhbmdlJCA9IHRoaXMud2FpdEZvckdyaWQoKCkgPT5cbiAgICBmcm9tRXZlbnQodGhpcy5hcGkuZ3JpZCwgRXZlbnRzLkVWRU5UX1NFTEVDVElPTl9DSEFOR0VEKS5waXBlKG1hcCgoeyBhcGkgfSkgPT4gYXBpLmdldFNlbGVjdGVkUm93cygpKSlcbiAgKTtcblxuICByb3dzU2VsZWN0aW9uRGF0YSQ6IE9ic2VydmFibGU8R3JpZFJvd3NTZWxlY3Rpb25EYXRhPiA9IHRoaXMud2FpdEZvckdyaWQoKCkgPT4ge1xuICAgIHJldHVybiBtZXJnZShcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzQ2hhbmdlJCxcbiAgICAgIHRoaXMucm93RGF0YUNoYW5nZWQkLFxuICAgICAgdGhpcy5zZWxlY3RTZXJ2ZXJQYWdpbmF0aW9uQ29uZmlnKCksXG4gICAgICB0aGlzLndhaXRGb3JHcmlkKCgpID0+IG1lcmdlKHRoaXMuZ3JpZFJlZi5zb3J0Q2hhbmdlZCwgdGhpcy5ncmlkUmVmLnBhZ2luYXRpb25DaGFuZ2VkKSlcbiAgICApLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICBjb25zdCB0b3RhbFJvd3NDb3VudCA9IHRoaXMuaXNTZXJ2ZXJTaWRlXG4gICAgICAgICAgPyB0aGlzLnNlcnZlclNpZGVDb25maWcudG90YWxSb3dzXG4gICAgICAgICAgOiB0aGlzLmFwaS5ncmlkLmdldERpc3BsYXllZFJvd0NvdW50KCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUm93c0NvdW50ID0gdGhpcy5nZXRTZWxlY3RlZFJvd3NDb3VudCgpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlUm93cyA9IHRoaXMuZ2V0Q3VycmVudFBhZ2VSb3dzKCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUGFnZVJvd3NDb3VudCA9IHNpemUoY3VycmVudFBhZ2VSb3dzLmZpbHRlcigobm9kZTogUm93Tm9kZSkgPT4gbm9kZS5pc1NlbGVjdGVkKCkpKTtcbiAgICAgICAgY29uc3QgaXNBbGxQYWdlUm93c1NlbGVjdGVkID1cbiAgICAgICAgICAoc2VsZWN0ZWRQYWdlUm93c0NvdW50ID4gMCAmJiBzZWxlY3RlZFBhZ2VSb3dzQ291bnQgPT09IHNpemUoY3VycmVudFBhZ2VSb3dzKSkgfHxcbiAgICAgICAgICAodGhpcy5pc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkICYmIGlzRW1wdHkodGhpcy5zZXJ2ZXJTaWRlQ29uZmlnLmV4Y2x1ZGVkRnJvbVNlbGVjdEFsbCkpO1xuXG4gICAgICAgIHJldHVybiB7IHRvdGFsUm93c0NvdW50LCBzZWxlY3RlZFJvd3NDb3VudCwgc2VsZWN0ZWRQYWdlUm93c0NvdW50LCBpc0FsbFBhZ2VSb3dzU2VsZWN0ZWQgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgZmlsdGVyQWN0aXZlJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnNldHRpbmdzKS5waXBlKFxuICAgIG1hcCgoeyBmaWx0ZXIsIHNlYXJjaFRlcm0gfTogRGF0b0dyaWRTZXR0aW5ncykgPT4gc2l6ZShmaWx0ZXIpID4gMCB8fCAhIXNlYXJjaFRlcm0pXG4gICk7XG4gIHNlcnZlclNpZGVFcnJvciQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXJ2ZXJTaWRlUGFnaW5hdGlvbi5oYXNFcnJvcik7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHN0b3JlOiBHcmlkU3RvcmUpIHtcbiAgICBzdXBlcihzdG9yZSk7XG4gIH1cblxuICBnZXQgc2VydmVyU2lkZUNvbmZpZygpOiBTZXJ2ZXJTaWRlUGFnaW5hdGlvbkNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXJ2ZXJTaWRlUGFnaW5hdGlvbjtcbiAgfVxuXG4gIGdldCBpc1NlcnZlclNpZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmVyU2lkZUNvbmZpZy5lbmFibGVkO1xuICB9XG5cbiAgZ2V0IGlzU2VydmVyU2VsZWN0QWxsUm93c0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmVyU2lkZUNvbmZpZy5zZWxlY3RBbGxSb3dzRW5hYmxlZDtcbiAgfVxuXG4gIGdldCBncmlkQWxpZ25tZW50KCk6IERhdG9HcmlkQWxpZ25tZW50IHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzLmdyaWRBbGlnbm1lbnQ7XG4gIH1cblxuICBnZXRDb2x1bW5TaXplcygpOiBIYXNoTWFwPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2V0dGluZ3MuY29sdW1uc1NpemVzO1xuICB9XG5cbiAgZ2V0Q3VycmVudEdyaWRTZXR0aW5ncygpOiBEYXRvR3JpZFNldHRpbmdzIHtcbiAgICBjb25zdCB0b0NvbElkID0gY29sdW1uID0+IGNvbHVtbi5nZXRDb2xJZCgpO1xuICAgIGNvbnN0IHsgY29sdW1ucyB9ID0gdGhpcy5hcGk7XG4gICAgY29uc3QgZ3JvdXBlZENvbHVtbnMgPSBjb2x1bW5zLmdldFJvd0dyb3VwQ29sdW1ucygpO1xuICAgIGNvbnN0IGNvbHVtbnNPcmRlciA9IGNvbHVtbnMuZ2V0QWxsQ29sdW1ucygpO1xuICAgIGNvbnN0IGFsbEdyaWRDb2x1bW5zID0gY29sdW1ucy5nZXRBbGxHcmlkQ29sdW1ucygpO1xuICAgIGNvbnN0IGhpZGRlbkNvbHVtbnMgPSBjb2x1bW5zT3JkZXJcbiAgICAgIC5maWx0ZXIoY29sdW1uID0+ICFjb2x1bW4uaXNWaXNpYmxlKCkgJiYgIWdyb3VwZWRDb2x1bW5zLmluY2x1ZGVzKGNvbHVtbikpXG4gICAgICAubWFwKHRvQ29sSWQpO1xuICAgIGNvbnN0IHN0b3JlU2V0dGluZ3MgPSB0aGlzLmdldFZhbHVlKCkuc2V0dGluZ3M7XG4gICAgY29uc3Qgc2V0dGluZ3M6IERhdG9HcmlkU2V0dGluZ3MgPSB7XG4gICAgICBncmlkQWxpZ25tZW50OiBzdG9yZVNldHRpbmdzLmdyaWRBbGlnbm1lbnQsXG4gICAgICBzb3J0OiB0aGlzLmdldEdyaWRPcHRpb25zKCkuc29ydEJ5U3RvcmUgPyB0aGlzLmdldFNhdmVkU29ydCgpIDogdGhpcy5nZXRTb3J0TW9kZWwoKSxcbiAgICAgIGhpZGRlbkNvbHVtbnMsXG4gICAgICBncm91cGVkQ29sdW1uczogZ3JvdXBlZENvbHVtbnMubWFwKHRvQ29sSWQpLFxuICAgICAgZmlsdGVyOiB0aGlzLmdldEZpbHRlcigpLFxuICAgICAgcGlubmVkQ29sdW1uczogY29sdW1ucy5nZXREaXNwbGF5ZWRMZWZ0Q29sdW1ucygpLm1hcCh0b0NvbElkKSxcbiAgICAgIGNvbHVtbnNPcmRlcjogYWxsR3JpZENvbHVtbnMubWFwKHRvQ29sSWQpLFxuICAgICAgY29sdW1uc1NpemVzOiBudWxsLFxuICAgICAgc2VhcmNoVGVybTogbnVsbFxuICAgIH07XG5cbiAgICBpZiAoc3RvcmVTZXR0aW5ncy5ncmlkQWxpZ25tZW50ID09PSBEYXRvR3JpZEFsaWdubWVudC5DVVNUT00pIHtcbiAgICAgIHNldHRpbmdzLmNvbHVtbnNTaXplcyA9IGdldENvbHVtbnNTaXplcyhhbGxHcmlkQ29sdW1ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldHRpbmdzO1xuICB9XG5cbiAgZ2V0U29ydE1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLmFwaS5ncmlkLmdldFNvcnRNb2RlbCgpLnBvcCgpIGFzIERhdG9HcmlkU29ydDtcbiAgfVxuXG4gIGdldFNhdmVkU29ydCgpOiBEYXRvR3JpZFNvcnQge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2V0dGluZ3Muc29ydCB8fCB0aGlzLmdldFNvcnRNb2RlbCgpO1xuICB9XG5cbiAgZ2V0U29ydChzYXZlZFNvcnQ6IERhdG9HcmlkU29ydCA9IHRoaXMuZ2V0U2F2ZWRTb3J0KCkpOiBEYXRvR3JpZFNvcnQge1xuICAgIGlmIChzYXZlZFNvcnQpIHtcbiAgICAgIGNvbnN0IHsgY29sSWQsIHNvcnQsIHNvcnRJbmRleCB9ID0gc2F2ZWRTb3J0O1xuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5hcGkuY29sdW1ucy5nZXRDb2x1bW4oY29sSWQpO1xuICAgICAgY29uc3QgYWxsQ29sdW1ucyA9IHRoaXMuYXBpLmNvbHVtbnMuZ2V0QWxsR3JpZENvbHVtbnMoKTtcblxuICAgICAgaWYgKGNvbHVtbikge1xuICAgICAgICBjb25zdCBmaWVsZCA9IGdldENvbEZpZWxkKGNvbHVtbi5nZXRDb2xEZWYoKSk7XG5cbiAgICAgICAgcmV0dXJuIHsgY29sSWQsIHNvcnQsIGZpZWxkIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzZWNvbmRhcnlDb2x1bW4gPSB0aGlzLmdldFNlY29uZGFyeUNvbHVtbihjb2xJZCk7XG5cbiAgICAgICAgaWYgKHNlY29uZGFyeUNvbHVtbikge1xuICAgICAgICAgIGNvbnN0IGNvbHVtbkluZGV4ID0gc29ydEluZGV4IHx8IGFsbENvbHVtbnMuaW5kZXhPZihzZWNvbmRhcnlDb2x1bW4pO1xuICAgICAgICAgIGNvbnN0IGZpZWxkID0gZ2V0Q29sRmllbGQoc2Vjb25kYXJ5Q29sdW1uLmdldENvbERlZigpKTtcblxuICAgICAgICAgIHJldHVybiB7IGNvbElkLCBzb3J0LCBmaWVsZCwgc29ydEluZGV4OiBjb2x1bW5JbmRleCB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY29sSWQ6IG51bGwsIHNvcnQ6IG51bGwgfTtcbiAgfVxuXG4gIC8qIEBpbnRlcm5hbCAqL1xuICBfc2V0QXBpKGFwaTogRGF0b0dyaWRBcGksIGdyaWRSZWY6IEFnR3JpZE5nMikge1xuICAgIHRoaXMuYXBpID0gYXBpO1xuICAgIHRoaXMuZ3JpZFJlZiA9IGdyaWRSZWY7XG4gIH1cblxuICAvKiogUmV0dXJucyBqdXN0IHRoZSByb3dzIGRhdGEgKi9cbiAgZ2V0U2VsZWN0ZWRSb3dzPFQ+KCk6IFRbXTtcbiAgZ2V0U2VsZWN0ZWRSb3dzPFQ+KG9ubHlGaXJzdFJvdzogdHJ1ZSk6IFQgfCB1bmRlZmluZWQ7XG4gIGdldFNlbGVjdGVkUm93czxUPihvbmx5Rmlyc3RSb3c6IGZhbHNlKTogVFtdO1xuICBnZXRTZWxlY3RlZFJvd3M8VD4ob25seUZpcnN0Um93PzogYm9vbGVhbik6IFRbXSB8IFQge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmFwaS5ncmlkLmdldFNlbGVjdGVkUm93cygpO1xuICAgIHJldHVybiBvbmx5Rmlyc3RSb3cgPyByb3dzWzBdIDogcm93cztcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBlbnRpcmUgcm93IG5vZGUgKi9cbiAgZ2V0U2VsZWN0ZWRSb3dOb2RlcygpOiBSb3dOb2RlW107XG4gIGdldFNlbGVjdGVkUm93Tm9kZXMob25seUZpcnN0Um93OiB0cnVlKTogUm93Tm9kZSB8IHVuZGVmaW5lZDtcbiAgZ2V0U2VsZWN0ZWRSb3dOb2Rlcyhvbmx5Rmlyc3RSb3c6IGZhbHNlKTogUm93Tm9kZVtdO1xuICBnZXRTZWxlY3RlZFJvd05vZGVzKG9ubHlGaXJzdFJvdz86IGJvb2xlYW4pOiBSb3dOb2RlW10gfCBSb3dOb2RlIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5hcGkuZ3JpZC5nZXRTZWxlY3RlZE5vZGVzKCk7XG4gICAgcmV0dXJuIG9ubHlGaXJzdFJvdyA/IHJvd3NbMF0gOiByb3dzO1xuICB9XG5cbiAgZ2V0RmlsdGVyKCk6IERhdG9HcmlkRmlsdGVyc01hcCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5maWx0ZXI7XG4gIH1cblxuICBzZWxlY3RGaWx0ZXIoKTogT2JzZXJ2YWJsZTxEYXRvR3JpZEZpbHRlcnNNYXA+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2V0dGluZ3MuZmlsdGVyKTtcbiAgfVxuXG4gIGdldEV4dGVybmFsRmlsdGVyKCk6IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXJbXSB7XG4gICAgY29uc3QgZ3JpZEZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcigpO1xuXG4gICAgaWYgKGdyaWRGaWx0ZXJzKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoZ3JpZEZpbHRlcnMpLnJlZHVjZSgoZmlsdGVycywgZmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyID0gZ3JpZEZpbHRlcnNbZmllbGRdO1xuXG4gICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICBmaWx0ZXJzLnB1c2goeyBmaWVsZCwgZmlsdGVyIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcnM7XG4gICAgICB9LCBbXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0U2VhcmNoVGVybSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2V0dGluZ3Muc2VhcmNoVGVybTtcbiAgfVxuXG4gIHNlbGVjdFNlYXJjaFRlcm0oKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3QoKHN0YXRlOiBHcmlkU3RvcmVTdGF0ZSkgPT4gc3RhdGUuc2V0dGluZ3Muc2VhcmNoVGVybSk7XG4gIH1cblxuICB3YWl0Rm9yR3JpZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICB3YWl0Rm9yR3JpZDxUID0gYW55Pihzb3VyY2U6ICgpID0+IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+O1xuICB3YWl0Rm9yR3JpZDxUID0gYW55Pihzb3VyY2U/OiAoKSA9PiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB8IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBzb3VyY2UgPyB0aGlzLmdyaWRSZWFkeSQucGlwZShzd2l0Y2hNYXAoc291cmNlKSkgOiB0aGlzLmdyaWRSZWFkeSQ7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9ncmlkUmVhZHkuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zZXJ2ZXJEYXRhTG9hZGVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBnZXRHcmlkT3B0aW9ucygpOiBEYXRvR3JpZE9wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLmdyaWRSZWYgPyAodGhpcy5ncmlkUmVmLmdyaWRPcHRpb25zIGFzIERhdG9HcmlkT3B0aW9ucykgOiBudWxsO1xuICB9XG5cbiAgc2VsZWN0U2VydmVyUGFnaW5hdGlvbkNvbmZpZygpOiBPYnNlcnZhYmxlPFNlcnZlclNpZGVQYWdpbmF0aW9uQ29uZmlnPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KChzdGF0ZTogR3JpZFN0b3JlU3RhdGUpID0+IHN0YXRlLnNlcnZlclNpZGVQYWdpbmF0aW9uKTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkUm93c0NvdW50KCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZCkge1xuICAgICAgY29uc3QgeyB0b3RhbFJvd3MsIGV4Y2x1ZGVkRnJvbVNlbGVjdEFsbCB9ID0gdGhpcy5zZXJ2ZXJTaWRlQ29uZmlnO1xuICAgICAgcmV0dXJuIHRvdGFsUm93cyAtIHNpemUoZXhjbHVkZWRGcm9tU2VsZWN0QWxsKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpemUodGhpcy5nZXRTZWxlY3RlZFJvd3MoKSk7XG4gIH1cblxuICBnZXRDdXJyZW50UGFnZVJvd3MoKTogUm93Tm9kZVtdIHtcbiAgICBjb25zdCBwYWdlUm93czogUm93Tm9kZVtdID0gW107XG4gICAgY29uc3QgcHVzaFBhZ2VSb3cgPSAobm9kZTogUm93Tm9kZSkgPT4ge1xuICAgICAgcGFnZVJvd3MucHVzaChub2RlKTtcbiAgICB9O1xuICAgIGNvbnN0IGdyaWQgPSB0aGlzLmFwaS5ncmlkO1xuICAgIGNvbnN0IHBhZ2VTaXplID0gZ3JpZC5wYWdpbmF0aW9uR2V0UGFnZVNpemUoKTtcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9IGdyaWQucGFnaW5hdGlvbkdldEN1cnJlbnRQYWdlKCk7XG4gICAgY29uc3QgdG90YWxSb3dzID0gZ3JpZC5wYWdpbmF0aW9uR2V0Um93Q291bnQoKTtcbiAgICBjb25zdCBmaXJzdFBhZ2VJbmRleCA9IGN1cnJlbnRQYWdlICogcGFnZVNpemU7XG4gICAgbGV0IGxhc3RQYWdlSW5kZXggPSBmaXJzdFBhZ2VJbmRleCArIHBhZ2VTaXplO1xuICAgIGlmIChsYXN0UGFnZUluZGV4ID4gdG90YWxSb3dzKSB7XG4gICAgICBsYXN0UGFnZUluZGV4ID0gdG90YWxSb3dzO1xuICAgIH1cbiAgICBjb25zdCBwZXJmb3JtQWN0aW9uID0gKG5vZGU6IFJvd05vZGUpID0+IHtcbiAgICAgIGlmIChub2RlLnJvd0luZGV4IDwgbGFzdFBhZ2VJbmRleCAmJiBub2RlLnJvd0luZGV4ID49IGZpcnN0UGFnZUluZGV4KSB7XG4gICAgICAgIHB1c2hQYWdlUm93KG5vZGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5pc1NlcnZlclNpZGUgPyBncmlkLmZvckVhY2hOb2RlKHBlcmZvcm1BY3Rpb24pIDogZ3JpZC5mb3JFYWNoTm9kZUFmdGVyRmlsdGVyQW5kU29ydChwZXJmb3JtQWN0aW9uKTtcbiAgICByZXR1cm4gcGFnZVJvd3M7XG4gIH1cblxuICBnZXRBbGxDb2x1bW5zKCk6IENvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJDaGVja2JveFNlbGVjdGlvbkNvbHVtbih0aGlzLmFwaS5jb2x1bW5zLmdldEFsbENvbHVtbnMoKSk7XG4gIH1cblxuICBnZXRBbGxEaXNwbGF5ZWRDb2x1bW5zKCk6IENvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJDaGVja2JveFNlbGVjdGlvbkNvbHVtbih0aGlzLmFwaS5jb2x1bW5zLmdldEFsbERpc3BsYXllZENvbHVtbnMoKSk7XG4gIH1cblxuICBnZXRBbGxQaXZvdENvbHVtbnMoKTogQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbENvbHVtbnMoKS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5pc1Bpdm90QWN0aXZlKCkpO1xuICB9XG5cbiAgc2VsZWN0SXNTZWxlY3RBbGxSb3dzRW5hYmxlZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2VydmVyU2lkZVBhZ2luYXRpb24uc2VsZWN0QWxsUm93c0VuYWJsZWQpO1xuICB9XG5cbiAgZ2V0U2Vjb25kYXJ5Q29sdW1uKGNvbElkOiBzdHJpbmcpOiBDb2x1bW4ge1xuICAgIGNvbnN0IHNlY29uZGFyeUNvbHVtbnMgPSB0aGlzLmFwaS5jb2x1bW5zLmdldFNlY29uZGFyeUNvbHVtbnMoKTtcblxuICAgIGlmIChzZWNvbmRhcnlDb2x1bW5zKSB7XG4gICAgICByZXR1cm4gc2Vjb25kYXJ5Q29sdW1ucy5maW5kKGNvbCA9PiBjb2wuZ2V0Q29sSWQoKSA9PT0gY29sSWQpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJDaGVja2JveFNlbGVjdGlvbkNvbHVtbihjb2x1bW5zOiBDb2x1bW5bXSk6IENvbHVtbltdIHtcbiAgICByZXR1cm4gY29sdW1ucy5maWx0ZXIoXG4gICAgICAoY29sdW1uOiBDb2x1bW4pID0+ICFjb2x1bW4uZ2V0VXNlclByb3ZpZGVkQ29sRGVmKCkgfHwgIWNvbHVtbi5nZXRVc2VyUHJvdmlkZWRDb2xEZWYoKS5jaGVja2JveFNlbGVjdGlvblxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|