@datorama/core 22.13.0-beta.5 → 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.
Files changed (60) hide show
  1. package/bundle.scss +4833 -5708
  2. package/bundles/datorama-core.umd.js +134 -86
  3. package/bundles/datorama-core.umd.js.map +1 -1
  4. package/bundles/datorama-core.umd.min.js +56 -56
  5. package/bundles/datorama-core.umd.min.js.map +1 -1
  6. package/datorama-core.d.ts +1 -0
  7. package/datorama-core.metadata.json +1 -1
  8. package/esm2015/datorama-core.js +2 -1
  9. package/esm2015/lib/breadcrumbs/breadcrumbs.component.js +4 -2
  10. package/esm2015/lib/grid/grid/grid.component.js +5 -5
  11. package/esm2015/lib/grid-v2/grid/grid-v2.component.js +8 -10
  12. package/esm2015/lib/grid-v2/grid/grid-v2.config.js +21 -4
  13. package/esm2015/lib/grid-v2/grid/grid-v2.types.js +1 -1
  14. package/esm2015/lib/grid-v2/grid-column-header/grid-column-header.component.js +1 -1
  15. package/esm2015/lib/grid-v2/grid-column-header/grid-multi-select-header/grid-multi-select-header.component.js +3 -4
  16. package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +8 -8
  17. package/esm2015/lib/grid-v2/grid-pagination/grid-pagination.component.js +2 -2
  18. package/esm2015/lib/grid-v2/grid-settings.js +2 -2
  19. package/esm2015/lib/grid-v2/grid-store/grid.query.js +1 -1
  20. package/esm2015/lib/grid-v2/grid-store/grid.service.js +15 -15
  21. package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +13 -1
  22. package/esm2015/lib/rich-text/rich-text.directive.js +20 -38
  23. package/esm2015/lib/rich-text/rich-text.service.js +50 -0
  24. package/esm2015/lib/select/select.component.js +4 -9
  25. package/esm2015/lib/version.js +2 -2
  26. package/esm5/datorama-core.js +2 -1
  27. package/esm5/lib/breadcrumbs/breadcrumbs.component.js +4 -2
  28. package/esm5/lib/grid/grid/grid.component.js +5 -5
  29. package/esm5/lib/grid-v2/grid/grid-v2.component.js +8 -10
  30. package/esm5/lib/grid-v2/grid/grid-v2.config.js +21 -4
  31. package/esm5/lib/grid-v2/grid/grid-v2.types.js +1 -1
  32. package/esm5/lib/grid-v2/grid-column-header/grid-column-header.component.js +1 -1
  33. package/esm5/lib/grid-v2/grid-column-header/grid-multi-select-header/grid-multi-select-header.component.js +3 -4
  34. package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +8 -8
  35. package/esm5/lib/grid-v2/grid-pagination/grid-pagination.component.js +2 -2
  36. package/esm5/lib/grid-v2/grid-settings.js +2 -2
  37. package/esm5/lib/grid-v2/grid-store/grid.query.js +1 -1
  38. package/esm5/lib/grid-v2/grid-store/grid.service.js +15 -15
  39. package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +20 -1
  40. package/esm5/lib/rich-text/rich-text.directive.js +21 -39
  41. package/esm5/lib/rich-text/rich-text.service.js +51 -0
  42. package/esm5/lib/select/select.component.js +4 -9
  43. package/esm5/lib/version.js +2 -2
  44. package/fesm2015/datorama-core.js +125 -87
  45. package/fesm2015/datorama-core.js.map +1 -1
  46. package/fesm5/datorama-core.js +134 -88
  47. package/fesm5/datorama-core.js.map +1 -1
  48. package/lib/grid/grid/grid.component.d.ts +2 -2
  49. package/lib/grid-v2/grid/grid-v2.component.d.ts +2 -2
  50. package/lib/grid-v2/grid/grid-v2.config.d.ts +1 -0
  51. package/lib/grid-v2/grid/grid-v2.types.d.ts +1 -0
  52. package/lib/grid-v2/grid-controller/grid-controller.component.d.ts +5 -5
  53. package/lib/grid-v2/grid-settings.d.ts +2 -2
  54. package/lib/grid-v2/grid-store/grid.query.d.ts +3 -3
  55. package/lib/grid-v2/grid-store/grid.service.d.ts +6 -2
  56. package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +3 -0
  57. package/lib/rich-text/rich-text.directive.d.ts +4 -6
  58. package/lib/rich-text/rich-text.service.d.ts +10 -0
  59. package/package.json +2 -2
  60. package/testing/src/grid/row.ts +1 -1
@@ -14,5 +14,6 @@ export { DatoGridV2ToolbarMoreMenuComponent as ɵm } from './lib/grid-v2/grid-to
14
14
  export { DatoGridHelper as ɵc } from './lib/grid/grid-helper';
15
15
  export { DatoListSelectAllComponent as ɵj } from './lib/list-v2/list-select-all.component';
16
16
  export { ListStore as ɵi } from './lib/list-v2/list-v2-state';
17
+ export { RichTextService as ɵo } from './lib/rich-text/rich-text.service';
17
18
  export { Popper as ɵd } from './lib/services/popper';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0b3JhbWEtY29yZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsiZGF0b3JhbWEtY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBa0IsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRixPQUFPLEVBQUMsK0JBQStCLElBQUksRUFBRSxFQUFDLE1BQU0saUdBQWlHLENBQUM7QUFDdEosT0FBTyxFQUFDLHdDQUF3QyxJQUFJLEVBQUUsRUFBQyxNQUFNLDhGQUE4RixDQUFDO0FBQzVKLE9BQU8sRUFBQywwQkFBMEIsSUFBSSxFQUFFLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUN6RyxPQUFPLEVBQUMsU0FBUyxJQUFJLEVBQUUsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxXQUFXLElBQUksRUFBRSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUMsa0NBQWtDLElBQUksRUFBRSxFQUFDLE1BQU0sMEVBQTBFLENBQUM7QUFDbEksT0FBTyxFQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDekYsT0FBTyxFQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsTUFBTSxJQUFJLEVBQUUsRUFBQyxNQUFNLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5leHBvcnQge0NvcmVDb25maWcgYXMgybVhLERBVE9fQ09SRV9DT05GSUcgYXMgybVifSBmcm9tICcuL2xpYi9jb25maWcnO1xuZXhwb3J0IHtEYXRvRGF0ZVJhbmdlc0ZpbHRlclBpcGUgYXMgybVofSBmcm9tICcuL2xpYi9kYXRlLXBpY2tlci9yYW5nZXMtZmlsdGVyLnBpcGUnO1xuZXhwb3J0IHtEYXRvR3JpZEl0ZW1zQ291bnRDZWxsQ29tcG9uZW50IGFzIMm1bH0gZnJvbSAnLi9saWIvZ3JpZC12Mi9ncmlkLWNvbHVtbi1jZWxsLWNvbXBvbmVudHMvZ3JpZC1pdGVtcy1jb3VudC1jZWxsL2dyaWQtaXRlbXMtY291bnQtY2VsbC5jb21wb25lbnQnO1xuZXhwb3J0IHtEYXRvR3JpZE11bHRpU2VsZWN0Q29sdW1uSGVhZGVyQ29tcG9uZW50IGFzIMm1a30gZnJvbSAnLi9saWIvZ3JpZC12Mi9ncmlkLWNvbHVtbi1oZWFkZXIvZ3JpZC1tdWx0aS1zZWxlY3QtaGVhZGVyL2dyaWQtbXVsdGktc2VsZWN0LWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0IHtEYXRvR3JpZFNlYXJjaEJhckNvbXBvbmVudCBhcyDJtW59IGZyb20gJy4vbGliL2dyaWQtdjIvZ3JpZC1zZWFyY2gtYmFyL2dyaWQtc2VhcmNoLWJhci5jb21wb25lbnQnO1xuZXhwb3J0IHtHcmlkUXVlcnkgYXMgybVlfSBmcm9tICcuL2xpYi9ncmlkLXYyL2dyaWQtc3RvcmUvZ3JpZC5xdWVyeSc7XG5leHBvcnQge0dyaWRTZXJ2aWNlIGFzIMm1Z30gZnJvbSAnLi9saWIvZ3JpZC12Mi9ncmlkLXN0b3JlL2dyaWQuc2VydmljZSc7XG5leHBvcnQge0dyaWRTdG9yZSBhcyDJtWZ9IGZyb20gJy4vbGliL2dyaWQtdjIvZ3JpZC1zdG9yZS9ncmlkLnN0b3JlJztcbmV4cG9ydCB7RGF0b0dyaWRWMlRvb2xiYXJNb3JlTWVudUNvbXBvbmVudCBhcyDJtW19IGZyb20gJy4vbGliL2dyaWQtdjIvZ3JpZC10b29sYmFyL2dyaWQtdG9vbGJhci1tb3JlLW1lbnUvZ3JpZC10b29sYmFyLW1vcmUtbWVudSc7XG5leHBvcnQge0RhdG9HcmlkSGVscGVyIGFzIMm1Y30gZnJvbSAnLi9saWIvZ3JpZC9ncmlkLWhlbHBlcic7XG5leHBvcnQge0RhdG9MaXN0U2VsZWN0QWxsQ29tcG9uZW50IGFzIMm1an0gZnJvbSAnLi9saWIvbGlzdC12Mi9saXN0LXNlbGVjdC1hbGwuY29tcG9uZW50JztcbmV4cG9ydCB7TGlzdFN0b3JlIGFzIMm1aX0gZnJvbSAnLi9saWIvbGlzdC12Mi9saXN0LXYyLXN0YXRlJztcbmV4cG9ydCB7UG9wcGVyIGFzIMm1ZH0gZnJvbSAnLi9saWIvc2VydmljZXMvcG9wcGVyJzsiXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0b3JhbWEtY29yZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsiZGF0b3JhbWEtY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBa0IsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRixPQUFPLEVBQUMsK0JBQStCLElBQUksRUFBRSxFQUFDLE1BQU0saUdBQWlHLENBQUM7QUFDdEosT0FBTyxFQUFDLHdDQUF3QyxJQUFJLEVBQUUsRUFBQyxNQUFNLDhGQUE4RixDQUFDO0FBQzVKLE9BQU8sRUFBQywwQkFBMEIsSUFBSSxFQUFFLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUN6RyxPQUFPLEVBQUMsU0FBUyxJQUFJLEVBQUUsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxXQUFXLElBQUksRUFBRSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUMsa0NBQWtDLElBQUksRUFBRSxFQUFDLE1BQU0sMEVBQTBFLENBQUM7QUFDbEksT0FBTyxFQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDekYsT0FBTyxFQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsZUFBZSxJQUFJLEVBQUUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxNQUFNLElBQUksRUFBRSxFQUFDLE1BQU0sdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG5cbmV4cG9ydCB7Q29yZUNvbmZpZyBhcyDJtWEsREFUT19DT1JFX0NPTkZJRyBhcyDJtWJ9IGZyb20gJy4vbGliL2NvbmZpZyc7XG5leHBvcnQge0RhdG9EYXRlUmFuZ2VzRmlsdGVyUGlwZSBhcyDJtWh9IGZyb20gJy4vbGliL2RhdGUtcGlja2VyL3Jhbmdlcy1maWx0ZXIucGlwZSc7XG5leHBvcnQge0RhdG9HcmlkSXRlbXNDb3VudENlbGxDb21wb25lbnQgYXMgybVsfSBmcm9tICcuL2xpYi9ncmlkLXYyL2dyaWQtY29sdW1uLWNlbGwtY29tcG9uZW50cy9ncmlkLWl0ZW1zLWNvdW50LWNlbGwvZ3JpZC1pdGVtcy1jb3VudC1jZWxsLmNvbXBvbmVudCc7XG5leHBvcnQge0RhdG9HcmlkTXVsdGlTZWxlY3RDb2x1bW5IZWFkZXJDb21wb25lbnQgYXMgybVrfSBmcm9tICcuL2xpYi9ncmlkLXYyL2dyaWQtY29sdW1uLWhlYWRlci9ncmlkLW11bHRpLXNlbGVjdC1oZWFkZXIvZ3JpZC1tdWx0aS1zZWxlY3QtaGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQge0RhdG9HcmlkU2VhcmNoQmFyQ29tcG9uZW50IGFzIMm1bn0gZnJvbSAnLi9saWIvZ3JpZC12Mi9ncmlkLXNlYXJjaC1iYXIvZ3JpZC1zZWFyY2gtYmFyLmNvbXBvbmVudCc7XG5leHBvcnQge0dyaWRRdWVyeSBhcyDJtWV9IGZyb20gJy4vbGliL2dyaWQtdjIvZ3JpZC1zdG9yZS9ncmlkLnF1ZXJ5JztcbmV4cG9ydCB7R3JpZFNlcnZpY2UgYXMgybVnfSBmcm9tICcuL2xpYi9ncmlkLXYyL2dyaWQtc3RvcmUvZ3JpZC5zZXJ2aWNlJztcbmV4cG9ydCB7R3JpZFN0b3JlIGFzIMm1Zn0gZnJvbSAnLi9saWIvZ3JpZC12Mi9ncmlkLXN0b3JlL2dyaWQuc3RvcmUnO1xuZXhwb3J0IHtEYXRvR3JpZFYyVG9vbGJhck1vcmVNZW51Q29tcG9uZW50IGFzIMm1bX0gZnJvbSAnLi9saWIvZ3JpZC12Mi9ncmlkLXRvb2xiYXIvZ3JpZC10b29sYmFyLW1vcmUtbWVudS9ncmlkLXRvb2xiYXItbW9yZS1tZW51JztcbmV4cG9ydCB7RGF0b0dyaWRIZWxwZXIgYXMgybVjfSBmcm9tICcuL2xpYi9ncmlkL2dyaWQtaGVscGVyJztcbmV4cG9ydCB7RGF0b0xpc3RTZWxlY3RBbGxDb21wb25lbnQgYXMgybVqfSBmcm9tICcuL2xpYi9saXN0LXYyL2xpc3Qtc2VsZWN0LWFsbC5jb21wb25lbnQnO1xuZXhwb3J0IHtMaXN0U3RvcmUgYXMgybVpfSBmcm9tICcuL2xpYi9saXN0LXYyL2xpc3QtdjItc3RhdGUnO1xuZXhwb3J0IHtSaWNoVGV4dFNlcnZpY2UgYXMgybVvfSBmcm9tICcuL2xpYi9yaWNoLXRleHQvcmljaC10ZXh0LnNlcnZpY2UnO1xuZXhwb3J0IHtQb3BwZXIgYXMgybVkfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9wb3BwZXInOyJdfQ==
@@ -71,7 +71,9 @@ let DatoBreadcrumbsComponent = class DatoBreadcrumbsComponent {
71
71
  this._breadcrumbs = [...start, ...dots, ...end];
72
72
  }
73
73
  initEditableHeader() {
74
- this.headerControl.valueChanges.pipe(debounceTime(300), untilDestroyed(this)).subscribe((res) => {
74
+ this.headerControl.valueChanges
75
+ .pipe(debounceTime(300), untilDestroyed(this))
76
+ .subscribe((res) => {
75
77
  this.updateEditableText.emit(res);
76
78
  this.cdr.detectChanges();
77
79
  });
@@ -146,4 +148,4 @@ DatoBreadcrumbsComponent = __decorate([
146
148
  __metadata("design:paramtypes", [ChangeDetectorRef])
147
149
  ], DatoBreadcrumbsComponent);
148
150
  export { DatoBreadcrumbsComponent };
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRhdG9yYW1hL2NvcmUvIiwic291cmNlcyI6WyJsaWIvYnJlYWRjcnVtYnMvYnJlYWRjcnVtYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVN4RCxJQUFhLHdCQUF3QixHQUFyQyxNQUFhLHdCQUF3QjtJQXFDbkMsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFmakMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLG1CQUFtQixDQUFDO1FBQ3ZDLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUNoQyw4QkFBeUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUU1QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUlqQyxrQ0FBNkIsR0FBRyxDQUFDLENBQUM7UUFDM0MsNkJBQXdCLEdBQUcsSUFBSSxD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LENBQUMsS0FBSyxDQUFDLGlDQUFpQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDO1NBQ3RGO2FBQU07WUFDTCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsR0FBRyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztDQUNGLENBQUE7O1lBcEQwQixpQkFBaUI7O0FBbkMxQztJQURDLEtBQUssRUFBRTs7O3VFQU1QO0FBR0Q7SUFEQyxLQUFLLEVBQUU7OzsyREFPUDtBQUtRO0lBQVIsS0FBSyxFQUFFOzhCQUFnQixXQUFXOytEQUFDO0FBQzNCO0lBQVIsS0FBSyxFQUFFOztpRUFBeUI7QUFDeEI7SUFBUixLQUFLLEVBQUU7O2dFQUFxQjtBQUNwQjtJQUFSLEtBQUssRUFBRTs7a0VBQXlCO0FBQ3hCO0lBQVIsS0FBSyxFQUFFOztrRUFBd0M7QUFDdkM7SUFBUixLQUFLLEVBQUU7O3lFQUFpQztBQUNoQztJQUFSLEtBQUssRUFBRTs7MkVBQThDO0FBRTVDO0lBQVQsTUFBTSxFQUFFOztpRUFBc0M7QUFDckM7SUFBVCxNQUFNLEVBQUU7O29FQUF5QztBQTlCdkMsd0JBQXdCO0lBUHBDLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxrQkFBa0I7UUFDNUIsdzFDQUEyQztRQUUzQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtRQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7S0FDaEQsQ0FBQztxQ0FzQ3lCLGlCQUFpQjtHQXJDL0Isd0JBQXdCLENBeUZwQztTQXpGWSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCcmVhZGNydW1iIH0gZnJvbSAnLi9icmVhZGNydW1icy50eXBlcyc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vdXRpbHMvY29sbGVjdGlvbic7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4uL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ25neC10YWtlLXVudGlsLWRlc3Ryb3knO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLWJyZWFkY3J1bWJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnJlYWRjcnVtYnMuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRGF0b0JyZWFkY3J1bWJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBzZXQgbWF4RGlzcGxheWVkQnJlYWRjcnVtYnMobWF4OiBudW1iZXIpIHtcbiAgICBpZiAoIWlzTmlsKHRoaXMub3JpZ2luYWxCcmVhZGNydW1icykpIHtcbiAgICAgIHRoaXMuc2V0TWF4RGlzcGxheWVkQnJlYWRjcnVtYnMobWF4KTtcbiAgICAgIHRoaXMuaW5pdEJyZWFkY3J1bWJzKHRoaXMub3JpZ2luYWxCcmVhZGNydW1icyk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGJyZWFkY3J1bWJzKGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10pIHtcbiAgICB0aGlzLm9yaWdpbmFsQnJlYWRjcnVtYnMgPSBicmVhZGNydW1icztcbiAgICBpZiAodGhpcy5fbWF4RGlzcGxheWVkQnJlYWRjcnVtYnMgPiAwKSB7XG4gICAgICB0aGlzLnNldE1heERpc3BsYXllZEJyZWFkY3J1bWJzKHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzKTtcbiAgICAgIHRoaXMuaW5pdEJyZWFkY3J1bWJzKGJyZWFkY3J1bWJzKTtcbiAgICB9XG4gIH1cblxuICBnZXQgYnJlYWRjcnVtYnMoKTogQnJlYWRjcnVtYltdIHtcbiAgICByZXR1cm4gdGhpcy5fYnJlYWRjcnVtYnM7XG4gIH1cbiAgQElucHV0KCkgaGVhZGVyQ29udHJvbDogRm9ybUNvbnRyb2w7XG4gIEBJbnB1dCgpIHNob3dBcnJvd0luTGFzdCA9IGZhbHNlO1xuICBASW5wdXQoKSBsYXN0QXJyb3dDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBtYXJrTGFzdEFzQWN0aXZlID0gdHJ1ZTtcbiAgQElucHV0KCkgZGF0YUF1dG9JZFByZWZpeCA9ICdkYXRvLWJyZWFkY3J1bWJzLSc7XG4gIEBJbnB1dCgpIGlzSGVhZGVyQ29udHJvbERpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhlYWRlckNvbnRyb2xBdXRvSWRTdWZmaXggPSAnaGVhZGVyLWNvbnRyb2wnO1xuXG4gIEBPdXRwdXQoKSBicmVhZGNydW1iQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSB1cGRhdGVFZGl0YWJsZVRleHQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBvcmlnaW5hbEJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW107XG4gIHByaXZhdGUgX2JyZWFkY3J1bWJzOiBCcmVhZGNydW1iW107XG4gIHByaXZhdGUgcmVhZG9ubHkgSU5JVElBTF9ESVNQTEFZRURfQlJFQURDUlVNQlMgPSAzO1xuICBwcml2YXRlIF9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icyA9IHRoaXMuSU5JVElBTF9ESVNQTEFZRURfQlJFQURDUlVNQlM7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhlYWRlckNvbnRyb2wpIHtcbiAgICAgIHRoaXMuaW5pdEVkaXRhYmxlSGVhZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgLyoqIEltcGxlbWVudGVkIGR1ZSB0byB1bnRpbERlc3Ryb3llZCAqL1xuICB9XG5cbiAgb25DbGljayh7IGRhdGEsIG9uQ2xpY2sgfTogQnJlYWRjcnVtYikge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLmJyZWFkY3J1bWJDbGljay5lbWl0KGRhdGEpO1xuICAgIH1cblxuICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICBvbkNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgc2hvdWxkSGF2ZUFycm93KGxhc3Q6IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gIWxhc3QgfHwgKGxhc3QgJiYgdGhpcy5zaG93QXJyb3dJbkxhc3QpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0QnJlYWRjcnVtYnMoYnJlYWRjcnVtYnM6IEJyZWFkY3J1bWJbXSkge1xuICAgIGNvbnN0IHNob3VsZERpc3BsYXlBbGxCcmVhZGNydW1icyA9IHNpemUoYnJlYWRjcnVtYnMpIDw9IHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzO1xuICAgIGNvbnN0IGRvdHMgPSBzaG91bGREaXNwbGF5QWxsQnJlYWRjcnVtYnMgPyBbXSA6IFt7IHRleHQ6ICcuLi4nIH1dO1xuICAgIGNvbnN0IHN0YXJ0ID0gYnJlYWRjcnVtYnMuc2xpY2UoMCwgMSk7XG4gICAgY29uc3QgZW5kID0gc2hvdWxkRGlzcGxheUFsbEJyZWFkY3J1bWJzXG4gICAgICA/IGJyZWFkY3J1bWJzLnNsaWNlKDEpXG4gICAgICA6IGJyZWFkY3J1bWJzLnNsaWNlKGJyZWFkY3J1bWJzLmxlbmd0aCAtIHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzICsgMSk7XG5cbiAgICB0aGlzLl9icmVhZGNydW1icyA9IFsuLi5zdGFydCwgLi4uZG90cywgLi4uZW5kXTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEVkaXRhYmxlSGVhZGVyKCkge1xuICAgIHRoaXMuaGVhZGVyQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMzAwKSwgdW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgocmVzOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlRWRpdGFibGVUZXh0LmVtaXQocmVzKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TWF4RGlzcGxheWVkQnJlYWRjcnVtYnMobWF4OiBudW1iZXIpIHtcbiAgICBpZiAobWF4IDwgdGhpcy5JTklUSUFMX0RJU1BMQVlFRF9CUkVBRENSVU1CUykge1xuICAgICAgdGhpcy5fbWF4RGlzcGxheWVkQnJlYWRjcnVtYnMgPSB0aGlzLklOSVRJQUxfRElTUExBWUVEX0JSRUFEQ1JVTUJTO1xuICAgICAgY29uc29sZS5lcnJvcihgTWluaW11bSBicmVhZGNydW1icyBudW1iZXIgaXMgJHt0aGlzLklOSVRJQUxfRElTUExBWUVEX0JSRUFEQ1JVTUJTfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icyA9IG1heDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRhdG9yYW1hL2NvcmUvIiwic291cmNlcyI6WyJsaWIvYnJlYWRjcnVtYnMvYnJlYWRjcnVtYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVN4RCxJQUFhLHdCQUF3QixHQUFyQyxNQUFhLHdCQUF3QjtJQXFDbkMsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFmakMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLG1CQUFtQixDQUFDO1FBQ3ZDLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUNoQyw4QkFBeUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUU1QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUlqQyxrQ0FBNkIsR0FBRyxDQUFDLENBQUM7UUFDM0MsNkJBQXdCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDO0lBRXpCLENBQUM7SUFuQzlDLElBQUksdUJBQXVCLENBQUMsR0FBVztRQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO1lBQ3BDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQztJQUdELElBQUksV0FBVyxDQUFDLFdBQXlCO1FBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxXQUFXLENBQUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxFQUFFO1lBQ3JDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBbUJELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULHdDQUF3QztJQUMxQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBYztRQUNuQyxJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxPQUFPLEVBQUU7WUFDWCxPQUFPLEVBQUUsQ0FBQztTQUNYO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFhO1FBQzNCLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTyxlQUFlLENBQUMsV0FBeUI7UUFDL0MsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBQ3ZGLE1BQU0sSUFBSSxHQUFHLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNsRSxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0QyxNQUFNLEdBQUcsR0FBRywyQkFBMkI7WUFDckMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTlFLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZO2FBQzVCLElBQUksQ0FDSCxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FDckI7YUFDQSxTQUFTLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUN6QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sMEJBQTBCLENBQUMsR0FBVztRQUM1QyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsNkJBQTZCLEVBQUU7WUFDNUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQztZQUNuRSxPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDO1NBQ3RGO2FBQU07WUFDTCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsR0FBRyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztDQUNGLENBQUE7O1lBekQwQixpQkFBaUI7O0FBbkMxQztJQURDLEtBQUssRUFBRTs7O3VFQU1QO0FBR0Q7SUFEQyxLQUFLLEVBQUU7OzsyREFPUDtBQUtRO0lBQVIsS0FBSyxFQUFFOzhCQUFnQixXQUFXOytEQUFDO0FBQzNCO0lBQVIsS0FBSyxFQUFFOztpRUFBeUI7QUFDeEI7SUFBUixLQUFLLEVBQUU7O2dFQUFxQjtBQUNwQjtJQUFSLEtBQUssRUFBRTs7a0VBQXlCO0FBQ3hCO0lBQVIsS0FBSyxFQUFFOztrRUFBd0M7QUFDdkM7SUFBUixLQUFLLEVBQUU7O3lFQUFpQztBQUNoQztJQUFSLEtBQUssRUFBRTs7MkVBQThDO0FBRTVDO0lBQVQsTUFBTSxFQUFFOztpRUFBc0M7QUFDckM7SUFBVCxNQUFNLEVBQUU7O29FQUF5QztBQTlCdkMsd0JBQXdCO0lBUHBDLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxrQkFBa0I7UUFDNUIsdzFDQUEyQztRQUUzQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtRQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7S0FDaEQsQ0FBQztxQ0FzQ3lCLGlCQUFpQjtHQXJDL0Isd0JBQXdCLENBOEZwQztTQTlGWSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCcmVhZGNydW1iIH0gZnJvbSAnLi9icmVhZGNydW1icy50eXBlcyc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vdXRpbHMvY29sbGVjdGlvbic7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4uL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ25neC10YWtlLXVudGlsLWRlc3Ryb3knO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLWJyZWFkY3J1bWJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnJlYWRjcnVtYnMuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRGF0b0JyZWFkY3J1bWJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBzZXQgbWF4RGlzcGxheWVkQnJlYWRjcnVtYnMobWF4OiBudW1iZXIpIHtcbiAgICBpZiAoIWlzTmlsKHRoaXMub3JpZ2luYWxCcmVhZGNydW1icykpIHtcbiAgICAgIHRoaXMuc2V0TWF4RGlzcGxheWVkQnJlYWRjcnVtYnMobWF4KTtcbiAgICAgIHRoaXMuaW5pdEJyZWFkY3J1bWJzKHRoaXMub3JpZ2luYWxCcmVhZGNydW1icyk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGJyZWFkY3J1bWJzKGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10pIHtcbiAgICB0aGlzLm9yaWdpbmFsQnJlYWRjcnVtYnMgPSBicmVhZGNydW1icztcbiAgICBpZiAodGhpcy5fbWF4RGlzcGxheWVkQnJlYWRjcnVtYnMgPiAwKSB7XG4gICAgICB0aGlzLnNldE1heERpc3BsYXllZEJyZWFkY3J1bWJzKHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzKTtcbiAgICAgIHRoaXMuaW5pdEJyZWFkY3J1bWJzKGJyZWFkY3J1bWJzKTtcbiAgICB9XG4gIH1cblxuICBnZXQgYnJlYWRjcnVtYnMoKTogQnJlYWRjcnVtYltdIHtcbiAgICByZXR1cm4gdGhpcy5fYnJlYWRjcnVtYnM7XG4gIH1cbiAgQElucHV0KCkgaGVhZGVyQ29udHJvbDogRm9ybUNvbnRyb2w7XG4gIEBJbnB1dCgpIHNob3dBcnJvd0luTGFzdCA9IGZhbHNlO1xuICBASW5wdXQoKSBsYXN0QXJyb3dDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBtYXJrTGFzdEFzQWN0aXZlID0gdHJ1ZTtcbiAgQElucHV0KCkgZGF0YUF1dG9JZFByZWZpeCA9ICdkYXRvLWJyZWFkY3J1bWJzLSc7XG4gIEBJbnB1dCgpIGlzSGVhZGVyQ29udHJvbERpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhlYWRlckNvbnRyb2xBdXRvSWRTdWZmaXggPSAnaGVhZGVyLWNvbnRyb2wnO1xuXG4gIEBPdXRwdXQoKSBicmVhZGNydW1iQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSB1cGRhdGVFZGl0YWJsZVRleHQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBvcmlnaW5hbEJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW107XG4gIHByaXZhdGUgX2JyZWFkY3J1bWJzOiBCcmVhZGNydW1iW107XG4gIHByaXZhdGUgcmVhZG9ubHkgSU5JVElBTF9ESVNQTEFZRURfQlJFQURDUlVNQlMgPSAzO1xuICBwcml2YXRlIF9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icyA9IHRoaXMuSU5JVElBTF9ESVNQTEFZRURfQlJFQURDUlVNQlM7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhlYWRlckNvbnRyb2wpIHtcbiAgICAgIHRoaXMuaW5pdEVkaXRhYmxlSGVhZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgLyoqIEltcGxlbWVudGVkIGR1ZSB0byB1bnRpbERlc3Ryb3llZCAqL1xuICB9XG5cbiAgb25DbGljayh7IGRhdGEsIG9uQ2xpY2sgfTogQnJlYWRjcnVtYikge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLmJyZWFkY3J1bWJDbGljay5lbWl0KGRhdGEpO1xuICAgIH1cblxuICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICBvbkNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgc2hvdWxkSGF2ZUFycm93KGxhc3Q6IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gIWxhc3QgfHwgKGxhc3QgJiYgdGhpcy5zaG93QXJyb3dJbkxhc3QpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0QnJlYWRjcnVtYnMoYnJlYWRjcnVtYnM6IEJyZWFkY3J1bWJbXSkge1xuICAgIGNvbnN0IHNob3VsZERpc3BsYXlBbGxCcmVhZGNydW1icyA9IHNpemUoYnJlYWRjcnVtYnMpIDw9IHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzO1xuICAgIGNvbnN0IGRvdHMgPSBzaG91bGREaXNwbGF5QWxsQnJlYWRjcnVtYnMgPyBbXSA6IFt7IHRleHQ6ICcuLi4nIH1dO1xuICAgIGNvbnN0IHN0YXJ0ID0gYnJlYWRjcnVtYnMuc2xpY2UoMCwgMSk7XG4gICAgY29uc3QgZW5kID0gc2hvdWxkRGlzcGxheUFsbEJyZWFkY3J1bWJzXG4gICAgICA/IGJyZWFkY3J1bWJzLnNsaWNlKDEpXG4gICAgICA6IGJyZWFkY3J1bWJzLnNsaWNlKGJyZWFkY3J1bWJzLmxlbmd0aCAtIHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzICsgMSk7XG5cbiAgICB0aGlzLl9icmVhZGNydW1icyA9IFsuLi5zdGFydCwgLi4uZG90cywgLi4uZW5kXTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEVkaXRhYmxlSGVhZGVyKCkge1xuICAgIHRoaXMuaGVhZGVyQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlRWRpdGFibGVUZXh0LmVtaXQocmVzKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldE1heERpc3BsYXllZEJyZWFkY3J1bWJzKG1heDogbnVtYmVyKSB7XG4gICAgaWYgKG1heCA8IHRoaXMuSU5JVElBTF9ESVNQTEFZRURfQlJFQURDUlVNQlMpIHtcbiAgICAgIHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzID0gdGhpcy5JTklUSUFMX0RJU1BMQVlFRF9CUkVBRENSVU1CUztcbiAgICAgIGNvbnNvbGUuZXJyb3IoYE1pbmltdW0gYnJlYWRjcnVtYnMgbnVtYmVyIGlzICR7dGhpcy5JTklUSUFMX0RJU1BMQVlFRF9CUkVBRENSVU1CU31gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbWF4RGlzcGxheWVkQnJlYWRjcnVtYnMgPSBtYXg7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -17,7 +17,7 @@ import { take } from 'rxjs/operators';
17
17
  import { DatoGridHelper } from '../grid-helper';
18
18
  import { untilDestroyed } from 'ngx-take-until-destroy';
19
19
  import { addClass, removeClass } from '../../internal/helpers';
20
- import { AgGridAngular } from 'ag-grid-angular';
20
+ import { AgGridNg2 } from 'ag-grid-angular';
21
21
  import { DatoGridPaginationComponent } from '../grid-pagination/grid-pagination.component';
22
22
  import { coerceArray } from '@datorama/akita';
23
23
  const valueAccessor = {
@@ -194,8 +194,8 @@ DatoGridComponent.ctorParameters = () => [
194
194
  { type: ChangeDetectorRef }
195
195
  ];
196
196
  __decorate([
197
- ViewChild(AgGridAngular, { static: true }),
198
- __metadata("design:type", AgGridAngular)
197
+ ViewChild(AgGridNg2, { static: true }),
198
+ __metadata("design:type", AgGridNg2)
199
199
  ], DatoGridComponent.prototype, "gridComponent", void 0);
200
200
  __decorate([
201
201
  ViewChild(DatoGridPaginationComponent, { static: true }),
@@ -217,7 +217,7 @@ DatoGridComponent = __decorate([
217
217
  changeDetection: ChangeDetectionStrategy.OnPush,
218
218
  encapsulation: ViewEncapsulation.None,
219
219
  providers: [valueAccessor],
220
- styles: ["@font-face{font-family:agGridClassic;src:url(\"data:application/font-woff;charset=utf-8;base64,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\") format(\"woff\"),url(\"data:application/x-font-ttf;charset=utf-8;base64,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AAAAdAAAADoAAAB1AAAAdQAAAEkAAAB2AAAAdgAAAE4AAAB3AAAAdwAAAD4AAAB4AAAAeAAAAEUAAAB5AAAAeQAAAEsAAAB6AAAAegAAAE0AAPEBAADxAQAAAAEAAPECAADxAgAAAAIAAPEDAADxAwAAAAMAAPEEAADxBAAAAAQAAPEFAADxBQAAAAUAAPEGAADxBgAAAAYAAPEHAADxBwAAAAcAAPEIAADxCAAAAAgAAPEJAADxCQAAAAkAAPEKAADxCgAAAAoAAPELAADxCwAAAAsAAPEMAADxDAAAAAwAAPENAADxDQAAAA0AAPEOAADxDgAAAA4AAPEPAADxDwAAAA8AAPEQAADxEAAAABAAAPERAADxEQAAABEAAPESAADxEgAAABIAAPETAADxEwAAABMAAPEUAADxFAAAABUAAPEVAADxFQAAABYAAPEWAADxFgAAABcAAPEXAADxFwAAABgAAPEYAADxGAAAABkAAPEZAADxGQAAABoAAPEaAADxGgAAABsAAPEbAADxGwAAABwAAPEcAADxHAAAAB0AAPEdAADxHQAAAB4AAPEeAADxHgAAAB8AAPEfAADxHwAAACAAAPEgAADxIAAAACEAAPEhAADxIQAAACIAAPEiAADxIgAAACMAAPEjAADxIwAAACQAAPEkAADxJAAAACUAAPElAADxJQAAACYAAPEmAADxJgAAACcAAPEnAADxJwAAACgAAPEoAADxKAAAACkAAPEpAADxKQAAACoAAPEqAADxKgAAACsAAPErAADxKwAAACwAAPEsAADxLAAAAC0AAPEtAADxLQAAAC4AAPEuAADxLgAAAC8AAPEvAADxLwAAADAAAPEwAADxMAAAADEAAPExAADxMQAAADIAAPEyAADxMgAAADMAAPEzAADxMwAAADEAAPE0AADxNAAAACIAAPE1AADxNQAAAC8AAPE2AADxNgAAADQAAAAAABgAUgBqAIQA0AEUAVQBjAG+AdQCAAJIAmwCjgMUA2YDfgO+BCQEigTmBPwFFgViBaYF+AYQBigG0AcCB1QHcAfCB9AH4ggECFoIeAiUCPYJCgkcCWIJvAnUCf4KDAoaCigKNgpKCtQLXgteC14LXgteC14LXgteC14LXgteC14LXgteC14LXgteC14LXgteC14LXgteC14LXgteAAEAAAAAAzYDawAJ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AHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVAAC2FnZ3JlZ2F0aW9uBmFycm93cwNhc2MGY2FuY2VsBWNoYXJ0EGNoZWNrYm94LWNoZWNrZWQWY2hlY2tib3gtaW5kZXRlcm1pbmF0ZRJjaGVja2JveC11bmNoZWNrZWQMY29sb3ItcGlja2VyBmNvbHVtbgdjb2x1bW5zCmNvbnRyYWN0ZWQEY29weQVjcm9zcwNjdXQEZGF0YQRkZXNjCGV4cGFuZGVkCWV5ZS1zbGFzaAtleWUtc2xhc2gtMQNleWUGZmlsdGVyBWZpcnN0BGdyaXAFZ3JvdXANaW5kZXRlcm1pbmF0ZQRsYXN0BGxlZnQGbGlua2VkB2xvYWRpbmcIbWF4aW1pemUEbWVudQhtaW5pbWl6ZQVtaW51cwRuZXh0BG5vbmULbm90LWFsbG93ZWQFcGFzdGUDcGluBXBpdm90BHBsdXMIcHJldmlvdXMQcmFkaW8tYnV0dG9uLW9mZg9yYWRpby1idXR0b24tb24FcmlnaHQEc2F2ZQpzbWFsbC1kb3duCnNtYWxsLWxlZnQLc21hbGwtcmlnaHQIc21hbGwtdXAEdGljawh1bmxpbmtlZAp1bmxpbmtlZC0xAWEBZwFyAWUBdAFpAW8BbgF3AXMBYwFsAWgBawFiAXgBLQFkAW0BdQFwAXkBZgF6AXYAAAA=\") format(\"truetype\");font-weight:400;font-style:normal}dato-grid{display:block;width:100%;height:100%;overflow:hidden}dato-grid.grid-pagination{padding-bottom:0;display:flex;flex-direction:column}dato-grid.grid-pagination ag-grid-angular{margin-bottom:7px;height:calc(100% - 32px)}.ag-dato-core{width:100%;height:100%}.ag-dato-core .da-grid-icon{display:inline-block;line-height:31px;vertical-align:middle}.ag-dato-core .ag-menu .da-grid-icon svg{vertical-align:middle}.ag-dato-core .ag-header-cell-sortable .ag-sort-none-icon{opacity:0;transition:opacity .2s}.ag-dato-core .ag-header-cell-sortable:hover .ag-sort-none-icon{opacity:1}.ag-dato-core .sort-icon svg{width:14px;height:16px}.ag-dato-core .filter-icon svg{width:13px}.ag-dato-core .menu-icon svg{width:4px;height:14px}.ag-dato-core .menu-auto-size-icon svg,.ag-dato-core .menu-group-icon,.ag-dato-core .menu-pin-icon,.ag-dato-core .menu-un-group-icon{width:16px;height:16px}.ag-dato-core .menu-check-icon svg{width:15px;height:18px}.ag-dato-core .group-contracted-icon,.ag-dato-core .group-expanded-icon{width:7px}.ag-dato-core .group-expanded-icon{transform:rotate(90deg)}"]
220
+ styles: ["dato-grid{display:block;width:100%;height:100%;overflow:hidden}dato-grid.grid-pagination{padding-bottom:0;display:flex;flex-direction:column}dato-grid.grid-pagination ag-grid-angular{margin-bottom:7px;height:calc(100% - 32px)}.ag-dato-core{width:100%;height:100%}.ag-dato-core .da-grid-icon{display:inline-block;line-height:31px;vertical-align:middle}.ag-dato-core .ag-menu .da-grid-icon svg{vertical-align:middle}.ag-dato-core .ag-header-cell-sortable .ag-sort-none-icon{opacity:0;transition:opacity .2s}.ag-dato-core .ag-header-cell-sortable:hover .ag-sort-none-icon{opacity:1}.ag-dato-core .sort-icon svg{width:14px;height:16px}.ag-dato-core .filter-icon svg{width:13px}.ag-dato-core .menu-icon svg{width:4px;height:14px}.ag-dato-core .menu-auto-size-icon svg,.ag-dato-core .menu-group-icon,.ag-dato-core .menu-pin-icon,.ag-dato-core .menu-un-group-icon{width:16px;height:16px}.ag-dato-core .menu-check-icon svg{width:15px;height:18px}.ag-dato-core .group-contracted-icon,.ag-dato-core .group-expanded-icon{width:7px}.ag-dato-core .group-expanded-icon{transform:rotate(90deg)}"]
221
221
  }),
222
222
  __metadata("design:paramtypes", [DatoGridHelper,
223
223
  ElementRef,
@@ -225,4 +225,4 @@ DatoGridComponent = __decorate([
225
225
  ChangeDetectorRef])
226
226
  ], DatoGridComponent);
227
227
  export { DatoGridComponent };
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ncmlkL2dyaWQvZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBWXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE1B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QkFBaUI7R0EzRXJCLGlCQUFpQixDQWtNN0I7U0FsTVksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29sdW1uQXBpLFxuICBHcmlkT3B0aW9ucyxcbiAgR3JpZFJlYWR5RXZlbnQsXG4gIENvbERlZixcbiAgQ29sR3JvdXBEZWYsXG4gIFJvd0RhdGFDaGFuZ2VkRXZlbnQsXG4gIFJvd0RhdGFVcGRhdGVkRXZlbnQsXG4gIFJvd0dyb3VwT3BlbmVkRXZlbnQsXG4gIFJvd05vZGVcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgSWNvblJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaWNvbi1yZWdpc3RyeSc7XG5pbXBvcnQgeyBnZXRHcmlkSWNvbnMgfSBmcm9tICcuL2dyaWQtaWNvbnMnO1xuaW1wb3J0IHsgQmFzZUN1c3RvbUNvbnRyb2wgfSBmcm9tICcuLi8uLi9jdXN0b20tY29udHJvbC9iYXNlLWN1c3RvbS1jb250cm9sJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdG9HcmlkQVBJIH0gZnJvbSAnLi4vZGF0by1ncmlkLWFwaSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGF0b0dyaWRIZWxwZXIgfSBmcm9tICcuLi9ncmlkLWhlbHBlcic7XG5pbXBvcnQgeyB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ25neC10YWtlLXVudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgYWRkQ2xhc3MsIHJlbW92ZUNsYXNzIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvaGVscGVycyc7XG5pbXBvcnQgeyBEYXRvVGFibGVBbGlnbm1lbnQgfSBmcm9tICcuLi9ncmlkLnR5cGVzJztcbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHsgRGF0b0dyaWRQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1wYWdpbmF0aW9uL2dyaWQtcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29lcmNlQXJyYXkgfSBmcm9tICdAZGF0b3JhbWEvYWtpdGEnO1xuXG5jb25zdCB2YWx1ZUFjY2Vzc29yID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0b0dyaWRDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1ncmlkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmlkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFt2YWx1ZUFjY2Vzc29yXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRvR3JpZENvbXBvbmVudCBleHRlbmRzIEJhc2VDdXN0b21Db250cm9sIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG4gIGFwaTogRGF0b0dyaWRBUEk8YW55PjtcbiAgZ3JpZENvbHVtbkFwaTogQ29sdW1uQXBpO1xuICBncmlkT3B0aW9uczogR3JpZE9wdGlvbnM7XG4gIHJvd0RhdGFDaGFuZ2VkID0gbmV3IFN1YmplY3Q8Um93RGF0YUNoYW5nZWRFdmVudCB8IFJvd0RhdGFVcGRhdGVkRXZlbnQ+KCk7XG4gIGhhc1BhZ2luYXRpb24gPSB0cnVlO1xuICBAVmlld0NoaWxkKEFnR3JpZEFuZ3VsYXIsIHsgc3RhdGljOiB0cnVlIH0pIGdyaWRDb21wb25lbnQ6IEFnR3JpZEFuZ3VsYXI7XG4gIEBWaWV3Q2hpbGQoRGF0b0dyaWRQYWdpbmF0aW9uQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwYWdpbmF0aW9uQ29tcG9uZW50OiBEYXRvR3JpZFBhZ2luYXRpb25Db21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgc2V0IG9wdGlvbnMob3B0aW9uczogR3JpZE9wdGlvbnMpIHtcbiAgICBvcHRpb25zLmNvbHVtbkRlZnMgPSB0aGlzLmdyaWRIZWxwZXIubm9ybWFsaXplQ29sdW1ucyhvcHRpb25zLmNvbHVtbkRlZnMpO1xuICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB7XG4gICAgICAuLi50aGlzLmRlZmF1bHRHcmlkT3B0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBkZWZhdWx0Q29sRGVmOiB7XG4gICAgICAgIC4uLnRoaXMuZGVmYXVsdEdyaWRPcHRpb25zLmRlZmF1bHRDb2xEZWYsXG4gICAgICAgIC4uLihvcHRpb25zLmRlZmF1bHRDb2xEZWYgfHwge30pXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbnMuc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbikge1xuICAgICAgdGhpcy5ncmlkT3B0aW9ucy5yb3dDbGFzcyA9ICdzZWxlY3RhYmxlJztcbiAgICB9XG4gICAgLy8gY2hlY2sgaWYgd2UgZ290IGEgcGFnaW5hdGlvblxuICAgIHRoaXMuaGFzUGFnaW5hdGlvbiA9IHRoaXMuZ3JpZE9wdGlvbnMucGFnaW5hdGlvbjtcbiAgICBjb25zdCBjbGFzc0Z1bmMgPSB0aGlzLmhhc1BhZ2luYXRpb24gPyBhZGRDbGFzcyA6IHJlbW92ZUNsYXNzO1xuICAgIGNsYXNzRnVuYyh0aGlzLmhvc3RFbGVtZW50LCAnZ3JpZC1wYWdpbmF0aW9uJyk7XG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMucm93TW9kZWxUeXBlID09PSAnaW5maW5pdGUnIHx8IHRoaXMuZ3JpZE9wdGlvbnMucm93TW9kZWxUeXBlID09PSAnc2VydmVyU2lkZScpIHtcbiAgICAgIHRoaXMuaW5maW5pdGVQYWdpbmF0aW9uID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHsgZGVmYXVsdENvbERlZiB9ID0gdGhpcy5ncmlkT3B0aW9ucztcbiAgICAgIGlmIChkZWZhdWx0Q29sRGVmLmZpbHRlcikge1xuICAgICAgICBkZWZhdWx0Q29sRGVmLmZpbHRlclBhcmFtcyA9IHsgbmV3Um93c0FjdGlvbjogJ2tlZXAnIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgpIGdyaWRSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8R3JpZFJlYWR5RXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSBpY29ucztcbiAgcHJpdmF0ZSBhY3RpdmVNZW51O1xuICBwcml2YXRlIGRlZmF1bHRHcmlkT3B0aW9uczogR3JpZE9wdGlvbnMgPSB7XG4gICAgLyoqIFJlcGxhY2UgdGhlIGJ1aWxkLWluIHBhZ2luYXRpb24gKi9cbiAgICBzdXBwcmVzc1BhZ2luYXRpb25QYW5lbDogdHJ1ZSxcbiAgICBwYWdpbmF0aW9uOiB0cnVlLFxuICAgIGRlZmF1bHRDb2xEZWY6IHtcbiAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgZmlsdGVyOiAnYWdUZXh0Q29sdW1uRmlsdGVyJyxcbiAgICAgIG1lbnVUYWJzOiBbJ2ZpbHRlck1lbnVUYWInXVxuICAgIH0sXG4gICAgcm93SGVpZ2h0OiAzNSxcbiAgICBoZWFkZXJIZWlnaHQ6IDMwLFxuICAgIG9uUm93RGF0YUNoYW5nZWQ6IGV2ZW50ID0+IHtcbiAgICAgIHRoaXMucm93RGF0YUNoYW5nZWQubmV4dChldmVudCk7XG4gICAgfSxcbiAgICBvblJvd0RhdGFVcGRhdGVkOiBldmVudCA9PiB7XG4gICAgICB0aGlzLnJvd0RhdGFDaGFuZ2VkLm5leHQoZXZlbnQpO1xuICAgIH0sXG4gICAgb25TZWxlY3Rpb25DaGFuZ2VkOiBldmVudCA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSB0aGlzLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcbiAgICAgIHRoaXMub25DaGFuZ2Uoc2VsZWN0ZWRSb3dzKTtcbiAgICB9LFxuICAgIHJvd1NlbGVjdGlvbjogJ211bHRpcGxlJyxcbiAgICByb3dEZXNlbGVjdGlvbjogdHJ1ZSxcbiAgICB1blNvcnRJY29uOiB0cnVlLFxuICAgIGFuaW1hdGVSb3dzOiB0cnVlLFxuICAgIHJlbWVtYmVyR3JvdXBTdGF0ZVdoZW5OZXdEYXRhOiB0cnVlXG4gIH07XG4gIGluZmluaXRlUGFnaW5hdGlvbiA9IGZhbHNlO1xuICBpc1Jvd3NDb2xsYXBzZWQgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZ3JpZEhlbHBlcjogRGF0b0dyaWRIZWxwZXIsXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgaWNvblJlZ2lzdHJ5OiBJY29uUmVnaXN0cnksXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hcGkgPSBuZXcgRGF0b0dyaWRBUEkoKTtcbiAgICB0aGlzLmRlZmF1bHRHcmlkT3B0aW9ucy5pY29ucyA9IGdldEdyaWRJY29ucygpO1xuICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB7IC4uLnRoaXMuZGVmYXVsdEdyaWRPcHRpb25zIH07XG4gIH1cblxuICBnZXQgb3B0aW9ucygpOiBHcmlkT3B0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZE9wdGlvbnM7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJvd0RhdGFDaGFuZ2VkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogT24gZ3JpZCByZWFkeVxuICAgKiBAcGFyYW0ge0dyaWRSZWFkeUV2ZW50fSBldmVudFxuICAgKi9cbiAgb25HcmlkUmVhZHkoZXZlbnQ6IEdyaWRSZWFkeUV2ZW50KSB7XG4gICAgLy8gc2V0IGdyaWQgQVBJXG4gICAgdGhpcy5hcGkuZ3JpZEFwaSA9IGV2ZW50LmFwaTtcbiAgICB0aGlzLmdyaWRDb2x1bW5BcGkgPSBldmVudC5jb2x1bW5BcGk7XG4gICAgaWYgKHRoaXMuZ3JpZENvbHVtbkFwaS5nZXRSb3dHcm91cENvbHVtbnMoKS5sZW5ndGggPj0gMSkge1xuICAgICAgdGhpcy5ncmlkQ29tcG9uZW50LnJvd0dyb3VwT3BlbmVkLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZShldmVudCA9PiB0aGlzLnJvd0dyb3VwU3RhdGVDaGFuZ2UoZXZlbnQpKTtcbiAgICAgIHRoaXMucGFnaW5hdGlvbkNvbXBvbmVudC50b2dnbGVSb3dHcm91cC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy50b2dnbGVDb2xsYXBzZVN0YXRlKCkpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5ncmlkUmVhZHkuZW1pdChldmVudCk7XG4gIH1cblxuICBhbGlnblRhYmxlKGFsaWduTW9kZTogRGF0b1RhYmxlQWxpZ25tZW50KSB7XG4gICAgaWYgKGFsaWduTW9kZSA9PT0gRGF0b1RhYmxlQWxpZ25tZW50LkZJVF9DT05UQUlORVIpIHtcbiAgICAgIHRoaXMuZml0VG9Db250YWluZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maXRUb0NvbnRlbnQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYWV0IHRoZSBjb2x1bW5zIGRlZmluaXRpb25zXG4gICAqIEBwYXJhbSB7KENvbERlZiB8IENvbEdyb3VwRGVmKVtdfSBjb2x1bW5EZWZzXG4gICAqL1xuICB1cGRhdGVDb2x1bW5zKGNvbHVtbkRlZnM6IChDb2xEZWYgfCBDb2xHcm91cERlZilbXSkge1xuICAgIHRoaXMuZ3JpZEhlbHBlci51cGRhdGVDb2x1bW5zKHRoaXMuYXBpLmdyaWRBcGksIGNvbHVtbkRlZnMpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHJvd3MgPSBvYmogPyBjb2VyY2VBcnJheShvYmopIDogW107XG5cbiAgICBpZiAodGhpcy5hcGkucmVhZHkpIHtcbiAgICAgIHRoaXMuYXBpLnNldFNlbGVjdGVkUm93cyhyb3dzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gd2FpdCBmb3IgdGhlIGdyaWQgdG8gYmUgcmVhZHkgYW5kIHRoZSBkYXRhIGhhcyBiZWVuIHNldFxuICAgICAgY29tYmluZUxhdGVzdCh0aGlzLnJvd0RhdGFDaGFuZ2VkLCB0aGlzLmdyaWRSZWFkeSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hcGkuc2V0U2VsZWN0ZWRSb3dzKHJvd3MpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY2FsbCBhZy1ncmlkJ3Mgc2l6ZSBhbGwgY29sdW1ucyB0byBmaXQgdG8gY29udGFpbmVyXG4gICAqL1xuICBwcml2YXRlIGZpdFRvQ29udGFpbmVyKCk6IHZvaWQge1xuICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsIGFnLWdyaWQncyBzaXplIGFsbCBjb2x1bW5zIHRvIGZpdCB0byBjb250ZW50XG4gICAqL1xuICBwcml2YXRlIGZpdFRvQ29udGVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmdyaWRPcHRpb25zLmNvbHVtbkFwaS5hdXRvU2l6ZUFsbENvbHVtbnMoKTtcbiAgICBjb25zdCB7IHdpZHRoIH0gPSB0aGlzLmhvc3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGFnQm9keSA9IHRoaXMuaG9zdEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFnLWJvZHktY29udGFpbmVyJyk7XG4gICAgY29uc3QgYm9keVdpZHRoOiBudW1iZXIgPSBhZ0JvZHkgPyBhZ0JvZHkuY2xpZW50V2lkdGggOiAwO1xuICAgIGlmICh3aWR0aCA+IGJvZHlXaWR0aCkge1xuICAgICAgdGhpcy5maXRUb0NvbnRhaW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcm93R3JvdXBTdGF0ZUNoYW5nZShldmVudDogUm93R3JvdXBPcGVuZWRFdmVudCkge1xuICAgIGlmIChldmVudC5ub2RlLnJvd0dyb3VwSW5kZXggPT09IDApIHtcbiAgICAgIGxldCBjb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgZXZlbnQuYXBpLmZvckVhY2hOb2RlKChub2RlOiBSb3dOb2RlKSA9PiB7XG4gICAgICAgIGlmIChub2RlLnJvd0dyb3VwSW5kZXggPT09IDAgJiYgbm9kZS5leHBhbmRlZCkge1xuICAgICAgICAgIGNvbGxhcHNlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaXNSb3dzQ29sbGFwc2VkID0gY29sbGFwc2VkO1xuICAgICAgdGhpcy5wYWdpbmF0aW9uQ29tcG9uZW50LmluaXRQYWdpbmF0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGNvbGxhcHNlIGFuZCBleHBvYW5kIGFsbCB0aGUgZ3JvdXBlZCByb3dzIGluIGNyb3NzIHRhYiB0YWJsZVxuICAgKiB3aGVuIHRyaWdnZXJlZCBmcm9tIHRoZSBuYXZpZ2F0aW9uLWNvbnRyb2wgcGFuZWxcbiAgICovXG4gIHByaXZhdGUgdG9nZ2xlQ29sbGFwc2VTdGF0ZSgpIHtcbiAgICBpZiAodGhpcy5pc1Jvd3NDb2xsYXBzZWQpIHtcbiAgICAgIHRoaXMuYXBpLmdyaWRBcGkuZXhwYW5kQWxsKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXBpLmdyaWRBcGkuY29sbGFwc2VBbGwoKTtcbiAgICB9XG4gICAgdGhpcy5pc1Jvd3NDb2xsYXBzZWQgPSAhdGhpcy5pc1Jvd3NDb2xsYXBzZWQ7XG4gICAgdGhpcy5wYWdpbmF0aW9uQ29tcG9uZW50LmluaXRQYWdpbmF0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBob3N0RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGhpZGVNZW51SWNvbigpIHtcbiAgICByZW1vdmVDbGFzcyh0aGlzLmFjdGl2ZU1lbnUsICdtZW51LWFjdGl2ZScpO1xuICAgIHRoaXMuYWN0aXZlTWVudSA9IG51bGw7XG4gIH1cbn1cbiJdfQ==
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ncmlkL2dyaWQvZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBWXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE1B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QkFBaUI7R0EzRXJCLGlCQUFpQixDQWtNN0I7U0FsTVksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29sdW1uQXBpLFxuICBHcmlkT3B0aW9ucyxcbiAgR3JpZFJlYWR5RXZlbnQsXG4gIENvbERlZixcbiAgQ29sR3JvdXBEZWYsXG4gIFJvd0RhdGFDaGFuZ2VkRXZlbnQsXG4gIFJvd0RhdGFVcGRhdGVkRXZlbnQsXG4gIFJvd0dyb3VwT3BlbmVkRXZlbnQsXG4gIFJvd05vZGVcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgSWNvblJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaWNvbi1yZWdpc3RyeSc7XG5pbXBvcnQgeyBnZXRHcmlkSWNvbnMgfSBmcm9tICcuL2dyaWQtaWNvbnMnO1xuaW1wb3J0IHsgQmFzZUN1c3RvbUNvbnRyb2wgfSBmcm9tICcuLi8uLi9jdXN0b20tY29udHJvbC9iYXNlLWN1c3RvbS1jb250cm9sJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdG9HcmlkQVBJIH0gZnJvbSAnLi4vZGF0by1ncmlkLWFwaSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGF0b0dyaWRIZWxwZXIgfSBmcm9tICcuLi9ncmlkLWhlbHBlcic7XG5pbXBvcnQgeyB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ25neC10YWtlLXVudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgYWRkQ2xhc3MsIHJlbW92ZUNsYXNzIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvaGVscGVycyc7XG5pbXBvcnQgeyBEYXRvVGFibGVBbGlnbm1lbnQgfSBmcm9tICcuLi9ncmlkLnR5cGVzJztcbmltcG9ydCB7IEFnR3JpZE5nMiB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQgeyBEYXRvR3JpZFBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9ncmlkLXBhZ2luYXRpb24vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheSB9IGZyb20gJ0BkYXRvcmFtYS9ha2l0YSc7XG5cbmNvbnN0IHZhbHVlQWNjZXNzb3IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRvR3JpZENvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLWdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyaWQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW3ZhbHVlQWNjZXNzb3JdXG59KVxuZXhwb3J0IGNsYXNzIERhdG9HcmlkQ29tcG9uZW50IGV4dGVuZHMgQmFzZUN1c3RvbUNvbnRyb2wgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95IHtcbiAgYXBpOiBEYXRvR3JpZEFQSTxhbnk+O1xuICBncmlkQ29sdW1uQXBpOiBDb2x1bW5BcGk7XG4gIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcbiAgcm93RGF0YUNoYW5nZWQgPSBuZXcgU3ViamVjdDxSb3dEYXRhQ2hhbmdlZEV2ZW50IHwgUm93RGF0YVVwZGF0ZWRFdmVudD4oKTtcbiAgaGFzUGFnaW5hdGlvbiA9IHRydWU7XG4gIEBWaWV3Q2hpbGQoQWdHcmlkTmcyLCB7IHN0YXRpYzogdHJ1ZSB9KSBncmlkQ29tcG9uZW50OiBBZ0dyaWROZzI7XG4gIEBWaWV3Q2hpbGQoRGF0b0dyaWRQYWdpbmF0aW9uQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwYWdpbmF0aW9uQ29tcG9uZW50OiBEYXRvR3JpZFBhZ2luYXRpb25Db21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgc2V0IG9wdGlvbnMob3B0aW9uczogR3JpZE9wdGlvbnMpIHtcbiAgICBvcHRpb25zLmNvbHVtbkRlZnMgPSB0aGlzLmdyaWRIZWxwZXIubm9ybWFsaXplQ29sdW1ucyhvcHRpb25zLmNvbHVtbkRlZnMpO1xuICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB7XG4gICAgICAuLi50aGlzLmRlZmF1bHRHcmlkT3B0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBkZWZhdWx0Q29sRGVmOiB7XG4gICAgICAgIC4uLnRoaXMuZGVmYXVsdEdyaWRPcHRpb25zLmRlZmF1bHRDb2xEZWYsXG4gICAgICAgIC4uLihvcHRpb25zLmRlZmF1bHRDb2xEZWYgfHwge30pXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbnMuc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbikge1xuICAgICAgdGhpcy5ncmlkT3B0aW9ucy5yb3dDbGFzcyA9ICdzZWxlY3RhYmxlJztcbiAgICB9XG4gICAgLy8gY2hlY2sgaWYgd2UgZ290IGEgcGFnaW5hdGlvblxuICAgIHRoaXMuaGFzUGFnaW5hdGlvbiA9IHRoaXMuZ3JpZE9wdGlvbnMucGFnaW5hdGlvbjtcbiAgICBjb25zdCBjbGFzc0Z1bmMgPSB0aGlzLmhhc1BhZ2luYXRpb24gPyBhZGRDbGFzcyA6IHJlbW92ZUNsYXNzO1xuICAgIGNsYXNzRnVuYyh0aGlzLmhvc3RFbGVtZW50LCAnZ3JpZC1wYWdpbmF0aW9uJyk7XG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMucm93TW9kZWxUeXBlID09PSAnaW5maW5pdGUnIHx8IHRoaXMuZ3JpZE9wdGlvbnMucm93TW9kZWxUeXBlID09PSAnc2VydmVyU2lkZScpIHtcbiAgICAgIHRoaXMuaW5maW5pdGVQYWdpbmF0aW9uID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHsgZGVmYXVsdENvbERlZiB9ID0gdGhpcy5ncmlkT3B0aW9ucztcbiAgICAgIGlmIChkZWZhdWx0Q29sRGVmLmZpbHRlcikge1xuICAgICAgICBkZWZhdWx0Q29sRGVmLmZpbHRlclBhcmFtcyA9IHsgbmV3Um93c0FjdGlvbjogJ2tlZXAnIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgpIGdyaWRSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8R3JpZFJlYWR5RXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSBpY29ucztcbiAgcHJpdmF0ZSBhY3RpdmVNZW51O1xuICBwcml2YXRlIGRlZmF1bHRHcmlkT3B0aW9uczogR3JpZE9wdGlvbnMgPSB7XG4gICAgLyoqIFJlcGxhY2UgdGhlIGJ1aWxkLWluIHBhZ2luYXRpb24gKi9cbiAgICBzdXBwcmVzc1BhZ2luYXRpb25QYW5lbDogdHJ1ZSxcbiAgICBwYWdpbmF0aW9uOiB0cnVlLFxuICAgIGRlZmF1bHRDb2xEZWY6IHtcbiAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgZmlsdGVyOiAnYWdUZXh0Q29sdW1uRmlsdGVyJyxcbiAgICAgIG1lbnVUYWJzOiBbJ2ZpbHRlck1lbnVUYWInXVxuICAgIH0sXG4gICAgcm93SGVpZ2h0OiAzNSxcbiAgICBoZWFkZXJIZWlnaHQ6IDMwLFxuICAgIG9uUm93RGF0YUNoYW5nZWQ6IGV2ZW50ID0+IHtcbiAgICAgIHRoaXMucm93RGF0YUNoYW5nZWQubmV4dChldmVudCk7XG4gICAgfSxcbiAgICBvblJvd0RhdGFVcGRhdGVkOiBldmVudCA9PiB7XG4gICAgICB0aGlzLnJvd0RhdGFDaGFuZ2VkLm5leHQoZXZlbnQpO1xuICAgIH0sXG4gICAgb25TZWxlY3Rpb25DaGFuZ2VkOiBldmVudCA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSB0aGlzLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcbiAgICAgIHRoaXMub25DaGFuZ2Uoc2VsZWN0ZWRSb3dzKTtcbiAgICB9LFxuICAgIHJvd1NlbGVjdGlvbjogJ211bHRpcGxlJyxcbiAgICByb3dEZXNlbGVjdGlvbjogdHJ1ZSxcbiAgICB1blNvcnRJY29uOiB0cnVlLFxuICAgIGFuaW1hdGVSb3dzOiB0cnVlLFxuICAgIHJlbWVtYmVyR3JvdXBTdGF0ZVdoZW5OZXdEYXRhOiB0cnVlXG4gIH07XG4gIGluZmluaXRlUGFnaW5hdGlvbiA9IGZhbHNlO1xuICBpc1Jvd3NDb2xsYXBzZWQgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZ3JpZEhlbHBlcjogRGF0b0dyaWRIZWxwZXIsXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgaWNvblJlZ2lzdHJ5OiBJY29uUmVnaXN0cnksXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hcGkgPSBuZXcgRGF0b0dyaWRBUEkoKTtcbiAgICB0aGlzLmRlZmF1bHRHcmlkT3B0aW9ucy5pY29ucyA9IGdldEdyaWRJY29ucygpO1xuICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB7IC4uLnRoaXMuZGVmYXVsdEdyaWRPcHRpb25zIH07XG4gIH1cblxuICBnZXQgb3B0aW9ucygpOiBHcmlkT3B0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZE9wdGlvbnM7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJvd0RhdGFDaGFuZ2VkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogT24gZ3JpZCByZWFkeVxuICAgKiBAcGFyYW0ge0dyaWRSZWFkeUV2ZW50fSBldmVudFxuICAgKi9cbiAgb25HcmlkUmVhZHkoZXZlbnQ6IEdyaWRSZWFkeUV2ZW50KSB7XG4gICAgLy8gc2V0IGdyaWQgQVBJXG4gICAgdGhpcy5hcGkuZ3JpZEFwaSA9IGV2ZW50LmFwaTtcbiAgICB0aGlzLmdyaWRDb2x1bW5BcGkgPSBldmVudC5jb2x1bW5BcGk7XG4gICAgaWYgKHRoaXMuZ3JpZENvbHVtbkFwaS5nZXRSb3dHcm91cENvbHVtbnMoKS5sZW5ndGggPj0gMSkge1xuICAgICAgdGhpcy5ncmlkQ29tcG9uZW50LnJvd0dyb3VwT3BlbmVkLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZShldmVudCA9PiB0aGlzLnJvd0dyb3VwU3RhdGVDaGFuZ2UoZXZlbnQpKTtcbiAgICAgIHRoaXMucGFnaW5hdGlvbkNvbXBvbmVudC50b2dnbGVSb3dHcm91cC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy50b2dnbGVDb2xsYXBzZVN0YXRlKCkpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5ncmlkUmVhZHkuZW1pdChldmVudCk7XG4gIH1cblxuICBhbGlnblRhYmxlKGFsaWduTW9kZTogRGF0b1RhYmxlQWxpZ25tZW50KSB7XG4gICAgaWYgKGFsaWduTW9kZSA9PT0gRGF0b1RhYmxlQWxpZ25tZW50LkZJVF9DT05UQUlORVIpIHtcbiAgICAgIHRoaXMuZml0VG9Db250YWluZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maXRUb0NvbnRlbnQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYWV0IHRoZSBjb2x1bW5zIGRlZmluaXRpb25zXG4gICAqIEBwYXJhbSB7KENvbERlZiB8IENvbEdyb3VwRGVmKVtdfSBjb2x1bW5EZWZzXG4gICAqL1xuICB1cGRhdGVDb2x1bW5zKGNvbHVtbkRlZnM6IChDb2xEZWYgfCBDb2xHcm91cERlZilbXSkge1xuICAgIHRoaXMuZ3JpZEhlbHBlci51cGRhdGVDb2x1bW5zKHRoaXMuYXBpLmdyaWRBcGksIGNvbHVtbkRlZnMpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHJvd3MgPSBvYmogPyBjb2VyY2VBcnJheShvYmopIDogW107XG5cbiAgICBpZiAodGhpcy5hcGkucmVhZHkpIHtcbiAgICAgIHRoaXMuYXBpLnNldFNlbGVjdGVkUm93cyhyb3dzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gd2FpdCBmb3IgdGhlIGdyaWQgdG8gYmUgcmVhZHkgYW5kIHRoZSBkYXRhIGhhcyBiZWVuIHNldFxuICAgICAgY29tYmluZUxhdGVzdCh0aGlzLnJvd0RhdGFDaGFuZ2VkLCB0aGlzLmdyaWRSZWFkeSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hcGkuc2V0U2VsZWN0ZWRSb3dzKHJvd3MpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY2FsbCBhZy1ncmlkJ3Mgc2l6ZSBhbGwgY29sdW1ucyB0byBmaXQgdG8gY29udGFpbmVyXG4gICAqL1xuICBwcml2YXRlIGZpdFRvQ29udGFpbmVyKCk6IHZvaWQge1xuICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsIGFnLWdyaWQncyBzaXplIGFsbCBjb2x1bW5zIHRvIGZpdCB0byBjb250ZW50XG4gICAqL1xuICBwcml2YXRlIGZpdFRvQ29udGVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmdyaWRPcHRpb25zLmNvbHVtbkFwaS5hdXRvU2l6ZUFsbENvbHVtbnMoKTtcbiAgICBjb25zdCB7IHdpZHRoIH0gPSB0aGlzLmhvc3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGFnQm9keSA9IHRoaXMuaG9zdEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFnLWJvZHktY29udGFpbmVyJyk7XG4gICAgY29uc3QgYm9keVdpZHRoOiBudW1iZXIgPSBhZ0JvZHkgPyBhZ0JvZHkuY2xpZW50V2lkdGggOiAwO1xuICAgIGlmICh3aWR0aCA+IGJvZHlXaWR0aCkge1xuICAgICAgdGhpcy5maXRUb0NvbnRhaW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcm93R3JvdXBTdGF0ZUNoYW5nZShldmVudDogUm93R3JvdXBPcGVuZWRFdmVudCkge1xuICAgIGlmIChldmVudC5ub2RlLnJvd0dyb3VwSW5kZXggPT09IDApIHtcbiAgICAgIGxldCBjb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgZXZlbnQuYXBpLmZvckVhY2hOb2RlKChub2RlOiBSb3dOb2RlKSA9PiB7XG4gICAgICAgIGlmIChub2RlLnJvd0dyb3VwSW5kZXggPT09IDAgJiYgbm9kZS5leHBhbmRlZCkge1xuICAgICAgICAgIGNvbGxhcHNlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaXNSb3dzQ29sbGFwc2VkID0gY29sbGFwc2VkO1xuICAgICAgdGhpcy5wYWdpbmF0aW9uQ29tcG9uZW50LmluaXRQYWdpbmF0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGNvbGxhcHNlIGFuZCBleHBvYW5kIGFsbCB0aGUgZ3JvdXBlZCByb3dzIGluIGNyb3NzIHRhYiB0YWJsZVxuICAgKiB3aGVuIHRyaWdnZXJlZCBmcm9tIHRoZSBuYXZpZ2F0aW9uLWNvbnRyb2wgcGFuZWxcbiAgICovXG4gIHByaXZhdGUgdG9nZ2xlQ29sbGFwc2VTdGF0ZSgpIHtcbiAgICBpZiAodGhpcy5pc1Jvd3NDb2xsYXBzZWQpIHtcbiAgICAgIHRoaXMuYXBpLmdyaWRBcGkuZXhwYW5kQWxsKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXBpLmdyaWRBcGkuY29sbGFwc2VBbGwoKTtcbiAgICB9XG4gICAgdGhpcy5pc1Jvd3NDb2xsYXBzZWQgPSAhdGhpcy5pc1Jvd3NDb2xsYXBzZWQ7XG4gICAgdGhpcy5wYWdpbmF0aW9uQ29tcG9uZW50LmluaXRQYWdpbmF0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBob3N0RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGhpZGVNZW51SWNvbigpIHtcbiAgICByZW1vdmVDbGFzcyh0aGlzLmFjdGl2ZU1lbnUsICdtZW51LWFjdGl2ZScpO1xuICAgIHRoaXMuYWN0aXZlTWVudSA9IG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import { __decorate, __metadata } from "tslib";
9
9
  import { ChangeDetectionStrategy, Component, ElementRef, ViewChild, ViewEncapsulation } from '@angular/core';
10
- import { AgGridAngular } from 'ag-grid-angular';
10
+ import { AgGridNg2 } from 'ag-grid-angular';
11
11
  import { DatoGridControllerComponent } from '../grid-controller/grid-controller.component';
12
12
  import { query } from '../../internal/helpers';
13
13
  let DatoGridV2Component = class DatoGridV2Component {
@@ -16,10 +16,8 @@ let DatoGridV2Component = class DatoGridV2Component {
16
16
  this.host = host;
17
17
  }
18
18
  set grid(agGrid) {
19
- if (agGrid) {
20
- const agGridEl = query('ag-grid-angular', this.host.nativeElement);
21
- this.controller.initializeGrid(agGrid, agGridEl);
22
- }
19
+ const agGridEl = query('ag-grid-angular', this.host.nativeElement);
20
+ this.controller._initializeGrid(agGrid, agGridEl);
23
21
  }
24
22
  get gridOptions() {
25
23
  return this.controller ? this.controller.gridOptions : null;
@@ -39,9 +37,9 @@ DatoGridV2Component.ctorParameters = () => [
39
37
  { type: ElementRef }
40
38
  ];
41
39
  __decorate([
42
- ViewChild(AgGridAngular, { static: false }),
43
- __metadata("design:type", AgGridAngular),
44
- __metadata("design:paramtypes", [AgGridAngular])
40
+ ViewChild(AgGridNg2, { static: true }),
41
+ __metadata("design:type", AgGridNg2),
42
+ __metadata("design:paramtypes", [AgGridNg2])
45
43
  ], DatoGridV2Component.prototype, "grid", null);
46
44
  DatoGridV2Component = __decorate([
47
45
  Component({
@@ -49,9 +47,9 @@ DatoGridV2Component = __decorate([
49
47
  template: "<ag-grid-angular data-auto-id=\"grid\" class=\"dato-grid ag-theme-material\" [class.has-background]=\"enableBackground\" [class.enable-v2_1]=\"enableV2_1\"\n [class.with-multi-selection-col]=\"gridOptions?.showMultiSelectionCheckboxes\" [class.pivot-style]=\"isPivotStyle\">\n</ag-grid-angular>\n<dato-grid-pagination-v2 [class.has-background]=\"enableBackground\"></dato-grid-pagination-v2>\n",
50
48
  changeDetection: ChangeDetectionStrategy.OnPush,
51
49
  encapsulation: ViewEncapsulation.None,
52
- styles: ["dato-grid-v2{flex-grow:1;display:flex;flex-direction:column;position:relative}dato-grid-v2 .dato-grid,dato-grid-v2 dato-grid-pagination-v2{position:absolute;left:0;right:0;bottom:0}dato-grid-v2 .dato-grid{top:0;bottom:50px}dato-grid-v2 .grid-hover-actions{position:absolute;z-index:2;transition:opacity .2s ease-in-out}dato-grid-v2 .ag-row-drag{width:initial!important;min-width:auto!important}dato-grid-v2 .da-grid-icon{display:inline-block;line-height:31px;vertical-align:middle;width:initial;height:initial}dato-grid-v2 .da-grid-icon.drag{width:14px;height:14px;margin-right:6px;opacity:0;transition:opacity .3s;transform:translateY(-50%)}dato-grid-v2 .da-grid-icon.folder{width:18px;height:35px;margin:0 8px}dato-grid-v2 .ag-row.ag-row-hover .da-grid-icon.drag{opacity:1}dato-grid-v2 ag-grid-angular.tree .ag-group-contracted,dato-grid-v2 ag-grid-angular.tree .ag-group-expanded{display:inline-block;width:18px;text-align:center}dato-grid-v2 ag-grid-angular.tree .ag-group-checkbox{display:none}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-empty-folder .folder{margin-left:26px}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-1 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 1)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-1{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-2 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 2)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-2{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-3 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 3)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-3{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-4 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 4)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-4{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row div[col-id=ag-Grid-AutoColumn]{padding-left:0}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell{display:flex;align-items:center}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell .ag-group-value>span{display:inline-block;vertical-align:middle}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell .initials{border-radius:50%;padding:4px;margin-right:8px;margin-left:20px;width:28px;height:28px;display:inline-block;text-align:center}dato-grid-v2 ag-grid-angular.tree .ag-row-group-leaf-indent{margin-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-selection-checkbox .ag-icon-checkbox-indeterminate:before{text-align:center;content:'-';display:inline-block;position:absolute;top:0;left:0;right:0;bottom:0;line-height:.5;color:#fff}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell{line-height:33px}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell.dato-editable-cell{line-height:29px}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell.ag-cell-inline-editing{height:35px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell{line-height:42px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell.dato-editable-cell{line-height:38px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell.ag-cell-inline-editing{height:44px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell{line-height:48px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell.dato-editable-cell{line-height:44px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell.ag-cell-inline-editing{height:50px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell{line-height:57px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell.dato-editable-cell{line-height:53px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell.ag-cell-inline-editing{height:59px}dato-grid-v2 ag-grid-angular .ag-cell.checkbox-selection-cell{display:flex;padding-right:0}dato-grid-v2 .ag-menu .da-grid-icon svg{vertical-align:middle}dato-grid-v2 .ag-header-cell-sortable .ag-sort-none-icon{opacity:0;transition:opacity .2s}dato-grid-v2 .ag-header-cell-sortable:hover .ag-sort-none-icon{opacity:1}dato-grid-v2 .group-contracted-icon,dato-grid-v2 .group-expanded-icon{width:7px}dato-grid-v2 .group-expanded-icon{transform:rotate(90deg)}dato-grid-v2 .dato-grid .ag-cell{border-top:0;border-bottom:0}dato-grid-v2 .ag-overlay-wrapper ng-component{display:flex}.ag-dnd-ghost{min-width:100px;border:none;display:flex;justify-content:flex-start;align-content:center;align-items:center;cursor:-webkit-grabbing;cursor:grabbing;z-index:10000000}.ag-dnd-ghost .da-grid-icon.column-move-hide svg{height:18px;width:18px}.ag-dnd-ghost .da-grid-icon.column-move svg,.ag-dnd-ghost .da-grid-icon.column-move-pin svg{height:16px;width:16px}"]
50
+ styles: ["dato-grid-v2{flex-grow:1;display:flex;flex-direction:column;position:relative}dato-grid-v2 .dato-grid,dato-grid-v2 dato-grid-pagination-v2{position:absolute;left:0;right:0;bottom:0}dato-grid-v2 .dato-grid{top:0;bottom:50px}dato-grid-v2 .grid-hover-actions{position:absolute;z-index:2;transition:opacity .2s ease-in-out}dato-grid-v2 .ag-row-drag{width:initial!important}dato-grid-v2 .da-grid-icon{display:inline-block;line-height:31px;vertical-align:middle;width:initial;height:initial}dato-grid-v2 .da-grid-icon.drag{width:14px;height:14px;margin-right:6px;opacity:0;transition:opacity .3s;transform:translateY(-50%)}dato-grid-v2 .da-grid-icon.folder{width:18px;height:35px;margin:0 8px}dato-grid-v2 .ag-row.ag-row-hover .da-grid-icon.drag{opacity:1}dato-grid-v2 ag-grid-angular.tree .ag-group-contracted,dato-grid-v2 ag-grid-angular.tree .ag-group-expanded{display:inline-block;width:18px;text-align:center}dato-grid-v2 ag-grid-angular.tree .ag-group-checkbox{display:none}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-empty-folder .folder{margin-left:26px}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-1 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 1)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-1{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-2 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 2)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-2{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-3 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 3)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-3{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-4 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 4)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-4{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row div[col-id=ag-Grid-AutoColumn]{padding-left:0}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell{display:flex;align-items:center}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell .ag-group-value>span{display:inline-block;vertical-align:middle}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell .initials{border-radius:50%;padding:4px;margin-right:8px;margin-left:20px;width:28px;height:28px;display:inline-block;text-align:center}dato-grid-v2 ag-grid-angular.tree .ag-row-group-leaf-indent{margin-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-selection-checkbox .ag-icon-checkbox-indeterminate:before{text-align:center;content:'-';display:inline-block;position:absolute;top:0;left:0;right:0;bottom:0;line-height:.5;color:#fff}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell{line-height:33px}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell.dato-editable-cell{line-height:29px}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell.ag-cell-inline-editing{height:35px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell{line-height:42px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell.dato-editable-cell{line-height:38px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell.ag-cell-inline-editing{height:44px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell{line-height:48px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell.dato-editable-cell{line-height:44px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell.ag-cell-inline-editing{height:50px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell{line-height:57px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell.dato-editable-cell{line-height:53px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell.ag-cell-inline-editing{height:59px}dato-grid-v2 ag-grid-angular .ag-cell.checkbox-selection-cell{display:flex}dato-grid-v2 .ag-menu .da-grid-icon svg{vertical-align:middle}dato-grid-v2 .ag-header-cell-sortable .ag-sort-none-icon{opacity:0;transition:opacity .2s}dato-grid-v2 .ag-header-cell-sortable:hover .ag-sort-none-icon{opacity:1}dato-grid-v2 .group-contracted-icon,dato-grid-v2 .group-expanded-icon{width:7px}dato-grid-v2 .group-expanded-icon{transform:rotate(90deg)}dato-grid-v2 .dato-grid .ag-cell{border-top:0;border-bottom:0}dato-grid-v2 .ag-overlay-wrapper ng-component{display:flex}.ag-dnd-ghost{min-width:100px;border:none;display:flex;justify-content:flex-start;align-content:center;align-items:center;cursor:-webkit-grabbing;cursor:grabbing;z-index:10000000}.ag-dnd-ghost .da-grid-icon.column-move-hide svg{height:18px;width:18px}.ag-dnd-ghost .da-grid-icon.column-move svg,.ag-dnd-ghost .da-grid-icon.column-move-pin svg{height:16px;width:16px}"]
53
51
  }),
54
52
  __metadata("design:paramtypes", [DatoGridControllerComponent, ElementRef])
55
53
  ], DatoGridV2Component);
56
54
  export { DatoGridV2Component };
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ncmlkLXYyL2dyaWQvZ3JpZC12Mi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBVS9DLElBQWEsbUJBQW1CLEdBQWhDLE1BQWEsbUJBQW1CO0lBd0I5QixZQUFvQixVQUF1QyxFQUFVLElBQWdCO1FBQWpFLGVBQVUsR0FBVixVQUFVLENBQTZCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUFHLENBQUM7SUF2QjVDLElBQUksSUFBSSxDQUFDLE1BQXFCO1FBQ3pFLElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdEUsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNoRSxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUM7SUFDaEUsQ0FBQztDQUdGLENBQUE7O1lBRGlDLDJCQUEyQjtZQUFnQixVQUFVOztBQXZCeEM7SUFBNUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQzs4QkFBa0IsYUFBYTtxQ0FBYixhQUFhOytDQUsxRTtBQU5VLG1CQUFtQjtJQVAvQixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsY0FBYztRQUN4QixxYUFBdUM7UUFFdkMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07UUFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O0tBQ3RDLENBQUM7cUNBeUJnQywyQkFBMkIsRUFBZ0IsVUFBVTtHQXhCMUUsbUJBQW1CLENBeUIvQjtTQXpCWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBZ0dyaWRBbmd1bGFyIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7IERhdG9HcmlkQ29udHJvbGxlckNvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtY29udHJvbGxlci9ncmlkLWNvbnRyb2xsZXIuY29tcG9uZW50JztcbmltcG9ydCB7IHF1ZXJ5IH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvaGVscGVycyc7XG5pbXBvcnQgeyBEYXRvR3JpZE9wdGlvbnMgfSBmcm9tICcuL2dyaWQtdjIudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLWdyaWQtdjInLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC12Mi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyaWQtdjIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRGF0b0dyaWRWMkNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoQWdHcmlkQW5ndWxhciwgeyBzdGF0aWM6IGZhbHNlIH0pIHNldCBncmlkKGFnR3JpZDogQWdHcmlkQW5ndWxhcikge1xuICAgIGlmIChhZ0dyaWQpIHtcbiAgICAgIGNvbnN0IGFnR3JpZEVsID0gcXVlcnkoJ2FnLWdyaWQtYW5ndWxhcicsIHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50KTtcbiAgICAgIHRoaXMuY29udHJvbGxlci5pbml0aWFsaXplR3JpZChhZ0dyaWQsIGFnR3JpZEVsKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZ3JpZE9wdGlvbnMoKTogRGF0b0dyaWRPcHRpb25zIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyID8gdGhpcy5jb250cm9sbGVyLmdyaWRPcHRpb25zIDogbnVsbDtcbiAgfVxuXG4gIGdldCBlbmFibGVCYWNrZ3JvdW5kKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zID8gdGhpcy5ncmlkT3B0aW9ucy5lbmFibGVCYWNrZ3JvdW5kIDogZmFsc2U7XG4gIH1cblxuICBnZXQgZW5hYmxlVjJfMSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9ucyA/IHRoaXMuZ3JpZE9wdGlvbnMuZW5hYmxlVjJfMSA6IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGlzUGl2b3RTdHlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9ucyAmJiB0aGlzLmdyaWRPcHRpb25zLnVzZVBpdm90R3JpZFN0eWxlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250cm9sbGVyOiBEYXRvR3JpZENvbnRyb2xsZXJDb21wb25lbnQsIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZikge31cbn1cbiJdfQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ncmlkLXYyL2dyaWQvZ3JpZC12Mi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBVS9DLElBQWEsbUJBQW1CLEdBQWhDLE1BQWEsbUJBQW1CO0lBc0I5QixZQUFvQixVQUF1QyxFQUFVLElBQWdCO1FBQWpFLGVBQVUsR0FBVixVQUFVLENBQTZCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUFHLENBQUM7SUFyQmpELElBQUksSUFBSSxDQUFDLE1BQWlCO1FBQ2hFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztJQUNoRSxDQUFDO0NBR0YsQ0FBQTs7WUFEaUMsMkJBQTJCO1lBQWdCLFVBQVU7O0FBckI3QztJQUF2QyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDOzhCQUFrQixTQUFTO3FDQUFULFNBQVM7K0NBR2pFO0FBSlUsbUJBQW1CO0lBUC9CLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxjQUFjO1FBQ3hCLHFhQUF1QztRQUV2QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtRQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7S0FDdEMsQ0FBQztxQ0F1QmdDLDJCQUEyQixFQUFnQixVQUFVO0dBdEIxRSxtQkFBbUIsQ0F1Qi9CO1NBdkJZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFnR3JpZE5nMiB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQgeyBEYXRvR3JpZENvbnRyb2xsZXJDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWNvbnRyb2xsZXIvZ3JpZC1jb250cm9sbGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBxdWVyeSB9IGZyb20gJy4uLy4uL2ludGVybmFsL2hlbHBlcnMnO1xuaW1wb3J0IHsgRGF0b0dyaWRPcHRpb25zIH0gZnJvbSAnLi9ncmlkLXYyLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1ncmlkLXYyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtdjIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmlkLXYyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIERhdG9HcmlkVjJDb21wb25lbnQge1xuICBAVmlld0NoaWxkKEFnR3JpZE5nMiwgeyBzdGF0aWM6IHRydWUgfSkgc2V0IGdyaWQoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICBjb25zdCBhZ0dyaWRFbCA9IHF1ZXJ5KCdhZy1ncmlkLWFuZ3VsYXInLCB0aGlzLmhvc3QubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5jb250cm9sbGVyLl9pbml0aWFsaXplR3JpZChhZ0dyaWQsIGFnR3JpZEVsKTtcbiAgfVxuXG4gIGdldCBncmlkT3B0aW9ucygpOiBEYXRvR3JpZE9wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIgPyB0aGlzLmNvbnRyb2xsZXIuZ3JpZE9wdGlvbnMgOiBudWxsO1xuICB9XG5cbiAgZ2V0IGVuYWJsZUJhY2tncm91bmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZE9wdGlvbnMgPyB0aGlzLmdyaWRPcHRpb25zLmVuYWJsZUJhY2tncm91bmQgOiBmYWxzZTtcbiAgfVxuXG4gIGdldCBlbmFibGVWMl8xKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zID8gdGhpcy5ncmlkT3B0aW9ucy5lbmFibGVWMl8xIDogZmFsc2U7XG4gIH1cblxuICBnZXQgaXNQaXZvdFN0eWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zICYmIHRoaXMuZ3JpZE9wdGlvbnMudXNlUGl2b3RHcmlkU3R5bGU7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnRyb2xsZXI6IERhdG9HcmlkQ29udHJvbGxlckNvbXBvbmVudCwgcHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmKSB7fVxufVxuIl19
@@ -16,6 +16,7 @@ import { getInitials } from '../../utils/string';
16
16
  import { size } from '../../utils/collection';
17
17
  import { isEqual } from '../../utils/validators';
18
18
  const agRowLevelPrefix = 'ag-row-level-';
19
+ const emptyFolderClassName = 'ag-empty-folder';
19
20
  function getTime(val) {
20
21
  let time = new Date(val || null).getTime();
21
22
  return isNaN(time) ? 0 : time;
@@ -88,11 +89,15 @@ function getGridTreeCellRenderer() {
88
89
  const displayName = data[colDef['field']];
89
90
  const entityClassName = 'entity-display-name';
90
91
  const { svgRegistry } = colDef.gridService;
92
+ if (isFolder) {
93
+ setEmptyFolderClass(item.node);
94
+ }
91
95
  if (icon) {
92
96
  return `<span class="dato-simple-bold"> <span class="da-grid-icon folder d-flex">${svgRegistry.getSvg(icon)}</span><span class="${entityClassName}"></span> ${displayName}</span>`;
93
97
  }
94
98
  else {
95
99
  if (isFolder) {
100
+ setEmptyFolderClass(item);
96
101
  return `<span class="${entityClassName} dato-simple-bold">${displayName}</span>`;
97
102
  }
98
103
  else {
@@ -234,9 +239,6 @@ function onRowDragEnd({ overNode, node }) {
234
239
  const hoveredParentElement = getCellByRowID(potentialParent.id);
235
240
  hoveredParentElement && hoveredParentElement.classList.remove(agRowHoverClassName);
236
241
  potentialParent = null;
237
- /** Redraw the folders that has been dragged from and to,
238
- * to apply their classed through classRules config */
239
- this.api.redrawRows({ rowNodes: [nodeParent, folderToDropInto] });
240
242
  this.api.clearFocusedCell();
241
243
  }
242
244
  }
@@ -252,9 +254,24 @@ function setRowClasses(rows) {
252
254
  }
253
255
  }
254
256
  node.classList.add(`${agRowLevelPrefix}${row.level}`);
257
+ if (row.data.isFolder) {
258
+ setEmptyFolderClass(row, node);
259
+ }
255
260
  }
256
261
  });
257
262
  }
263
+ export function setEmptyFolderClass(row, node) {
264
+ const currentNode = node || document.querySelectorAll(`[row-id="${row.id}"]`)[0];
265
+ if (!currentNode) {
266
+ return;
267
+ }
268
+ if (size(row.childrenAfterGroup) === 0) {
269
+ currentNode.classList.add(emptyFolderClassName);
270
+ }
271
+ else {
272
+ currentNode.classList.remove(emptyFolderClassName);
273
+ }
274
+ }
258
275
  function onRowSelected(params) {
259
276
  if (updatingCheckboxesProgrammatically) {
260
277
  return;
@@ -380,4 +397,4 @@ function rowGroupOpened({ node }) {
380
397
  this.api.refreshCells({ force: true, rowNodes: [node] });
381
398
  }
382
399
  export { ɵ0, ɵ1 };
383
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi5jb25maWcuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ncmlkLXYyL2dyaWQvZ3JpZC12Mi5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BGLE9BQU8sRUFFTCxtQkFBbUIsRUFHbkIsYUFBYSxFQUNiLG9CQUFvQixFQUNyQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUlqRCxNQUFNLGdCQUFnQixHQUFXLGVBQWUsQ0FBQztBQUVqRCxTQUFTLE9BQU8sQ0FBQyxHQUFjO0lBQzdCLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDaEMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUM7V0FHNUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7QUFEaEQs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LEVBQUUsSUFBSSxFQUFFO0lBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5pbXBvcnQgeyBEYXRvR3JpZFYyTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1sb2FkZXIvZ3JpZC12Mi1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFnR3JpZFJvd0ljb24sXG4gIERhdG9HcmlkQ29sdW1uVHlwZXMsXG4gIERhdG9HcmlkT3B0aW9ucyxcbiAgRGF0b0dyaWRUcmVlQ29uZmlnLFxuICBHcmlkTWluV2lkdGhzLFxuICBHcmlkUm93U2VsZWN0aW9uVHlwZVxufSBmcm9tICcuL2dyaWQtdjIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRWMk5vRGF0YU92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLW5vLWRhdGEtb3ZlcmxheS9ncmlkLXYyLW5vLWRhdGEtb3ZlcmxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0b0dyaWRGaWx0ZXJUeXBlcyB9IGZyb20gJy4uL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkQ29sdW1uSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jb2x1bW4taGVhZGVyL2dyaWQtY29sdW1uLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNUZXN0RW52IH0gZnJvbSAnLi4vLi4vaXN0ZXN0LWVudic7XG5pbXBvcnQgeyBJRCB9IGZyb20gJ0BkYXRvcmFtYS9ha2l0YSc7XG5pbXBvcnQgeyBnZXRJbml0aWFscyB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmluZyc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sbGVjdGlvbic7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmFsaWRhdG9ycyc7XG5cbnR5cGUgRGF0ZVR5cGVzID0gbnVtYmVyIHwgc3RyaW5nIHwgRGF0ZTtcblxuY29uc3QgYWdSb3dMZXZlbFByZWZpeDogc3RyaW5nID0gJ2FnLXJvdy1sZXZlbC0nO1xuXG5mdW5jdGlvbiBnZXRUaW1lKHZhbDogRGF0ZVR5cGVzKSB7XG4gIGxldCB0aW1lID0gbmV3IERhdGUodmFsIHx8IG51bGwpLmdldFRpbWUoKTtcbiAgcmV0dXJuIGlzTmFOKHRpbWUpID8gMCA6IHRpbWU7XG59XG5cbmV4cG9ydCBjb25zdCBST09UX05PREVfSUQgPSAnUk9PVF9OT0RFX0lEJztcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRUcmVlT3B0aW9uczogUGFydGlhbDxEYXRvR3JpZE9wdGlvbnM+ID0ge1xuICBnZXREYXRhUGF0aDogaXRlbSA9PiBpdGVtW2dyaWRUcmVlRmlsZVBhdGhLZXldLFxuICBjb21wb25lbnRzOiB7XG4gICAgZmlsZUNlbGxSZW5kZXJlcjogZ2V0R3JpZFRyZWVDZWxsUmVuZGVyZXIoKVxuICB9LFxuICBvblJvd0RyYWdNb3ZlOiBvblJvd0RyYWdNb3ZlLFxuICBvblJvd0RyYWdFbmQ6IG9uUm93RHJhZ0VuZCxcbiAgb25Sb3dTZWxlY3RlZDogb25Sb3dTZWxlY3RlZCxcbiAgb25Sb3dHcm91cE9wZW5lZDogcm93R3JvdXBPcGVuZWQsXG4gIHN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb246IHRydWUsXG4gIGdyb3VwU2VsZWN0c0NoaWxkcmVuOiB0cnVlLFxuICBpY29uczoge1xuICAgIHJvd0RyYWc6ICc8ZGF0by1pY29uIGljb249XCJkcmFnXCIgY2xhc3M9XCJkYXRvLWljb24tZm9udC1kcmFnIHByaW1hcnktNDAwLWNvbG9yXCI+PC9kYXRvLWljb24+J1xuICB9XG59O1xuXG5jb25zdCBzdHJpbmdDb2xEZWYgPSB7XG4gIGZpbHRlcjogRGF0b0dyaWRGaWx0ZXJUeXBlcy5TdHJpbmcsXG4gIGNvbXBhcmF0b3I6IChhOiBzdHJpbmcsIGI6IHN0cmluZykgPT4gKGEgfHwgJycpLnRvTG93ZXJDYXNlKCkubG9jYWxlQ29tcGFyZSgoYiB8fCAnJykudG9Mb3dlckNhc2UoKSlcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0R3JpZE9wdGlvbnM6IFBhcnRpYWw8RGF0b0dyaWRPcHRpb25zPiA9IHtcbiAgLy8gQ29yZVxuICBob3ZlckNvbmZpZzogeyBlbmFibGVkOiB0cnVlLCBtYXhEaXNwbGF5ZWRJdGVtczogMyB9LFxuICBlbmFibGVWMl8xOiBmYWxzZSxcbiAgZW5hYmxlU2VhcmNoOiBmYWxzZSxcbiAgZW5hYmxlU2VhcmNoSGlnaGxpZ2h0OiB0cnVlLFxuICBjb2x1bW5zSW5jbHVkZWRJblNlYXJjaEJ5RGVmYXVsdDogdHJ1ZSxcbiAgaW5jbHVkZUhpZGRlbkNvbHVtbnNJblNlYXJjaDogZmFsc2UsXG4gIGVuYWJsZUFsbFBhZ2VzU2VsZWN0aW9uOiB0cnVlLFxuICBpZENvbHVtbktleTogJ2lkJyxcbiAgZW5hYmxlQmFja2dyb3VuZDogdHJ1ZSxcbiAgLy8gQWcgZ3JpZFxuICBjb2x1bW5UeXBlczoge1xuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLkRhdGVdOiB7XG4gICAgICBmaWx0ZXI6IERhdG9HcmlkRmlsdGVyVHlwZXMuRGF0ZSxcbiAgICAgIGNvbXBhcmF0b3I6IChhOiBEYXRlVHlwZXMsIGI6IERhdGVUeXBlcykgPT4gZ2V0VGltZShhKSAtIGdldFRpbWUoYilcbiAgICB9LFxuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLk51bWJlcl06IHtcbiAgICAgIGZpbHRlcjogRGF0b0dyaWRGaWx0ZXJUeXBlcy5OdW1iZXJcbiAgICB9LFxuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLlN0cmluZ106IHN0cmluZ0NvbERlZixcbiAgICBbRGF0b0dyaWRDb2x1bW5UeXBlcy5TdGF0dXNdOiB7XG4gICAgICAuLi5zdHJpbmdDb2xEZWYsXG4gICAgICBjZWxsUmVuZGVyZXI6ICdEYXRvR3JpZFN0YXR1c0NlbGxDb21wb25lbnQnXG4gICAgfSxcbiAgICBbRGF0b0dyaWRDb2x1bW5UeXBlcy5JdGVtc106IHtcbiAgICAgIC4uLnN0cmluZ0NvbERlZixcbiAgICAgIGNlbGxSZW5kZXJlcjogJ0RhdG9HcmlkSXRlbXNDZWxsQ29tcG9uZW50J1xuICAgIH0sXG4gICAgW0RhdG9HcmlkQ29sdW1uVHlwZXMuSXRlbXNDb3VudF06IHtcbiAgICAgIC4uLnN0cmluZ0NvbERlZixcbiAgICAgIGNlbGxSZW5kZXJlcjogJ0RhdG9HcmlkSXRlbXNDb3VudENlbGxDb21wb25lbnQnXG4gICAgfSxcbiAgICBbRGF0b0dyaWRDb2x1bW5UeXBlcy5Jbml0aWFsc106IHtcbiAgICAgIC4uLnN0cmluZ0NvbERlZixcbiAgICAgIGNlbGxSZW5kZXJlcjogJ0RhdG9HcmlkSW5pdGlhbHNDZWxsQ29tcG9uZW50J1xuICAgIH0sXG4gICAgW0RhdG9HcmlkQ29sdW1uVHlwZXMuQXZhdGFyXToge1xuICAgICAgLi4uc3RyaW5nQ29sRGVmLFxuICAgICAgY2VsbFJlbmRlcmVyOiAnRGF0b0dyaWRBdmF0YXJDZWxsQ29tcG9uZW50J1xuICAgIH1cbiAgfSxcbiAgbXVsdGlTb3J0S2V5OiAnY3RybCcsXG4gIHN1cHByZXNzUGFnaW5hdGlvblBhbmVsOiB0cnVlLFxuICBwYWdpbmF0aW9uOiB0cnVlLFxuICBkZWx0YUNvbHVtbk1vZGU6IHRydWUsXG4gIGxvYWRpbmdPdmVybGF5Q29tcG9uZW50RnJhbWV3b3JrOiBEYXRvR3JpZFYyTG9hZGVyQ29tcG9uZW50LFxuICBub1Jvd3NPdmVybGF5Q29tcG9uZW50RnJhbWV3b3JrOiBEYXRvR3JpZFYyTm9EYXRhT3ZlcmxheUNvbXBvbmVudCxcbiAgZGVmYXVsdENvbERlZjoge1xuICAgIG1pbldpZHRoOiBHcmlkTWluV2lkdGhzLkRlZmF1bHQsXG4gICAgc29ydGFibGU6IHRydWUsXG4gICAgcmVzaXphYmxlOiB0cnVlLFxuICAgIHR5cGU6IERhdG9HcmlkQ29sdW1uVHlwZXMuU3RyaW5nLFxuICAgIG1lbnVUYWJzOiBbJ2ZpbHRlck1lbnVUYWInXSxcbiAgICBoZWFkZXJDb21wb25lbnRGcmFtZXdvcms6IERhdG9HcmlkQ29sdW1uSGVhZGVyQ29tcG9uZW50XG4gIH0sXG4gIHN1cHByZXNzQ2VsbFNlbGVjdGlvbjogdHJ1ZSxcbiAgc3VwcHJlc3NQcm9wZXJ0eU5hbWVzQ2hlY2s6IHRydWUsXG4gIHJvd0hlaWdodDogMzUsXG4gIGhlYWRlckhlaWdodDogMzAsXG4gIHJvd1NlbGVjdGlvbjogR3JpZFJvd1NlbGVjdGlvblR5cGUuTVVMVElQTEUsXG4gIHJvd0Rlc2VsZWN0aW9uOiB0cnVlLFxuICB1blNvcnRJY29uOiB0cnVlLFxuICBhbmltYXRlUm93czogdHJ1ZSxcbiAgcmVtZW1iZXJHcm91cFN0YXRlV2hlbk5ld0RhdGE6IHRydWUsXG4gIGdyb3VwTXVsdGlBdXRvQ29sdW1uOiB0cnVlLFxuICBncm91cERlZmF1bHRFeHBhbmRlZDogLTEsXG4gIHVzZVBpdm90R3JpZFN0eWxlOiBmYWxzZSxcbiAgZGlzYWJsZWRIVE1MUmVuZGVyaW5nRmllbGRzOiBbXSxcbiAgLi4uKGlzVGVzdEVudigpID8geyBzdXBwcmVzc0NvbHVtblZpcnR1YWxpc2F0aW9uOiB0cnVlLCByb3dCdWZmZXI6IDk5OTk5IH0gOiB7fSlcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0dSSURfU0VBUkNIX0RFQk9VTkNFX1RJTUUgPSB7XG4gIENMSUVOVDogMjAwLFxuICBTRVJWRVI6IDI1MFxufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRHcmlkVHJlZUxhYmVsOiBEYXRvR3JpZFRyZWVDb25maWcgPSB7XG4gIGlkS2V5OiAnaWQnLFxuICBwYXJlbnRJREtleTogJ3BhcmVudElEJ1xufTtcblxuZXhwb3J0IGNvbnN0IGdyaWRUcmVlRmlsZVBhdGhLZXkgPSAnYWdHcmlkRmlsZVBhdGgnO1xuXG4vKipcbiAqIENlbGwgcmVuZGVyZXIgZm9yIHRyZWUgc3RydWN0dXJlLlxuICovXG5mdW5jdGlvbiBnZXRHcmlkVHJlZUNlbGxSZW5kZXJlcigpIHtcbiAgcmV0dXJuIGl0ZW0gPT4ge1xuICAgIGNvbnN0IHsgZGF0YSwgZUdyaWRDZWxsLCBjb2xEZWYgfSA9IGl0ZW07XG4gICAgY29uc3QgeyBpY29uOiBpdGVtSWNvbiwgaXNGb2xkZXIsIGluaXRpYWxzID0gdHJ1ZSB9ID0gZGF0YTtcbiAgICBjb25zdCBpY29uID0gZ2V0Um93SWNvbihpdGVtSWNvbiwgZUdyaWRDZWxsLCBpc0ZvbGRlcik7XG4gICAgY29uc3QgZGlzcGxheU5hbWUgPSBkYXRhW2NvbERlZlsnZmllbGQnXV07XG4gICAgY29uc3QgZW50aXR5Q2xhc3NOYW1lID0gJ2VudGl0eS1kaXNwbGF5LW5hbWUnO1xuICAgIGNvbnN0IHsgc3ZnUmVnaXN0cnkgfSA9IGNvbERlZi5ncmlkU2VydmljZTtcblxuICAgIGlmIChpY29uKSB7XG4gICAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwiZGF0by1zaW1wbGUtYm9sZFwiPiA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBmb2xkZXIgZC1mbGV4XCI+JHtzdmdSZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgIGljb25cbiAgICAgICl9PC9zcGFuPjxzcGFuIGNsYXNzPVwiJHtlbnRpdHlDbGFzc05hbWV9XCI+PC9zcGFuPiAke2Rpc3BsYXlOYW1lfTwvc3Bhbj5gO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNGb2xkZXIpIHtcbiAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cIiR7ZW50aXR5Q2xhc3NOYW1lfSBkYXRvLXNpbXBsZS1ib2xkXCI+JHtkaXNwbGF5TmFtZX08L3NwYW4+YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpbml0aWFscykge1xuICAgICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGdldEluaXRpYWxzKGRpc3BsYXlOYW1lKTtcbiAgICAgICAgICBpZiAoaW5pdGlhbFZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwiJHtlbnRpdHlDbGFzc05hbWV9IGRhdG8tc2ltcGxlLWJvbGRcIj48c3BhbiBjbGFzcz1cImluaXRpYWxzXCI+JHtpbml0aWFsVmFsdWV9PC9zcGFuPiR7ZGlzcGxheU5hbWV9PC9zcGFuPmA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCIke2VudGl0eUNsYXNzTmFtZX0gZGF0by1zaW1wbGUtYm9sZFwiPiR7ZGlzcGxheU5hbWV9PC9zcGFuPmA7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCIke2VudGl0eUNsYXNzTmFtZX0gZGF0by1zaW1wbGUtYm9sZFwiPiR7ZGlzcGxheU5hbWV9PC9zcGFuPmA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcm93J3MgaWNvbi5cbiAqIElmIGljb24gaXMgb2YgdHlwZSBzdHJpbmcsIFJldHVybiBpdC5cbiAqIElmIGl0IGFuIG9iamVjdCwgUmV0dXJuIGJhc2VkIG9uIHRoZSBleHBhbmQgLyBjb2xsYXBzZSBzdGF0ZS5cbiAqIEBwYXJhbSBpY29uXG4gKiBAcGFyYW0gZUdyaWRDZWxsXG4gKiBAcGFyYW0gaXNGb2xkZXJcbiAqL1xuZnVuY3Rpb24gZ2V0Um93SWNvbihpY29uOiBBZ0dyaWRSb3dJY29uLCBlR3JpZENlbGw6IGFueSwgaXNGb2xkZXI6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBpZiAoaWNvbiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZ2V0SWNvbkJhc2VkT25Sb3dTdGF0ZSA9IChlR3JpZENlbGwsIHsgZXhwYW5kZWQsIGNvbGxhcHNlZCB9KSA9PiB7XG4gICAgY29uc3QgYWdHcmlkUm93RXhwYW5kZWRDbGFzcyA9ICdhZy1yb3ctZ3JvdXAtZXhwYW5kZWQnO1xuICAgIHJldHVybiBlR3JpZENlbGwucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoYWdHcmlkUm93RXhwYW5kZWRDbGFzcykgPyBleHBhbmRlZCA6IGNvbGxhcHNlZDtcbiAgfTtcblxuICAvKipcbiAgICogSWYgaWNvbiB3YXNuJ3Qgb3ZlcnJpZGUgYnkgdGhlIHVzZXIgYW5kIHRoZSByb3cgaXMgb2YgdHlwZSBmb2xkZXIsXG4gICAqIFNldCBkZWZhdWx0IGZvbGRlciBpY29ucy5cbiAgICovXG4gIGlmIChpY29uID09PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoaXNGb2xkZXIpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRGb2xkZXJJY29uczogQWdHcmlkUm93SWNvbiA9IHtcbiAgICAgICAgZXhwYW5kZWQ6ICdmb2xkZXItb3BlbicsXG4gICAgICAgIGNvbGxhcHNlZDogJ2ZvbGRlci1jbG9zZWQnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGdldEljb25CYXNlZE9uUm93U3RhdGUoZUdyaWRDZWxsLCBkZWZhdWx0Rm9sZGVySWNvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB0eXBlb2YgaWNvbiA9PT0gJ3N0cmluZycgPyBpY29uIDogZ2V0SWNvbkJhc2VkT25Sb3dTdGF0ZShlR3JpZENlbGwsIGljb24pO1xufVxuXG5sZXQgcG90ZW50aWFsUGFyZW50ID0gbnVsbDtcbmNvbnN0IGFnUm93SG92ZXJDbGFzc05hbWUgPSAnYWctcm93LWhvdmVyJztcblxubGV0IHVwZGF0aW5nQ2hlY2tib3hlc1Byb2dyYW1tYXRpY2FsbHkgPSBmYWxzZTtcblxuZnVuY3Rpb24gZ2V0Q2VsbEJ5Um93SUQocm93SUQ6IHN0cmluZykge1xuICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW3Jvdy1pZD1cIiR7cm93SUR9XCJdID4gLmFnLWNlbGxgKTtcbn1cblxuLyoqXG4gKiBNYXJrIHBhcmVudCBmb2xkZXIgb2YgdGhlIG92ZXJOb2RlIGFzIGhvdmVyZWQgaW4gb3JkZXIgdG8gYXBwbHlcbiAqIHJlbGV2YW50IGNzcyBzdHlsZSB0byBpdC5cbiAqIEBwYXJhbSBvdmVyTm9kZVxuICovXG5mdW5jdGlvbiBvblJvd0RyYWdNb3ZlKHsgb3Zlck5vZGUsIG5vZGUgfSkge1xuICBsZXQgZm9sZGVyVG9Ecm9wSW50bztcblxuICBpZiAob3Zlck5vZGUpIHtcbiAgICAvLyBmb2xkZXIgdG8gZHJvcCBpbnRvIGlzIHdoZXJlIHdlIGFyZSBnb2luZyB0byBtb3ZlIHRoZSBmaWxlL2ZvbGRlciB0b1xuICAgIGZvbGRlclRvRHJvcEludG8gPSBvdmVyTm9kZS5kYXRhLmlzRm9sZGVyXG4gICAgICA/IC8vIGlmIG92ZXIgYSBmb2xkZXIsIHdlIHRha2UgdGhlIGltbWVkaWF0ZSByb3dcbiAgICAgICAgb3Zlck5vZGVcbiAgICAgIDogLy8gaWYgb3ZlciBhIGZpbGUsIHdlIHRha2UgdGhlIHBhcmVudCByb3cgKHdoaWNoIHdpbGwgYmUgYSBmb2xkZXIpXG4gICAgICAgIG92ZXJOb2RlLnBhcmVudDtcbiAgfSBlbHNlIHtcbiAgICBmb2xkZXJUb0Ryb3BJbnRvID0gbm9kZS5yb3dNb2RlbC5yb290Tm9kZTtcbiAgfVxuXG4gIGlmIChwb3RlbnRpYWxQYXJlbnQpIHtcbiAgICBpZiAocG90ZW50aWFsUGFyZW50LmlkID09PSBmb2xkZXJUb0Ryb3BJbnRvLmlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzUG90ZW50aWFsUGFyZW50ID0gZ2V0Q2VsbEJ5Um93SUQocG90ZW50aWFsUGFyZW50LmlkKTtcbiAgICAgIHByZXZpb3VzUG90ZW50aWFsUGFyZW50ICYmIHByZXZpb3VzUG90ZW50aWFsUGFyZW50LmNsYXNzTGlzdC5yZW1vdmUoYWdSb3dIb3ZlckNsYXNzTmFtZSk7XG4gICAgICBwb3RlbnRpYWxQYXJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBwb3RlbnRpYWxQYXJlbnQgPSBmb2xkZXJUb0Ryb3BJbnRvO1xuICB9XG4gIGlmIChmb2xkZXJUb0Ryb3BJbnRvKSB7XG4gICAgY29uc3QgZm9sZGVySUQ6IHN0cmluZyA9IGZvbGRlclRvRHJvcEludG8uaWQ7XG4gICAgY29uc3QgZm9sZGVyVG9Ecm9wSW50b0VsZW1lbnQgPSBnZXRDZWxsQnlSb3dJRChmb2xkZXJJRCk7XG4gICAgZm9sZGVyVG9Ecm9wSW50b0VsZW1lbnQgJiYgZm9sZGVyVG9Ecm9wSW50b0VsZW1lbnQuY2xhc3NMaXN0LmFkZChhZ1Jvd0hvdmVyQ2xhc3NOYW1lKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvblJvd0RyYWdFbmQoeyBvdmVyTm9kZSwgbm9kZSB9KSB7XG4gIGxldCBub2RlUGFyZW50O1xuICBsZXQgZm9sZGVyVG9Ecm9wSW50bztcbiAgaWYgKG92ZXJOb2RlKSB7XG4gICAgbm9kZVBhcmVudCA9IG5vZGUucGFyZW50O1xuICAgIC8vIGZvbGRlciB0byBkcm9wIGludG8gaXMgd2hlcmUgd2UgYXJlIGdvaW5nIHRvIG1vdmUgdGhlIGZpbGUvZm9sZGVyIHRvXG4gICAgZm9sZGVyVG9Ecm9wSW50byA9IG92ZXJOb2RlLmRhdGEuaXNGb2xkZXJcbiAgICAgID8gLy8gaWYgb3ZlciBhIGZvbGRlciwgd2UgdGFrZSB0aGUgaW1tZWRpYXRlIHJvd1xuICAgICAgICBvdmVyTm9kZVxuICAgICAgOiAvLyBpZiBvdmVyIGEgZmlsZSwgd2UgdGFrZSB0aGUgcGFyZW50IHJvdyAod2hpY2ggd2lsbCBiZSBhIGZvbGRlcilcbiAgICAgICAgb3Zlck5vZGUucGFyZW50O1xuICB9IGVsc2Uge1xuICAgIG5vZGVQYXJlbnQgPSBub2RlLnJvd01vZGVsLnJvb3ROb2RlO1xuICAgIGZvbGRlclRvRHJvcEludG8gPSBub2RlLnJvd01vZGVsLnJvb3ROb2RlO1xuICB9XG5cbiAgLy8gdGhlIGRhdGEgd2Ugd2FudCB0byBtb3ZlXG4gIGNvbnN0IG1vdmluZ0RhdGEgPSBub2RlLmRhdGE7XG5cbiAgY29uc3QgdHJlZU1heERlcHRoOiBudW1iZXIgPSBub2RlLmdyaWRPcHRpb25zV3JhcHBlci5ncmlkT3B0aW9ucy5tYXhEZXB0aCB8fCAtMTtcbiAgLy8gRGlzYWJsZSBuZXN0ZWQgZHJhZyB3aGVuIHRyZWUgZGVwdGggaXMgYWJvdmUgdGhlIGxpbWl0XG4gIGlmIChcbiAgICBtb3ZpbmdEYXRhLmlzRm9sZGVyICYmXG4gICAgdHJlZU1heERlcHRoICE9PSAtMSAmJlxuICAgIG5vZGVQYXJlbnQuaWQgIT09IFJPT1RfTk9ERV9JRCAmJlxuICAgIG92ZXJOb2RlLmRhdGEuYWdHcmlkRmlsZVBhdGgubGVuZ3RoID4gdHJlZU1heERlcHRoXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIHRha2UgbmV3IHBhcmVudCBwYXRoIGZyb20gcGFyZW50LCBpZiBkYXRhIGlzIG1pc3NpbmcsIG1lYW5zIGl0J3MgdGhlIHJvb3Qgbm9kZSxcbiAgLy8gd2hpY2ggaGFzIG5vIGRhdGEuXG4gIGNvbnN0IG5ld1BhcmVudFBhdGggPSBmb2xkZXJUb0Ryb3BJbnRvLmRhdGEgPyBmb2xkZXJUb0Ryb3BJbnRvLmRhdGFbZ3JpZFRyZWVGaWxlUGF0aEtleV0gOiBbXTtcbiAgY29uc3QgbmVlZFRvQ2hhbmdlUGFyZW50ID0gIWlzRXF1YWwobmV3UGFyZW50UGF0aCwgbW92aW5nRGF0YVtncmlkVHJlZUZpbGVQYXRoS2V5XSk7XG5cbiAgLy8gY2hlY2sgd2UgYXJlIG5vdCBtb3ZpbmcgYSBmb2xkZXIgaW50byBhIGNoaWxkIGZvbGRlclxuICBjb25zdCBpbnZhbGlkTW9kZSA9IGlzU2VsZWN0aW9uUGFyZW50T2ZUYXJnZXQobm9kZSwgZm9sZGVyVG9Ecm9wSW50byk7XG4gIGlmIChpbnZhbGlkTW9kZSkge1xuICAgIGNvbnNvbGUubG9nKCdpbnZhbGlkIG1vdmUnKTtcbiAgfVxuXG4gIGlmIChuZWVkVG9DaGFuZ2VQYXJlbnQgJiYgIWludmFsaWRNb2RlKSB7XG4gICAgY29uc3QgdXBkYXRlZFJvd3MgPSBbXTtcbiAgICBjb25zdCB7IGlkS2V5IH06IERhdG9HcmlkVHJlZUNvbmZpZyA9IHRoaXMuYXV0b0dyb3VwQ29sdW1uRGVmLmdyaWRTZXJ2aWNlLnRyZWVDb25maWc7XG4gICAgbW92ZVRvUGF0aChuZXdQYXJlbnRQYXRoLCBub2RlLCB1cGRhdGVkUm93cywgaWRLZXkpO1xuXG4gICAgY29uc3QgYWZmZWN0ZWRSb3dzID0gdGhpcy5hdXRvR3JvdXBDb2x1bW5EZWYuZ3JpZFNlcnZpY2UudXBkYXRlUm93cyh1cGRhdGVkUm93cyk7XG5cbiAgICBzZXRSb3dDbGFzc2VzKFsuLi5hZmZlY3RlZFJvd3MudXBkYXRlLCBvdmVyTm9kZSwgbm9kZVBhcmVudF0pO1xuXG4gICAgLyoqXG4gICAgICogQ2xlYXIgcHJldmlvdXMgbWFya2VkIHBhcmVudCBmcm9tIGhvdmVyIHN0eWxlLlxuICAgICAqL1xuICAgIGNvbnN0IGhvdmVyZWRQYXJlbnRFbGVtZW50ID0gZ2V0Q2VsbEJ5Um93SUQocG90ZW50aWFsUGFyZW50LmlkKTtcbiAgICBob3ZlcmVkUGFyZW50RWxlbWVudCAmJiBob3ZlcmVkUGFyZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGFnUm93SG92ZXJDbGFzc05hbWUpO1xuICAgIHBvdGVudGlhbFBhcmVudCA9IG51bGw7XG5cbiAgICAvKiogUmVkcmF3IHRoZSBmb2xkZXJzIHRoYXQgaGFzIGJlZW4gZHJhZ2dlZCBmcm9tIGFuZCB0byxcbiAgICAgKiB0byBhcHBseSB0aGVpciBjbGFzc2VkIHRocm91Z2ggY2xhc3NSdWxlcyBjb25maWcgKi9cbiAgICB0aGlzLmFwaS5yZWRyYXdSb3dzKHsgcm93Tm9kZXM6IFtub2RlUGFyZW50LCBmb2xkZXJUb0Ryb3BJbnRvXSB9KTtcbiAgICB0aGlzLmFwaS5jbGVhckZvY3VzZWRDZWxsKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0Um93Q2xhc3Nlcyhyb3dzKSB7XG4gIGNvbnN0IGNsYXNzTGlzdCA9IFtgJHthZ1Jvd0xldmVsUHJlZml4fTFgLCBgJHthZ1Jvd0xldmVsUHJlZml4fTJgLCBgJHthZ1Jvd0xldmVsUHJlZml4fTNgXTtcbiAgcm93cy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtyb3ctaWQ9XCIke3Jvdy5pZH1cIl1gKVsxXTtcblxuICAgIGlmIChub2RlKSB7XG4gICAgICBmb3IgKGNvbnN0IGNsYXNzTmFtZSBvZiBjbGFzc0xpc3QpIHtcbiAgICAgICAgaWYgKG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcbiAgICAgICAgICBub2RlLmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBub2RlLmNsYXNzTGlzdC5hZGQoYCR7YWdSb3dMZXZlbFByZWZpeH0ke3Jvdy5sZXZlbH1gKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvblJvd1NlbGVjdGVkKHBhcmFtcykge1xuICBpZiAodXBkYXRpbmdDaGVja2JveGVzUHJvZ3JhbW1hdGljYWxseSkge1xuICAgIHJldHVybjtcbiAgfVxuICB1cGRhdGluZ0NoZWNrYm94ZXNQcm9ncmFtbWF0aWNhbGx5ID0gdHJ1ZTtcblxuICBzZXRDaGlsZHJlblNlbGVjdGlvblN0YXR1cyhwYXJhbXMubm9kZSwgcGFyYW1zLm5vZGUuc2VsZWN0ZWQpO1xuICByZWZyZXNoUGFyZW50c1NlbGVjdGlvblN0YXR1c1JlY3Vyc2l2ZWx5KHBhcmFtcy5ub2RlKTtcblxuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICB1cGRhdGluZ0NoZWNrYm94ZXNQcm9ncmFtbWF0aWNhbGx5ID0gZmFsc2U7XG4gIH0sIDApO1xufVxuXG5mdW5jdGlvbiBzZXRDaGlsZHJlblNlbGVjdGlvblN0YXR1cyhub2RlLCBzZWxlY3RlZCkge1xuICBsZXQgaGFzQ2hpbGRyZW4gPSBub2RlLmFsbENoaWxkcmVuQ291bnQgPiAwO1xuICBpZiAoaGFzQ2hpbGRyZW4pIHtcbiAgICBub2RlLmFsbExlYWZDaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgIGNoaWxkLnNldFNlbGVjdGVkKHNlbGVjdGVkKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWZyZXNoUGFyZW50c1NlbGVjdGlvblN0YXR1c1JlY3Vyc2l2ZWx5KG5vZGUpIHtcbiAgbGV0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudDtcbiAgd2hpbGUgKHBhcmVudE5vZGUpIHtcbiAgICBpZiAocGFyZW50Tm9kZS5pZCA9PT0gUk9PVF9OT0RFX0lEKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZWZyZXNoU2VsZWN0aW9uU3RhdHVzKHBhcmVudE5vZGUpO1xuICAgIHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLnBhcmVudDtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWZyZXNoU2VsZWN0aW9uU3RhdHVzKG5vZGUpIHtcbiAgbGV0IGNoaWxkcmVuU2VsZWN0aW9uU3RhdHVzID0gbm9kZS5hbGxMZWFmQ2hpbGRyZW4ubWFwKG5vZGUgPT4gbm9kZS5zZWxlY3RlZCk7XG5cbiAgaWYgKGNoaWxkcmVuU2VsZWN0aW9uU3RhdHVzLmV2ZXJ5KHNlbGVjdGVkVmFsdWUgPT4gc2VsZWN0ZWRWYWx1ZSA9PT0gdHJ1ZSB8fCBzZWxlY3RlZFZhbHVlID09PSB1bmRlZmluZWQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNoaWxkcmVuU2VsZWN0aW9uU3RhdHVzLnNoaWZ0KCk7XG5cbiAgbGV0IG5vZGVTZWxlY3Rpb25TdGF0dXMgPSBjaGlsZHJlblNlbGVjdGlvblN0YXR1cy5yZWR1Y2UoKGEsIGIpID0+IHtcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0pO1xuXG4gIG5vZGUuc2VsZWN0VGhpc05vZGUobm9kZVNlbGVjdGlvblN0YXR1cyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBzZWxlY3RlZCBub2RlIGlzIGEgY2hpbGQgb2YgdGhlIHRhcmdldCBwb3NpdGlvbi5cbiAqIEBwYXJhbSBzZWxlY3RlZE5vZGVcbiAqIEBwYXJhbSB0YXJnZXROb2RlXG4gKi9cbmZ1bmN0aW9uIGlzU2VsZWN0aW9uUGFyZW50T2ZUYXJnZXQoc2VsZWN0ZWROb2RlLCB0YXJnZXROb2RlKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNoaWxkcmVuID0gc2VsZWN0ZWROb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0YXJnZXROb2RlICYmIGNoaWxkcmVuW2ldLmtleSA9PT0gdGFyZ2V0Tm9kZS5rZXkpIHJldHVybiB0cnVlO1xuICAgIGlzU2VsZWN0aW9uUGFyZW50T2ZUYXJnZXQoY2hpbGRyZW5baV0sIHRhcmdldE5vZGUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIHRoaXMgdXBkYXRlcyB0aGUgZmlsZVBhdGggbG9jYXRpb25zIGluIG91ciBkYXRhLCB3ZSB1cGRhdGUgdGhlIGRhdGFcbiBiZWZvcmUgd2Ugc2VuZCBpdCB0byBhZy1HcmlkXG4gKi9cbmZ1bmN0aW9uIG1vdmVUb1BhdGgobmV3UGFyZW50UGF0aCwgeyBkYXRhLCBjaGlsZHJlbkFmdGVyR3JvdXAgfSwgYWxsVXBkYXRlZE5vZGVzLCBpZEtleTogc3RyaW5nKSB7XG4gIC8vIGxhc3QgcGFydCBvZiB0aGUgZmlsZSBwYXRoIGlzIHRoZSBmaWxlIG5hbWVcbiAgY29uc3QgbmV3Q2hpbGRQYXRoID0gbmV3UGFyZW50UGF0aC5zbGljZSgpO1xuXG4gIGRhdGFbZ3JpZFRyZWVGaWxlUGF0aEtleV0gPSBuZXdDaGlsZFBhdGg7XG5cbiAgYWxsVXBkYXRlZE5vZGVzLnB1c2goZGF0YSk7XG5cbiAgaWYgKHNpemUoY2hpbGRyZW5BZnRlckdyb3VwKSA+IDApIHtcbiAgICBjaGlsZHJlbkFmdGVyR3JvdXAuZm9yRWFjaChmdW5jdGlvbihjaGlsZE5vZGUpIHtcbiAgICAgIG1vdmVUb1BhdGgoWy4uLm5ld0NoaWxkUGF0aCwgZGF0YVtpZEtleV1dLCBjaGlsZE5vZGUsIGFsbFVwZGF0ZWROb2RlcywgaWRLZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgZGF0YVtncmlkVHJlZUZpbGVQYXRoS2V5XS5wdXNoKGRhdGFbaWRLZXldKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRhdGEgaW50byB0cmVlIHNoYXBlZCBzdHJ1Y3R1cmUuXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIGdyaWRUcmVlQ29uZmlnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9UcmVlRGF0YTxUPihkYXRhOiBUW10sIGdyaWRUcmVlQ29uZmlnOiBEYXRvR3JpZFRyZWVDb25maWcpOiBUW10ge1xuICBjb25zdCB7IHBhcmVudElES2V5LCBpZEtleSB9ID0gZ3JpZFRyZWVDb25maWc7XG4gIGNvbnN0IGdlbmVyYXRlRmlsZVBhdGggPSAoaXRlbSwgaW5pdENoaWxkID0gZmFsc2UpOiBJRFtdID0+IHtcbiAgICBjb25zdCBwYXRoOiBJRFtdID0gaW5pdENoaWxkID8gW2l0ZW1baWRLZXldXSA6IFtdO1xuICAgIGNvbnN0IHBhcmVudEVudGl0eSA9IGRhdGEuZmluZChlbnRpdHkgPT4gZW50aXR5W2lkS2V5XSA9PT0gaXRlbVtwYXJlbnRJREtleV0pO1xuICAgIHBhdGgudW5zaGlmdChwYXJlbnRFbnRpdHlbaWRLZXldKTtcblxuICAgIGlmIChwYXJlbnRFbnRpdHlbcGFyZW50SURLZXldKSB7XG4gICAgICBjb25zdCBlbnRpdHlQYXRoID0gZ2VuZXJhdGVGaWxlUGF0aChwYXJlbnRFbnRpdHkpO1xuICAgICAgcGF0aC51bnNoaWZ0KC4uLmVudGl0eVBhdGgpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXRoO1xuICB9O1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoZXJlJ3Mgbm8gcGFyZW50SUQsIFNldCB0aGUgaXRlbSBpbiB0byByb290IG9mIHRoZSB0cmVlLlxuICAgKiBFbHNlLCBSZWN1cnNpdmVseSBjcmVhdGUgdGhlIHBhdGguXG4gICAqL1xuICByZXR1cm4gZGF0YS5tYXAoaXRlbSA9PiB7XG4gICAgaWYgKGl0ZW1bcGFyZW50SURLZXldKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBbZ3JpZFRyZWVGaWxlUGF0aEtleV06IGdlbmVyYXRlRmlsZVBhdGgoaXRlbSwgdHJ1ZSlcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIFtncmlkVHJlZUZpbGVQYXRoS2V5XTogW2l0ZW1baWRLZXldXVxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnQgdGhlIGdyaWRzIGRhdGEgZnJvbSB0cmVlIHNoYXBlIHRvIG9yaWdpbmFsIHNoYXBlLlxuICogQHBhcmFtIGRhdGFcbiAqIEBwYXJhbSBncmlkVHJlZUNvbmZpZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEZyb21UcmVlRGF0YTxUPihkYXRhOiBUW10sIGdyaWRUcmVlQ29uZmlnOiBEYXRvR3JpZFRyZWVDb25maWcpOiBUW10ge1xuICByZXR1cm4gZGF0YS5tYXAoKHsgLi4ucm93IH0pID0+IHtcbiAgICBjb25zdCBwYXRoOiBJRFtdID0gcm93W2dyaWRUcmVlRmlsZVBhdGhLZXldO1xuICAgIGNvbnN0IHBhcmVudElEOiBJRCA9IHNpemUocGF0aCkgPiAxID8gcGF0aFtwYXRoLmxlbmd0aCAtIDJdIDogMDtcbiAgICBkZWxldGUgcm93W2dyaWRUcmVlRmlsZVBhdGhLZXldO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5yb3csXG4gICAgICBbZ3JpZFRyZWVDb25maWcucGFyZW50SURLZXldOiBwYXJlbnRJRFxuICAgIH07XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlZnJlc2ggZXhwYW5kZWQgLyBjb2xsYXBzZWQgcm93IGZvciB0aGUgZ3JpZCB0byBkZXRlY3RcbiAqIHRoZSBjaGFuZ2UuXG4gKiBAcGFyYW0gbm9kZVxuICovXG5mdW5jdGlvbiByb3dHcm91cE9wZW5lZCh7IG5vZGUgfSkge1xuICB0aGlzLmFwaS5yZWZyZXNoQ2VsbHMoeyBmb3JjZTogdHJ1ZSwgcm93Tm9kZXM6IFtub2RlXSB9KTtcbn1cbiJdfQ==
400
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi5jb25maWcuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ncmlkLXYyL2dyaWQvZ3JpZC12Mi5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BGLE9BQU8sRUFFTCxtQkFBbUIsRUFHbkIsYUFBYSxFQUNiLG9CQUFvQixFQUNyQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUlqRCxNQUFNLGdCQUFnQixHQUFXLGVBQWUsQ0FBQztBQUNqRCxNQUFNLG9CQUFvQixHQUFXLGlCQUFpQixDQUFDO0FBRXZELFNBQVMsT0FBTyxDQUFDLEdBQWM7SUFDN0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNoQyxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQztXQUc1QixJQUFJLENBQUMsRUFB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QztTQUNIO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBSSxJQUFTLEVBQUUsY0FBa0M7SUFDbEYsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBVSxFQUFFLEVBQUU7WUFBWixvQkFBTTtRQUN2QixNQUFNLElBQUksR0FBUyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM1QyxNQUFNLFFBQVEsR0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDaEMsdUNBQ0ssR0FBRyxLQUNOLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsSUFDdEM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxjQUFjLENBQUMsRUFBRSxJQUFJLEVBQUU7SUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cbmltcG9ydCB7IERhdG9HcmlkVjJMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWxvYWRlci9ncmlkLXYyLWxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQWdHcmlkUm93SWNvbixcbiAgRGF0b0dyaWRDb2x1bW5UeXBlcyxcbiAgRGF0b0dyaWRPcHRpb25zLFxuICBEYXRvR3JpZFRyZWVDb25maWcsXG4gIEdyaWRNaW5XaWR0aHMsXG4gIEdyaWRSb3dTZWxlY3Rpb25UeXBlXG59IGZyb20gJy4vZ3JpZC12Mi50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZFYyTm9EYXRhT3ZlcmxheUNvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtbm8tZGF0YS1vdmVybGF5L2dyaWQtdjItbm8tZGF0YS1vdmVybGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRvR3JpZEZpbHRlclR5cGVzIH0gZnJvbSAnLi4vZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRDb2x1bW5IZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWNvbHVtbi1oZWFkZXIvZ3JpZC1jb2x1bW4taGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpc1Rlc3RFbnYgfSBmcm9tICcuLi8uLi9pc3Rlc3QtZW52JztcbmltcG9ydCB7IElEIH0gZnJvbSAnQGRhdG9yYW1hL2FraXRhJztcbmltcG9ydCB7IGdldEluaXRpYWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5nJztcbmltcG9ydCB7IHNpemUgfSBmcm9tICcuLi8uLi91dGlscy9jb2xsZWN0aW9uJztcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcblxudHlwZSBEYXRlVHlwZXMgPSBudW1iZXIgfCBzdHJpbmcgfCBEYXRlO1xuXG5jb25zdCBhZ1Jvd0xldmVsUHJlZml4OiBzdHJpbmcgPSAnYWctcm93LWxldmVsLSc7XG5jb25zdCBlbXB0eUZvbGRlckNsYXNzTmFtZTogc3RyaW5nID0gJ2FnLWVtcHR5LWZvbGRlcic7XG5cbmZ1bmN0aW9uIGdldFRpbWUodmFsOiBEYXRlVHlwZXMpIHtcbiAgbGV0IHRpbWUgPSBuZXcgRGF0ZSh2YWwgfHwgbnVsbCkuZ2V0VGltZSgpO1xuICByZXR1cm4gaXNOYU4odGltZSkgPyAwIDogdGltZTtcbn1cblxuZXhwb3J0IGNvbnN0IFJPT1RfTk9ERV9JRCA9ICdST09UX05PREVfSUQnO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRyZWVPcHRpb25zOiBQYXJ0aWFsPERhdG9HcmlkT3B0aW9ucz4gPSB7XG4gIGdldERhdGFQYXRoOiBpdGVtID0+IGl0ZW1bZ3JpZFRyZWVGaWxlUGF0aEtleV0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICBmaWxlQ2VsbFJlbmRlcmVyOiBnZXRHcmlkVHJlZUNlbGxSZW5kZXJlcigpXG4gIH0sXG4gIG9uUm93RHJhZ01vdmU6IG9uUm93RHJhZ01vdmUsXG4gIG9uUm93RHJhZ0VuZDogb25Sb3dEcmFnRW5kLFxuICBvblJvd1NlbGVjdGVkOiBvblJvd1NlbGVjdGVkLFxuICBvblJvd0dyb3VwT3BlbmVkOiByb3dHcm91cE9wZW5lZCxcbiAgc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbjogdHJ1ZSxcbiAgZ3JvdXBTZWxlY3RzQ2hpbGRyZW46IHRydWUsXG4gIGljb25zOiB7XG4gICAgcm93RHJhZzogJzxkYXRvLWljb24gaWNvbj1cImRyYWdcIiBjbGFzcz1cImRhdG8taWNvbi1mb250LWRyYWcgcHJpbWFyeS00MDAtY29sb3JcIj48L2RhdG8taWNvbj4nXG4gIH1cbn07XG5cbmNvbnN0IHN0cmluZ0NvbERlZiA9IHtcbiAgZmlsdGVyOiBEYXRvR3JpZEZpbHRlclR5cGVzLlN0cmluZyxcbiAgY29tcGFyYXRvcjogKGE6IHN0cmluZywgYjogc3RyaW5nKSA9PiAoYSB8fCAnJykudG9Mb3dlckNhc2UoKS5sb2NhbGVDb21wYXJlKChiIHx8ICcnKS50b0xvd2VyQ2FzZSgpKVxufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRHcmlkT3B0aW9uczogUGFydGlhbDxEYXRvR3JpZE9wdGlvbnM+ID0ge1xuICAvLyBDb3JlXG4gIGhvdmVyQ29uZmlnOiB7IGVuYWJsZWQ6IHRydWUsIG1heERpc3BsYXllZEl0ZW1zOiAzIH0sXG4gIGVuYWJsZVYyXzE6IGZhbHNlLFxuICBlbmFibGVTZWFyY2g6IGZhbHNlLFxuICBlbmFibGVTZWFyY2hIaWdobGlnaHQ6IHRydWUsXG4gIGNvbHVtbnNJbmNsdWRlZEluU2VhcmNoQnlEZWZhdWx0OiB0cnVlLFxuICBpbmNsdWRlSGlkZGVuQ29sdW1uc0luU2VhcmNoOiBmYWxzZSxcbiAgZW5hYmxlQWxsUGFnZXNTZWxlY3Rpb246IHRydWUsXG4gIGlkQ29sdW1uS2V5OiAnaWQnLFxuICBlbmFibGVCYWNrZ3JvdW5kOiB0cnVlLFxuICAvLyBBZyBncmlkXG4gIGNvbHVtblR5cGVzOiB7XG4gICAgW0RhdG9HcmlkQ29sdW1uVHlwZXMuRGF0ZV06IHtcbiAgICAgIGZpbHRlcjogRGF0b0dyaWRGaWx0ZXJUeXBlcy5EYXRlLFxuICAgICAgY29tcGFyYXRvcjogKGE6IERhdGVUeXBlcywgYjogRGF0ZVR5cGVzKSA9PiBnZXRUaW1lKGEpIC0gZ2V0VGltZShiKVxuICAgIH0sXG4gICAgW0RhdG9HcmlkQ29sdW1uVHlwZXMuTnVtYmVyXToge1xuICAgICAgZmlsdGVyOiBEYXRvR3JpZEZpbHRlclR5cGVzLk51bWJlclxuICAgIH0sXG4gICAgW0RhdG9HcmlkQ29sdW1uVHlwZXMuU3RyaW5nXTogc3RyaW5nQ29sRGVmLFxuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLlN0YXR1c106IHtcbiAgICAgIC4uLnN0cmluZ0NvbERlZixcbiAgICAgIGNlbGxSZW5kZXJlcjogJ0RhdG9HcmlkU3RhdHVzQ2VsbENvbXBvbmVudCdcbiAgICB9LFxuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLkl0ZW1zXToge1xuICAgICAgLi4uc3RyaW5nQ29sRGVmLFxuICAgICAgY2VsbFJlbmRlcmVyOiAnRGF0b0dyaWRJdGVtc0NlbGxDb21wb25lbnQnXG4gICAgfSxcbiAgICBbRGF0b0dyaWRDb2x1bW5UeXBlcy5JdGVtc0NvdW50XToge1xuICAgICAgLi4uc3RyaW5nQ29sRGVmLFxuICAgICAgY2VsbFJlbmRlcmVyOiAnRGF0b0dyaWRJdGVtc0NvdW50Q2VsbENvbXBvbmVudCdcbiAgICB9LFxuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLkluaXRpYWxzXToge1xuICAgICAgLi4uc3RyaW5nQ29sRGVmLFxuICAgICAgY2VsbFJlbmRlcmVyOiAnRGF0b0dyaWRJbml0aWFsc0NlbGxDb21wb25lbnQnXG4gICAgfSxcbiAgICBbRGF0b0dyaWRDb2x1bW5UeXBlcy5BdmF0YXJdOiB7XG4gICAgICAuLi5zdHJpbmdDb2xEZWYsXG4gICAgICBjZWxsUmVuZGVyZXI6ICdEYXRvR3JpZEF2YXRhckNlbGxDb21wb25lbnQnXG4gICAgfVxuICB9LFxuICBtdWx0aVNvcnRLZXk6ICdjdHJsJyxcbiAgc3VwcHJlc3NQYWdpbmF0aW9uUGFuZWw6IHRydWUsXG4gIHBhZ2luYXRpb246IHRydWUsXG4gIGRlbHRhQ29sdW1uTW9kZTogdHJ1ZSxcbiAgbG9hZGluZ092ZXJsYXlDb21wb25lbnRGcmFtZXdvcms6IERhdG9HcmlkVjJMb2FkZXJDb21wb25lbnQsXG4gIG5vUm93c092ZXJsYXlDb21wb25lbnRGcmFtZXdvcms6IERhdG9HcmlkVjJOb0RhdGFPdmVybGF5Q29tcG9uZW50LFxuICBkZWZhdWx0Q29sRGVmOiB7XG4gICAgbWluV2lkdGg6IEdyaWRNaW5XaWR0aHMuRGVmYXVsdCxcbiAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICByZXNpemFibGU6IHRydWUsXG4gICAgdHlwZTogRGF0b0dyaWRDb2x1bW5UeXBlcy5TdHJpbmcsXG4gICAgbWVudVRhYnM6IFsnZmlsdGVyTWVudVRhYiddLFxuICAgIGhlYWRlckNvbXBvbmVudEZyYW1ld29yazogRGF0b0dyaWRDb2x1bW5IZWFkZXJDb21wb25lbnRcbiAgfSxcbiAgc3VwcHJlc3NDZWxsU2VsZWN0aW9uOiB0cnVlLFxuICBzdXBwcmVzc1Byb3BlcnR5TmFtZXNDaGVjazogdHJ1ZSxcbiAgcm93SGVpZ2h0OiAzNSxcbiAgaGVhZGVySGVpZ2h0OiAzMCxcbiAgcm93U2VsZWN0aW9uOiBHcmlkUm93U2VsZWN0aW9uVHlwZS5NVUxUSVBMRSxcbiAgcm93RGVzZWxlY3Rpb246IHRydWUsXG4gIHVuU29ydEljb246IHRydWUsXG4gIGFuaW1hdGVSb3dzOiB0cnVlLFxuICByZW1lbWJlckdyb3VwU3RhdGVXaGVuTmV3RGF0YTogdHJ1ZSxcbiAgZ3JvdXBNdWx0aUF1dG9Db2x1bW46IHRydWUsXG4gIGdyb3VwRGVmYXVsdEV4cGFuZGVkOiAtMSxcbiAgdXNlUGl2b3RHcmlkU3R5bGU6IGZhbHNlLFxuICBkaXNhYmxlZEhUTUxSZW5kZXJpbmdGaWVsZHM6IFtdLFxuICAuLi4oaXNUZXN0RW52KCkgPyB7IHN1cHByZXNzQ29sdW1uVmlydHVhbGlzYXRpb246IHRydWUsIHJvd0J1ZmZlcjogOTk5OTkgfSA6IHt9KVxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfR1JJRF9TRUFSQ0hfREVCT1VOQ0VfVElNRSA9IHtcbiAgQ0xJRU5UOiAyMDAsXG4gIFNFUlZFUjogMjUwXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEdyaWRUcmVlTGFiZWw6IERhdG9HcmlkVHJlZUNvbmZpZyA9IHtcbiAgaWRLZXk6ICdpZCcsXG4gIHBhcmVudElES2V5OiAncGFyZW50SUQnXG59O1xuXG5leHBvcnQgY29uc3QgZ3JpZFRyZWVGaWxlUGF0aEtleSA9ICdhZ0dyaWRGaWxlUGF0aCc7XG5cbi8qKlxuICogQ2VsbCByZW5kZXJlciBmb3IgdHJlZSBzdHJ1Y3R1cmUuXG4gKi9cbmZ1bmN0aW9uIGdldEdyaWRUcmVlQ2VsbFJlbmRlcmVyKCkge1xuICByZXR1cm4gaXRlbSA9PiB7XG4gICAgY29uc3QgeyBkYXRhLCBlR3JpZENlbGwsIGNvbERlZiB9ID0gaXRlbTtcbiAgICBjb25zdCB7IGljb246IGl0ZW1JY29uLCBpc0ZvbGRlciwgaW5pdGlhbHMgPSB0cnVlIH0gPSBkYXRhO1xuICAgIGNvbnN0IGljb24gPSBnZXRSb3dJY29uKGl0ZW1JY29uLCBlR3JpZENlbGwsIGlzRm9sZGVyKTtcbiAgICBjb25zdCBkaXNwbGF5TmFtZSA9IGRhdGFbY29sRGVmWydmaWVsZCddXTtcbiAgICBjb25zdCBlbnRpdHlDbGFzc05hbWUgPSAnZW50aXR5LWRpc3BsYXktbmFtZSc7XG4gICAgY29uc3QgeyBzdmdSZWdpc3RyeSB9ID0gY29sRGVmLmdyaWRTZXJ2aWNlO1xuXG4gICAgaWYgKGlzRm9sZGVyKSB7XG4gICAgICBzZXRFbXB0eUZvbGRlckNsYXNzKGl0ZW0ubm9kZSk7XG4gICAgfVxuXG4gICAgaWYgKGljb24pIHtcbiAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJkYXRvLXNpbXBsZS1ib2xkXCI+IDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIGZvbGRlciBkLWZsZXhcIj4ke3N2Z1JlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgaWNvblxuICAgICAgKX08L3NwYW4+PHNwYW4gY2xhc3M9XCIke2VudGl0eUNsYXNzTmFtZX1cIj48L3NwYW4+ICR7ZGlzcGxheU5hbWV9PC9zcGFuPmA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc0ZvbGRlcikge1xuICAgICAgICBzZXRFbXB0eUZvbGRlckNsYXNzKGl0ZW0pO1xuICAgICAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwiJHtlbnRpdHlDbGFzc05hbWV9IGRhdG8tc2ltcGxlLWJvbGRcIj4ke2Rpc3BsYXlOYW1lfTwvc3Bhbj5gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGluaXRpYWxzKSB7XG4gICAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZ2V0SW5pdGlhbHMoZGlzcGxheU5hbWUpO1xuICAgICAgICAgIGlmIChpbml0aWFsVmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCIke2VudGl0eUNsYXNzTmFtZX0gZGF0by1zaW1wbGUtYm9sZFwiPjxzcGFuIGNsYXNzPVwiaW5pdGlhbHNcIj4ke2luaXRpYWxWYWx1ZX08L3NwYW4+JHtkaXNwbGF5TmFtZX08L3NwYW4+YDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cIiR7ZW50aXR5Q2xhc3NOYW1lfSBkYXRvLXNpbXBsZS1ib2xkXCI+JHtkaXNwbGF5TmFtZX08L3NwYW4+YDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cIiR7ZW50aXR5Q2xhc3NOYW1lfSBkYXRvLXNpbXBsZS1ib2xkXCI+JHtkaXNwbGF5TmFtZX08L3NwYW4+YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSByb3cncyBpY29uLlxuICogSWYgaWNvbiBpcyBvZiB0eXBlIHN0cmluZywgUmV0dXJuIGl0LlxuICogSWYgaXQgYW4gb2JqZWN0LCBSZXR1cm4gYmFzZWQgb24gdGhlIGV4cGFuZCAvIGNvbGxhcHNlIHN0YXRlLlxuICogQHBhcmFtIGljb25cbiAqIEBwYXJhbSBlR3JpZENlbGxcbiAqIEBwYXJhbSBpc0ZvbGRlclxuICovXG5mdW5jdGlvbiBnZXRSb3dJY29uKGljb246IEFnR3JpZFJvd0ljb24sIGVHcmlkQ2VsbDogYW55LCBpc0ZvbGRlcjogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChpY29uID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBnZXRJY29uQmFzZWRPblJvd1N0YXRlID0gKGVHcmlkQ2VsbCwgeyBleHBhbmRlZCwgY29sbGFwc2VkIH0pID0+IHtcbiAgICBjb25zdCBhZ0dyaWRSb3dFeHBhbmRlZENsYXNzID0gJ2FnLXJvdy1ncm91cC1leHBhbmRlZCc7XG4gICAgcmV0dXJuIGVHcmlkQ2VsbC5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhhZ0dyaWRSb3dFeHBhbmRlZENsYXNzKSA/IGV4cGFuZGVkIDogY29sbGFwc2VkO1xuICB9O1xuXG4gIC8qKlxuICAgKiBJZiBpY29uIHdhc24ndCBvdmVycmlkZSBieSB0aGUgdXNlciBhbmQgdGhlIHJvdyBpcyBvZiB0eXBlIGZvbGRlcixcbiAgICogU2V0IGRlZmF1bHQgZm9sZGVyIGljb25zLlxuICAgKi9cbiAgaWYgKGljb24gPT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChpc0ZvbGRlcikge1xuICAgICAgY29uc3QgZGVmYXVsdEZvbGRlckljb25zOiBBZ0dyaWRSb3dJY29uID0ge1xuICAgICAgICBleHBhbmRlZDogJ2ZvbGRlci1vcGVuJyxcbiAgICAgICAgY29sbGFwc2VkOiAnZm9sZGVyLWNsb3NlZCdcbiAgICAgIH07XG4gICAgICByZXR1cm4gZ2V0SWNvbkJhc2VkT25Sb3dTdGF0ZShlR3JpZENlbGwsIGRlZmF1bHRGb2xkZXJJY29ucyk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVvZiBpY29uID09PSAnc3RyaW5nJyA/IGljb24gOiBnZXRJY29uQmFzZWRPblJvd1N0YXRlKGVHcmlkQ2VsbCwgaWNvbik7XG59XG5cbmxldCBwb3RlbnRpYWxQYXJlbnQgPSBudWxsO1xuY29uc3QgYWdSb3dIb3ZlckNsYXNzTmFtZSA9ICdhZy1yb3ctaG92ZXInO1xuXG5sZXQgdXBkYXRpbmdDaGVja2JveGVzUHJvZ3JhbW1hdGljYWxseSA9IGZhbHNlO1xuXG5mdW5jdGlvbiBnZXRDZWxsQnlSb3dJRChyb3dJRDogc3RyaW5nKSB7XG4gIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbcm93LWlkPVwiJHtyb3dJRH1cIl0gPiAuYWctY2VsbGApO1xufVxuXG4vKipcbiAqIE1hcmsgcGFyZW50IGZvbGRlciBvZiB0aGUgb3Zlck5vZGUgYXMgaG92ZXJlZCBpbiBvcmRlciB0byBhcHBseVxuICogcmVsZXZhbnQgY3NzIHN0eWxlIHRvIGl0LlxuICogQHBhcmFtIG92ZXJOb2RlXG4gKi9cbmZ1bmN0aW9uIG9uUm93RHJhZ01vdmUoeyBvdmVyTm9kZSwgbm9kZSB9KSB7XG4gIGxldCBmb2xkZXJUb0Ryb3BJbnRvO1xuXG4gIGlmIChvdmVyTm9kZSkge1xuICAgIC8vIGZvbGRlciB0byBkcm9wIGludG8gaXMgd2hlcmUgd2UgYXJlIGdvaW5nIHRvIG1vdmUgdGhlIGZpbGUvZm9sZGVyIHRvXG4gICAgZm9sZGVyVG9Ecm9wSW50byA9IG92ZXJOb2RlLmRhdGEuaXNGb2xkZXJcbiAgICAgID8gLy8gaWYgb3ZlciBhIGZvbGRlciwgd2UgdGFrZSB0aGUgaW1tZWRpYXRlIHJvd1xuICAgICAgICBvdmVyTm9kZVxuICAgICAgOiAvLyBpZiBvdmVyIGEgZmlsZSwgd2UgdGFrZSB0aGUgcGFyZW50IHJvdyAod2hpY2ggd2lsbCBiZSBhIGZvbGRlcilcbiAgICAgICAgb3Zlck5vZGUucGFyZW50O1xuICB9IGVsc2Uge1xuICAgIGZvbGRlclRvRHJvcEludG8gPSBub2RlLnJvd01vZGVsLnJvb3ROb2RlO1xuICB9XG5cbiAgaWYgKHBvdGVudGlhbFBhcmVudCkge1xuICAgIGlmIChwb3RlbnRpYWxQYXJlbnQuaWQgPT09IGZvbGRlclRvRHJvcEludG8uaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcHJldmlvdXNQb3RlbnRpYWxQYXJlbnQgPSBnZXRDZWxsQnlSb3dJRChwb3RlbnRpYWxQYXJlbnQuaWQpO1xuICAgICAgcHJldmlvdXNQb3RlbnRpYWxQYXJlbnQgJiYgcHJldmlvdXNQb3RlbnRpYWxQYXJlbnQuY2xhc3NMaXN0LnJlbW92ZShhZ1Jvd0hvdmVyQ2xhc3NOYW1lKTtcbiAgICAgIHBvdGVudGlhbFBhcmVudCA9IG51bGw7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHBvdGVudGlhbFBhcmVudCA9IGZvbGRlclRvRHJvcEludG87XG4gIH1cbiAgaWYgKGZvbGRlclRvRHJvcEludG8pIHtcbiAgICBjb25zdCBmb2xkZXJJRDogc3RyaW5nID0gZm9sZGVyVG9Ecm9wSW50by5pZDtcbiAgICBjb25zdCBmb2xkZXJUb0Ryb3BJbnRvRWxlbWVudCA9IGdldENlbGxCeVJvd0lEKGZvbGRlcklEKTtcbiAgICBmb2xkZXJUb0Ryb3BJbnRvRWxlbWVudCAmJiBmb2xkZXJUb0Ryb3BJbnRvRWxlbWVudC5jbGFzc0xpc3QuYWRkKGFnUm93SG92ZXJDbGFzc05hbWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9uUm93RHJhZ0VuZCh7IG92ZXJOb2RlLCBub2RlIH0pIHtcbiAgbGV0IG5vZGVQYXJlbnQ7XG4gIGxldCBmb2xkZXJUb0Ryb3BJbnRvO1xuICBpZiAob3Zlck5vZGUpIHtcbiAgICBub2RlUGFyZW50ID0gbm9kZS5wYXJlbnQ7XG4gICAgLy8gZm9sZGVyIHRvIGRyb3AgaW50byBpcyB3aGVyZSB3ZSBhcmUgZ29pbmcgdG8gbW92ZSB0aGUgZmlsZS9mb2xkZXIgdG9cbiAgICBmb2xkZXJUb0Ryb3BJbnRvID0gb3Zlck5vZGUuZGF0YS5pc0ZvbGRlclxuICAgICAgPyAvLyBpZiBvdmVyIGEgZm9sZGVyLCB3ZSB0YWtlIHRoZSBpbW1lZGlhdGUgcm93XG4gICAgICAgIG92ZXJOb2RlXG4gICAgICA6IC8vIGlmIG92ZXIgYSBmaWxlLCB3ZSB0YWtlIHRoZSBwYXJlbnQgcm93ICh3aGljaCB3aWxsIGJlIGEgZm9sZGVyKVxuICAgICAgICBvdmVyTm9kZS5wYXJlbnQ7XG4gIH0gZWxzZSB7XG4gICAgbm9kZVBhcmVudCA9IG5vZGUucm93TW9kZWwucm9vdE5vZGU7XG4gICAgZm9sZGVyVG9Ecm9wSW50byA9IG5vZGUucm93TW9kZWwucm9vdE5vZGU7XG4gIH1cblxuICAvLyB0aGUgZGF0YSB3ZSB3YW50IHRvIG1vdmVcbiAgY29uc3QgbW92aW5nRGF0YSA9IG5vZGUuZGF0YTtcblxuICBjb25zdCB0cmVlTWF4RGVwdGg6IG51bWJlciA9IG5vZGUuZ3JpZE9wdGlvbnNXcmFwcGVyLmdyaWRPcHRpb25zLm1heERlcHRoIHx8IC0xO1xuICAvLyBEaXNhYmxlIG5lc3RlZCBkcmFnIHdoZW4gdHJlZSBkZXB0aCBpcyBhYm92ZSB0aGUgbGltaXRcbiAgaWYgKFxuICAgIG1vdmluZ0RhdGEuaXNGb2xkZXIgJiZcbiAgICB0cmVlTWF4RGVwdGggIT09IC0xICYmXG4gICAgbm9kZVBhcmVudC5pZCAhPT0gUk9PVF9OT0RFX0lEICYmXG4gICAgb3Zlck5vZGUuZGF0YS5hZ0dyaWRGaWxlUGF0aC5sZW5ndGggPiB0cmVlTWF4RGVwdGhcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gdGFrZSBuZXcgcGFyZW50IHBhdGggZnJvbSBwYXJlbnQsIGlmIGRhdGEgaXMgbWlzc2luZywgbWVhbnMgaXQncyB0aGUgcm9vdCBub2RlLFxuICAvLyB3aGljaCBoYXMgbm8gZGF0YS5cbiAgY29uc3QgbmV3UGFyZW50UGF0aCA9IGZvbGRlclRvRHJvcEludG8uZGF0YSA/IGZvbGRlclRvRHJvcEludG8uZGF0YVtncmlkVHJlZUZpbGVQYXRoS2V5XSA6IFtdO1xuICBjb25zdCBuZWVkVG9DaGFuZ2VQYXJlbnQgPSAhaXNFcXVhbChuZXdQYXJlbnRQYXRoLCBtb3ZpbmdEYXRhW2dyaWRUcmVlRmlsZVBhdGhLZXldKTtcblxuICAvLyBjaGVjayB3ZSBhcmUgbm90IG1vdmluZyBhIGZvbGRlciBpbnRvIGEgY2hpbGQgZm9sZGVyXG4gIGNvbnN0IGludmFsaWRNb2RlID0gaXNTZWxlY3Rpb25QYXJlbnRPZlRhcmdldChub2RlLCBmb2xkZXJUb0Ryb3BJbnRvKTtcbiAgaWYgKGludmFsaWRNb2RlKSB7XG4gICAgY29uc29sZS5sb2coJ2ludmFsaWQgbW92ZScpO1xuICB9XG5cbiAgaWYgKG5lZWRUb0NoYW5nZVBhcmVudCAmJiAhaW52YWxpZE1vZGUpIHtcbiAgICBjb25zdCB1cGRhdGVkUm93cyA9IFtdO1xuICAgIGNvbnN0IHsgaWRLZXkgfTogRGF0b0dyaWRUcmVlQ29uZmlnID0gdGhpcy5hdXRvR3JvdXBDb2x1bW5EZWYuZ3JpZFNlcnZpY2UudHJlZUNvbmZpZztcbiAgICBtb3ZlVG9QYXRoKG5ld1BhcmVudFBhdGgsIG5vZGUsIHVwZGF0ZWRSb3dzLCBpZEtleSk7XG5cbiAgICBjb25zdCBhZmZlY3RlZFJvd3MgPSB0aGlzLmF1dG9Hcm91cENvbHVtbkRlZi5ncmlkU2VydmljZS51cGRhdGVSb3dzKHVwZGF0ZWRSb3dzKTtcblxuICAgIHNldFJvd0NsYXNzZXMoWy4uLmFmZmVjdGVkUm93cy51cGRhdGUsIG92ZXJOb2RlLCBub2RlUGFyZW50XSk7XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBwcmV2aW91cyBtYXJrZWQgcGFyZW50IGZyb20gaG92ZXIgc3R5bGUuXG4gICAgICovXG4gICAgY29uc3QgaG92ZXJlZFBhcmVudEVsZW1lbnQgPSBnZXRDZWxsQnlSb3dJRChwb3RlbnRpYWxQYXJlbnQuaWQpO1xuICAgIGhvdmVyZWRQYXJlbnRFbGVtZW50ICYmIGhvdmVyZWRQYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoYWdSb3dIb3ZlckNsYXNzTmFtZSk7XG4gICAgcG90ZW50aWFsUGFyZW50ID0gbnVsbDtcblxuICAgIHRoaXMuYXBpLmNsZWFyRm9jdXNlZENlbGwoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXRSb3dDbGFzc2VzKHJvd3MpIHtcbiAgY29uc3QgY2xhc3NMaXN0ID0gW2Ake2FnUm93TGV2ZWxQcmVmaXh9MWAsIGAke2FnUm93TGV2ZWxQcmVmaXh9MmAsIGAke2FnUm93TGV2ZWxQcmVmaXh9M2BdO1xuICByb3dzLmZvckVhY2gocm93ID0+IHtcbiAgICBjb25zdCBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW3Jvdy1pZD1cIiR7cm93LmlkfVwiXWApWzFdO1xuICAgIGlmIChub2RlKSB7XG4gICAgICBmb3IgKGNvbnN0IGNsYXNzTmFtZSBvZiBjbGFzc0xpc3QpIHtcbiAgICAgICAgaWYgKG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcbiAgICAgICAgICBub2RlLmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbm9kZS5jbGFzc0xpc3QuYWRkKGAke2FnUm93TGV2ZWxQcmVmaXh9JHtyb3cubGV2ZWx9YCk7XG5cbiAgICAgIGlmIChyb3cuZGF0YS5pc0ZvbGRlcikge1xuICAgICAgICBzZXRFbXB0eUZvbGRlckNsYXNzKHJvdywgbm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEVtcHR5Rm9sZGVyQ2xhc3Mocm93LCBub2RlPykge1xuICBjb25zdCBjdXJyZW50Tm9kZSA9IG5vZGUgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW3Jvdy1pZD1cIiR7cm93LmlkfVwiXWApWzBdO1xuICBpZiAoIWN1cnJlbnROb2RlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChzaXplKHJvdy5jaGlsZHJlbkFmdGVyR3JvdXApID09PSAwKSB7XG4gICAgY3VycmVudE5vZGUuY2xhc3NMaXN0LmFkZChlbXB0eUZvbGRlckNsYXNzTmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgY3VycmVudE5vZGUuY2xhc3NMaXN0LnJlbW92ZShlbXB0eUZvbGRlckNsYXNzTmFtZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gb25Sb3dTZWxlY3RlZChwYXJhbXMpIHtcbiAgaWYgKHVwZGF0aW5nQ2hlY2tib3hlc1Byb2dyYW1tYXRpY2FsbHkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdXBkYXRpbmdDaGVja2JveGVzUHJvZ3JhbW1hdGljYWxseSA9IHRydWU7XG5cbiAgc2V0Q2hpbGRyZW5TZWxlY3Rpb25TdGF0dXMocGFyYW1zLm5vZGUsIHBhcmFtcy5ub2RlLnNlbGVjdGVkKTtcbiAgcmVmcmVzaFBhcmVudHNTZWxlY3Rpb25TdGF0dXNSZWN1cnNpdmVseShwYXJhbXMubm9kZSk7XG5cbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgdXBkYXRpbmdDaGVja2JveGVzUHJvZ3JhbW1hdGljYWxseSA9IGZhbHNlO1xuICB9LCAwKTtcbn1cblxuZnVuY3Rpb24gc2V0Q2hpbGRyZW5TZWxlY3Rpb25TdGF0dXMobm9kZSwgc2VsZWN0ZWQpIHtcbiAgbGV0IGhhc0NoaWxkcmVuID0gbm9kZS5hbGxDaGlsZHJlbkNvdW50ID4gMDtcbiAgaWYgKGhhc0NoaWxkcmVuKSB7XG4gICAgbm9kZS5hbGxMZWFmQ2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICBjaGlsZC5zZXRTZWxlY3RlZChzZWxlY3RlZCk7XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVmcmVzaFBhcmVudHNTZWxlY3Rpb25TdGF0dXNSZWN1cnNpdmVseShub2RlKSB7XG4gIGxldCBwYXJlbnROb2RlID0gbm9kZS5wYXJlbnQ7XG4gIHdoaWxlIChwYXJlbnROb2RlKSB7XG4gICAgaWYgKHBhcmVudE5vZGUuaWQgPT09IFJPT1RfTk9ERV9JRCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmVmcmVzaFNlbGVjdGlvblN0YXR1cyhwYXJlbnROb2RlKTtcbiAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5wYXJlbnQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVmcmVzaFNlbGVjdGlvblN0YXR1cyhub2RlKSB7XG4gIGxldCBjaGlsZHJlblNlbGVjdGlvblN0YXR1cyA9IG5vZGUuYWxsTGVhZkNoaWxkcmVuLm1hcChub2RlID0+IG5vZGUuc2VsZWN0ZWQpO1xuXG4gIGlmIChjaGlsZHJlblNlbGVjdGlvblN0YXR1cy5ldmVyeShzZWxlY3RlZFZhbHVlID0+IHNlbGVjdGVkVmFsdWUgPT09IHRydWUgfHwgc2VsZWN0ZWRWYWx1ZSA9PT0gdW5kZWZpbmVkKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjaGlsZHJlblNlbGVjdGlvblN0YXR1cy5zaGlmdCgpO1xuXG4gIGxldCBub2RlU2VsZWN0aW9uU3RhdHVzID0gY2hpbGRyZW5TZWxlY3Rpb25TdGF0dXMucmVkdWNlKChhLCBiKSA9PiB7XG4gICAgaWYgKGEgPT09IGIpIHtcbiAgICAgIHJldHVybiBhO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9KTtcblxuICBub2RlLnNlbGVjdFRoaXNOb2RlKG5vZGVTZWxlY3Rpb25TdGF0dXMpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgc2VsZWN0ZWQgbm9kZSBpcyBhIGNoaWxkIG9mIHRoZSB0YXJnZXQgcG9zaXRpb24uXG4gKiBAcGFyYW0gc2VsZWN0ZWROb2RlXG4gKiBAcGFyYW0gdGFyZ2V0Tm9kZVxuICovXG5mdW5jdGlvbiBpc1NlbGVjdGlvblBhcmVudE9mVGFyZ2V0KHNlbGVjdGVkTm9kZSwgdGFyZ2V0Tm9kZSk6IGJvb2xlYW4ge1xuICBjb25zdCBjaGlsZHJlbiA9IHNlbGVjdGVkTm9kZS5jaGlsZHJlbkFmdGVyR3JvdXA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAodGFyZ2V0Tm9kZSAmJiBjaGlsZHJlbltpXS5rZXkgPT09IHRhcmdldE5vZGUua2V5KSByZXR1cm4gdHJ1ZTtcbiAgICBpc1NlbGVjdGlvblBhcmVudE9mVGFyZ2V0KGNoaWxkcmVuW2ldLCB0YXJnZXROb2RlKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiB0aGlzIHVwZGF0ZXMgdGhlIGZpbGVQYXRoIGxvY2F0aW9ucyBpbiBvdXIgZGF0YSwgd2UgdXBkYXRlIHRoZSBkYXRhXG4gYmVmb3JlIHdlIHNlbmQgaXQgdG8gYWctR3JpZFxuICovXG5mdW5jdGlvbiBtb3ZlVG9QYXRoKG5ld1BhcmVudFBhdGgsIHsgZGF0YSwgY2hpbGRyZW5BZnRlckdyb3VwIH0sIGFsbFVwZGF0ZWROb2RlcywgaWRLZXk6IHN0cmluZykge1xuICAvLyBsYXN0IHBhcnQgb2YgdGhlIGZpbGUgcGF0aCBpcyB0aGUgZmlsZSBuYW1lXG4gIGNvbnN0IG5ld0NoaWxkUGF0aCA9IG5ld1BhcmVudFBhdGguc2xpY2UoKTtcblxuICBkYXRhW2dyaWRUcmVlRmlsZVBhdGhLZXldID0gbmV3Q2hpbGRQYXRoO1xuXG4gIGFsbFVwZGF0ZWROb2Rlcy5wdXNoKGRhdGEpO1xuXG4gIGlmIChzaXplKGNoaWxkcmVuQWZ0ZXJHcm91cCkgPiAwKSB7XG4gICAgY2hpbGRyZW5BZnRlckdyb3VwLmZvckVhY2goZnVuY3Rpb24oY2hpbGROb2RlKSB7XG4gICAgICBtb3ZlVG9QYXRoKFsuLi5uZXdDaGlsZFBhdGgsIGRhdGFbaWRLZXldXSwgY2hpbGROb2RlLCBhbGxVcGRhdGVkTm9kZXMsIGlkS2V5KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRhdGFbZ3JpZFRyZWVGaWxlUGF0aEtleV0ucHVzaChkYXRhW2lkS2V5XSk7XG59XG5cbi8qKlxuICogQ29udmVydCBkYXRhIGludG8gdHJlZSBzaGFwZWQgc3RydWN0dXJlLlxuICogQHBhcmFtIGRhdGFcbiAqIEBwYXJhbSBncmlkVHJlZUNvbmZpZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvVHJlZURhdGE8VD4oZGF0YTogVFtdLCBncmlkVHJlZUNvbmZpZzogRGF0b0dyaWRUcmVlQ29uZmlnKTogVFtdIHtcbiAgY29uc3QgeyBwYXJlbnRJREtleSwgaWRLZXkgfSA9IGdyaWRUcmVlQ29uZmlnO1xuICBjb25zdCBnZW5lcmF0ZUZpbGVQYXRoID0gKGl0ZW0sIGluaXRDaGlsZCA9IGZhbHNlKTogSURbXSA9PiB7XG4gICAgY29uc3QgcGF0aDogSURbXSA9IGluaXRDaGlsZCA/IFtpdGVtW2lkS2V5XV0gOiBbXTtcbiAgICBjb25zdCBwYXJlbnRFbnRpdHkgPSBkYXRhLmZpbmQoZW50aXR5ID0+IGVudGl0eVtpZEtleV0gPT09IGl0ZW1bcGFyZW50SURLZXldKTtcbiAgICBwYXRoLnVuc2hpZnQocGFyZW50RW50aXR5W2lkS2V5XSk7XG5cbiAgICBpZiAocGFyZW50RW50aXR5W3BhcmVudElES2V5XSkge1xuICAgICAgY29uc3QgZW50aXR5UGF0aCA9IGdlbmVyYXRlRmlsZVBhdGgocGFyZW50RW50aXR5KTtcbiAgICAgIHBhdGgudW5zaGlmdCguLi5lbnRpdHlQYXRoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfTtcblxuICAvKipcbiAgICogV2hlbiB0aGVyZSdzIG5vIHBhcmVudElELCBTZXQgdGhlIGl0ZW0gaW4gdG8gcm9vdCBvZiB0aGUgdHJlZS5cbiAgICogRWxzZSwgUmVjdXJzaXZlbHkgY3JlYXRlIHRoZSBwYXRoLlxuICAgKi9cbiAgcmV0dXJuIGRhdGEubWFwKGl0ZW0gPT4ge1xuICAgIGlmIChpdGVtW3BhcmVudElES2V5XSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgW2dyaWRUcmVlRmlsZVBhdGhLZXldOiBnZW5lcmF0ZUZpbGVQYXRoKGl0ZW0sIHRydWUpXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBbZ3JpZFRyZWVGaWxlUGF0aEtleV06IFtpdGVtW2lkS2V5XV1cbiAgICAgIH07XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IHRoZSBncmlkcyBkYXRhIGZyb20gdHJlZSBzaGFwZSB0byBvcmlnaW5hbCBzaGFwZS5cbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gZ3JpZFRyZWVDb25maWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRGcm9tVHJlZURhdGE8VD4oZGF0YTogVFtdLCBncmlkVHJlZUNvbmZpZzogRGF0b0dyaWRUcmVlQ29uZmlnKTogVFtdIHtcbiAgcmV0dXJuIGRhdGEubWFwKCh7IC4uLnJvdyB9KSA9PiB7XG4gICAgY29uc3QgcGF0aDogSURbXSA9IHJvd1tncmlkVHJlZUZpbGVQYXRoS2V5XTtcbiAgICBjb25zdCBwYXJlbnRJRDogSUQgPSBzaXplKHBhdGgpID4gMSA/IHBhdGhbcGF0aC5sZW5ndGggLSAyXSA6IDA7XG4gICAgZGVsZXRlIHJvd1tncmlkVHJlZUZpbGVQYXRoS2V5XTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucm93LFxuICAgICAgW2dyaWRUcmVlQ29uZmlnLnBhcmVudElES2V5XTogcGFyZW50SURcbiAgICB9O1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZWZyZXNoIGV4cGFuZGVkIC8gY29sbGFwc2VkIHJvdyBmb3IgdGhlIGdyaWQgdG8gZGV0ZWN0XG4gKiB0aGUgY2hhbmdlLlxuICogQHBhcmFtIG5vZGVcbiAqL1xuZnVuY3Rpb24gcm93R3JvdXBPcGVuZWQoeyBub2RlIH0pIHtcbiAgdGhpcy5hcGkucmVmcmVzaENlbGxzKHsgZm9yY2U6IHRydWUsIHJvd05vZGVzOiBbbm9kZV0gfSk7XG59XG4iXX0=