@datorama/core 22.13.0-beta.6 → 22.13.8-rc.2
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/bundle.scss +4833 -5708
- package/bundles/datorama-core.umd.js +140 -86
- package/bundles/datorama-core.umd.js.map +1 -1
- package/bundles/datorama-core.umd.min.js +56 -56
- package/bundles/datorama-core.umd.min.js.map +1 -1
- package/datorama-core.d.ts +1 -0
- package/datorama-core.metadata.json +1 -1
- package/esm2015/datorama-core.js +2 -1
- package/esm2015/lib/breadcrumbs/breadcrumbs.component.js +4 -2
- package/esm2015/lib/grid/grid/grid.component.js +5 -5
- package/esm2015/lib/grid-v2/grid/grid-v2.component.js +8 -10
- package/esm2015/lib/grid-v2/grid/grid-v2.config.js +22 -5
- 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 +1 -1
- package/esm2015/lib/grid-v2/grid-column-header/grid-multi-select-header/grid-multi-select-header.component.js +3 -4
- package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +14 -8
- package/esm2015/lib/grid-v2/grid-settings.js +2 -2
- package/esm2015/lib/grid-v2/grid-store/grid.query.js +1 -1
- package/esm2015/lib/grid-v2/grid-store/grid.service.js +15 -15
- package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +13 -1
- package/esm2015/lib/rich-text/rich-text.directive.js +20 -38
- package/esm2015/lib/rich-text/rich-text.service.js +50 -0
- package/esm2015/lib/select/select.component.js +4 -9
- package/esm2015/lib/version.js +2 -2
- package/esm5/datorama-core.js +2 -1
- package/esm5/lib/breadcrumbs/breadcrumbs.component.js +4 -2
- package/esm5/lib/grid/grid/grid.component.js +5 -5
- package/esm5/lib/grid-v2/grid/grid-v2.component.js +8 -10
- package/esm5/lib/grid-v2/grid/grid-v2.config.js +22 -5
- 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 +1 -1
- package/esm5/lib/grid-v2/grid-column-header/grid-multi-select-header/grid-multi-select-header.component.js +3 -4
- package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +14 -8
- package/esm5/lib/grid-v2/grid-settings.js +2 -2
- package/esm5/lib/grid-v2/grid-store/grid.query.js +1 -1
- package/esm5/lib/grid-v2/grid-store/grid.service.js +15 -15
- package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +20 -1
- package/esm5/lib/rich-text/rich-text.directive.js +21 -39
- package/esm5/lib/rich-text/rich-text.service.js +51 -0
- package/esm5/lib/select/select.component.js +4 -9
- package/esm5/lib/version.js +2 -2
- package/fesm2015/datorama-core.js +131 -87
- package/fesm2015/datorama-core.js.map +1 -1
- package/fesm5/datorama-core.js +140 -88
- package/fesm5/datorama-core.js.map +1 -1
- package/lib/grid/grid/grid.component.d.ts +2 -2
- package/lib/grid-v2/grid/grid-v2.component.d.ts +2 -2
- package/lib/grid-v2/grid/grid-v2.config.d.ts +1 -0
- package/lib/grid-v2/grid/grid-v2.types.d.ts +1 -0
- package/lib/grid-v2/grid-controller/grid-controller.component.d.ts +5 -5
- 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 +6 -2
- package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +3 -0
- package/lib/rich-text/rich-text.directive.d.ts +4 -6
- package/lib/rich-text/rich-text.service.d.ts +10 -0
- package/package.json +2 -2
- package/testing/src/grid/row.ts +1 -1
|
@@ -64,13 +64,12 @@ var DatoGridMultiSelectColumnHeaderComponent = /** @class */ (function () {
|
|
|
64
64
|
DatoGridMultiSelectColumnHeaderComponent = __decorate([
|
|
65
65
|
Component({
|
|
66
66
|
selector: 'dato-grid-multi-select-column-header',
|
|
67
|
-
template: "<dato-checkbox [formControl]=\"checkboxControl\" [indeterminatelyChecked]=\"indeterminatelyChecked\"></dato-checkbox>",
|
|
68
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
69
|
-
styles: [":host{height:100%;display:flex;align-items:center}"]
|
|
67
|
+
template: "<dato-checkbox class=\"mt-5\" [formControl]=\"checkboxControl\" [indeterminatelyChecked]=\"indeterminatelyChecked\"></dato-checkbox>",
|
|
68
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
70
69
|
}),
|
|
71
70
|
__metadata("design:paramtypes", [GridService, GridQuery, ChangeDetectorRef])
|
|
72
71
|
], DatoGridMultiSelectColumnHeaderComponent);
|
|
73
72
|
return DatoGridMultiSelectColumnHeaderComponent;
|
|
74
73
|
}());
|
|
75
74
|
export { DatoGridMultiSelectColumnHeaderComponent };
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1tdWx0aS1zZWxlY3QtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1jb2x1bW4taGVhZGVyL2dyaWQtbXVsdGktc2VsZWN0LWhlYWRlci9ncmlkLW11bHRpLXNlbGVjdC1oZWFkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUWpEO0lBTUUsa0RBQW9CLFdBQXdCLEVBQVUsU0FBb0IsRUFBVSxHQUFzQjtRQUF0RixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUwxRyxvQkFBZSxHQUFnQixJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUt1RCxDQUFDO0lBRTlHLHlEQUFNLEdBQU4sVUFBTyxNQUFxQjtRQUE1QixpQkFRQztRQVBDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFDLFdBQW9CO1lBQzFGLEtBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyw2RUFBMEIsR0FBbEM7UUFBQSxpQkFZQztRQVhDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVTthQUN0QixJQUFJLENBQ0gsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBakMsQ0FBaUMsQ0FBQyxFQUNsRCxjQUFjLENBQUMsSUFBSSxDQUFDLENBQ3JCO2FBQ0EsU0FBUyxDQUFDLFVBQUMsRUFBdUU7Z0JBQXJFLGdEQUFxQixFQUFFLGdEQUFxQjtZQUN4RCxLQUFJLENBQUMsc0JBQXNCLEdBQUcscUJBQXFCLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDbEYsS0FBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMscUJBQXFCLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUM3RSxLQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHVFQUFvQixHQUFwQixVQUFxQixXQUFvQjtRQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXZELElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyw0QkFBNEIsRUFBRTtZQUN6RCxJQUFBLG9DQUFzRSxFQUFwRSxnREFBcUIsRUFBRSx3QkFBNkMsQ0FBQztZQUM3RSxJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUMsR0FBRyxDQUFDLFVBQUMsSUFBYSxJQUFLLE9BQUEsSUFBSSxDQUFDLEVBQUUsRUFBUCxDQUFPLENBQUMsQ0FBQztZQUN4RixJQUFNLDRCQUE0QixHQUFHLElBQUksVUFBSyxxQkFBcUIsRUFBSyxXQUFXLEVBQUUsQ0FBQztZQUN0RixJQUFJLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLFNBQVMsRUFBRTtnQkFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDM0U7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLDRCQUE0QixFQUFFLENBQUMsQ0FBQzthQUNuRztTQUNGO0lBQ0gsQ0FBQztJQUVELDhEQUFXLEdBQVgsY0FBcUIsQ0FBQzs7Z0JBekNXLFdBQVc7Z0JBQXFCLFNBQVM7Z0JBQWUsaUJBQWlCOztJQU4vRix3Q0FBd0M7UUFMcEQsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLHNDQUFzQztZQUNoRCxnSkFBd0Q7WUFDeEQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07U0FDaEQsQ0FBQzt5Q0FPaUMsV0FBVyxFQUFxQixTQUFTLEVBQWUsaUJBQWlCO09BTi9GLHdDQUF3QyxDQWdEcEQ7SUFBRCwrQ0FBQztDQUFBLEFBaERELElBZ0RDO1NBaERZLHdDQUF3QyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElIZWFkZXJBbmd1bGFyQ29tcCB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQgeyBHcmlkQXBpLCBJSGVhZGVyUGFyYW1zLCBSb3dOb2RlIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBHcmlkUXVlcnkgfSBmcm9tICcuLi8uLi9ncmlkLXN0b3JlL2dyaWQucXVlcnknO1xuaW1wb3J0IHsgdW5pcSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FycmF5JztcbmltcG9ydCB7IHNpemUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb2xsZWN0aW9uJztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnbmd4LXRha2UtdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBHcmlkU2VydmljZSB9IGZyb20gJy4uLy4uL2dyaWQtc3RvcmUvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7IHRha2UsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERhdG9HcmlkT3B0aW9ucywgR3JpZFJvd3NTZWxlY3Rpb25EYXRhIH0gZnJvbSAnLi4vLi4vZ3JpZC9ncmlkLXYyLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1ncmlkLW11bHRpLXNlbGVjdC1jb2x1bW4taGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtbXVsdGktc2VsZWN0LWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERhdG9HcmlkTXVsdGlTZWxlY3RDb2x1bW5IZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIElIZWFkZXJBbmd1bGFyQ29tcCB7XG4gIGNoZWNrYm94Q29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woZmFsc2UpO1xuICBpbmRldGVybWluYXRlbHlDaGVja2VkOiBib29sZWFuO1xuICBwcml2YXRlIGdyaWRBcGk6IEdyaWRBcGk7XG4gIHByaXZhdGUgZ3JpZE9wdGlvbnM6IERhdG9HcmlkT3B0aW9ucztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZSwgcHJpdmF0ZSBncmlkUXVlcnk6IEdyaWRRdWVyeSwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIGFnSW5pdChwYXJhbXM6IElIZWFkZXJQYXJhbXMpOiB2b2lkIHtcbiAgICB0aGlzLmdyaWRBcGkgPSBwYXJhbXMuYXBpO1xuICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB0aGlzLmdyaWRRdWVyeS5nZXRHcmlkT3B0aW9ucygpO1xuICAgIHRoaXMuc3Vic2NyaWJlUm93c1NlbGVjdGlvbkRhdGEoKTtcblxuICAgIHRoaXMuY2hlY2tib3hDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKGlzU2VsZWN0QWxsOiBib29sZWFuKSA9PiB7XG4gICAgICB0aGlzLnRvZ2dsZU11bHRpU2VsZWN0aW9uKGlzU2VsZWN0QWxsKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlUm93c1NlbGVjdGlvbkRhdGEoKSB7XG4gICAgdGhpcy5ncmlkUXVlcnkuZ3JpZFJlYWR5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmdyaWRRdWVyeS5yb3dzU2VsZWN0aW9uRGF0YSQpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeyBzZWxlY3RlZFBhZ2VSb3dzQ291bnQsIGlzQWxsUGFnZVJvd3NTZWxlY3RlZCB9OiBHcmlkUm93c1NlbGVjdGlvbkRhdGEpID0+IHtcbiAgICAgICAgdGhpcy5pbmRldGVybWluYXRlbHlDaGVja2VkID0gc2VsZWN0ZWRQYWdlUm93c0NvdW50ID4gMCAmJiAhaXNBbGxQYWdlUm93c1NlbGVjdGVkO1xuICAgICAgICB0aGlzLmNoZWNrYm94Q29udHJvbC5wYXRjaFZhbHVlKGlzQWxsUGFnZVJvd3NTZWxlY3RlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZU11bHRpU2VsZWN0aW9uKGlzU2VsZWN0QWxsOiBib29sZWFuKSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5zZWxlY3RBbGxDdXJyZW50UGFnZVJvd3MoaXNTZWxlY3RBbGwpO1xuXG4gICAgaWYgKCFpc1NlbGVjdEFsbCAmJiB0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkKSB7XG4gICAgICBjb25zdCB7IGV4Y2x1ZGVkRnJvbVNlbGVjdEFsbCwgdG90YWxSb3dzIH0gPSB0aGlzLmdyaWRRdWVyeS5zZXJ2ZXJTaWRlQ29uZmlnO1xuICAgICAgY29uc3QgcGFnZVJvd3NJZHMgPSB0aGlzLmdyaWRRdWVyeS5nZXRDdXJyZW50UGFnZVJvd3MoKS5tYXAoKG5vZGU6IFJvd05vZGUpID0+IG5vZGUuaWQpO1xuICAgICAgY29uc3QgdXBkYXRlZEV4Y2x1ZGVkRnJvbVNlbGVjdEFsbCA9IHVuaXEoWy4uLmV4Y2x1ZGVkRnJvbVNlbGVjdEFsbCwgLi4ucGFnZVJvd3NJZHNdKTtcbiAgICAgIGlmIChzaXplKHVwZGF0ZWRFeGNsdWRlZEZyb21TZWxlY3RBbGwpID09PSB0b3RhbFJvd3MpIHtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5zZXRTZXJ2ZXJTaWRlUGFnaW5hdGlvbih7IHNlbGVjdEFsbFJvd3NFbmFibGVkOiBmYWxzZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0U2VydmVyU2lkZVBhZ2luYXRpb24oeyBleGNsdWRlZEZyb21TZWxlY3RBbGw6IHVwZGF0ZWRFeGNsdWRlZEZyb21TZWxlY3RBbGwgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7fVxufVxuIl19
|
|
@@ -78,12 +78,9 @@ var DatoGridControllerComponent = /** @class */ (function () {
|
|
|
78
78
|
this.rowHoverComponent && this.rowHoverComponent.destroy();
|
|
79
79
|
this.rowHoverComponent = null;
|
|
80
80
|
};
|
|
81
|
-
DatoGridControllerComponent.prototype.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
this.contentInit.next();
|
|
85
|
-
this.contentInit.complete();
|
|
86
|
-
}
|
|
81
|
+
DatoGridControllerComponent.prototype.ngAfterContentInit = function () {
|
|
82
|
+
this.contentInit.next();
|
|
83
|
+
this.contentInit.complete();
|
|
87
84
|
};
|
|
88
85
|
/* @internal */
|
|
89
86
|
DatoGridControllerComponent.prototype._initializeGrid = function (agGrid, agGridEl) {
|
|
@@ -94,7 +91,10 @@ var DatoGridControllerComponent = /** @class */ (function () {
|
|
|
94
91
|
.pipe(switchMap(function () {
|
|
95
92
|
_this.gridOptions = _this.normalizeOptions();
|
|
96
93
|
agGrid.gridOptions = _this.gridOptions;
|
|
97
|
-
var
|
|
94
|
+
var isGlobal = _this.gridOptions.isGlobalSettings;
|
|
95
|
+
var settingsLoader = _this.gridOptions.saveSettings === false
|
|
96
|
+
? of(null)
|
|
97
|
+
: _this.storageAPI.get(_this.gridOptions.gridName, isGlobal);
|
|
98
98
|
return combineLatest([agGrid.gridReady, settingsLoader]);
|
|
99
99
|
}), untilDestroyed(this))
|
|
100
100
|
.subscribe(function (_a) {
|
|
@@ -125,6 +125,12 @@ var DatoGridControllerComponent = /** @class */ (function () {
|
|
|
125
125
|
});
|
|
126
126
|
};
|
|
127
127
|
DatoGridControllerComponent.prototype.normalizeOptions = function () {
|
|
128
|
+
/**
|
|
129
|
+
* When treeData is enabled, Pagination must be turned off
|
|
130
|
+
*/
|
|
131
|
+
if (this.gridOptions.treeData) {
|
|
132
|
+
this.gridOptions = __assign(__assign({}, this.gridOptions), { pagination: false });
|
|
133
|
+
}
|
|
128
134
|
var params = {
|
|
129
135
|
gridOptions: this.gridOptions,
|
|
130
136
|
customHeadersTemplates: this.customHeadersTemplates,
|
|
@@ -525,4 +531,4 @@ var DatoGridControllerComponent = /** @class */ (function () {
|
|
|
525
531
|
return DatoGridControllerComponent;
|
|
526
532
|
}());
|
|
527
533
|
export { DatoGridControllerComponent };
|
|
528
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jb250cm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBYXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxx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QkFBMkI7UUFUdkMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLHNCQUFzQjtZQUNoQyxRQUFRLEVBQUUscUNBRVQ7WUFFRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtZQUMvQyxTQUFTLEVBQUUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQzs7U0FDL0MsQ0FBQztRQXFERyxXQUFBLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO3lDQVRWLFdBQVc7WUFDYixTQUFTO1lBQ2QsaUJBQWlCO1lBQ1IsWUFBWTtZQUNmLG9CQUFvQjtZQUN6QixVQUFVO1lBQ04sUUFBUTtZQUNSLHdCQUF3QjtZQUN6QixXQUFXO09BbkRuQiwyQkFBMkIsQ0F1ZnZDO0lBQUQsa0NBQUM7Q0FBQSxBQXZmRCxJQXVmQztTQXZmWSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWdHcmlkQW5ndWxhciB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQgeyB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ25neC10YWtlLXVudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtcbiAgQm9keVNjcm9sbEV2ZW50LFxuICBDZWxsQ2xpY2tlZEV2ZW50LFxuICBDZWxsRXZlbnQsXG4gIENlbGxNb3VzZU91dEV2ZW50LFxuICBDZWxsTW91c2VPdmVyRXZlbnQsXG4gIENvbHVtblJlc2l6ZWRFdmVudCxcbiAgQ29sdW1uUm93R3JvdXBDaGFuZ2VkRXZlbnQsXG4gIERldGFpbEdyaWRJbmZvLFxuICBHcmlkQXBpLFxuICBSb3dHcm91cE9wZW5lZEV2ZW50XG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IEdyaWRRdWVyeSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5xdWVyeSc7XG5pbXBvcnQgeyBHcmlkU2VydmljZSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldENvbHVtbnNTaXplcywgaXNIdG1sQWxsb3dlZEZvckNvbCB9IGZyb20gJy4uL2dyaWQtc3RvcmUvdXRpbCc7XG5pbXBvcnQgeyBHcmlkU3RvcmUgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQuc3RvcmUnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncyB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZS50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZEFwaSB9IGZyb20gJy4vZ3JpZC1jb250cm9sbGVyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkQWxpZ25tZW50LCBEYXRvR3JpZE9wdGlvbnMsIERhdG9HcmlkU29ydCwgR3JpZENoYW5nZUV2ZW50IH0gZnJvbSAnLi4vZ3JpZC9ncmlkLXYyLnR5cGVzJztcbmltcG9ydCB7IEljb25SZWdpc3RyeSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ljb24tcmVnaXN0cnknO1xuaW1wb3J0IHsgZGVlcG1lcmdlIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvZGVlcC1tZXJnZSc7XG5pbXBvcnQgeyBEYXRvQ3VzdG9tSGVhZGVyVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWN1c3RvbS1oZWFkZXIvY3VzdG9tLWhlYWRlci10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSGFzaE1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzJztcbmltcG9ydCB7IEdyaWRBY3Rpb24sIFJvd0FjdGlvbiB9IGZyb20gJy4uL2dyaWQtdG9vbGJhci9ncmlkLXRvb2xiYXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBEQVRPX0dSSURfU1RPUkFHRV9BUEksIEdyaWRTdG9yYWdlQVBJIH0gZnJvbSAnLi4vZ3JpZC1zZXR0aW5ncyc7XG5pbXBvcnQgeyBhdWRpdFRpbWUsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBza2lwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGFkZENsYXNzLCBhcHBlbmRDaGlsZCwgcXVlcnkgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9oZWxwZXJzJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ3Rvb2x0aXAuanMnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IGNyZWF0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2FuZ3VsYXIvZHluYW1pYy1jb21wb25lbnRzJztcbmltcG9ydCB7IERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtb24taG92ZXIvZ3JpZC1vbi1ob3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29udmVydEZyb21UcmVlRGF0YSwgZGVmYXVsdEdyaWRPcHRpb25zLCBkZWZhdWx0VHJlZU9wdGlvbnMgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIuY29uZmlnJztcbmltcG9ydCB7IGNvZXJjZUFycmF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvY29lcmNpb24nO1xuaW1wb3J0IHsgRGF0b0hvdGtleXMgfSBmcm9tICcuLi8uLi9ob3RrZXlzL2hvdGtleXMuc2VydmljZSc7XG5pbXBvcnQgRE9NUHVyaWZ5IGZyb20gJ2RvbXB1cmlmeSc7XG5pbXBvcnQgeyBEYXRvR3JpZEV4dGVybmFsRmlsdGVyIH0gZnJvbSAnLi4vZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLWdyaWQtY29udHJvbGxlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9ncmlkLWNvbnRyb2xsZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW0dyaWRRdWVyeSwgR3JpZFNlcnZpY2UsIEdyaWRTdG9yZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQENvbnRlbnRDaGlsZHJlbihEYXRvQ3VzdG9tSGVhZGVyVGVtcGxhdGVDb21wb25lbnQpIGN1c3RvbUhlYWRlcnNUZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxcbiAgICBEYXRvQ3VzdG9tSGVhZGVyVGVtcGxhdGVDb21wb25lbnRcbiAgPjtcblxuICBAT3V0cHV0KCkgb25HcmlkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxHcmlkQ2hhbmdlRXZlbnQ+KCk7XG4gIEBJbnB1dCgpIHJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG4gIEBJbnB1dCgpIGdyaWRBY3Rpb25zOiBHcmlkQWN0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgc2V0IGdyaWRPcHRpb25zKGdyaWRPcHRpb25zOiBEYXRvR3JpZE9wdGlvbnMpIHtcbiAgICB0aGlzLl9ncmlkT3B0aW9ucyA9IGdyaWRPcHRpb25zO1xuICAgIHRoaXMuZ3JpZFNlcnZpY2UudHJlZURhdGEgPSBncmlkT3B0aW9ucy50cmVlRGF0YTtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLmlzUGl2b3RNb2RlID0gZ3JpZE9wdGlvbnMucGl2b3RNb2RlO1xuXG4gICAgaWYgKHRoaXMuYWdHcmlkRWwpIHtcbiAgICAgIGlmIChncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgICAhdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuY29udGFpbnModGhpcy50cmVlR3JpZENsYXNzKSAmJiB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQodGhpcy50cmVlR3JpZENsYXNzKTtcbiAgICAgIH0gZWxzZSBpZiAoIWdyaWRPcHRpb25zLmVuYWJsZVYyXzEpIHtcbiAgICAgICAgdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuYWRkKHRoaXMudHJlZUdyaWRDbGFzcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGdyaWRPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9ncmlkT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgY29udGVudEluaXQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIHRvb2x0aXA7XG4gIHByaXZhdGUgX2dyaWRPcHRpb25zOiBEYXRvR3JpZE9wdGlvbnM7XG4gIGdyaWRSZWFkeSQgPSB0aGlzLmdyaWRRdWVyeS5ncmlkUmVhZHkkO1xuICBhZ0dyaWRFbDogSFRNTEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSByb3dIb3ZlckNvbXBvbmVudDogQ29tcG9uZW50UmVmPERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudD47XG4gIHByaXZhdGUgbGFzdEhvdmVyZWRSb3c6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGdyaWRFbGVtZW50cyA9IHtcbiAgICBjZW50ZXJWaWV3cG9ydDogbnVsbCxcbiAgICBjZW50ZXJDb250YWluZXI6IG51bGwsXG4gICAgYm9keVZpZXdwb3J0OiBudWxsXG4gIH07XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJlZUdyaWRDbGFzcyA9ICd0cmVlJztcbiAgcHJpdmF0ZSBjZWxsTW91c2VPdXRUaW1lcjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgcHVibGljIGdyaWRRdWVyeTogR3JpZFF1ZXJ5LFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGljb25SZWdpc3RyeTogSWNvblJlZ2lzdHJ5LFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBEYXRvVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgaG90a2V5czogRGF0b0hvdGtleXMsXG4gICAgQEluamVjdChEQVRPX0dSSURfU1RPUkFHRV9BUEkpIHByaXZhdGUgc3RvcmFnZUFQSTogR3JpZFN0b3JhZ2VBUElcbiAgKSB7fVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY29udGVudEluaXQuY29tcGxldGUoKTtcbiAgICB0aGlzLmNsZWFyVG9vbHRpcCgpO1xuICAgIHRoaXMucm93SG92ZXJDb21wb25lbnQgJiYgdGhpcy5yb3dIb3ZlckNvbXBvbmVudC5kZXN0cm95KCk7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudCA9IG51bGw7XG4gIH1cblxuICBpbml0aWFsaXplR3JpZChhZ0dyaWQ6IEFnR3JpZEFuZ3VsYXIsIGFnR3JpZEVsOiBIVE1MRWxlbWVudCkge1xuICAgIGlmICghdGhpcy5jb250ZW50SW5pdC5pc1N0b3BwZWQpIHtcbiAgICAgIHRoaXMuX2luaXRpYWxpemVHcmlkKGFnR3JpZCwgYWdHcmlkRWwpO1xuICAgICAgdGhpcy5jb250ZW50SW5pdC5uZXh0KCk7XG4gICAgICB0aGlzLmNvbnRlbnRJbml0LmNvbXBsZXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyogQGludGVybmFsICovXG4gIHByaXZhdGUgX2luaXRpYWxpemVHcmlkKGFnR3JpZDogQWdHcmlkQW5ndWxhciwgYWdHcmlkRWw6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5hZ0dyaWRFbCA9IGFnR3JpZEVsO1xuICAgIHRoaXMuY29udGVudEluaXRcbiAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucyA9IHRoaXMubm9ybWFsaXplT3B0aW9ucygpO1xuICAgICAgICAgIGFnR3JpZC5ncmlkT3B0aW9ucyA9IHRoaXMuZ3JpZE9wdGlvbnM7XG4gICAgICAgICAgY29uc3Qgc2V0dGluZ3NMb2FkZXIgPVxuICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zYXZlU2V0dGluZ3MgPT09IGZhbHNlID8gb2YobnVsbCkgOiB0aGlzLnN0b3JhZ2VBUEkuZ2V0KHRoaXMuZ3JpZE9wdGlvbnMuZ3JpZE5hbWUpO1xuICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFthZ0dyaWQuZ3JpZFJlYWR5LCBzZXR0aW5nc0xvYWRlcl0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFt7IGFwaSwgY29sdW1uQXBpIH0sIHNhdmVkU2V0dGluZ3MgPSB7fV06IFtEZXRhaWxHcmlkSW5mbywgUGFydGlhbDxEYXRvR3JpZFNldHRpbmdzPl0pID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmdyaWRPcHRpb25zLnJvd0RhdGEpIHtcbiAgICAgICAgICBhcGkuc2hvd0xvYWRpbmdPdmVybGF5KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmdyaWRPcHRpb25zLnN0YXR1c0Jhcikge1xuICAgICAgICAgIC8qKiBGaXggYWctZ3JpZCBidWcgdGhhdCBkb2Vzbid0IGFkZCBhZy1oaWRkZW4gY2xhc3MgdG8gdGhlIHN0YXR1cyBiYXIsIHdoaWNoIG9ubHkgZ2V0IGZpeGVkIGluIGxhdGVyIHZlcnNpb25zICovXG4gICAgICAgICAgY29uc3QgZWwgPSBhZ0dyaWRFbC5xdWVyeVNlbGVjdG9yKCcuYWctc3RhdHVzLWJhcicpO1xuXG4gICAgICAgICAgYWRkQ2xhc3MoZWwsICdhZy1oaWRkZW4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBncmlkQXBpOiBEYXRvR3JpZEFwaSA9IHsgZ3JpZDogYXBpLCBjb2x1bW5zOiBjb2x1bW5BcGkgfTtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5fc2V0QXBpKGdyaWRBcGksIGFnR3JpZCk7XG4gICAgICAgIHRoaXMuZ3JpZFF1ZXJ5Ll9zZXRBcGkoZ3JpZEFwaSwgYWdHcmlkKTtcblxuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLmluaXRTZXR0aW5ncyhzYXZlZFNldHRpbmdzIHx8IHt9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclNldHRpbmdzTGlzdGVuZXJzKGdyaWRBcGksIGFnR3JpZCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJHcmlkTGlzdGVuZXJzKGdyaWRBcGksIGFnR3JpZCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudHNUcmlnZ2VyaW5nQ2xlYXJTZWxlY3RlZFJvd3MoYWdHcmlkKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclBhZ2luYXRpb25DaGFuZ2VkKGFnR3JpZCk7XG4gICAgICAgIHRoaXMuZ3JpZFF1ZXJ5Ll9ncmlkUmVhZHkubmV4dCh0cnVlKTtcblxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgICAgIHRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmFkZCgndHJlZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLnJvd0hlaWdodCkge1xuICAgICAgICAgIHRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmFkZChgcm93LWhlaWdodC0ke3RoaXMuZ3JpZE9wdGlvbnMucm93SGVpZ2h0fWApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplT3B0aW9ucygpIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBncmlkT3B0aW9uczogdGhpcy5ncmlkT3B0aW9ucyxcbiAgICAgIGN1c3RvbUhlYWRlcnNUZW1wbGF0ZXM6IHRoaXMuY3VzdG9tSGVhZGVyc1RlbXBsYXRlcyxcbiAgICAgIHJvd0FjdGlvbnM6IHRoaXMucm93QWN0aW9uc1xuICAgIH07XG5cbiAgICBsZXQgbm9ybWFsaXplZCA9IHRoaXMuZ3JpZFNlcnZpY2Uubm9ybWFsaXplT3B0aW9ucyhwYXJhbXMpO1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgLi4uZGVmYXVsdEdyaWRPcHRpb25zLFxuICAgICAgLi4uKHRoaXMuZ3JpZE9wdGlvbnMudHJlZURhdGEgPyBkZWZhdWx0VHJlZU9wdGlvbnMgOiB7fSksXG4gICAgICBpY29uczogdGhpcy5nZXRHcmlkSWNvbnMoKSxcbiAgICAgIGRpc2FibGVkSFRNTFJlbmRlcmluZ0ZpZWxkczpcbiAgICAgICAgbm9ybWFsaXplZC5kaXNhYmxlZEhUTUxSZW5kZXJpbmdGaWVsZHMgfHwgZGVmYXVsdEdyaWRPcHRpb25zLmRpc2FibGVkSFRNTFJlbmRlcmluZ0ZpZWxkc1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVlcG1lcmdlKGRlZmF1bHRzLCBub3JtYWxpemVkKTtcbiAgfVxuXG4gIHNldEdyaWRSb3dzPFQ+KGRhdGE6IFRbXSkge1xuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0Um93czxUPihkYXRhKTtcbiAgfVxuXG4gIHNldEdyaWRGaWx0ZXJzKGZpbHRlcnM6IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXJbXSkge1xuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0R3JpZEZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICBzZXRHcmlkU29ydChzb3J0OiBEYXRvR3JpZFNvcnQpIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLnNldEdyaWRTb3J0KHNvcnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHcmlkSWNvbnMoKTogSGFzaE1hcDxzdHJpbmc+IHtcbiAgICBjb25zdCBtb3ZlQ29sdW1uSWNvbiA9IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGQtZmxleCBjb2x1bW4tbW92ZVwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgJ21vdmUtY29sdW1uJ1xuICAgICl9PC9zcGFuPmA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdyb3VwRXhwYW5kZWQ6IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGdyb3VwLWV4cGFuZGVkLWljb25cIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ2Fycm93LXJpZ2h0J1xuICAgICAgKX08L3NwYW4+YCxcbiAgICAgIGdyb3VwQ29udHJhY3RlZDogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZ3JvdXAtY29udHJhY3RlZC1pY29uXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdhcnJvdy1yaWdodCdcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBjb2x1bW5Nb3ZlUGluOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBkLWZsZXggcHJpbWFyeS0zMDAtZmlsbCBjb2x1bW4tbW92ZS1waW5cIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ3BpbidcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBjb2x1bW5Nb3ZlSGlkZTogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZC1mbGV4IGNvbHVtbi1tb3ZlLWhpZGVcIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ2V5ZS1oaWRlJ1xuICAgICAgKX08L3NwYW4+YCxcbiAgICAgIGNvbHVtbk1vdmVNb3ZlOiBtb3ZlQ29sdW1uSWNvbixcbiAgICAgIGNvbHVtbk1vdmVMZWZ0OiBtb3ZlQ29sdW1uSWNvbixcbiAgICAgIGNvbHVtbk1vdmVSaWdodDogbW92ZUNvbHVtbkljb24sXG4gICAgICByb3dEcmFnOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gZHJhZyBkLWZsZXhcIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZygnZHJhZy0wMScpfTwvc3Bhbj5gXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJTZXR0aW5nc0xpc3RlbmVycyhhcGk6IERhdG9HcmlkQXBpLCBhZ0dyaWQ6IEFnR3JpZEFuZ3VsYXIpIHtcbiAgICB0aGlzLmxpc3RlblRvQ29sdW1uUmVzaXplKGFwaSwgYWdHcmlkKTtcbiAgICB0aGlzLmxpc3RlblRvR3JpZEV2ZW50cyhhZ0dyaWQpO1xuICAgIHRoaXMubGlzdGVuVG9TdG9yZVNldHRpbmdzQ2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub0NvbHVtblJlc2l6ZShhcGk6IERhdG9HcmlkQXBpLCB7IGNvbHVtblJlc2l6ZWQgfTogQWdHcmlkQW5ndWxhcikge1xuICAgIGxldCBvYnNlcnZhYmxlID0gY29sdW1uUmVzaXplZC5hc09ic2VydmFibGUoKTtcbiAgICBpZiAodGhpcy5vbkhvdmVyRW5hYmxlZCgpKSB7XG4gICAgICBvYnNlcnZhYmxlID0gb2JzZXJ2YWJsZS5waXBlKFxuICAgICAgICBmaWx0ZXIoKHsgc291cmNlIH06IENvbHVtblJlc2l6ZWRFdmVudCkgPT4gc291cmNlID09PSAndWlDb2x1bW5EcmFnZ2VkJyksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLnVwZGF0ZU9uSG92ZXJQb3MoKSlcbiAgICAgICk7XG4gICAgfVxuICAgIG9ic2VydmFibGVcbiAgICAgIC5waXBlKFxuICAgICAgICBhdWRpdFRpbWUoMTAwKSxcbiAgICAgICAgZmlsdGVyKCh7IGZpbmlzaGVkLCBzb3VyY2UgfTogQ29sdW1uUmVzaXplZEV2ZW50KSA9PiBmaW5pc2hlZCAmJiBzb3VyY2UgPT09ICd1aUNvbHVtbkRyYWdnZWQnKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICAgIGNvbnN0IFtjb2x1bW5dID0gZS5jb2x1bW5zO1xuICAgICAgICBsZXQgY29sdW1uc1NpemVzID0geyAuLi50aGlzLmdyaWRRdWVyeS5nZXRDb2x1bW5TaXplcygpIH07XG4gICAgICAgIGlmIChjb2x1bW5zU2l6ZXMpIHtcbiAgICAgICAgICBjb2x1bW5zU2l6ZXNbY29sdW1uLmdldENvbElkKCldID0gY29sdW1uLmdldEFjdHVhbFdpZHRoKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29sdW1uc1NpemVzID0gZ2V0Q29sdW1uc1NpemVzKGFwaS5jb2x1bW5zLmdldEFsbEdyaWRDb2x1bW5zKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UudXBkYXRlU2V0dGluZ3MoeyBncmlkQWxpZ25tZW50OiBEYXRvR3JpZEFsaWdubWVudC5DVVNUT00sIGNvbHVtbnNTaXplcyB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub0dyaWRFdmVudHMoYWdHcmlkOiBBZ0dyaWRBbmd1bGFyKSB7XG4gICAgY29uc3QgeyBjb2x1bW5WaXNpYmxlLCBzb3J0Q2hhbmdlZCwgY29sdW1uUm93R3JvdXBDaGFuZ2VkLCBjb2x1bW5QaW5uZWQsIGRyYWdTdG9wcGVkLCBmaWx0ZXJDaGFuZ2VkIH0gPSBhZ0dyaWQ7XG4gICAgbWVyZ2UoY29sdW1uVmlzaWJsZSwgc29ydENoYW5nZWQsIGNvbHVtblJvd0dyb3VwQ2hhbmdlZCwgY29sdW1uUGlubmVkLCBkcmFnU3RvcHBlZCwgZmlsdGVyQ2hhbmdlZClcbiAgICAgIC5waXBlKFxuICAgICAgICAvKiBTa2lwIHRoZSBpbml0aWFsIHNvcnRpbmcgZXZlbnQgZmlyZWQgYnkgdGhlIGdyaWQgd2hlbiBhZGRpbmcgcm93cyAqL1xuICAgICAgICBza2lwKDEpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeyB0eXBlIH0pID0+IHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3NEaWZmID0gdGhpcy5ncmlkU2VydmljZS5nZXRTZXR0aW5nc0RpZmYoKTtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS51cGRhdGVTZXR0aW5ncyhzZXR0aW5nc0RpZmYpO1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRHcmlkRGF0YSgpO1xuICAgICAgICB0aGlzLm9uR3JpZENoYW5nZS5lbWl0KHtcbiAgICAgICAgICBmaWx0ZXI6IHRoaXMuZ3JpZFF1ZXJ5LmdldEV4dGVybmFsRmlsdGVyKCksXG4gICAgICAgICAgc29ydDogdGhpcy5ncmlkUXVlcnkuZ2V0U29ydCgpLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgZGF0YVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub1N0b3JlU2V0dGluZ3NDaGFuZ2VzKCkge1xuICAgIHRoaXMuZ3JpZFF1ZXJ5XG4gICAgICAuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnNldHRpbmdzKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDAwKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBzZXR0aW5nc0RpZmYgPSB0aGlzLmdyaWRTZXJ2aWNlLmdldFNldHRpbmdzRGlmZigpO1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNhdmVTZXR0aW5nc1RvU2VydmVyKHNldHRpbmdzRGlmZik7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkTGlzdGVuZXJzKGFwaTogRGF0b0dyaWRBcGksIGFnR3JpZDogQWdHcmlkQW5ndWxhcikge1xuICAgIHRoaXMuZ3JpZEVsZW1lbnRzID0ge1xuICAgICAgY2VudGVyQ29udGFpbmVyOiBxdWVyeSgnLmFnLWNlbnRlci1jb2xzLWNvbnRhaW5lcicsIHRoaXMuYWdHcmlkRWwpLFxuICAgICAgY2VudGVyVmlld3BvcnQ6IHF1ZXJ5KCcuYWctY2VudGVyLWNvbHMtdmlld3BvcnQnLCB0aGlzLmFnR3JpZEVsKSxcbiAgICAgIGJvZHlWaWV3cG9ydDogcXVlcnkoJy5hZy1ib2R5LXZpZXdwb3J0JywgdGhpcy5hZ0dyaWRFbClcbiAgICB9O1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkQ2xpY2tMaXN0ZW5lcihhcGkuZ3JpZCk7XG4gICAgdGhpcy5yZWdpc3RlckdyaWRHcm91cExpc3RlbmVycyhhZ0dyaWQpO1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkTW91c2VMaXN0ZW5lcnMoYWdHcmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyR3JpZEtleWJvYXJkTGlzdGVuZXIoYXBpKTtcbiAgICB0aGlzLnJlZ2lzdGVyV2luZG93UmVzaXplTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkR3JvdXBMaXN0ZW5lcnMoYWdHcmlkOiBBZ0dyaWRBbmd1bGFyKSB7XG4gICAgLyogTWFrZSBncm91cCBleHBhbmQvY29sbGFwc2Ugb24gYSBzaW5nbGUgY2xpY2sgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBkb3VibGUgY2xpY2sgKi9cbiAgICBhZ0dyaWQuY29sdW1uUm93R3JvdXBDaGFuZ2VkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh7IGNvbHVtbnMgfTogQ29sdW1uUm93R3JvdXBDaGFuZ2VkRXZlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gY29sdW1ucy5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gRU1QVFlcbiAgICAgICAgICAgIDogYWdHcmlkLmNlbGxDbGlja2VkLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCh7IHZhbHVlLCBub2RlIH06IENlbGxDbGlja2VkRXZlbnQpID0+IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgbm9kZS5ncm91cCA9PT0gdHJ1ZSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7IG5vZGUgfTogQ2VsbENsaWNrZWRFdmVudCkgPT4ge1xuICAgICAgICBub2RlLnNldEV4cGFuZGVkKCFub2RlLmV4cGFuZGVkKTtcbiAgICAgIH0pO1xuICAgIC8qIFdoZW4gY2xvc2luZyBhIGdyb3VwZWQgcm93IHdlIHdhbnQgdG8gaGlkZSB0aGUgb24gaG92ZXIgYWN0aW9ucyAqL1xuICAgIGlmICh0aGlzLm9uSG92ZXJFbmFibGVkKCkpIHtcbiAgICAgIGFnR3JpZC5yb3dHcm91cE9wZW5lZFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKHsgbm9kZSB9OiBSb3dHcm91cE9wZW5lZEV2ZW50KSA9PiBub2RlLmV4cGFuZGVkID09PSBmYWxzZSksXG4gICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmxhc3RIb3ZlcmVkUm93ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnNldE9uSG92ZXJTdGF0ZShmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGNsaWNrIHdhcyBwZXJmb3JtZWQgb24gdGhlIGdyaWRzIGJvZHkgYW5kIG5vdCBhIHJvdywgY2xlYXIgdGhlIHJvd3Mgc2VsZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlZ2lzdGVyR3JpZENsaWNrTGlzdGVuZXIoYXBpOiBHcmlkQXBpKSB7XG4gICAgY29uc3QgeyBib2R5Vmlld3BvcnQsIGNlbnRlclZpZXdwb3J0IH0gPSB0aGlzLmdyaWRFbGVtZW50cztcbiAgICBmcm9tRXZlbnQoYm9keVZpZXdwb3J0LCAnY2xpY2snKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gKGV2ZW50LnRhcmdldCA9PT0gYm9keVZpZXdwb3J0IHx8IGV2ZW50LnRhcmdldCA9PT0gY2VudGVyVmlld3BvcnQpICYmIGFwaS5nZXRTZWxlY3RlZFJvd3MoKS5sZW5ndGggPiAwO1xuICAgICAgICB9KSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gYXBpLmRlc2VsZWN0QWxsKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkhvdmVyRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9ucy5ob3ZlckNvbmZpZy5lbmFibGVkICYmIHRoaXMucm93QWN0aW9ucy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRNb3VzZUxpc3RlbmVycyhhZ0dyaWQ6IEFnR3JpZEFuZ3VsYXIpIHtcbiAgICBjb25zdCB7IGJvZHlWaWV3cG9ydCwgY2VudGVyQ29udGFpbmVyIH0gPSB0aGlzLmdyaWRFbGVtZW50cztcbiAgICBsZXQgbGFzdEhvdmVyZWRDZWxsO1xuICAgIGNvbnN0IG9uSG92ZXJFbmFibGVkID0gdGhpcy5vbkhvdmVyRW5hYmxlZCgpO1xuICAgIGlmIChvbkhvdmVyRW5hYmxlZCkge1xuICAgICAgZnJvbUV2ZW50KGNlbnRlckNvbnRhaW5lciwgJ21vdXNlbGVhdmUnKVxuICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50b2dnbGVSb3dIb3ZlckNsYXNzKHRoaXMubGFzdEhvdmVyZWRSb3cpO1xuICAgICAgICAgIHRoaXMubGFzdEhvdmVyZWRSb3cgPSBudWxsO1xuICAgICAgICAgIHRoaXMuc2V0T25Ib3ZlclN0YXRlKGZhbHNlKTtcbiAgICAgICAgICBsYXN0SG92ZXJlZENlbGwgPSBudWxsO1xuICAgICAgICB9KTtcbiAgICAgIG1lcmdlKFxuICAgICAgICBhZ0dyaWQuYm9keVNjcm9sbC5waXBlKGZpbHRlcigoeyBkaXJlY3Rpb24gfTogQm9keVNjcm9sbEV2ZW50KSA9PiBkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykpLFxuICAgICAgICBhZ0dyaWQucm93RGF0YUNoYW5nZWRcbiAgICAgIClcbiAgICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlT25Ib3ZlclBvcygpO1xuICAgICAgICB9KTtcbiAgICAgIHRoaXMuYWRkT25Ib3ZlckVsZW1lbnQoKTtcbiAgICB9XG4gICAgYWdHcmlkLmNlbGxNb3VzZU92ZXIucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKChldmVudDogQ2VsbE1vdXNlT3ZlckV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IG5vZGUsIGNvbHVtbiB9ID0gZXZlbnQ7XG4gICAgICBpZiAobGFzdEhvdmVyZWRDZWxsID09PSBgJHtub2RlLmlkfS0ke2NvbHVtbi5nZXRDb2xJZCgpfWApIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2VsbE1vdXNlT3V0VGltZXIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsYXN0SG92ZXJlZENlbGwgPSBgJHtub2RlLmlkfS0ke2NvbHVtbi5nZXRDb2xJZCgpfWA7XG4gICAgICB0aGlzLnNob3dUb29sdGlwKGV2ZW50KTtcbiAgICAgIGNvbnN0IHJvdyA9IChldmVudC5ldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQ7XG4gICAgICBpZiAob25Ib3ZlckVuYWJsZWQgJiYgKG5vZGUuZ3JvdXAgPT09IGZhbHNlIHx8IGlzTmlsKG5vZGUuZ3JvdXApKSAmJiB0aGlzLmxhc3RIb3ZlcmVkUm93ICE9PSByb3cpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNOb2RlID0gdGhpcy5sYXN0SG92ZXJlZFJvdztcbiAgICAgICAgdGhpcy5sYXN0SG92ZXJlZFJvdyA9IHJvdztcbiAgICAgICAgdGhpcy50b2dnbGVSb3dIb3ZlckNsYXNzKFtwcmV2aW91c05vZGUsIHRoaXMubGFzdEhvdmVyZWRSb3ddKTtcbiAgICAgICAgdGhpcy5zZXRPbkhvdmVyU3RhdGUodHJ1ZSwgZXZlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IG9uVG9vbHRpcE91dCA9IG1lcmdlKGZyb21FdmVudChib2R5Vmlld3BvcnQsICdzY3JvbGwnKSwgZnJvbUV2ZW50KHRoaXMuYWdHcmlkRWwsICdtb3VzZWxlYXZlJykpO1xuICAgIG9uVG9vbHRpcE91dC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgbGFzdEhvdmVyZWRDZWxsID0gbnVsbDtcbiAgICAgIHRoaXMuY2xlYXJUb29sdGlwKCk7XG4gICAgfSk7XG5cbiAgICBhZ0dyaWQuY2VsbE1vdXNlT3V0XG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICFpc05pbCh0aGlzLnRvb2x0aXApKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNlbGxNb3VzZU91dFRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbGVhclRvb2x0aXAoKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwb3NlIHRoZSB0b29sdGlwXG4gICAqL1xuICBjbGVhclRvb2x0aXAoKTogdm9pZCB7XG4gICAgdGhpcy50b29sdGlwICYmIHRoaXMudG9vbHRpcC5kaXNwb3NlKCk7XG4gICAgdGhpcy50b29sdGlwID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1Rvb2x0aXAoZXZlbnQ6IENlbGxFdmVudCkge1xuICAgIGxldCBjZWxsOiBIVE1MRWxlbWVudCA9IGV2ZW50LmV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoY2VsbC50YWdOYW1lID09PSAnU1BBTicgJiYgY2VsbC5zY3JvbGxXaWR0aCA9PT0gMCkge1xuICAgICAgY2VsbCA9IGNlbGwucGFyZW50RWxlbWVudDtcbiAgICB9XG4gICAgaWYgKGV2ZW50LmNvbERlZi5lZGl0YWJsZSkge1xuICAgICAgY2VsbCA9IGNlbGwucXVlcnlTZWxlY3RvcignLnZhbHVlLXdyYXBwZXInKSB8fCBjZWxsO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0T3ZlcmZsb3cgPSBjZWxsLm9mZnNldFdpZHRoIDwgY2VsbC5zY3JvbGxXaWR0aDtcbiAgICBpZiAodGV4dE92ZXJmbG93KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jZWxsTW91c2VPdXRUaW1lcik7XG4gICAgICBjb25zdCBhbGxvd0hUTUwgPSBpc0h0bWxBbGxvd2VkRm9yQ29sKHRoaXMuZ3JpZE9wdGlvbnMsIGV2ZW50LmNvbERlZik7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7IGNlbGwsIHZhbHVlOiBjZWxsLmlubmVyVGV4dCwgYWxsb3dIVE1MIH07XG5cbiAgICAgIGlzTmlsKHRoaXMudG9vbHRpcCkgPyB0aGlzLmNyZWF0ZUFuZFNob3dUb29sdGlwKHBhcmFtcykgOiB0aGlzLnVwZGF0ZVRvb2x0aXAocGFyYW1zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFuZFNob3dUb29sdGlwKHsgY2VsbCwgdmFsdWUsIGFsbG93SFRNTCB9KSB7XG4gICAgdGhpcy50b29sdGlwID0gbmV3IFRvb2x0aXAoY2VsbCwge1xuICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgIGNvbnRhaW5lcjogZG9jdW1lbnQuYm9keSxcbiAgICAgIHRyaWdnZXI6ICdtYW51YWwnLFxuICAgICAgdGl0bGU6IGFsbG93SFRNTCA/IERPTVB1cmlmeS5zYW5pdGl6ZSh2YWx1ZSkgOiB2YWx1ZSxcbiAgICAgIGh0bWw6IGFsbG93SFRNTCxcbiAgICAgIHBvcHBlck9wdGlvbnM6IHtcbiAgICAgICAgbW9kaWZpZXJzOiB7XG4gICAgICAgICAgcHJldmVudE92ZXJmbG93OiB7IGVuYWJsZWQ6IGZhbHNlIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRlbXBsYXRlOlxuICAgICAgICAnPGRpdiBjbGFzcz1cInRvb2x0aXAgZGF0by10b29sdGlwIGNvbW1vbi10b29sdGlwXCIgcm9sZT1cInRvb2x0aXBcIj48ZGl2IGNsYXNzPVwidG9vbHRpcC1hcnJvd1wiPjwvZGl2PjxkaXYgY2xhc3M9XCJ0b29sdGlwLWlubmVyXCI+PC9kaXY+PC9kaXY+J1xuICAgIH0pO1xuXG4gICAgdGhpcy50b29sdGlwLnNob3coKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHRvb2x0aXAgZWxlbWVudCByZWYgYW5kIGNvbnRlbnRcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVG9vbHRpcCh7IGNlbGwsIHZhbHVlIH0pOiB2b2lkIHtcbiAgICBpZiAoY2VsbCAhPT0gdGhpcy50b29sdGlwLnJlZmVyZW5jZSkge1xuICAgICAgdGhpcy50b29sdGlwLnJlZmVyZW5jZSA9IGNlbGw7XG4gICAgICB0aGlzLnRvb2x0aXAucG9wcGVySW5zdGFuY2UucmVmZXJlbmNlID0gY2VsbDtcbiAgICAgIHRoaXMudG9vbHRpcC51cGRhdGVUaXRsZUNvbnRlbnQodmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLnRvb2x0aXAuc2hvdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRPbkhvdmVyRWxlbWVudCgpIHtcbiAgICB0aGlzLnJvd0hvdmVyQ29tcG9uZW50ID0gY3JlYXRlQ29tcG9uZW50PERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudD4oe1xuICAgICAgY29tcG9uZW50OiBEYXRvR3JpZE9uSG92ZXJDb21wb25lbnQsXG4gICAgICBpbmplY3RvcjogdGhpcy5pbmplY3RvcixcbiAgICAgIHJlc29sdmVyOiB0aGlzLnJlc29sdmVyXG4gICAgfSk7XG4gICAgY29uc3QgeyBpbnN0YW5jZSwgaG9zdFZpZXcgfSA9IHRoaXMucm93SG92ZXJDb21wb25lbnQ7XG4gICAgaW5zdGFuY2UuY29uZmlnID0geyAuLi50aGlzLmdyaWRPcHRpb25zLmhvdmVyQ29uZmlnLCBhY3Rpb25zOiB0aGlzLnJvd0FjdGlvbnMuc2xpY2UoKSB9O1xuICAgIGhvc3RWaWV3LmRldGVjdENoYW5nZXMoKTtcbiAgICBhcHBlbmRDaGlsZCh0aGlzLmdyaWRFbGVtZW50cy5jZW50ZXJDb250YWluZXIsIHRoaXMucm93SG92ZXJFbCk7XG4gIH1cblxuICBwcml2YXRlIGdldCByb3dIb3ZlckVsKCkge1xuICAgIHJldHVybiB0aGlzLnJvd0hvdmVyQ29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIHNldE9uSG92ZXJTdGF0ZSh2aXNpYmxlOiBib29sZWFuLCBldmVudD86IENlbGxNb3VzZU91dEV2ZW50KSB7XG4gICAgY29uc3QgeyBpbnN0YW5jZSB9ID0gdGhpcy5yb3dIb3ZlckNvbXBvbmVudDtcbiAgICBpZiAodmlzaWJsZSkge1xuICAgICAgaW5zdGFuY2Uuc2hvdyhldmVudCk7XG4gICAgICB0aGlzLnVwZGF0ZU9uSG92ZXJQb3MoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5zdGFuY2UuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlT25Ib3ZlclBvcygpIHtcbiAgICBjb25zdCB7IGNlbnRlclZpZXdwb3J0LCBjZW50ZXJDb250YWluZXIgfSA9IHRoaXMuZ3JpZEVsZW1lbnRzO1xuICAgIGNvbnN0IHRhcmdldCA9IGNlbnRlckNvbnRhaW5lci5jbGllbnRXaWR0aCA+IGNlbnRlclZpZXdwb3J0LmNsaWVudFdpZHRoID8gY2VudGVyVmlld3BvcnQgOiBjZW50ZXJDb250YWluZXI7XG4gICAgY29uc3QgeyBjbGllbnRXaWR0aCwgc2Nyb2xsTGVmdCB9ID0gdGFyZ2V0O1xuICAgIHRoaXMucm93SG92ZXJDb21wb25lbnQuaW5zdGFuY2UudXBkYXRlU2Nyb2xsUG9zKGNsaWVudFdpZHRoICsgc2Nyb2xsTGVmdCk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZVJvd0hvdmVyQ2xhc3Mocm93czogSFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdKSB7XG4gICAgY29lcmNlQXJyYXkocm93cykuZm9yRWFjaChyb3cgPT4gcm93ICYmIHJvdy5jbGFzc0xpc3QudG9nZ2xlKCdhY3Rpb25zLWhvdmVyZWQnKSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3JpZEtleWJvYXJkTGlzdGVuZXIoeyBncmlkLCBjb2x1bW5zIH06IERhdG9HcmlkQXBpKSB7XG4gICAgdGhpcy5ob3RrZXlzXG4gICAgICAuYWRkU2hvcnRjdXQoe1xuICAgICAgICBlbGVtZW50OiB0aGlzLmFnR3JpZEVsLFxuICAgICAgICBrZXlzOiAnbWV0YS5hJyxcbiAgICAgICAgaWdub3JlSW5FZGl0YWJsZTogdHJ1ZVxuICAgICAgfSlcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2VsZWN0QWxsQ3VycmVudFBhZ2VSb3dzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJXaW5kb3dSZXNpemVMaXN0ZW5lcigpIHtcbiAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRBbGlnbm1lbnQgIT09IERhdG9HcmlkQWxpZ25tZW50LkNVU1RPTSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgZml0VG8gPSB0aGlzLmdyaWRRdWVyeS5ncmlkQWxpZ25tZW50ID09PSBEYXRvR3JpZEFsaWdubWVudC5GSVRfVE9fQ09OVEFJTkVSID8gJ2NvbnRhaW5lcicgOiAnY29udGVudCc7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuZml0R3JpZChmaXRUbyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R3JpZERhdGEoKSB7XG4gICAgY29uc3QgZ3JpZE1vZGVsID0gdGhpcy5ncmlkU2VydmljZS5hcGkuZ3JpZC5nZXRNb2RlbCgpIGFzIGFueTtcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgY29uc3QgZ3JpZERhdGEgPSBncmlkTW9kZWwucm93c1RvRGlzcGxheS5tYXAoKHsgZGF0YSB9KSA9PiBkYXRhKTtcbiAgICAgIHJldHVybiBjb252ZXJ0RnJvbVRyZWVEYXRhKGdyaWREYXRhLCB0aGlzLmdyaWRTZXJ2aWNlLnRyZWVDb25maWcpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ3JpZE1vZGVsLnJvd3NUb0Rpc3BsYXk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckV2ZW50c1RyaWdnZXJpbmdDbGVhclNlbGVjdGVkUm93cyhhZ0dyaWQ6IEFnR3JpZEFuZ3VsYXIpIHtcbiAgICBjb25zdCBldmVudHMkID0gdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTaWRlXG4gICAgICA/IG1lcmdlKGFnR3JpZC5zb3J0Q2hhbmdlZCwgYWdHcmlkLmZpbHRlckNoYW5nZWQpXG4gICAgICA6IGFnR3JpZC5maWx0ZXJDaGFuZ2VkO1xuICAgIChldmVudHMkIGFzIE9ic2VydmFibGU8YW55PikucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuZGVzZWxlY3RBbGxSb3dzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyUGFnaW5hdGlvbkNoYW5nZWQoYWdHcmlkOiBBZ0dyaWRBbmd1bGFyKSB7XG4gICAgaWYgKCF0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNpZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYWdHcmlkLnBhZ2luYXRpb25DaGFuZ2VkLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZCkge1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNlbGVjdEFsbEN1cnJlbnRQYWdlUm93cyh0cnVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
534
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jb250cm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBYXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxx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bUVBQThCO0lBQzdCO1FBQVIsS0FBSyxFQUFFOztvRUFBZ0M7SUFDL0I7UUFBUixLQUFLLEVBQUU7OztrRUFZUDtJQXBCVSwyQkFBMkI7UUFUdkMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLHNCQUFzQjtZQUNoQyxRQUFRLEVBQUUscUNBRVQ7WUFFRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtZQUMvQyxTQUFTLEVBQUUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQzs7U0FDL0MsQ0FBQztRQXFERyxXQUFBLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO3lDQVRWLFdBQVc7WUFDYixTQUFTO1lBQ2QsaUJBQWlCO1lBQ1IsWUFBWTtZQUNmLG9CQUFvQjtZQUN6QixVQUFVO1lBQ04sUUFBUTtZQUNSLHdCQUF3QjtZQUN6QixXQUFXO09BbkRuQiwyQkFBMkIsQ0ErZnZDO0lBQUQsa0NBQUM7Q0FBQSxBQS9mRCxJQStmQztTQS9mWSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWdHcmlkTmcyIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnbmd4LXRha2UtdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge1xuICBCb2R5U2Nyb2xsRXZlbnQsXG4gIENlbGxDbGlja2VkRXZlbnQsXG4gIENlbGxFdmVudCxcbiAgQ2VsbE1vdXNlT3V0RXZlbnQsXG4gIENlbGxNb3VzZU92ZXJFdmVudCxcbiAgQ29sdW1uUmVzaXplZEV2ZW50LFxuICBDb2x1bW5Sb3dHcm91cENoYW5nZWRFdmVudCxcbiAgRGV0YWlsR3JpZEluZm8sXG4gIEdyaWRBcGksXG4gIFJvd0dyb3VwT3BlbmVkRXZlbnRcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgR3JpZFF1ZXJ5IH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnF1ZXJ5JztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0Q29sdW1uc1NpemVzLCBpc0h0bWxBbGxvd2VkRm9yQ29sIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS91dGlsJztcbmltcG9ydCB7IEdyaWRTdG9yZSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZSc7XG5pbXBvcnQgeyBEYXRvR3JpZFNldHRpbmdzIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnN0b3JlLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkQXBpIH0gZnJvbSAnLi9ncmlkLWNvbnRyb2xsZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRBbGlnbm1lbnQsIERhdG9HcmlkT3B0aW9ucywgRGF0b0dyaWRTb3J0LCBHcmlkQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIudHlwZXMnO1xuaW1wb3J0IHsgSWNvblJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaWNvbi1yZWdpc3RyeSc7XG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9kZWVwLW1lcmdlJztcbmltcG9ydCB7IERhdG9DdXN0b21IZWFkZXJUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtY3VzdG9tLWhlYWRlci9jdXN0b20taGVhZGVyLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIYXNoTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgR3JpZEFjdGlvbiwgUm93QWN0aW9uIH0gZnJvbSAnLi4vZ3JpZC10b29sYmFyL2dyaWQtdG9vbGJhci50eXBlcyc7XG5pbXBvcnQgeyBEYXRvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IERBVE9fR1JJRF9TVE9SQUdFX0FQSSwgR3JpZFN0b3JhZ2VBUEkgfSBmcm9tICcuLi9ncmlkLXNldHRpbmdzJztcbmltcG9ydCB7IGF1ZGl0VGltZSwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHNraXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgYWRkQ2xhc3MsIGFwcGVuZENoaWxkLCBxdWVyeSB9IGZyb20gJy4uLy4uL2ludGVybmFsL2hlbHBlcnMnO1xuaW1wb3J0IFRvb2x0aXAgZnJvbSAndG9vbHRpcC5qcyc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4uLy4uL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgY3JlYXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYW5ndWxhci9keW5hbWljLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRGF0b0dyaWRPbkhvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1vbi1ob3Zlci9ncmlkLW9uLWhvdmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb252ZXJ0RnJvbVRyZWVEYXRhLCBkZWZhdWx0R3JpZE9wdGlvbnMsIGRlZmF1bHRUcmVlT3B0aW9ucyB9IGZyb20gJy4uL2dyaWQvZ3JpZC12Mi5jb25maWcnO1xuaW1wb3J0IHsgY29lcmNlQXJyYXkgfSBmcm9tICcuLi8uLi91dGlscy9jb2VyY2lvbic7XG5pbXBvcnQgeyBEYXRvSG90a2V5cyB9IGZyb20gJy4uLy4uL2hvdGtleXMvaG90a2V5cy5zZXJ2aWNlJztcbmltcG9ydCBET01QdXJpZnkgZnJvbSAnZG9tcHVyaWZ5JztcbmltcG9ydCB7IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXIgfSBmcm9tICcuLi9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdG8tZ3JpZC1jb250cm9sbGVyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbR3JpZFF1ZXJ5LCBHcmlkU2VydmljZSwgR3JpZFN0b3JlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRvR3JpZENvbnRyb2xsZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICBAQ29udGVudENoaWxkcmVuKERhdG9DdXN0b21IZWFkZXJUZW1wbGF0ZUNvbXBvbmVudCkgY3VzdG9tSGVhZGVyc1RlbXBsYXRlczogUXVlcnlMaXN0PFxuICAgIERhdG9DdXN0b21IZWFkZXJUZW1wbGF0ZUNvbXBvbmVudFxuICA+O1xuXG4gIEBPdXRwdXQoKSBvbkdyaWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEdyaWRDaGFuZ2VFdmVudD4oKTtcbiAgQElucHV0KCkgcm93QWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgZ3JpZEFjdGlvbnM6IEdyaWRBY3Rpb25bXSA9IFtdO1xuICBASW5wdXQoKSBzZXQgZ3JpZE9wdGlvbnMoZ3JpZE9wdGlvbnM6IERhdG9HcmlkT3B0aW9ucykge1xuICAgIHRoaXMuX2dyaWRPcHRpb25zID0gZ3JpZE9wdGlvbnM7XG4gICAgdGhpcy5ncmlkU2VydmljZS50cmVlRGF0YSA9IGdyaWRPcHRpb25zLnRyZWVEYXRhO1xuICAgIHRoaXMuZ3JpZFNlcnZpY2UuaXNQaXZvdE1vZGUgPSBncmlkT3B0aW9ucy5waXZvdE1vZGU7XG5cbiAgICBpZiAodGhpcy5hZ0dyaWRFbCkge1xuICAgICAgaWYgKGdyaWRPcHRpb25zLnRyZWVEYXRhKSB7XG4gICAgICAgICF0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLnRyZWVHcmlkQ2xhc3MpICYmIHRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmFkZCh0aGlzLnRyZWVHcmlkQ2xhc3MpO1xuICAgICAgfSBlbHNlIGlmICghZ3JpZE9wdGlvbnMuZW5hYmxlVjJfMSkge1xuICAgICAgICB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQodGhpcy50cmVlR3JpZENsYXNzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgZ3JpZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dyaWRPcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBjb250ZW50SW5pdCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgdG9vbHRpcDtcbiAgcHJpdmF0ZSBfZ3JpZE9wdGlvbnM6IERhdG9HcmlkT3B0aW9ucztcbiAgZ3JpZFJlYWR5JCA9IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWFkeSQ7XG4gIGFnR3JpZEVsOiBIVE1MRWxlbWVudDtcblxuICBwcml2YXRlIHJvd0hvdmVyQ29tcG9uZW50OiBDb21wb25lbnRSZWY8RGF0b0dyaWRPbkhvdmVyQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSBsYXN0SG92ZXJlZFJvdzogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgZ3JpZEVsZW1lbnRzID0ge1xuICAgIGNlbnRlclZpZXdwb3J0OiBudWxsLFxuICAgIGNlbnRlckNvbnRhaW5lcjogbnVsbCxcbiAgICBib2R5Vmlld3BvcnQ6IG51bGxcbiAgfTtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmVlR3JpZENsYXNzID0gJ3RyZWUnO1xuICBwcml2YXRlIGNlbGxNb3VzZU91dFRpbWVyOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZSxcbiAgICBwdWJsaWMgZ3JpZFF1ZXJ5OiBHcmlkUXVlcnksXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgaWNvblJlZ2lzdHJ5OiBJY29uUmVnaXN0cnksXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IERhdG9UcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSBob3RrZXlzOiBEYXRvSG90a2V5cyxcbiAgICBASW5qZWN0KERBVE9fR1JJRF9TVE9SQUdFX0FQSSkgcHJpdmF0ZSBzdG9yYWdlQVBJOiBHcmlkU3RvcmFnZUFQSVxuICApIHt9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jb250ZW50SW5pdC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuY2xlYXJUb29sdGlwKCk7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudCAmJiB0aGlzLnJvd0hvdmVyQ29tcG9uZW50LmRlc3Ryb3koKTtcbiAgICB0aGlzLnJvd0hvdmVyQ29tcG9uZW50ID0gbnVsbDtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmNvbnRlbnRJbml0Lm5leHQoKTtcbiAgICB0aGlzLmNvbnRlbnRJbml0LmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiBAaW50ZXJuYWwgKi9cbiAgX2luaXRpYWxpemVHcmlkKGFnR3JpZDogQWdHcmlkTmcyLCBhZ0dyaWRFbDogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLmFnR3JpZEVsID0gYWdHcmlkRWw7XG4gICAgdGhpcy5jb250ZW50SW5pdFxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zID0gdGhpcy5ub3JtYWxpemVPcHRpb25zKCk7XG4gICAgICAgICAgYWdHcmlkLmdyaWRPcHRpb25zID0gdGhpcy5ncmlkT3B0aW9ucztcbiAgICAgICAgICBjb25zdCBpc0dsb2JhbCA9IHRoaXMuZ3JpZE9wdGlvbnMuaXNHbG9iYWxTZXR0aW5ncztcbiAgICAgICAgICBjb25zdCBzZXR0aW5nc0xvYWRlciA9XG4gICAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnNhdmVTZXR0aW5ncyA9PT0gZmFsc2VcbiAgICAgICAgICAgICAgPyBvZihudWxsKVxuICAgICAgICAgICAgICA6IHRoaXMuc3RvcmFnZUFQSS5nZXQodGhpcy5ncmlkT3B0aW9ucy5ncmlkTmFtZSwgaXNHbG9iYWwpO1xuICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFthZ0dyaWQuZ3JpZFJlYWR5LCBzZXR0aW5nc0xvYWRlcl0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFt7IGFwaSwgY29sdW1uQXBpIH0sIHNhdmVkU2V0dGluZ3MgPSB7fV06IFtEZXRhaWxHcmlkSW5mbywgUGFydGlhbDxEYXRvR3JpZFNldHRpbmdzPl0pID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmdyaWRPcHRpb25zLnJvd0RhdGEpIHtcbiAgICAgICAgICBhcGkuc2hvd0xvYWRpbmdPdmVybGF5KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmdyaWRPcHRpb25zLnN0YXR1c0Jhcikge1xuICAgICAgICAgIC8qKiBGaXggYWctZ3JpZCBidWcgdGhhdCBkb2Vzbid0IGFkZCBhZy1oaWRkZW4gY2xhc3MgdG8gdGhlIHN0YXR1cyBiYXIsIHdoaWNoIG9ubHkgZ2V0IGZpeGVkIGluIGxhdGVyIHZlcnNpb25zICovXG4gICAgICAgICAgY29uc3QgZWwgPSBhZ0dyaWRFbC5xdWVyeVNlbGVjdG9yKCcuYWctc3RhdHVzLWJhcicpO1xuXG4gICAgICAgICAgYWRkQ2xhc3MoZWwsICdhZy1oaWRkZW4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBncmlkQXBpOiBEYXRvR3JpZEFwaSA9IHsgZ3JpZDogYXBpLCBjb2x1bW5zOiBjb2x1bW5BcGkgfTtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5fc2V0QXBpKGdyaWRBcGksIGFnR3JpZCk7XG4gICAgICAgIHRoaXMuZ3JpZFF1ZXJ5Ll9zZXRBcGkoZ3JpZEFwaSwgYWdHcmlkKTtcblxuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLmluaXRTZXR0aW5ncyhzYXZlZFNldHRpbmdzIHx8IHt9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclNldHRpbmdzTGlzdGVuZXJzKGdyaWRBcGksIGFnR3JpZCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJHcmlkTGlzdGVuZXJzKGdyaWRBcGksIGFnR3JpZCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudHNUcmlnZ2VyaW5nQ2xlYXJTZWxlY3RlZFJvd3MoYWdHcmlkKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclBhZ2luYXRpb25DaGFuZ2VkKGFnR3JpZCk7XG4gICAgICAgIHRoaXMuZ3JpZFF1ZXJ5Ll9ncmlkUmVhZHkubmV4dCh0cnVlKTtcblxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgICAgIHRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmFkZCgndHJlZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLnJvd0hlaWdodCkge1xuICAgICAgICAgIHRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmFkZChgcm93LWhlaWdodC0ke3RoaXMuZ3JpZE9wdGlvbnMucm93SGVpZ2h0fWApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplT3B0aW9ucygpIHtcbiAgICAvKipcbiAgICAgKiBXaGVuIHRyZWVEYXRhIGlzIGVuYWJsZWQsIFBhZ2luYXRpb24gbXVzdCBiZSB0dXJuZWQgb2ZmXG4gICAgICovXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMudHJlZURhdGEpIHtcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB7XG4gICAgICAgIC4uLnRoaXMuZ3JpZE9wdGlvbnMsXG4gICAgICAgIHBhZ2luYXRpb246IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBncmlkT3B0aW9uczogdGhpcy5ncmlkT3B0aW9ucyxcbiAgICAgIGN1c3RvbUhlYWRlcnNUZW1wbGF0ZXM6IHRoaXMuY3VzdG9tSGVhZGVyc1RlbXBsYXRlcyxcbiAgICAgIHJvd0FjdGlvbnM6IHRoaXMucm93QWN0aW9uc1xuICAgIH07XG5cbiAgICBsZXQgbm9ybWFsaXplZCA9IHRoaXMuZ3JpZFNlcnZpY2Uubm9ybWFsaXplT3B0aW9ucyhwYXJhbXMpO1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgLi4uZGVmYXVsdEdyaWRPcHRpb25zLFxuICAgICAgLi4uKHRoaXMuZ3JpZE9wdGlvbnMudHJlZURhdGEgPyBkZWZhdWx0VHJlZU9wdGlvbnMgOiB7fSksXG4gICAgICBpY29uczogdGhpcy5nZXRHcmlkSWNvbnMoKSxcbiAgICAgIGRpc2FibGVkSFRNTFJlbmRlcmluZ0ZpZWxkczpcbiAgICAgICAgbm9ybWFsaXplZC5kaXNhYmxlZEhUTUxSZW5kZXJpbmdGaWVsZHMgfHwgZGVmYXVsdEdyaWRPcHRpb25zLmRpc2FibGVkSFRNTFJlbmRlcmluZ0ZpZWxkc1xuICAgIH07XG4gICAgcmV0dXJuIGRlZXBtZXJnZShkZWZhdWx0cywgbm9ybWFsaXplZCk7XG4gIH1cblxuICBzZXRHcmlkUm93czxUPihkYXRhOiBUW10pIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLnNldFJvd3M8VD4oZGF0YSk7XG4gIH1cblxuICBzZXRHcmlkRmlsdGVycyhmaWx0ZXJzOiBEYXRvR3JpZEV4dGVybmFsRmlsdGVyW10pIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLnNldEdyaWRGaWx0ZXJzKGZpbHRlcnMpO1xuICB9XG5cbiAgc2V0R3JpZFNvcnQoc29ydDogRGF0b0dyaWRTb3J0KSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5zZXRHcmlkU29ydChzb3J0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R3JpZEljb25zKCk6IEhhc2hNYXA8c3RyaW5nPiB7XG4gICAgY29uc3QgbW92ZUNvbHVtbkljb24gPSBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBkLWZsZXggY29sdW1uLW1vdmVcIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICdtb3ZlLWNvbHVtbidcbiAgICApfTwvc3Bhbj5gO1xuICAgIHJldHVybiB7XG4gICAgICBncm91cEV4cGFuZGVkOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBncm91cC1leHBhbmRlZC1pY29uXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdhcnJvdy1yaWdodCdcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBncm91cENvbnRyYWN0ZWQ6IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGdyb3VwLWNvbnRyYWN0ZWQtaWNvblwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgICAnYXJyb3ctcmlnaHQnXG4gICAgICApfTwvc3Bhbj5gLFxuICAgICAgY29sdW1uTW92ZVBpbjogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZC1mbGV4IHByaW1hcnktMzAwLWZpbGwgY29sdW1uLW1vdmUtcGluXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdwaW4nXG4gICAgICApfTwvc3Bhbj5gLFxuICAgICAgY29sdW1uTW92ZUhpZGU6IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGQtZmxleCBjb2x1bW4tbW92ZS1oaWRlXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdleWUtaGlkZSdcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBjb2x1bW5Nb3ZlTW92ZTogbW92ZUNvbHVtbkljb24sXG4gICAgICBjb2x1bW5Nb3ZlTGVmdDogbW92ZUNvbHVtbkljb24sXG4gICAgICBjb2x1bW5Nb3ZlUmlnaHQ6IG1vdmVDb2x1bW5JY29uLFxuICAgICAgcm93RHJhZzogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIGRyYWcgZC1mbGV4XCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoJ2RyYWctMDEnKX08L3NwYW4+YFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyU2V0dGluZ3NMaXN0ZW5lcnMoYXBpOiBEYXRvR3JpZEFwaSwgYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICB0aGlzLmxpc3RlblRvQ29sdW1uUmVzaXplKGFwaSwgYWdHcmlkKTtcbiAgICB0aGlzLmxpc3RlblRvR3JpZEV2ZW50cyhhZ0dyaWQpO1xuICAgIHRoaXMubGlzdGVuVG9TdG9yZVNldHRpbmdzQ2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub0NvbHVtblJlc2l6ZShhcGk6IERhdG9HcmlkQXBpLCB7IGNvbHVtblJlc2l6ZWQgfTogQWdHcmlkTmcyKSB7XG4gICAgbGV0IG9ic2VydmFibGUgPSBjb2x1bW5SZXNpemVkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIGlmICh0aGlzLm9uSG92ZXJFbmFibGVkKCkpIHtcbiAgICAgIG9ic2VydmFibGUgPSBvYnNlcnZhYmxlLnBpcGUoXG4gICAgICAgIGZpbHRlcigoeyBzb3VyY2UgfTogQ29sdW1uUmVzaXplZEV2ZW50KSA9PiBzb3VyY2UgPT09ICd1aUNvbHVtbkRyYWdnZWQnKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMudXBkYXRlT25Ib3ZlclBvcygpKVxuICAgICAgKTtcbiAgICB9XG4gICAgb2JzZXJ2YWJsZVxuICAgICAgLnBpcGUoXG4gICAgICAgIGF1ZGl0VGltZSgxMDApLFxuICAgICAgICBmaWx0ZXIoKHsgZmluaXNoZWQsIHNvdXJjZSB9OiBDb2x1bW5SZXNpemVkRXZlbnQpID0+IGZpbmlzaGVkICYmIHNvdXJjZSA9PT0gJ3VpQ29sdW1uRHJhZ2dlZCcpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgY29uc3QgW2NvbHVtbl0gPSBlLmNvbHVtbnM7XG4gICAgICAgIGxldCBjb2x1bW5zU2l6ZXMgPSB7IC4uLnRoaXMuZ3JpZFF1ZXJ5LmdldENvbHVtblNpemVzKCkgfTtcbiAgICAgICAgaWYgKGNvbHVtbnNTaXplcykge1xuICAgICAgICAgIGNvbHVtbnNTaXplc1tjb2x1bW4uZ2V0Q29sSWQoKV0gPSBjb2x1bW4uZ2V0QWN0dWFsV2lkdGgoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2x1bW5zU2l6ZXMgPSBnZXRDb2x1bW5zU2l6ZXMoYXBpLmNvbHVtbnMuZ2V0QWxsR3JpZENvbHVtbnMoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS51cGRhdGVTZXR0aW5ncyh7IGdyaWRBbGlnbm1lbnQ6IERhdG9HcmlkQWxpZ25tZW50LkNVU1RPTSwgY29sdW1uc1NpemVzIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvR3JpZEV2ZW50cyhhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIGNvbnN0IHsgY29sdW1uVmlzaWJsZSwgc29ydENoYW5nZWQsIGNvbHVtblJvd0dyb3VwQ2hhbmdlZCwgY29sdW1uUGlubmVkLCBkcmFnU3RvcHBlZCwgZmlsdGVyQ2hhbmdlZCB9ID0gYWdHcmlkO1xuICAgIG1lcmdlKGNvbHVtblZpc2libGUsIHNvcnRDaGFuZ2VkLCBjb2x1bW5Sb3dHcm91cENoYW5nZWQsIGNvbHVtblBpbm5lZCwgZHJhZ1N0b3BwZWQsIGZpbHRlckNoYW5nZWQpXG4gICAgICAucGlwZShcbiAgICAgICAgLyogU2tpcCB0aGUgaW5pdGlhbCBzb3J0aW5nIGV2ZW50IGZpcmVkIGJ5IHRoZSBncmlkIHdoZW4gYWRkaW5nIHJvd3MgKi9cbiAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHsgdHlwZSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzRGlmZiA9IHRoaXMuZ3JpZFNlcnZpY2UuZ2V0U2V0dGluZ3NEaWZmKCk7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UudXBkYXRlU2V0dGluZ3Moc2V0dGluZ3NEaWZmKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0R3JpZERhdGEoKTtcbiAgICAgICAgdGhpcy5vbkdyaWRDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgZmlsdGVyOiB0aGlzLmdyaWRRdWVyeS5nZXRFeHRlcm5hbEZpbHRlcigpLFxuICAgICAgICAgIHNvcnQ6IHRoaXMuZ3JpZFF1ZXJ5LmdldFNvcnQoKSxcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIGRhdGFcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVG9TdG9yZVNldHRpbmdzQ2hhbmdlcygpIHtcbiAgICB0aGlzLmdyaWRRdWVyeVxuICAgICAgLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5ncylcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMTAwMCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3NEaWZmID0gdGhpcy5ncmlkU2VydmljZS5nZXRTZXR0aW5nc0RpZmYoKTtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5zYXZlU2V0dGluZ3NUb1NlcnZlcihzZXR0aW5nc0RpZmYpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3JpZExpc3RlbmVycyhhcGk6IERhdG9HcmlkQXBpLCBhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIHRoaXMuZ3JpZEVsZW1lbnRzID0ge1xuICAgICAgY2VudGVyQ29udGFpbmVyOiBxdWVyeSgnLmFnLWNlbnRlci1jb2xzLWNvbnRhaW5lcicsIHRoaXMuYWdHcmlkRWwpLFxuICAgICAgY2VudGVyVmlld3BvcnQ6IHF1ZXJ5KCcuYWctY2VudGVyLWNvbHMtdmlld3BvcnQnLCB0aGlzLmFnR3JpZEVsKSxcbiAgICAgIGJvZHlWaWV3cG9ydDogcXVlcnkoJy5hZy1ib2R5LXZpZXdwb3J0JywgdGhpcy5hZ0dyaWRFbClcbiAgICB9O1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkQ2xpY2tMaXN0ZW5lcihhcGkuZ3JpZCk7XG4gICAgdGhpcy5yZWdpc3RlckdyaWRHcm91cExpc3RlbmVycyhhZ0dyaWQpO1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkTW91c2VMaXN0ZW5lcnMoYWdHcmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyR3JpZEtleWJvYXJkTGlzdGVuZXIoYXBpKTtcbiAgICB0aGlzLnJlZ2lzdGVyV2luZG93UmVzaXplTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkR3JvdXBMaXN0ZW5lcnMoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICAvKiBNYWtlIGdyb3VwIGV4cGFuZC9jb2xsYXBzZSBvbiBhIHNpbmdsZSBjbGljayBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGRvdWJsZSBjbGljayAqL1xuICAgIGFnR3JpZC5jb2x1bW5Sb3dHcm91cENoYW5nZWRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHsgY29sdW1ucyB9OiBDb2x1bW5Sb3dHcm91cENoYW5nZWRFdmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiBjb2x1bW5zLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyBFTVBUWVxuICAgICAgICAgICAgOiBhZ0dyaWQuY2VsbENsaWNrZWQucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHsgdmFsdWUsIG5vZGUgfTogQ2VsbENsaWNrZWRFdmVudCkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiBub2RlLmdyb3VwID09PSB0cnVlKVxuICAgICAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHsgbm9kZSB9OiBDZWxsQ2xpY2tlZEV2ZW50KSA9PiB7XG4gICAgICAgIG5vZGUuc2V0RXhwYW5kZWQoIW5vZGUuZXhwYW5kZWQpO1xuICAgICAgfSk7XG4gICAgLyogV2hlbiBjbG9zaW5nIGEgZ3JvdXBlZCByb3cgd2Ugd2FudCB0byBoaWRlIHRoZSBvbiBob3ZlciBhY3Rpb25zICovXG4gICAgaWYgKHRoaXMub25Ib3ZlckVuYWJsZWQoKSkge1xuICAgICAgYWdHcmlkLnJvd0dyb3VwT3BlbmVkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoeyBub2RlIH06IFJvd0dyb3VwT3BlbmVkRXZlbnQpID0+IG5vZGUuZXhwYW5kZWQgPT09IGZhbHNlKSxcbiAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubGFzdEhvdmVyZWRSb3cgPSBudWxsO1xuICAgICAgICAgIHRoaXMuc2V0T25Ib3ZlclN0YXRlKGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgY2xpY2sgd2FzIHBlcmZvcm1lZCBvbiB0aGUgZ3JpZHMgYm9keSBhbmQgbm90IGEgcm93LCBjbGVhciB0aGUgcm93cyBzZWxlY3Rpb25cbiAgICovXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkQ2xpY2tMaXN0ZW5lcihhcGk6IEdyaWRBcGkpIHtcbiAgICBjb25zdCB7IGJvZHlWaWV3cG9ydCwgY2VudGVyVmlld3BvcnQgfSA9IHRoaXMuZ3JpZEVsZW1lbnRzO1xuICAgIGZyb21FdmVudChib2R5Vmlld3BvcnQsICdjbGljaycpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiAoZXZlbnQudGFyZ2V0ID09PSBib2R5Vmlld3BvcnQgfHwgZXZlbnQudGFyZ2V0ID09PSBjZW50ZXJWaWV3cG9ydCkgJiYgYXBpLmdldFNlbGVjdGVkUm93cygpLmxlbmd0aCA+IDA7XG4gICAgICAgIH0pLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiBhcGkuZGVzZWxlY3RBbGwoKSk7XG4gIH1cblxuICBwcml2YXRlIG9uSG92ZXJFbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zLmhvdmVyQ29uZmlnLmVuYWJsZWQgJiYgdGhpcy5yb3dBY3Rpb25zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3JpZE1vdXNlTGlzdGVuZXJzKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgY29uc3QgeyBib2R5Vmlld3BvcnQsIGNlbnRlckNvbnRhaW5lciB9ID0gdGhpcy5ncmlkRWxlbWVudHM7XG4gICAgbGV0IGxhc3RIb3ZlcmVkQ2VsbDtcbiAgICBjb25zdCBvbkhvdmVyRW5hYmxlZCA9IHRoaXMub25Ib3ZlckVuYWJsZWQoKTtcbiAgICBpZiAob25Ib3ZlckVuYWJsZWQpIHtcbiAgICAgIGZyb21FdmVudChjZW50ZXJDb250YWluZXIsICdtb3VzZWxlYXZlJylcbiAgICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9nZ2xlUm93SG92ZXJDbGFzcyh0aGlzLmxhc3RIb3ZlcmVkUm93KTtcbiAgICAgICAgICB0aGlzLmxhc3RIb3ZlcmVkUm93ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnNldE9uSG92ZXJTdGF0ZShmYWxzZSk7XG4gICAgICAgICAgbGFzdEhvdmVyZWRDZWxsID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICBtZXJnZShcbiAgICAgICAgYWdHcmlkLmJvZHlTY3JvbGwucGlwZShmaWx0ZXIoKHsgZGlyZWN0aW9uIH06IEJvZHlTY3JvbGxFdmVudCkgPT4gZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpKSxcbiAgICAgICAgYWdHcmlkLnJvd0RhdGFDaGFuZ2VkXG4gICAgICApXG4gICAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZU9uSG92ZXJQb3MoKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLmFkZE9uSG92ZXJFbGVtZW50KCk7XG4gICAgfVxuICAgIGFnR3JpZC5jZWxsTW91c2VPdmVyLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoZXZlbnQ6IENlbGxNb3VzZU92ZXJFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBub2RlLCBjb2x1bW4gfSA9IGV2ZW50O1xuICAgICAgaWYgKGxhc3RIb3ZlcmVkQ2VsbCA9PT0gYCR7bm9kZS5pZH0tJHtjb2x1bW4uZ2V0Q29sSWQoKX1gKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNlbGxNb3VzZU91dFRpbWVyKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGFzdEhvdmVyZWRDZWxsID0gYCR7bm9kZS5pZH0tJHtjb2x1bW4uZ2V0Q29sSWQoKX1gO1xuICAgICAgdGhpcy5zaG93VG9vbHRpcChldmVudCk7XG4gICAgICBjb25zdCByb3cgPSAoZXZlbnQuZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50O1xuICAgICAgaWYgKG9uSG92ZXJFbmFibGVkICYmIChub2RlLmdyb3VwID09PSBmYWxzZSB8fCBpc05pbChub2RlLmdyb3VwKSkgJiYgdGhpcy5sYXN0SG92ZXJlZFJvdyAhPT0gcm93KSB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzTm9kZSA9IHRoaXMubGFzdEhvdmVyZWRSb3c7XG4gICAgICAgIHRoaXMubGFzdEhvdmVyZWRSb3cgPSByb3c7XG4gICAgICAgIHRoaXMudG9nZ2xlUm93SG92ZXJDbGFzcyhbcHJldmlvdXNOb2RlLCB0aGlzLmxhc3RIb3ZlcmVkUm93XSk7XG4gICAgICAgIHRoaXMuc2V0T25Ib3ZlclN0YXRlKHRydWUsIGV2ZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBvblRvb2x0aXBPdXQgPSBtZXJnZShmcm9tRXZlbnQoYm9keVZpZXdwb3J0LCAnc2Nyb2xsJyksIGZyb21FdmVudCh0aGlzLmFnR3JpZEVsLCAnbW91c2VsZWF2ZScpKTtcbiAgICBvblRvb2x0aXBPdXQucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGxhc3RIb3ZlcmVkQ2VsbCA9IG51bGw7XG4gICAgICB0aGlzLmNsZWFyVG9vbHRpcCgpO1xuICAgIH0pO1xuXG4gICAgYWdHcmlkLmNlbGxNb3VzZU91dFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiAhaXNOaWwodGhpcy50b29sdGlwKSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jZWxsTW91c2VPdXRUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xlYXJUb29sdGlwKCkpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcG9zZSB0aGUgdG9vbHRpcFxuICAgKi9cbiAgY2xlYXJUb29sdGlwKCk6IHZvaWQge1xuICAgIHRoaXMudG9vbHRpcCAmJiB0aGlzLnRvb2x0aXAuZGlzcG9zZSgpO1xuICAgIHRoaXMudG9vbHRpcCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHNob3dUb29sdGlwKGV2ZW50OiBDZWxsRXZlbnQpIHtcbiAgICBsZXQgY2VsbDogSFRNTEVsZW1lbnQgPSBldmVudC5ldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKGNlbGwudGFnTmFtZSA9PT0gJ1NQQU4nICYmIGNlbGwuc2Nyb2xsV2lkdGggPT09IDApIHtcbiAgICAgIGNlbGwgPSBjZWxsLnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuICAgIGlmIChldmVudC5jb2xEZWYuZWRpdGFibGUpIHtcbiAgICAgIGNlbGwgPSBjZWxsLnF1ZXJ5U2VsZWN0b3IoJy52YWx1ZS13cmFwcGVyJykgfHwgY2VsbDtcbiAgICB9XG4gICAgY29uc3QgdGV4dE92ZXJmbG93ID0gY2VsbC5vZmZzZXRXaWR0aCA8IGNlbGwuc2Nyb2xsV2lkdGg7XG4gICAgaWYgKHRleHRPdmVyZmxvdykge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2VsbE1vdXNlT3V0VGltZXIpO1xuICAgICAgY29uc3QgYWxsb3dIVE1MID0gaXNIdG1sQWxsb3dlZEZvckNvbCh0aGlzLmdyaWRPcHRpb25zLCBldmVudC5jb2xEZWYpO1xuICAgICAgY29uc3QgcGFyYW1zID0geyBjZWxsLCB2YWx1ZTogY2VsbC5pbm5lclRleHQsIGFsbG93SFRNTCB9O1xuXG4gICAgICBpc05pbCh0aGlzLnRvb2x0aXApID8gdGhpcy5jcmVhdGVBbmRTaG93VG9vbHRpcChwYXJhbXMpIDogdGhpcy51cGRhdGVUb29sdGlwKHBhcmFtcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBbmRTaG93VG9vbHRpcCh7IGNlbGwsIHZhbHVlLCBhbGxvd0hUTUwgfSkge1xuICAgIHRoaXMudG9vbHRpcCA9IG5ldyBUb29sdGlwKGNlbGwsIHtcbiAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICBjb250YWluZXI6IGRvY3VtZW50LmJvZHksXG4gICAgICB0cmlnZ2VyOiAnbWFudWFsJyxcbiAgICAgIHRpdGxlOiBhbGxvd0hUTUwgPyBET01QdXJpZnkuc2FuaXRpemUodmFsdWUpIDogdmFsdWUsXG4gICAgICBodG1sOiBhbGxvd0hUTUwsXG4gICAgICBwb3BwZXJPcHRpb25zOiB7XG4gICAgICAgIG1vZGlmaWVyczoge1xuICAgICAgICAgIHByZXZlbnRPdmVyZmxvdzogeyBlbmFibGVkOiBmYWxzZSB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0ZW1wbGF0ZTpcbiAgICAgICAgJzxkaXYgY2xhc3M9XCJ0b29sdGlwIGRhdG8tdG9vbHRpcCBjb21tb24tdG9vbHRpcFwiIHJvbGU9XCJ0b29sdGlwXCI+PGRpdiBjbGFzcz1cInRvb2x0aXAtYXJyb3dcIj48L2Rpdj48ZGl2IGNsYXNzPVwidG9vbHRpcC1pbm5lclwiPjwvZGl2PjwvZGl2PidcbiAgICB9KTtcblxuICAgIHRoaXMudG9vbHRpcC5zaG93KCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSB0b29sdGlwIGVsZW1lbnQgcmVmIGFuZCBjb250ZW50XG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVRvb2x0aXAoeyBjZWxsLCB2YWx1ZSB9KTogdm9pZCB7XG4gICAgaWYgKGNlbGwgIT09IHRoaXMudG9vbHRpcC5yZWZlcmVuY2UpIHtcbiAgICAgIHRoaXMudG9vbHRpcC5yZWZlcmVuY2UgPSBjZWxsO1xuICAgICAgdGhpcy50b29sdGlwLnBvcHBlckluc3RhbmNlLnJlZmVyZW5jZSA9IGNlbGw7XG4gICAgICB0aGlzLnRvb2x0aXAudXBkYXRlVGl0bGVDb250ZW50KHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy50b29sdGlwLnNob3coKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkT25Ib3ZlckVsZW1lbnQoKSB7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudCA9IGNyZWF0ZUNvbXBvbmVudDxEYXRvR3JpZE9uSG92ZXJDb21wb25lbnQ+KHtcbiAgICAgIGNvbXBvbmVudDogRGF0b0dyaWRPbkhvdmVyQ29tcG9uZW50LFxuICAgICAgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IsXG4gICAgICByZXNvbHZlcjogdGhpcy5yZXNvbHZlclxuICAgIH0pO1xuICAgIGNvbnN0IHsgaW5zdGFuY2UsIGhvc3RWaWV3IH0gPSB0aGlzLnJvd0hvdmVyQ29tcG9uZW50O1xuICAgIGluc3RhbmNlLmNvbmZpZyA9IHsgLi4udGhpcy5ncmlkT3B0aW9ucy5ob3ZlckNvbmZpZywgYWN0aW9uczogdGhpcy5yb3dBY3Rpb25zLnNsaWNlKCkgfTtcbiAgICBob3N0Vmlldy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgYXBwZW5kQ2hpbGQodGhpcy5ncmlkRWxlbWVudHMuY2VudGVyQ29udGFpbmVyLCB0aGlzLnJvd0hvdmVyRWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcm93SG92ZXJFbCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dIb3ZlckNvbXBvbmVudC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRPbkhvdmVyU3RhdGUodmlzaWJsZTogYm9vbGVhbiwgZXZlbnQ/OiBDZWxsTW91c2VPdXRFdmVudCkge1xuICAgIGNvbnN0IHsgaW5zdGFuY2UgfSA9IHRoaXMucm93SG92ZXJDb21wb25lbnQ7XG4gICAgaWYgKHZpc2libGUpIHtcbiAgICAgIGluc3RhbmNlLnNob3coZXZlbnQpO1xuICAgICAgdGhpcy51cGRhdGVPbkhvdmVyUG9zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluc3RhbmNlLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU9uSG92ZXJQb3MoKSB7XG4gICAgY29uc3QgeyBjZW50ZXJWaWV3cG9ydCwgY2VudGVyQ29udGFpbmVyIH0gPSB0aGlzLmdyaWRFbGVtZW50cztcbiAgICBjb25zdCB0YXJnZXQgPSBjZW50ZXJDb250YWluZXIuY2xpZW50V2lkdGggPiBjZW50ZXJWaWV3cG9ydC5jbGllbnRXaWR0aCA/IGNlbnRlclZpZXdwb3J0IDogY2VudGVyQ29udGFpbmVyO1xuICAgIGNvbnN0IHsgY2xpZW50V2lkdGgsIHNjcm9sbExlZnQgfSA9IHRhcmdldDtcbiAgICB0aGlzLnJvd0hvdmVyQ29tcG9uZW50Lmluc3RhbmNlLnVwZGF0ZVNjcm9sbFBvcyhjbGllbnRXaWR0aCArIHNjcm9sbExlZnQpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVSb3dIb3ZlckNsYXNzKHJvd3M6IEhUTUxFbGVtZW50IHwgSFRNTEVsZW1lbnRbXSkge1xuICAgIGNvZXJjZUFycmF5KHJvd3MpLmZvckVhY2gocm93ID0+IHJvdyAmJiByb3cuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aW9ucy1ob3ZlcmVkJykpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRLZXlib2FyZExpc3RlbmVyKHsgZ3JpZCwgY29sdW1ucyB9OiBEYXRvR3JpZEFwaSkge1xuICAgIHRoaXMuaG90a2V5c1xuICAgICAgLmFkZFNob3J0Y3V0KHtcbiAgICAgICAgZWxlbWVudDogdGhpcy5hZ0dyaWRFbCxcbiAgICAgICAga2V5czogJ21ldGEuYScsXG4gICAgICAgIGlnbm9yZUluRWRpdGFibGU6IHRydWVcbiAgICAgIH0pXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNlbGVjdEFsbEN1cnJlbnRQYWdlUm93cygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyV2luZG93UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmdyaWRRdWVyeS5ncmlkQWxpZ25tZW50ICE9PSBEYXRvR3JpZEFsaWdubWVudC5DVVNUT00pLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpdFRvID0gdGhpcy5ncmlkUXVlcnkuZ3JpZEFsaWdubWVudCA9PT0gRGF0b0dyaWRBbGlnbm1lbnQuRklUX1RPX0NPTlRBSU5FUiA/ICdjb250YWluZXInIDogJ2NvbnRlbnQnO1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLmZpdEdyaWQoZml0VG8pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEdyaWREYXRhKCkge1xuICAgIGNvbnN0IGdyaWRNb2RlbCA9IHRoaXMuZ3JpZFNlcnZpY2UuYXBpLmdyaWQuZ2V0TW9kZWwoKSBhcyBhbnk7XG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMudHJlZURhdGEpIHtcbiAgICAgIGNvbnN0IGdyaWREYXRhID0gZ3JpZE1vZGVsLnJvd3NUb0Rpc3BsYXkubWFwKCh7IGRhdGEgfSkgPT4gZGF0YSk7XG4gICAgICByZXR1cm4gY29udmVydEZyb21UcmVlRGF0YShncmlkRGF0YSwgdGhpcy5ncmlkU2VydmljZS50cmVlQ29uZmlnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGdyaWRNb2RlbC5yb3dzVG9EaXNwbGF5O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJFdmVudHNUcmlnZ2VyaW5nQ2xlYXJTZWxlY3RlZFJvd3MoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICBjb25zdCBldmVudHMkID0gdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTaWRlXG4gICAgICA/IG1lcmdlKGFnR3JpZC5zb3J0Q2hhbmdlZCwgYWdHcmlkLmZpbHRlckNoYW5nZWQpXG4gICAgICA6IGFnR3JpZC5maWx0ZXJDaGFuZ2VkO1xuICAgIChldmVudHMkIGFzIE9ic2VydmFibGU8YW55PikucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuZGVzZWxlY3RBbGxSb3dzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyUGFnaW5hdGlvbkNoYW5nZWQoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICBpZiAoIXRoaXMuZ3JpZFF1ZXJ5LmlzU2VydmVyU2lkZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhZ0dyaWQucGFnaW5hdGlvbkNoYW5nZWQucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkKSB7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2VsZWN0QWxsQ3VycmVudFBhZ2VSb3dzKHRydWUsIHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export var DATO_GRID_STORAGE_API = new InjectionToken('
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export var DATO_GRID_STORAGE_API = new InjectionToken('DATO_GRID_STORAGE_AP');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1zZXR0aW5ncy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1zZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUy9DLE1BQU0sQ0FBQyxJQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFpQixzQkFBc0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhdG9HcmlkU2V0dGluZ3MgfSBmcm9tICcuL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZS50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JpZFN0b3JhZ2VBUEkge1xuICBnZXQoZ3JpZE5hbWU6IHN0cmluZywgaXNHbG9iYWw/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxQYXJ0aWFsPERhdG9HcmlkU2V0dGluZ3M+PjtcbiAgc2V0KGdyaWROYW1lOiBzdHJpbmcsIHN0YXRlOiBQYXJ0aWFsPERhdG9HcmlkU2V0dGluZ3M+LCBpc0dsb2JhbD86IGJvb2xlYW4pOiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgREFUT19HUklEX1NUT1JBR0VfQVBJID0gbmV3IEluamVjdGlvblRva2VuPEdyaWRTdG9yYWdlQVBJPignREFUT19HUklEX1NUT1JBR0VfQVAnKTtcbiJdfQ==
|
|
@@ -246,4 +246,4 @@ var GridQuery = /** @class */ (function (_super) {
|
|
|
246
246
|
return GridQuery;
|
|
247
247
|
}(Query));
|
|
248
248
|
export { GridQuery };
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1zdG9yZS9ncmlkLnF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQVUsTUFBTSxFQUFXLE1BQU0sbUJBQW1CLENBQUM7QUFHNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUV0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHOUM7SUFBK0IsNkJBQXFCO0lBK0NsRCxtQkFBc0IsS0FBZ0I7UUFBdEMsWUFDRSxrQkFBTSxLQUFLLENBQUMsU0FDYjtRQUZxQixXQUFLLEdBQUwsS0FBSyxDQUFXO1FBNUN0QyxXQUFXO1FBQ1gsZ0JBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxnQkFBVSxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssRUFBTCxDQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLFdBQVc7UUFDWCx1QkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBNEIsQ0FBQztRQUM1RCx1QkFBaUIsR0FBRyxLQUFJ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QW9GLENBQ3pHLENBQUM7SUFDSixDQUFDOztnQkFqTzRCLFNBQVM7O0lBL0MzQixTQUFTO1FBRHJCLFVBQVUsRUFBRTt5Q0FnRGtCLFNBQVM7T0EvQzNCLFNBQVMsQ0FpUnJCO0lBQUQsZ0JBQUM7Q0FBQSxBQWpSRCxDQUErQixLQUFLLEdBaVJuQztTQWpSWSxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VtcHR5LCBRdWVyeSB9IGZyb20gJ0BkYXRvcmFtYS9ha2l0YSc7XG5pbXBvcnQgeyBHcmlkU3RvcmUgfSBmcm9tICcuL2dyaWQuc3RvcmUnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncywgR3JpZFN0b3JlU3RhdGUsIFNlcnZlclNpZGVQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSAnLi9ncmlkLnN0b3JlLnR5cGVzJztcbmltcG9ydCB7IENvbHVtbiwgRXZlbnRzLCBSb3dOb2RlIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgRGF0b0dyaWRBcGkgfSBmcm9tICcuLi9ncmlkLWNvbnRyb2xsZXIvZ3JpZC1jb250cm9sbGVyLnR5cGVzJztcbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgRGF0b0dyaWRBbGlnbm1lbnQsXG4gIERhdG9HcmlkRGF0YUNoYW5nZWRFdmVudCxcbiAgRGF0b0dyaWRPcHRpb25zLFxuICBEYXRvR3JpZFNvcnQsXG4gIEdyaWRSb3dzU2VsZWN0aW9uRGF0YVxufSBmcm9tICcuLi9ncmlkL2dyaWQtdjIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRFeHRlcm5hbEZpbHRlciwgRGF0b0dyaWRGaWx0ZXJzTWFwIH0gZnJvbSAnLi4vZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIudHlwZXMnO1xuaW1wb3J0IHsgZ2V0Q29sRmllbGQsIGdldENvbHVtbnNTaXplcyB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBIYXNoTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgc2l6ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbGxlY3Rpb24nO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR3JpZFF1ZXJ5IGV4dGVuZHMgUXVlcnk8R3JpZFN0b3JlU3RhdGU+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgYXBpOiBEYXRvR3JpZEFwaTtcbiAgZ3JpZFJlZjogQWdHcmlkQW5ndWxhcjtcbiAgLy9AaW50ZXJuYWxcbiAgX2dyaWRSZWFkeSA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBncmlkUmVhZHkkID0gdGhpcy5fZ3JpZFJlYWR5LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZmlsdGVyKHJlYWR5ID0+IHJlYWR5KSk7XG4gIC8vQGludGVybmFsXG4gIF9zZXJ2ZXJEYXRhTG9hZGVkID0gbmV3IFN1YmplY3Q8RGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50PigpO1xuICBzZXJ2ZXJEYXRhTG9hZGVkJCA9IHRoaXMuX3NlcnZlckRhdGFMb2FkZWQuYXNPYnNlcnZhYmxlKCk7XG4gIF9yb3dBY3Rpb25WaXNpYmlsaXR5Q2hhbmdlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHJvd0FjdGlvblZpc2liaWxpdHlDaGFuZ2VkJCA9IHRoaXMuX3Jvd0FjdGlvblZpc2liaWxpdHlDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpO1xuICByb3dEYXRhQ2hhbmdlZCQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMud2FpdEZvckdyaWQoKCkgPT5cbiAgICBtZXJnZSh0aGlzLmdyaWRSZWYucm93RGF0YUNoYW5nZWQsIHRoaXMuZ3JpZFJlZi5yb3dEYXRhVXBkYXRlZCwgdGhpcy5ncmlkUmVmLmZpbHRlckNoYW5nZWQsIHRoaXMuc2VydmVyRGF0YUxvYWRlZCQpXG4gICk7XG4gIHNlbGVjdGVkUm93c0NoYW5nZSQgPSB0aGlzLndhaXRGb3JHcmlkKCgpID0+XG4gICAgZnJvbUV2ZW50KHRoaXMuYXBpLmdyaWQsIEV2ZW50cy5FVkVOVF9TRUxFQ1RJT05fQ0hBTkdFRCkucGlwZShtYXAoKHsgYXBpIH0pID0+IGFwaS5nZXRTZWxlY3RlZFJvd3MoKSkpXG4gICk7XG5cbiAgcm93c1NlbGVjdGlvbkRhdGEkOiBPYnNlcnZhYmxlPEdyaWRSb3dzU2VsZWN0aW9uRGF0YT4gPSB0aGlzLndhaXRGb3JHcmlkKCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICB0aGlzLnNlbGVjdGVkUm93c0NoYW5nZSQsXG4gICAgICB0aGlzLnJvd0RhdGFDaGFuZ2VkJCxcbiAgICAgIHRoaXMuc2VsZWN0U2VydmVyUGFnaW5hdGlvbkNvbmZpZygpLFxuICAgICAgdGhpcy53YWl0Rm9yR3JpZCgoKSA9PiBtZXJnZSh0aGlzLmdyaWRSZWYuc29ydENoYW5nZWQsIHRoaXMuZ3JpZFJlZi5wYWdpbmF0aW9uQ2hhbmdlZCkpXG4gICAgKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgY29uc3QgdG90YWxSb3dzQ291bnQgPSB0aGlzLmlzU2VydmVyU2lkZVxuICAgICAgICAgID8gdGhpcy5zZXJ2ZXJTaWRlQ29uZmlnLnRvdGFsUm93c1xuICAgICAgICAgIDogdGhpcy5hcGkuZ3JpZC5nZXREaXNwbGF5ZWRSb3dDb3VudCgpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFJvd3NDb3VudCA9IHRoaXMuZ2V0U2VsZWN0ZWRSb3dzQ291bnQoKTtcblxuICAgICAgICBjb25zdCBjdXJyZW50UGFnZVJvd3MgPSB0aGlzLmdldEN1cnJlbnRQYWdlUm93cygpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFBhZ2VSb3dzQ291bnQgPSBzaXplKGN1cnJlbnRQYWdlUm93cy5maWx0ZXIoKG5vZGU6IFJvd05vZGUpID0+IG5vZGUuaXNTZWxlY3RlZCgpKSk7XG4gICAgICAgIGNvbnN0IGlzQWxsUGFnZVJvd3NTZWxlY3RlZCA9XG4gICAgICAgICAgKHNlbGVjdGVkUGFnZVJvd3NDb3VudCA+IDAgJiYgc2VsZWN0ZWRQYWdlUm93c0NvdW50ID09PSBzaXplKGN1cnJlbnRQYWdlUm93cykpIHx8XG4gICAgICAgICAgKHRoaXMuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZCAmJiBpc0VtcHR5KHRoaXMuc2VydmVyU2lkZUNvbmZpZy5leGNsdWRlZEZyb21TZWxlY3RBbGwpKTtcblxuICAgICAgICByZXR1cm4geyB0b3RhbFJvd3NDb3VudCwgc2VsZWN0ZWRSb3dzQ291bnQsIHNlbGVjdGVkUGFnZVJvd3NDb3VudCwgaXNBbGxQYWdlUm93c1NlbGVjdGVkIH07XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIGZpbHRlckFjdGl2ZSQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5ncykucGlwZShcbiAgICBtYXAoKHsgZmlsdGVyLCBzZWFyY2hUZXJtIH06IERhdG9HcmlkU2V0dGluZ3MpID0+IHNpemUoZmlsdGVyKSA+IDAgfHwgISFzZWFyY2hUZXJtKVxuICApO1xuICBzZXJ2ZXJTaWRlRXJyb3IkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2VydmVyU2lkZVBhZ2luYXRpb24uaGFzRXJyb3IpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzdG9yZTogR3JpZFN0b3JlKSB7XG4gICAgc3VwZXIoc3RvcmUpO1xuICB9XG5cbiAgZ2V0IHNlcnZlclNpZGVDb25maWcoKTogU2VydmVyU2lkZVBhZ2luYXRpb25Db25maWcge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2VydmVyU2lkZVBhZ2luYXRpb247XG4gIH1cblxuICBnZXQgaXNTZXJ2ZXJTaWRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZlclNpZGVDb25maWcuZW5hYmxlZDtcbiAgfVxuXG4gIGdldCBpc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZlclNpZGVDb25maWcuc2VsZWN0QWxsUm93c0VuYWJsZWQ7XG4gIH1cblxuICBnZXQgZ3JpZEFsaWdubWVudCgpOiBEYXRvR3JpZEFsaWdubWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5ncmlkQWxpZ25tZW50O1xuICB9XG5cbiAgZ2V0Q29sdW1uU2l6ZXMoKTogSGFzaE1hcDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzLmNvbHVtbnNTaXplcztcbiAgfVxuXG4gIGdldEN1cnJlbnRHcmlkU2V0dGluZ3MoKTogRGF0b0dyaWRTZXR0aW5ncyB7XG4gICAgY29uc3QgdG9Db2xJZCA9IGNvbHVtbiA9PiBjb2x1bW4uZ2V0Q29sSWQoKTtcbiAgICBjb25zdCB7IGNvbHVtbnMgfSA9IHRoaXMuYXBpO1xuICAgIGNvbnN0IGdyb3VwZWRDb2x1bW5zID0gY29sdW1ucy5nZXRSb3dHcm91cENvbHVtbnMoKTtcbiAgICBjb25zdCBjb2x1bW5zT3JkZXIgPSBjb2x1bW5zLmdldEFsbENvbHVtbnMoKTtcbiAgICBjb25zdCBhbGxHcmlkQ29sdW1ucyA9IGNvbHVtbnMuZ2V0QWxsR3JpZENvbHVtbnMoKTtcbiAgICBjb25zdCBoaWRkZW5Db2x1bW5zID0gY29sdW1uc09yZGVyXG4gICAgICAuZmlsdGVyKGNvbHVtbiA9PiAhY29sdW1uLmlzVmlzaWJsZSgpICYmICFncm91cGVkQ29sdW1ucy5pbmNsdWRlcyhjb2x1bW4pKVxuICAgICAgLm1hcCh0b0NvbElkKTtcbiAgICBjb25zdCBzdG9yZVNldHRpbmdzID0gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzO1xuICAgIGNvbnN0IHNldHRpbmdzOiBEYXRvR3JpZFNldHRpbmdzID0ge1xuICAgICAgZ3JpZEFsaWdubWVudDogc3RvcmVTZXR0aW5ncy5ncmlkQWxpZ25tZW50LFxuICAgICAgc29ydDogdGhpcy5nZXRHcmlkT3B0aW9ucygpLnNvcnRCeVN0b3JlID8gdGhpcy5nZXRTYXZlZFNvcnQoKSA6IHRoaXMuZ2V0U29ydE1vZGVsKCksXG4gICAgICBoaWRkZW5Db2x1bW5zLFxuICAgICAgZ3JvdXBlZENvbHVtbnM6IGdyb3VwZWRDb2x1bW5zLm1hcCh0b0NvbElkKSxcbiAgICAgIGZpbHRlcjogdGhpcy5nZXRGaWx0ZXIoKSxcbiAgICAgIHBpbm5lZENvbHVtbnM6IGNvbHVtbnMuZ2V0RGlzcGxheWVkTGVmdENvbHVtbnMoKS5tYXAodG9Db2xJZCksXG4gICAgICBjb2x1bW5zT3JkZXI6IGFsbEdyaWRDb2x1bW5zLm1hcCh0b0NvbElkKSxcbiAgICAgIGNvbHVtbnNTaXplczogbnVsbCxcbiAgICAgIHNlYXJjaFRlcm06IG51bGxcbiAgICB9O1xuXG4gICAgaWYgKHN0b3JlU2V0dGluZ3MuZ3JpZEFsaWdubWVudCA9PT0gRGF0b0dyaWRBbGlnbm1lbnQuQ1VTVE9NKSB7XG4gICAgICBzZXR0aW5ncy5jb2x1bW5zU2l6ZXMgPSBnZXRDb2x1bW5zU2l6ZXMoYWxsR3JpZENvbHVtbnMpO1xuICAgIH1cblxuICAgIHJldHVybiBzZXR0aW5ncztcbiAgfVxuXG4gIGdldFNvcnRNb2RlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5hcGkuZ3JpZC5nZXRTb3J0TW9kZWwoKS5wb3AoKSBhcyBEYXRvR3JpZFNvcnQ7XG4gIH1cblxuICBnZXRTYXZlZFNvcnQoKTogRGF0b0dyaWRTb3J0IHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzLnNvcnQgfHwgdGhpcy5nZXRTb3J0TW9kZWwoKTtcbiAgfVxuXG4gIGdldFNvcnQoc2F2ZWRTb3J0OiBEYXRvR3JpZFNvcnQgPSB0aGlzLmdldFNhdmVkU29ydCgpKTogRGF0b0dyaWRTb3J0IHtcbiAgICBpZiAoc2F2ZWRTb3J0KSB7XG4gICAgICBjb25zdCB7IGNvbElkLCBzb3J0LCBzb3J0SW5kZXggfSA9IHNhdmVkU29ydDtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuYXBpLmNvbHVtbnMuZ2V0Q29sdW1uKGNvbElkKTtcbiAgICAgIGNvbnN0IGFsbENvbHVtbnMgPSB0aGlzLmFwaS5jb2x1bW5zLmdldEFsbEdyaWRDb2x1bW5zKCk7XG5cbiAgICAgIGlmIChjb2x1bW4pIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBnZXRDb2xGaWVsZChjb2x1bW4uZ2V0Q29sRGVmKCkpO1xuXG4gICAgICAgIHJldHVybiB7IGNvbElkLCBzb3J0LCBmaWVsZCB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2Vjb25kYXJ5Q29sdW1uID0gdGhpcy5nZXRTZWNvbmRhcnlDb2x1bW4oY29sSWQpO1xuXG4gICAgICAgIGlmIChzZWNvbmRhcnlDb2x1bW4pIHtcbiAgICAgICAgICBjb25zdCBjb2x1bW5JbmRleCA9IHNvcnRJbmRleCB8fCBhbGxDb2x1bW5zLmluZGV4T2Yoc2Vjb25kYXJ5Q29sdW1uKTtcbiAgICAgICAgICBjb25zdCBmaWVsZCA9IGdldENvbEZpZWxkKHNlY29uZGFyeUNvbHVtbi5nZXRDb2xEZWYoKSk7XG5cbiAgICAgICAgICByZXR1cm4geyBjb2xJZCwgc29ydCwgZmllbGQsIHNvcnRJbmRleDogY29sdW1uSW5kZXggfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGNvbElkOiBudWxsLCBzb3J0OiBudWxsIH07XG4gIH1cblxuICAvKiBAaW50ZXJuYWwgKi9cbiAgX3NldEFwaShhcGk6IERhdG9HcmlkQXBpLCBncmlkUmVmOiBBZ0dyaWRBbmd1bGFyKSB7XG4gICAgdGhpcy5hcGkgPSBhcGk7XG4gICAgdGhpcy5ncmlkUmVmID0gZ3JpZFJlZjtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGp1c3QgdGhlIHJvd3MgZGF0YSAqL1xuICBnZXRTZWxlY3RlZFJvd3M8VD4oKTogVFtdO1xuICBnZXRTZWxlY3RlZFJvd3M8VD4ob25seUZpcnN0Um93OiB0cnVlKTogVCB8IHVuZGVmaW5lZDtcbiAgZ2V0U2VsZWN0ZWRSb3dzPFQ+KG9ubHlGaXJzdFJvdzogZmFsc2UpOiBUW107XG4gIGdldFNlbGVjdGVkUm93czxUPihvbmx5Rmlyc3RSb3c/OiBib29sZWFuKTogVFtdIHwgVCB7XG4gICAgY29uc3Qgcm93cyA9IHRoaXMuYXBpLmdyaWQuZ2V0U2VsZWN0ZWRSb3dzKCk7XG4gICAgcmV0dXJuIG9ubHlGaXJzdFJvdyA/IHJvd3NbMF0gOiByb3dzO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIGVudGlyZSByb3cgbm9kZSAqL1xuICBnZXRTZWxlY3RlZFJvd05vZGVzKCk6IFJvd05vZGVbXTtcbiAgZ2V0U2VsZWN0ZWRSb3dOb2Rlcyhvbmx5Rmlyc3RSb3c6IHRydWUpOiBSb3dOb2RlIHwgdW5kZWZpbmVkO1xuICBnZXRTZWxlY3RlZFJvd05vZGVzKG9ubHlGaXJzdFJvdzogZmFsc2UpOiBSb3dOb2RlW107XG4gIGdldFNlbGVjdGVkUm93Tm9kZXMob25seUZpcnN0Um93PzogYm9vbGVhbik6IFJvd05vZGVbXSB8IFJvd05vZGUge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmFwaS5ncmlkLmdldFNlbGVjdGVkTm9kZXMoKTtcbiAgICByZXR1cm4gb25seUZpcnN0Um93ID8gcm93c1swXSA6IHJvd3M7XG4gIH1cblxuICBnZXRGaWx0ZXIoKTogRGF0b0dyaWRGaWx0ZXJzTWFwIHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzLmZpbHRlcjtcbiAgfVxuXG4gIHNlbGVjdEZpbHRlcigpOiBPYnNlcnZhYmxlPERhdG9HcmlkRmlsdGVyc01hcD4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5ncy5maWx0ZXIpO1xuICB9XG5cbiAgZ2V0RXh0ZXJuYWxGaWx0ZXIoKTogRGF0b0dyaWRFeHRlcm5hbEZpbHRlcltdIHtcbiAgICBjb25zdCBncmlkRmlsdGVycyA9IHRoaXMuZ2V0RmlsdGVyKCk7XG5cbiAgICBpZiAoZ3JpZEZpbHRlcnMpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhncmlkRmlsdGVycykucmVkdWNlKChmaWx0ZXJzLCBmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSBncmlkRmlsdGVyc1tmaWVsZF07XG5cbiAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7IGZpZWxkLCBmaWx0ZXIgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVycztcbiAgICAgIH0sIFtdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRTZWFyY2hUZXJtKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5zZWFyY2hUZXJtO1xuICB9XG5cbiAgc2VsZWN0U2VhcmNoVGVybSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdCgoc3RhdGU6IEdyaWRTdG9yZVN0YXRlKSA9PiBzdGF0ZS5zZXR0aW5ncy5zZWFyY2hUZXJtKTtcbiAgfVxuXG4gIHdhaXRGb3JHcmlkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHdhaXRGb3JHcmlkPFQgPSBhbnk+KHNvdXJjZTogKCkgPT4gT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD47XG4gIHdhaXRGb3JHcmlkPFQgPSBhbnk+KHNvdXJjZT86ICgpID0+IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+IHwgT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHNvdXJjZSA/IHRoaXMuZ3JpZFJlYWR5JC5waXBlKHN3aXRjaE1hcChzb3VyY2UpKSA6IHRoaXMuZ3JpZFJlYWR5JDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2dyaWRSZWFkeS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3NlcnZlckRhdGFMb2FkZWQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGdldEdyaWRPcHRpb25zKCk6IERhdG9HcmlkT3B0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZFJlZiA/ICh0aGlzLmdyaWRSZWYuZ3JpZE9wdGlvbnMgYXMgRGF0b0dyaWRPcHRpb25zKSA6IG51bGw7XG4gIH1cblxuICBzZWxlY3RTZXJ2ZXJQYWdpbmF0aW9uQ29uZmlnKCk6IE9ic2VydmFibGU8U2VydmVyU2lkZVBhZ2luYXRpb25Db25maWc+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3QoKHN0YXRlOiBHcmlkU3RvcmVTdGF0ZSkgPT4gc3RhdGUuc2VydmVyU2lkZVBhZ2luYXRpb24pO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRSb3dzQ291bnQoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5pc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkKSB7XG4gICAgICBjb25zdCB7IHRvdGFsUm93cywgZXhjbHVkZWRGcm9tU2VsZWN0QWxsIH0gPSB0aGlzLnNlcnZlclNpZGVDb25maWc7XG4gICAgICByZXR1cm4gdG90YWxSb3dzIC0gc2l6ZShleGNsdWRlZEZyb21TZWxlY3RBbGwpO1xuICAgIH1cbiAgICByZXR1cm4gc2l6ZSh0aGlzLmdldFNlbGVjdGVkUm93cygpKTtcbiAgfVxuXG4gIGdldEN1cnJlbnRQYWdlUm93cygpOiBSb3dOb2RlW10ge1xuICAgIGNvbnN0IHBhZ2VSb3dzOiBSb3dOb2RlW10gPSBbXTtcbiAgICBjb25zdCBwdXNoUGFnZVJvdyA9IChub2RlOiBSb3dOb2RlKSA9PiB7XG4gICAgICBwYWdlUm93cy5wdXNoKG5vZGUpO1xuICAgIH07XG4gICAgY29uc3QgZ3JpZCA9IHRoaXMuYXBpLmdyaWQ7XG4gICAgY29uc3QgcGFnZVNpemUgPSBncmlkLnBhZ2luYXRpb25HZXRQYWdlU2l6ZSgpO1xuICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gZ3JpZC5wYWdpbmF0aW9uR2V0Q3VycmVudFBhZ2UoKTtcbiAgICBjb25zdCB0b3RhbFJvd3MgPSBncmlkLnBhZ2luYXRpb25HZXRSb3dDb3VudCgpO1xuICAgIGNvbnN0IGZpcnN0UGFnZUluZGV4ID0gY3VycmVudFBhZ2UgKiBwYWdlU2l6ZTtcbiAgICBsZXQgbGFzdFBhZ2VJbmRleCA9IGZpcnN0UGFnZUluZGV4ICsgcGFnZVNpemU7XG4gICAgaWYgKGxhc3RQYWdlSW5kZXggPiB0b3RhbFJvd3MpIHtcbiAgICAgIGxhc3RQYWdlSW5kZXggPSB0b3RhbFJvd3M7XG4gICAgfVxuICAgIGNvbnN0IHBlcmZvcm1BY3Rpb24gPSAobm9kZTogUm93Tm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUucm93SW5kZXggPCBsYXN0UGFnZUluZGV4ICYmIG5vZGUucm93SW5kZXggPj0gZmlyc3RQYWdlSW5kZXgpIHtcbiAgICAgICAgcHVzaFBhZ2VSb3cobm9kZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLmlzU2VydmVyU2lkZSA/IGdyaWQuZm9yRWFjaE5vZGUocGVyZm9ybUFjdGlvbikgOiBncmlkLmZvckVhY2hOb2RlQWZ0ZXJGaWx0ZXJBbmRTb3J0KHBlcmZvcm1BY3Rpb24pO1xuICAgIHJldHVybiBwYWdlUm93cztcbiAgfVxuXG4gIGdldEFsbENvbHVtbnMoKTogQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckNoZWNrYm94U2VsZWN0aW9uQ29sdW1uKHRoaXMuYXBpLmNvbHVtbnMuZ2V0QWxsQ29sdW1ucygpKTtcbiAgfVxuXG4gIGdldEFsbERpc3BsYXllZENvbHVtbnMoKTogQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckNoZWNrYm94U2VsZWN0aW9uQ29sdW1uKHRoaXMuYXBpLmNvbHVtbnMuZ2V0QWxsRGlzcGxheWVkQ29sdW1ucygpKTtcbiAgfVxuXG4gIGdldEFsbFBpdm90Q29sdW1ucygpOiBDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsQ29sdW1ucygpLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmlzUGl2b3RBY3RpdmUoKSk7XG4gIH1cblxuICBzZWxlY3RJc1NlbGVjdEFsbFJvd3NFbmFibGVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXJ2ZXJTaWRlUGFnaW5hdGlvbi5zZWxlY3RBbGxSb3dzRW5hYmxlZCk7XG4gIH1cblxuICBnZXRTZWNvbmRhcnlDb2x1bW4oY29sSWQ6IHN0cmluZyk6IENvbHVtbiB7XG4gICAgLyoqIFVzZSBnZXRQaXZvdFJlc3VsdENvbHVtbnMgZnJvbSB2ZXIgMjggKi9cbiAgICBjb25zdCBzZWNvbmRhcnlDb2x1bW5zID0gdGhpcy5hcGkuY29sdW1ucy5nZXRTZWNvbmRhcnlDb2x1bW5zKCk7XG5cbiAgICBpZiAoc2Vjb25kYXJ5Q29sdW1ucykge1xuICAgICAgcmV0dXJuIHNlY29uZGFyeUNvbHVtbnMuZmluZChjb2wgPT4gY29sLmdldENvbElkKCkgPT09IGNvbElkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyQ2hlY2tib3hTZWxlY3Rpb25Db2x1bW4oY29sdW1uczogQ29sdW1uW10pOiBDb2x1bW5bXSB7XG4gICAgcmV0dXJuIGNvbHVtbnMuZmlsdGVyKFxuICAgICAgKGNvbHVtbjogQ29sdW1uKSA9PiAhY29sdW1uLmdldFVzZXJQcm92aWRlZENvbERlZigpIHx8ICFjb2x1bW4uZ2V0VXNlclByb3ZpZGVkQ29sRGVmKCkuY2hlY2tib3hTZWxlY3Rpb25cbiAgICApO1xuICB9XG59XG4iXX0=
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1zdG9yZS9ncmlkLnF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQVUsTUFBTSxFQUFXLE1BQU0sbUJBQW1CLENBQUM7QUFHNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUV0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHOUM7SUFBK0IsNkJBQXFCO0lBK0NsRCxtQkFBc0IsS0FBZ0I7UUFBdEMsWUFDRSxrQkFBTSxLQUFLLENBQUMsU0FDYjtRQUZxQixXQUFLLEdBQUwsS0FBSyxDQUFXO1FBNUN0QyxXQUFXO1FBQ1gsZ0JBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxnQkFBVSxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssRUFBTCxDQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLFdBQVc7UUFDWCx1QkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBNEIsQ0FBQztRQUM1RCx1QkFBaUIsR0FBRyxLQUFJ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QW9GLENBQ3pHLENBQUM7SUFDSixDQUFDOztnQkFqTzRCLFNBQVM7O0lBL0MzQixTQUFTO1FBRHJCLFVBQVUsRUFBRTt5Q0FnRGtCLFNBQVM7T0EvQzNCLFNBQVMsQ0FpUnJCO0lBQUQsZ0JBQUM7Q0FBQSxBQWpSRCxDQUErQixLQUFLLEdBaVJuQztTQWpSWSxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VtcHR5LCBRdWVyeSB9IGZyb20gJ0BkYXRvcmFtYS9ha2l0YSc7XG5pbXBvcnQgeyBHcmlkU3RvcmUgfSBmcm9tICcuL2dyaWQuc3RvcmUnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncywgR3JpZFN0b3JlU3RhdGUsIFNlcnZlclNpZGVQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSAnLi9ncmlkLnN0b3JlLnR5cGVzJztcbmltcG9ydCB7IENvbHVtbiwgRXZlbnRzLCBSb3dOb2RlIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgRGF0b0dyaWRBcGkgfSBmcm9tICcuLi9ncmlkLWNvbnRyb2xsZXIvZ3JpZC1jb250cm9sbGVyLnR5cGVzJztcbmltcG9ydCB7IEFnR3JpZE5nMiB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBEYXRvR3JpZEFsaWdubWVudCxcbiAgRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50LFxuICBEYXRvR3JpZE9wdGlvbnMsXG4gIERhdG9HcmlkU29ydCxcbiAgR3JpZFJvd3NTZWxlY3Rpb25EYXRhXG59IGZyb20gJy4uL2dyaWQvZ3JpZC12Mi50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZEV4dGVybmFsRmlsdGVyLCBEYXRvR3JpZEZpbHRlcnNNYXAgfSBmcm9tICcuLi9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci50eXBlcyc7XG5pbXBvcnQgeyBnZXRDb2xGaWVsZCwgZ2V0Q29sdW1uc1NpemVzIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IEhhc2hNYXAgfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sbGVjdGlvbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHcmlkUXVlcnkgZXh0ZW5kcyBRdWVyeTxHcmlkU3RvcmVTdGF0ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBhcGk6IERhdG9HcmlkQXBpO1xuICBncmlkUmVmOiBBZ0dyaWROZzI7XG4gIC8vQGludGVybmFsXG4gIF9ncmlkUmVhZHkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgZ3JpZFJlYWR5JCA9IHRoaXMuX2dyaWRSZWFkeS5hc09ic2VydmFibGUoKS5waXBlKGZpbHRlcihyZWFkeSA9PiByZWFkeSkpO1xuICAvL0BpbnRlcm5hbFxuICBfc2VydmVyRGF0YUxvYWRlZCA9IG5ldyBTdWJqZWN0PERhdG9HcmlkRGF0YUNoYW5nZWRFdmVudD4oKTtcbiAgc2VydmVyRGF0YUxvYWRlZCQgPSB0aGlzLl9zZXJ2ZXJEYXRhTG9hZGVkLmFzT2JzZXJ2YWJsZSgpO1xuICBfcm93QWN0aW9uVmlzaWJpbGl0eUNoYW5nZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICByb3dBY3Rpb25WaXNpYmlsaXR5Q2hhbmdlZCQgPSB0aGlzLl9yb3dBY3Rpb25WaXNpYmlsaXR5Q2hhbmdlZC5hc09ic2VydmFibGUoKTtcbiAgcm93RGF0YUNoYW5nZWQkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLndhaXRGb3JHcmlkKCgpID0+XG4gICAgbWVyZ2UodGhpcy5ncmlkUmVmLnJvd0RhdGFDaGFuZ2VkLCB0aGlzLmdyaWRSZWYucm93RGF0YVVwZGF0ZWQsIHRoaXMuZ3JpZFJlZi5maWx0ZXJDaGFuZ2VkLCB0aGlzLnNlcnZlckRhdGFMb2FkZWQkKVxuICApO1xuICBzZWxlY3RlZFJvd3NDaGFuZ2UkID0gdGhpcy53YWl0Rm9yR3JpZCgoKSA9PlxuICAgIGZyb21FdmVudCh0aGlzLmFwaS5ncmlkLCBFdmVudHMuRVZFTlRfU0VMRUNUSU9OX0NIQU5HRUQpLnBpcGUobWFwKCh7IGFwaSB9KSA9PiBhcGkuZ2V0U2VsZWN0ZWRSb3dzKCkpKVxuICApO1xuXG4gIHJvd3NTZWxlY3Rpb25EYXRhJDogT2JzZXJ2YWJsZTxHcmlkUm93c1NlbGVjdGlvbkRhdGE+ID0gdGhpcy53YWl0Rm9yR3JpZCgoKSA9PiB7XG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3NDaGFuZ2UkLFxuICAgICAgdGhpcy5yb3dEYXRhQ2hhbmdlZCQsXG4gICAgICB0aGlzLnNlbGVjdFNlcnZlclBhZ2luYXRpb25Db25maWcoKSxcbiAgICAgIHRoaXMud2FpdEZvckdyaWQoKCkgPT4gbWVyZ2UodGhpcy5ncmlkUmVmLnNvcnRDaGFuZ2VkLCB0aGlzLmdyaWRSZWYucGFnaW5hdGlvbkNoYW5nZWQpKVxuICAgICkucGlwZShcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdGFsUm93c0NvdW50ID0gdGhpcy5pc1NlcnZlclNpZGVcbiAgICAgICAgICA/IHRoaXMuc2VydmVyU2lkZUNvbmZpZy50b3RhbFJvd3NcbiAgICAgICAgICA6IHRoaXMuYXBpLmdyaWQuZ2V0RGlzcGxheWVkUm93Q291bnQoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3dzQ291bnQgPSB0aGlzLmdldFNlbGVjdGVkUm93c0NvdW50KCk7XG5cbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VSb3dzID0gdGhpcy5nZXRDdXJyZW50UGFnZVJvd3MoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRQYWdlUm93c0NvdW50ID0gc2l6ZShjdXJyZW50UGFnZVJvd3MuZmlsdGVyKChub2RlOiBSb3dOb2RlKSA9PiBub2RlLmlzU2VsZWN0ZWQoKSkpO1xuICAgICAgICBjb25zdCBpc0FsbFBhZ2VSb3dzU2VsZWN0ZWQgPVxuICAgICAgICAgIChzZWxlY3RlZFBhZ2VSb3dzQ291bnQgPiAwICYmIHNlbGVjdGVkUGFnZVJvd3NDb3VudCA9PT0gc2l6ZShjdXJyZW50UGFnZVJvd3MpKSB8fFxuICAgICAgICAgICh0aGlzLmlzU2VydmVyU2VsZWN0QWxsUm93c0VuYWJsZWQgJiYgaXNFbXB0eSh0aGlzLnNlcnZlclNpZGVDb25maWcuZXhjbHVkZWRGcm9tU2VsZWN0QWxsKSk7XG5cbiAgICAgICAgcmV0dXJuIHsgdG90YWxSb3dzQ291bnQsIHNlbGVjdGVkUm93c0NvdW50LCBzZWxlY3RlZFBhZ2VSb3dzQ291bnQsIGlzQWxsUGFnZVJvd3NTZWxlY3RlZCB9O1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICBmaWx0ZXJBY3RpdmUkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2V0dGluZ3MpLnBpcGUoXG4gICAgbWFwKCh7IGZpbHRlciwgc2VhcmNoVGVybSB9OiBEYXRvR3JpZFNldHRpbmdzKSA9PiBzaXplKGZpbHRlcikgPiAwIHx8ICEhc2VhcmNoVGVybSlcbiAgKTtcbiAgc2VydmVyU2lkZUVycm9yJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnNlcnZlclNpZGVQYWdpbmF0aW9uLmhhc0Vycm9yKTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc3RvcmU6IEdyaWRTdG9yZSkge1xuICAgIHN1cGVyKHN0b3JlKTtcbiAgfVxuXG4gIGdldCBzZXJ2ZXJTaWRlQ29uZmlnKCk6IFNlcnZlclNpZGVQYWdpbmF0aW9uQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNlcnZlclNpZGVQYWdpbmF0aW9uO1xuICB9XG5cbiAgZ2V0IGlzU2VydmVyU2lkZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2ZXJTaWRlQ29uZmlnLmVuYWJsZWQ7XG4gIH1cblxuICBnZXQgaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2ZXJTaWRlQ29uZmlnLnNlbGVjdEFsbFJvd3NFbmFibGVkO1xuICB9XG5cbiAgZ2V0IGdyaWRBbGlnbm1lbnQoKTogRGF0b0dyaWRBbGlnbm1lbnQge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2V0dGluZ3MuZ3JpZEFsaWdubWVudDtcbiAgfVxuXG4gIGdldENvbHVtblNpemVzKCk6IEhhc2hNYXA8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5jb2x1bW5zU2l6ZXM7XG4gIH1cblxuICBnZXRDdXJyZW50R3JpZFNldHRpbmdzKCk6IERhdG9HcmlkU2V0dGluZ3Mge1xuICAgIGNvbnN0IHRvQ29sSWQgPSBjb2x1bW4gPT4gY29sdW1uLmdldENvbElkKCk7XG4gICAgY29uc3QgeyBjb2x1bW5zIH0gPSB0aGlzLmFwaTtcbiAgICBjb25zdCBncm91cGVkQ29sdW1ucyA9IGNvbHVtbnMuZ2V0Um93R3JvdXBDb2x1bW5zKCk7XG4gICAgY29uc3QgY29sdW1uc09yZGVyID0gY29sdW1ucy5nZXRBbGxDb2x1bW5zKCk7XG4gICAgY29uc3QgYWxsR3JpZENvbHVtbnMgPSBjb2x1bW5zLmdldEFsbEdyaWRDb2x1bW5zKCk7XG4gICAgY29uc3QgaGlkZGVuQ29sdW1ucyA9IGNvbHVtbnNPcmRlclxuICAgICAgLmZpbHRlcihjb2x1bW4gPT4gIWNvbHVtbi5pc1Zpc2libGUoKSAmJiAhZ3JvdXBlZENvbHVtbnMuaW5jbHVkZXMoY29sdW1uKSlcbiAgICAgIC5tYXAodG9Db2xJZCk7XG4gICAgY29uc3Qgc3RvcmVTZXR0aW5ncyA9IHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncztcbiAgICBjb25zdCBzZXR0aW5nczogRGF0b0dyaWRTZXR0aW5ncyA9IHtcbiAgICAgIGdyaWRBbGlnbm1lbnQ6IHN0b3JlU2V0dGluZ3MuZ3JpZEFsaWdubWVudCxcbiAgICAgIHNvcnQ6IHRoaXMuZ2V0R3JpZE9wdGlvbnMoKS5zb3J0QnlTdG9yZSA/IHRoaXMuZ2V0U2F2ZWRTb3J0KCkgOiB0aGlzLmdldFNvcnRNb2RlbCgpLFxuICAgICAgaGlkZGVuQ29sdW1ucyxcbiAgICAgIGdyb3VwZWRDb2x1bW5zOiBncm91cGVkQ29sdW1ucy5tYXAodG9Db2xJZCksXG4gICAgICBmaWx0ZXI6IHRoaXMuZ2V0RmlsdGVyKCksXG4gICAgICBwaW5uZWRDb2x1bW5zOiBjb2x1bW5zLmdldERpc3BsYXllZExlZnRDb2x1bW5zKCkubWFwKHRvQ29sSWQpLFxuICAgICAgY29sdW1uc09yZGVyOiBhbGxHcmlkQ29sdW1ucy5tYXAodG9Db2xJZCksXG4gICAgICBjb2x1bW5zU2l6ZXM6IG51bGwsXG4gICAgICBzZWFyY2hUZXJtOiBudWxsXG4gICAgfTtcblxuICAgIGlmIChzdG9yZVNldHRpbmdzLmdyaWRBbGlnbm1lbnQgPT09IERhdG9HcmlkQWxpZ25tZW50LkNVU1RPTSkge1xuICAgICAgc2V0dGluZ3MuY29sdW1uc1NpemVzID0gZ2V0Q29sdW1uc1NpemVzKGFsbEdyaWRDb2x1bW5zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V0dGluZ3M7XG4gIH1cblxuICBnZXRTb3J0TW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpLmdyaWQuZ2V0U29ydE1vZGVsKCkucG9wKCkgYXMgRGF0b0dyaWRTb3J0O1xuICB9XG5cbiAgZ2V0U2F2ZWRTb3J0KCk6IERhdG9HcmlkU29ydCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5zb3J0IHx8IHRoaXMuZ2V0U29ydE1vZGVsKCk7XG4gIH1cblxuICBnZXRTb3J0KHNhdmVkU29ydDogRGF0b0dyaWRTb3J0ID0gdGhpcy5nZXRTYXZlZFNvcnQoKSk6IERhdG9HcmlkU29ydCB7XG4gICAgaWYgKHNhdmVkU29ydCkge1xuICAgICAgY29uc3QgeyBjb2xJZCwgc29ydCwgc29ydEluZGV4IH0gPSBzYXZlZFNvcnQ7XG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmFwaS5jb2x1bW5zLmdldENvbHVtbihjb2xJZCk7XG4gICAgICBjb25zdCBhbGxDb2x1bW5zID0gdGhpcy5hcGkuY29sdW1ucy5nZXRBbGxHcmlkQ29sdW1ucygpO1xuXG4gICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gZ2V0Q29sRmllbGQoY29sdW1uLmdldENvbERlZigpKTtcblxuICAgICAgICByZXR1cm4geyBjb2xJZCwgc29ydCwgZmllbGQgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNlY29uZGFyeUNvbHVtbiA9IHRoaXMuZ2V0U2Vjb25kYXJ5Q29sdW1uKGNvbElkKTtcblxuICAgICAgICBpZiAoc2Vjb25kYXJ5Q29sdW1uKSB7XG4gICAgICAgICAgY29uc3QgY29sdW1uSW5kZXggPSBzb3J0SW5kZXggfHwgYWxsQ29sdW1ucy5pbmRleE9mKHNlY29uZGFyeUNvbHVtbik7XG4gICAgICAgICAgY29uc3QgZmllbGQgPSBnZXRDb2xGaWVsZChzZWNvbmRhcnlDb2x1bW4uZ2V0Q29sRGVmKCkpO1xuXG4gICAgICAgICAgcmV0dXJuIHsgY29sSWQsIHNvcnQsIGZpZWxkLCBzb3J0SW5kZXg6IGNvbHVtbkluZGV4IH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBjb2xJZDogbnVsbCwgc29ydDogbnVsbCB9O1xuICB9XG5cbiAgLyogQGludGVybmFsICovXG4gIF9zZXRBcGkoYXBpOiBEYXRvR3JpZEFwaSwgZ3JpZFJlZjogQWdHcmlkTmcyKSB7XG4gICAgdGhpcy5hcGkgPSBhcGk7XG4gICAgdGhpcy5ncmlkUmVmID0gZ3JpZFJlZjtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGp1c3QgdGhlIHJvd3MgZGF0YSAqL1xuICBnZXRTZWxlY3RlZFJvd3M8VD4oKTogVFtdO1xuICBnZXRTZWxlY3RlZFJvd3M8VD4ob25seUZpcnN0Um93OiB0cnVlKTogVCB8IHVuZGVmaW5lZDtcbiAgZ2V0U2VsZWN0ZWRSb3dzPFQ+KG9ubHlGaXJzdFJvdzogZmFsc2UpOiBUW107XG4gIGdldFNlbGVjdGVkUm93czxUPihvbmx5Rmlyc3RSb3c/OiBib29sZWFuKTogVFtdIHwgVCB7XG4gICAgY29uc3Qgcm93cyA9IHRoaXMuYXBpLmdyaWQuZ2V0U2VsZWN0ZWRSb3dzKCk7XG4gICAgcmV0dXJuIG9ubHlGaXJzdFJvdyA/IHJvd3NbMF0gOiByb3dzO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIGVudGlyZSByb3cgbm9kZSAqL1xuICBnZXRTZWxlY3RlZFJvd05vZGVzKCk6IFJvd05vZGVbXTtcbiAgZ2V0U2VsZWN0ZWRSb3dOb2Rlcyhvbmx5Rmlyc3RSb3c6IHRydWUpOiBSb3dOb2RlIHwgdW5kZWZpbmVkO1xuICBnZXRTZWxlY3RlZFJvd05vZGVzKG9ubHlGaXJzdFJvdzogZmFsc2UpOiBSb3dOb2RlW107XG4gIGdldFNlbGVjdGVkUm93Tm9kZXMob25seUZpcnN0Um93PzogYm9vbGVhbik6IFJvd05vZGVbXSB8IFJvd05vZGUge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmFwaS5ncmlkLmdldFNlbGVjdGVkTm9kZXMoKTtcbiAgICByZXR1cm4gb25seUZpcnN0Um93ID8gcm93c1swXSA6IHJvd3M7XG4gIH1cblxuICBnZXRGaWx0ZXIoKTogRGF0b0dyaWRGaWx0ZXJzTWFwIHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzLmZpbHRlcjtcbiAgfVxuXG4gIHNlbGVjdEZpbHRlcigpOiBPYnNlcnZhYmxlPERhdG9HcmlkRmlsdGVyc01hcD4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5ncy5maWx0ZXIpO1xuICB9XG5cbiAgZ2V0RXh0ZXJuYWxGaWx0ZXIoKTogRGF0b0dyaWRFeHRlcm5hbEZpbHRlcltdIHtcbiAgICBjb25zdCBncmlkRmlsdGVycyA9IHRoaXMuZ2V0RmlsdGVyKCk7XG5cbiAgICBpZiAoZ3JpZEZpbHRlcnMpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhncmlkRmlsdGVycykucmVkdWNlKChmaWx0ZXJzLCBmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSBncmlkRmlsdGVyc1tmaWVsZF07XG5cbiAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7IGZpZWxkLCBmaWx0ZXIgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVycztcbiAgICAgIH0sIFtdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRTZWFyY2hUZXJtKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5zZWFyY2hUZXJtO1xuICB9XG5cbiAgc2VsZWN0U2VhcmNoVGVybSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdCgoc3RhdGU6IEdyaWRTdG9yZVN0YXRlKSA9PiBzdGF0ZS5zZXR0aW5ncy5zZWFyY2hUZXJtKTtcbiAgfVxuXG4gIHdhaXRGb3JHcmlkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHdhaXRGb3JHcmlkPFQgPSBhbnk+KHNvdXJjZTogKCkgPT4gT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD47XG4gIHdhaXRGb3JHcmlkPFQgPSBhbnk+KHNvdXJjZT86ICgpID0+IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+IHwgT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHNvdXJjZSA/IHRoaXMuZ3JpZFJlYWR5JC5waXBlKHN3aXRjaE1hcChzb3VyY2UpKSA6IHRoaXMuZ3JpZFJlYWR5JDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2dyaWRSZWFkeS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3NlcnZlckRhdGFMb2FkZWQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGdldEdyaWRPcHRpb25zKCk6IERhdG9HcmlkT3B0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZFJlZiA/ICh0aGlzLmdyaWRSZWYuZ3JpZE9wdGlvbnMgYXMgRGF0b0dyaWRPcHRpb25zKSA6IG51bGw7XG4gIH1cblxuICBzZWxlY3RTZXJ2ZXJQYWdpbmF0aW9uQ29uZmlnKCk6IE9ic2VydmFibGU8U2VydmVyU2lkZVBhZ2luYXRpb25Db25maWc+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3QoKHN0YXRlOiBHcmlkU3RvcmVTdGF0ZSkgPT4gc3RhdGUuc2VydmVyU2lkZVBhZ2luYXRpb24pO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRSb3dzQ291bnQoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5pc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkKSB7XG4gICAgICBjb25zdCB7IHRvdGFsUm93cywgZXhjbHVkZWRGcm9tU2VsZWN0QWxsIH0gPSB0aGlzLnNlcnZlclNpZGVDb25maWc7XG4gICAgICByZXR1cm4gdG90YWxSb3dzIC0gc2l6ZShleGNsdWRlZEZyb21TZWxlY3RBbGwpO1xuICAgIH1cbiAgICByZXR1cm4gc2l6ZSh0aGlzLmdldFNlbGVjdGVkUm93cygpKTtcbiAgfVxuXG4gIGdldEN1cnJlbnRQYWdlUm93cygpOiBSb3dOb2RlW10ge1xuICAgIGNvbnN0IHBhZ2VSb3dzOiBSb3dOb2RlW10gPSBbXTtcbiAgICBjb25zdCBwdXNoUGFnZVJvdyA9IChub2RlOiBSb3dOb2RlKSA9PiB7XG4gICAgICBwYWdlUm93cy5wdXNoKG5vZGUpO1xuICAgIH07XG4gICAgY29uc3QgZ3JpZCA9IHRoaXMuYXBpLmdyaWQ7XG4gICAgY29uc3QgcGFnZVNpemUgPSBncmlkLnBhZ2luYXRpb25HZXRQYWdlU2l6ZSgpO1xuICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gZ3JpZC5wYWdpbmF0aW9uR2V0Q3VycmVudFBhZ2UoKTtcbiAgICBjb25zdCB0b3RhbFJvd3MgPSBncmlkLnBhZ2luYXRpb25HZXRSb3dDb3VudCgpO1xuICAgIGNvbnN0IGZpcnN0UGFnZUluZGV4ID0gY3VycmVudFBhZ2UgKiBwYWdlU2l6ZTtcbiAgICBsZXQgbGFzdFBhZ2VJbmRleCA9IGZpcnN0UGFnZUluZGV4ICsgcGFnZVNpemU7XG4gICAgaWYgKGxhc3RQYWdlSW5kZXggPiB0b3RhbFJvd3MpIHtcbiAgICAgIGxhc3RQYWdlSW5kZXggPSB0b3RhbFJvd3M7XG4gICAgfVxuICAgIGNvbnN0IHBlcmZvcm1BY3Rpb24gPSAobm9kZTogUm93Tm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUucm93SW5kZXggPCBsYXN0UGFnZUluZGV4ICYmIG5vZGUucm93SW5kZXggPj0gZmlyc3RQYWdlSW5kZXgpIHtcbiAgICAgICAgcHVzaFBhZ2VSb3cobm9kZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLmlzU2VydmVyU2lkZSA/IGdyaWQuZm9yRWFjaE5vZGUocGVyZm9ybUFjdGlvbikgOiBncmlkLmZvckVhY2hOb2RlQWZ0ZXJGaWx0ZXJBbmRTb3J0KHBlcmZvcm1BY3Rpb24pO1xuICAgIHJldHVybiBwYWdlUm93cztcbiAgfVxuXG4gIGdldEFsbENvbHVtbnMoKTogQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckNoZWNrYm94U2VsZWN0aW9uQ29sdW1uKHRoaXMuYXBpLmNvbHVtbnMuZ2V0QWxsQ29sdW1ucygpKTtcbiAgfVxuXG4gIGdldEFsbERpc3BsYXllZENvbHVtbnMoKTogQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckNoZWNrYm94U2VsZWN0aW9uQ29sdW1uKHRoaXMuYXBpLmNvbHVtbnMuZ2V0QWxsRGlzcGxheWVkQ29sdW1ucygpKTtcbiAgfVxuXG4gIGdldEFsbFBpdm90Q29sdW1ucygpOiBDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsQ29sdW1ucygpLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmlzUGl2b3RBY3RpdmUoKSk7XG4gIH1cblxuICBzZWxlY3RJc1NlbGVjdEFsbFJvd3NFbmFibGVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXJ2ZXJTaWRlUGFnaW5hdGlvbi5zZWxlY3RBbGxSb3dzRW5hYmxlZCk7XG4gIH1cblxuICBnZXRTZWNvbmRhcnlDb2x1bW4oY29sSWQ6IHN0cmluZyk6IENvbHVtbiB7XG4gICAgLyoqIFVzZSBnZXRQaXZvdFJlc3VsdENvbHVtbnMgZnJvbSB2ZXIgMjggKi9cbiAgICBjb25zdCBzZWNvbmRhcnlDb2x1bW5zID0gdGhpcy5hcGkuY29sdW1ucy5nZXRTZWNvbmRhcnlDb2x1bW5zKCk7XG5cbiAgICBpZiAoc2Vjb25kYXJ5Q29sdW1ucykge1xuICAgICAgcmV0dXJuIHNlY29uZGFyeUNvbHVtbnMuZmluZChjb2wgPT4gY29sLmdldENvbElkKCkgPT09IGNvbElkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyQ2hlY2tib3hTZWxlY3Rpb25Db2x1bW4oY29sdW1uczogQ29sdW1uW10pOiBDb2x1bW5bXSB7XG4gICAgcmV0dXJuIGNvbHVtbnMuZmlsdGVyKFxuICAgICAgKGNvbHVtbjogQ29sdW1uKSA9PiAhY29sdW1uLmdldFVzZXJQcm92aWRlZENvbERlZigpIHx8ICFjb2x1bW4uZ2V0VXNlclByb3ZpZGVkQ29sRGVmKCkuY2hlY2tib3hTZWxlY3Rpb25cbiAgICApO1xuICB9XG59XG4iXX0=
|