@unipin/angular-applet 17.4.0 → 17.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/esm2022/lib/components/approval/detail/approval-detail.component.mjs +8 -6
  2. package/esm2022/lib/components/approval/form/approval-form.component.mjs +5 -5
  3. package/esm2022/lib/components/approval/list/approval-list.component.mjs +14 -8
  4. package/esm2022/lib/components/approval/services/approval.service.mjs +4 -4
  5. package/esm2022/lib/components/audit/detail/audit-detail.component.mjs +4 -4
  6. package/esm2022/lib/components/audit/list/audit-list.component.mjs +4 -4
  7. package/esm2022/lib/components/audit/service/audit.service.mjs +4 -4
  8. package/esm2022/lib/components/buttons/group/btn-group.component.mjs +4 -4
  9. package/esm2022/lib/components/buttons/loading/btn-loading.component.mjs +4 -4
  10. package/esm2022/lib/components/containers/applet-container/applet-container.component.mjs +21 -8
  11. package/esm2022/lib/components/containers/colum-header-container/column-header-container.component.mjs +5 -5
  12. package/esm2022/lib/components/containers/column-container/column-container.component.mjs +25 -9
  13. package/esm2022/lib/components/containers/column-container/directives/lazy-route.directive.mjs +4 -4
  14. package/esm2022/lib/components/containers/list-container/list-pagination-container/list-pagination-container.component.mjs +5 -5
  15. package/esm2022/lib/components/containers/list-container/list-snapshot-container/list-snapshot-container.component.mjs +5 -5
  16. package/esm2022/lib/components/containers/modal-container/modal-container.component.mjs +9 -8
  17. package/esm2022/lib/components/filter/filter.component.mjs +5 -5
  18. package/esm2022/lib/components/forms/currency-input/form-currency-input.component.mjs +4 -4
  19. package/esm2022/lib/components/forms/date/form-date.component.mjs +4 -4
  20. package/esm2022/lib/components/forms/image-picker/directives/drag-n-drop.directive.mjs +4 -4
  21. package/esm2022/lib/components/forms/image-picker/form-image-picker.component.mjs +4 -4
  22. package/esm2022/lib/components/forms/input/form-input.component.mjs +4 -4
  23. package/esm2022/lib/components/forms/number/form-number.component.mjs +4 -4
  24. package/esm2022/lib/components/forms/number/pipes/locale-number.pipe.mjs +4 -4
  25. package/esm2022/lib/components/forms/password/form-password.component.mjs +4 -4
  26. package/esm2022/lib/components/forms/searchable-select/form-searchable-select.component.mjs +4 -4
  27. package/esm2022/lib/components/forms/select/form-select.component.mjs +6 -6
  28. package/esm2022/lib/components/forms/textarea/form-textarea.component.mjs +4 -4
  29. package/esm2022/lib/components/grids/grid-pagination/grid-pagination.component.mjs +4 -4
  30. package/esm2022/lib/components/grids/grid-snapshot/grid-snapshot.component.mjs +4 -4
  31. package/esm2022/lib/components/grids/services/grid.service.mjs +9 -5
  32. package/esm2022/lib/components/tabs/tab-content/tab-content.component.mjs +4 -4
  33. package/esm2022/lib/components/tabs/tab-group/tab-group.component.mjs +4 -4
  34. package/esm2022/lib/components/tabs/tabs.component.module.mjs +5 -5
  35. package/esm2022/lib/interceptors/header/header.interceptor.mjs +4 -4
  36. package/esm2022/lib/interceptors/refresh-token/refresh-token.interceptor.mjs +4 -4
  37. package/esm2022/lib/modules/permission/directive/permission.directive.mjs +4 -4
  38. package/esm2022/lib/modules/permission/pages/401/unauthorized.page.mjs +4 -4
  39. package/esm2022/lib/modules/permission/pages/loading/loading.page.mjs +4 -4
  40. package/esm2022/lib/modules/permission/permission.module.mjs +5 -5
  41. package/esm2022/lib/modules/permission/services/permission.service.mjs +4 -4
  42. package/esm2022/lib/resolvers/auth/auth.resolver.mjs +4 -4
  43. package/esm2022/lib/services/auth/auth.service.mjs +11 -9
  44. package/esm2022/lib/services/country/country.service.mjs +4 -4
  45. package/esm2022/lib/services/currency/currency.service.mjs +4 -4
  46. package/esm2022/lib/services/profile/profile.service.mjs +4 -4
  47. package/fesm2022/unipin-angular-applet.mjs +214 -171
  48. package/fesm2022/unipin-angular-applet.mjs.map +1 -1
  49. package/lib/components/containers/applet-container/applet-container.component.d.ts +6 -2
  50. package/lib/components/containers/column-container/column-container.component.d.ts +2 -0
  51. package/lib/components/containers/modal-container/modal-container.component.d.ts +2 -1
  52. package/lib/components/grids/services/grid.service.d.ts +1 -1
  53. package/package.json +2 -2
  54. package/src/assets/scss/grid.scss +9 -0
  55. package/src/assets/scss/select.scss +1 -1
@@ -29,10 +29,10 @@ export class ListPaginationContainerComponent {
29
29
  this.onSearch.emit(k);
30
30
  this.gridApi.refreshInfiniteCache();
31
31
  }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ListPaginationContainerComponent, deps: [{ token: 'id', attribute: true }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: ListPaginationContainerComponent, isStandalone: true, selector: "up-list-pagination-container", inputs: { header: "header", config: "config" }, outputs: { onRowClick: "onRowClick", onGridReady: "onGridReady", onSearch: "onSearch" }, host: { classAttribute: "d-flex flex-column h-100 w-100" }, ngImport: i0, template: "<div class=\"d-flex align-items-center justify-content-between gap-4 p-4 flex-shrink-0 flex-wrap\">\n <div class=\"flex-grow-1 d-flex align-items-center gap-3\">\n <h3 class=\"m-0\">{{ header }}</h3>\n\n <up-btn-group *ngIf=\"config.buttons && config.buttons.length > 0\" id=\"btn-list-snapshot-container\" [config]=\"config.buttons\" />\n </div>\n\n <div class=\"flex-shrink-0 flex-grow-1\" *ngIf=\"config.filterConfig\">\n <up-filter placeholder=\"Type to search\" id=\"filter-{{ id }}\" [config]=\"config.filterConfig\" (onSearch)=\"search($event)\" />\n </div>\n</div>\n\n<div class=\"flex-grow-1 px-1 pb-1\">\n <up-pagination-grid [config]=\"config.gridConfig\" [id]=\"gridId\" (onGridReady)=\"setGridApi($event)\" (onRowClick)=\"openDetail($event)\" />\n</div>\n", styles: ["up-filter{min-width:300px}\n"], dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "component", type: FilterComponent, selector: "up-filter", inputs: ["id", "config"], outputs: ["onSearch"] }, { kind: "component", type: ButtonGroupComponent, selector: "up-btn-group", inputs: ["config"] }, { kind: "component", type: GridPaginationComponent, selector: "up-pagination-grid", inputs: ["config", "rowData", "id", "rowModelType", "rowSelection"], outputs: ["onRowClick", "onGridReady", "onSelectionChanged"] }] }); }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ListPaginationContainerComponent, deps: [{ token: 'id', attribute: true }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ListPaginationContainerComponent, isStandalone: true, selector: "up-list-pagination-container", inputs: { header: "header", config: "config" }, outputs: { onRowClick: "onRowClick", onGridReady: "onGridReady", onSearch: "onSearch" }, host: { classAttribute: "d-flex flex-column h-100 w-100" }, ngImport: i0, template: "<div class=\"d-flex align-items-center justify-content-between gap-4 p-4 flex-shrink-0 flex-wrap flex-md-nowrap\">\n <div class=\"flex-grow-1 d-flex align-items-center gap-2\">\n <h3 class=\"m-0 text-truncate\">{{ header }}</h3>\n\n <up-btn-group *ngIf=\"config.buttons && config.buttons.length > 0\" class=\"flex-shrink-0\" id=\"btn-list-snapshot-container\" [config]=\"config.buttons\" />\n </div>\n\n <div class=\"flex-shrink-0 flex-grow-1 flex-lg-grow-0\" *ngIf=\"config.filterConfig\">\n <up-filter placeholder=\"Type to search\" id=\"filter-{{ id }}\" [config]=\"config.filterConfig\" (onSearch)=\"search($event)\" />\n </div>\n</div>\n\n<div class=\"flex-grow-1 px-1 pb-1\">\n <up-pagination-grid [config]=\"config.gridConfig\" [id]=\"gridId\" (onGridReady)=\"setGridApi($event)\" (onRowClick)=\"openDetail($event)\" />\n</div>\n", styles: ["div:has(>up-filter){flex-basis:50%}@media (max-width: 576px){div:has(>up-filter){flex-basis:100%}}.flex-grow-1{min-width:0}\n"], dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "component", type: FilterComponent, selector: "up-filter", inputs: ["id", "config"], outputs: ["onSearch"] }, { kind: "component", type: ButtonGroupComponent, selector: "up-btn-group", inputs: ["config"] }, { kind: "component", type: GridPaginationComponent, selector: "up-pagination-grid", inputs: ["config", "rowData", "id", "rowModelType", "rowSelection"], outputs: ["onRowClick", "onGridReady", "onSelectionChanged"] }] }); }
34
34
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ListPaginationContainerComponent, decorators: [{
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ListPaginationContainerComponent, decorators: [{
36
36
  type: Component,
37
37
  args: [{ standalone: true, selector: 'up-list-pagination-container', host: {
38
38
  class: 'd-flex flex-column h-100 w-100'
@@ -43,7 +43,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
43
43
  FilterComponent,
44
44
  ButtonGroupComponent,
45
45
  GridPaginationComponent
46
- ], template: "<div class=\"d-flex align-items-center justify-content-between gap-4 p-4 flex-shrink-0 flex-wrap\">\n <div class=\"flex-grow-1 d-flex align-items-center gap-3\">\n <h3 class=\"m-0\">{{ header }}</h3>\n\n <up-btn-group *ngIf=\"config.buttons && config.buttons.length > 0\" id=\"btn-list-snapshot-container\" [config]=\"config.buttons\" />\n </div>\n\n <div class=\"flex-shrink-0 flex-grow-1\" *ngIf=\"config.filterConfig\">\n <up-filter placeholder=\"Type to search\" id=\"filter-{{ id }}\" [config]=\"config.filterConfig\" (onSearch)=\"search($event)\" />\n </div>\n</div>\n\n<div class=\"flex-grow-1 px-1 pb-1\">\n <up-pagination-grid [config]=\"config.gridConfig\" [id]=\"gridId\" (onGridReady)=\"setGridApi($event)\" (onRowClick)=\"openDetail($event)\" />\n</div>\n", styles: ["up-filter{min-width:300px}\n"] }]
46
+ ], template: "<div class=\"d-flex align-items-center justify-content-between gap-4 p-4 flex-shrink-0 flex-wrap flex-md-nowrap\">\n <div class=\"flex-grow-1 d-flex align-items-center gap-2\">\n <h3 class=\"m-0 text-truncate\">{{ header }}</h3>\n\n <up-btn-group *ngIf=\"config.buttons && config.buttons.length > 0\" class=\"flex-shrink-0\" id=\"btn-list-snapshot-container\" [config]=\"config.buttons\" />\n </div>\n\n <div class=\"flex-shrink-0 flex-grow-1 flex-lg-grow-0\" *ngIf=\"config.filterConfig\">\n <up-filter placeholder=\"Type to search\" id=\"filter-{{ id }}\" [config]=\"config.filterConfig\" (onSearch)=\"search($event)\" />\n </div>\n</div>\n\n<div class=\"flex-grow-1 px-1 pb-1\">\n <up-pagination-grid [config]=\"config.gridConfig\" [id]=\"gridId\" (onGridReady)=\"setGridApi($event)\" (onRowClick)=\"openDetail($event)\" />\n</div>\n", styles: ["div:has(>up-filter){flex-basis:50%}@media (max-width: 576px){div:has(>up-filter){flex-basis:100%}}.flex-grow-1{min-width:0}\n"] }]
47
47
  }], ctorParameters: () => [{ type: undefined, decorators: [{
48
48
  type: Attribute,
49
49
  args: ['id']
@@ -60,4 +60,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
60
60
  }], onSearch: [{
61
61
  type: Output
62
62
  }] } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1wYWdpbmF0aW9uLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmlwaW4tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvY29udGFpbmVycy9saXN0LWNvbnRhaW5lci9saXN0LXBhZ2luYXRpb24tY29udGFpbmVyL2xpc3QtcGFnaW5hdGlvbi1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pcGluLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2NvbnRhaW5lcnMvbGlzdC1jb250YWluZXIvbGlzdC1wYWdpbmF0aW9uLWNvbnRhaW5lci9saXN0LXBhZ2luYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQVUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQW1CekQsTUFBTSxPQUFPLGdDQUFnQztJQTZDM0MsWUFDMEIsRUFBVSxFQUNmLE1BQWM7UUFEVCxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTVCVCxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFRbkQsZ0JBQVcsR0FBaUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVEvRCxhQUFRLEdBQW9DLElBQUksWUFBWSxFQUFFLENBQUM7UUFPbEYsV0FBTSxHQUF1QixRQUFTLElBQUksQ0FBQyxFQUFFLElBQUcsR0FBSSxFQUFFLENBQUM7SUFNMUQsQ0FBQztJQVdFLFVBQVUsQ0FBQyxJQUFTO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUUsR0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQVEsR0FBSSxJQUFJLENBQUMsSUFBSyxFQUFFLENBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakcsQ0FBQztJQVVNLFVBQVUsQ0FBQyxFQUFrQjtRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQVFNLE1BQU0sQ0FBQyxDQUFvQjtRQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDdEMsQ0FBQzs4R0F0RlUsZ0NBQWdDLGtCQThDOUIsSUFBSTtrR0E5Q04sZ0NBQWdDLDZSQzVCN0Msc3lCQWVBLHFGREtJLFdBQVcsOEJBQ1gsWUFBWSxrSUFDWixZQUFZLCtCQUNaLGVBQWUsdUdBQ2Ysb0JBQW9CLDZFQUNwQix1QkFBdUI7OzJGQUdkLGdDQUFnQztrQkFqQjVDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLDhCQUE4QixRQUdsQzt3QkFDSixLQUFLLEVBQUUsZ0NBQWdDO3FCQUN4QyxXQUNRO3dCQUNQLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixZQUFZO3dCQUNaLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQix1QkFBdUI7cUJBQ3hCOzswQkFnREUsU0FBUzsyQkFBQyxJQUFJOzhEQXhDaUIsTUFBTTtzQkFBdkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBTVMsTUFBTTtzQkFBdkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT0MsVUFBVTtzQkFBbkMsTUFBTTtnQkFRbUIsV0FBVztzQkFBcEMsTUFBTTtnQkFRbUIsUUFBUTtzQkFBakMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQXR0cmlidXRlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEdyaWRBcGksIEdyaWRSZWFkeUV2ZW50IH0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHsgTGlzdENvbnRhaW5lckNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvbGlzdC1jb250YWluZXItY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXJTZWFyY2hFdmVudCB9IGZyb20gJy4uLy4uLy4uL2ZpbHRlci9pbnRlcmZhY2VzL2ZpbHRlci1zZWFyY2gtZXZlbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ZpbHRlcic7XG5pbXBvcnQgeyBCdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2J1dHRvbnMnO1xuaW1wb3J0IHsgR3JpZFBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9ncmlkcyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3VwLWxpc3QtcGFnaW5hdGlvbi1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1wYWdpbmF0aW9uLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QtcGFnaW5hdGlvbi1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZC1mbGV4IGZsZXgtY29sdW1uIGgtMTAwIHctMTAwJ1xuICB9LFxuICBpbXBvcnRzOiBbXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBGaWx0ZXJDb21wb25lbnQsXG4gICAgQnV0dG9uR3JvdXBDb21wb25lbnQsXG4gICAgR3JpZFBhZ2luYXRpb25Db21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0UGFnaW5hdGlvbkNvbnRhaW5lckNvbXBvbmVudCB7XG5cbiAgLyoqXG4gICAqIEFuIElucHV0IHZhcmlhYmxlIHRoYXQgdXNlZCB0byBzdHJpbmcgZm9yIGN1c3RvbWl6aW5nIGhlYWRlciB0ZXh0LlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi8gXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpYyBoZWFkZXIhOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbiBpbnB1dCB2YXJpYWJsZSB0aGF0IHVzZWQgdG8gY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGN1c3RvbWl6aW5nIGxpc3QgY29udGFpbmVyIGNvbmZpZyBwcm9wZXJ0aWVzLiBUaGlzXG4gICAqIG9iamVjdCBkZWZpbmVkIGJ5IExpc3RDb250YWluZXJDb25maWcgaW50ZXJmYWNlIGFsbG93cyBzcGVjaWZ5aW5nIGJhc2VVcmwsIGdyaWRDb25maWcsIGZpbHRlckNvbmZpZyBhbmQgcGVybWlzc2lvbi5cbiAgICogQHR5cGUge0xpc3RDb250YWluZXJDb25maWd9XG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwdWJsaWMgY29uZmlnITogTGlzdENvbnRhaW5lckNvbmZpZztcbiAgLyoqXG4gICAqIFRoZSBgb25Sb3dDbGlja2AgRXZlbnRFbWl0dGVyIGlzIHVzZWQgdG8gbm90aWZ5IHBhcmVudCBjb21wb25lbnRzIG9yIGxpc3RlbmVyc1xuICAgKiB3aGVuIGEgcm93IGlzIGNsaWNrZWQgd2l0aGluIHRoZSBjdXJyZW50IGNvbXBvbmVudC4gSXQgZW1pdHMgYW4gZXZlbnQgY29udGFpbmluZ1xuICAgKiBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIHRoZSBjbGlja2VkIHJvdy5cbiAgICogQHR5cGUge0V2ZW50RW1pdHRlcjxhbnk+fVxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBvblJvd0NsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLyoqXG4gICAqIFRoZSBgb25HcmlkUmVhZHlgIEV2ZW50RW1pdHRlciBpcyB1c2VkIHRvIGluZm9ybSBwYXJlbnQgY29tcG9uZW50cyBvciBsaXN0ZW5lcnNcbiAgICogd2hlbiB0aGUgZ3JpZCB3aXRoaW4gdGhlIGN1cnJlbnQgY29tcG9uZW50IGlzIHJlYWR5IGZvciBpbnRlcmFjdGlvbi4gSXQgZW1pdHMgYW5cbiAgICogZXZlbnQgb2YgdHlwZSBgR3JpZFJlYWR5RXZlbnRgLCB3aGljaCBtYXkgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ3JpZCdzXG4gICAqIHJlYWRpbmVzcyBhbmQgY2FwYWJpbGl0aWVzLiAgICAgXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8R3JpZFJlYWR5RXZlbnQ+fSBcbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgb25HcmlkUmVhZHk6IEV2ZW50RW1pdHRlcjxHcmlkUmVhZHlFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIC8qKlxuICAgKiBUaGUgYG9uU2VhcmNoYCBFdmVudEVtaXR0ZXIgaXMgdXNlZCB0byBpbmZvcm0gcGFyZW50IGNvbXBvbmVudHMgb3IgbGlzdGVuZXJzXG4gICAqIHdoZW4gYSBzZWFyY2ggZXZlbnQgaXMgdHJpZ2dlcmVkIHdpdGhpbiB0aGUgY3VycmVudCBjb21wb25lbnQuIEl0IGVtaXRzIGFuXG4gICAqIGV2ZW50IG9mIHR5cGUgYEZpbHRlclNlYXJjaEV2ZW50YCwgd2hpY2ggbWF5IGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4gICAqIHNlYXJjaCBxdWVyeSBhbmQgYWRkaXRpb25hbCBkZXRhaWxzIHJlbGF0ZWQgdG8gdGhlIHNlYXJjaCBvcGVyYXRpb24uXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8RmlsdGVyU2VhcmNoRXZlbnQ+fVxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBvblNlYXJjaDogRXZlbnRFbWl0dGVyPEZpbHRlclNlYXJjaEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLyoqXG4gICAqIFRoZSBgZ3JpZElkYCBwcm9wZXJ0eSBpcyBhIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIGdyaWQgZWxlbWVudC4gSXQgaXNcbiAgICogYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYmFzZWQgb24gdGhlIGNvbXBvbmVudCdzIGBpZGAgcHJvcGVydHkuIElmIHRoZSBgaWRgXG4gICAqIHByb3BlcnR5IGlzIG5vdCBzZXQsIGEgZGVmYXVsdCB2YWx1ZSBvZiAncCcgaXMgdXNlZC5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHB1YmxpYyBncmlkSWQ6IGBncmlkLSR7IHN0cmluZyB9YCA9IGBncmlkLSR7IHRoaXMuaWQ/PyAncCcgfWA7XG4gIHByb3RlY3RlZCBncmlkQXBpITogR3JpZEFwaTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAQXR0cmlidXRlKCdpZCcpIHB1YmxpYyBpZDogc3RyaW5nLFxuICAgIHByb3RlY3RlZCByZWFkb25seSByb3V0ZXI6IFJvdXRlclxuICApIHsgfVxuICBcbiAgLyoqXG4gICAqIFRoZSBgb3BlbkRldGFpbGAgbWV0aG9kIGlzIHVzZWQgdG8gdHJpZ2dlciBhY3Rpb25zIHdoZW4gYSB1c2VyIHJlcXVlc3RzIHRvIG9wZW5cbiAgICogdGhlIGRldGFpbCB2aWV3IGZvciBhIHNwZWNpZmljIGRhdGEgaXRlbS4gSXQgZW1pdHMgYSBgZGF0YWAgZXZlbnQgdXNpbmcgdGhlXG4gICAqIGBvblJvd0NsaWNrYCBFdmVudEVtaXR0ZXIsIHByb3ZpZGluZyBleHRlcm5hbCBjb21wb25lbnRzIG9yIGxpc3RlbmVycyB3aXRoXG4gICAqIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjbGlja2VkIGRhdGEuIEFkZGl0aW9uYWxseSwgaXQgbmF2aWdhdGVzIHRvIHRoZSBkZXRhaWxcbiAgICogcm91dGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBkYXRhIGl0ZW0gdXNpbmcgdGhlIEFuZ3VsYXIgUm91dGVyLlxuICAgKiBcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSBpdGVtIGZvciB3aGljaCB0aGUgZGV0YWlsIHZpZXcgaXMgdG8gYmUgb3BlbmVkLlxuICAgKi9cbiAgcHVibGljIG9wZW5EZXRhaWwoZGF0YTogYW55KTogdm9pZHsgXG4gICAgdGhpcy5vblJvd0NsaWNrLmVtaXQoZGF0YSk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWyBgJHsgdGhpcy5jb25maWcuYmFzZVVybCB9JHsgZGF0YS5ndWlkIH1gIF0sIHsgcHJlc2VydmVGcmFnbWVudDogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYHNldEdyaWRBcGlgIG1ldGhvZCBpcyB1c2VkIHRvIHNldCB0aGUgZ3JpZCBBUEkgd2hlbiB0aGUgZ3JpZCBpcyByZWFkeSwgdHlwaWNhbGx5XG4gICAqIGFmdGVyIHRoZSBgZ3JpZFJlYWR5YCBldmVudCBpcyBmaXJlZC4gSXQgYXNzaWducyB0aGUgZ3JpZCBBUEkgdG8gdGhlIGNvbXBvbmVudCdzXG4gICAqIGBncmlkQXBpYCBwcm9wZXJ0eSBhbmQgZW1pdHMgdGhlIGBvbkdyaWRSZWFkeWAgZXZlbnQsIHByb3ZpZGluZyBleHRlcm5hbCBjb21wb25lbnRzXG4gICAqIG9yIGxpc3RlbmVycyB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBncmlkJ3MgcmVhZGluZXNzLlxuICAgKiBcbiAgICogQHBhcmFtIHtHcmlkUmVhZHlFdmVudH0gZXYgLSBUaGUgYEdyaWRSZWFkeUV2ZW50YCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBncmlkJ3MgcmVhZGluZXNzLlxuICAgKi9cbiAgcHVibGljIHNldEdyaWRBcGkoZXY6IEdyaWRSZWFkeUV2ZW50KTogdm9pZHsgXG4gICAgdGhpcy5ncmlkQXBpID0gZXYuYXBpOyBcbiAgICB0aGlzLm9uR3JpZFJlYWR5LmVtaXQoZXYpO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgYHNlYXJjaGAgbWV0aG9kIGlzIHVzZWQgdG8gdHJpZ2dlciBhIHNlYXJjaCBvcGVyYXRpb24gYmFzZWQgb24gdGhlIHByb3ZpZGVkXG4gICAqIGBGaWx0ZXJTZWFyY2hFdmVudGAuIEl0IGVtaXRzIHRoZSBgb25TZWFyY2hgIGV2ZW50LCBwcm92aWRpbmcgZXh0ZXJuYWwgY29tcG9uZW50c1xuICAgKiBvciBsaXN0ZW5lcnMgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VhcmNoIHF1ZXJ5LiBBZGRpdGlvbmFsbHksIGl0IHJlZnJlc2hlc1xuICAgKiB0aGUgZ3JpZCBjYWNoZSB1c2luZyB0aGUgYHJlZnJlc2hJbmZpbml0ZUNhY2hlYCBtZXRob2Qgb2YgdGhlIGdyaWQgQVBJLlxuICAgKiBAcGFyYW0ge0ZpbHRlclNlYXJjaEV2ZW50fSBrIC0gVGhlIGBGaWx0ZXJTZWFyY2hFdmVudGAgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VhcmNoIG9wZXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2goazogRmlsdGVyU2VhcmNoRXZlbnQpOiB2b2lke1xuICAgIHRoaXMub25TZWFyY2guZW1pdChrKTtcbiAgICB0aGlzLmdyaWRBcGkucmVmcmVzaEluZmluaXRlQ2FjaGUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTQgcC00IGZsZXgtc2hyaW5rLTAgZmxleC13cmFwXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwibS0wXCI+e3sgaGVhZGVyIH19PC9oMz5cblxuICAgICAgICA8dXAtYnRuLWdyb3VwICpuZ0lmPVwiY29uZmlnLmJ1dHRvbnMgJiYgY29uZmlnLmJ1dHRvbnMubGVuZ3RoID4gMFwiIGlkPVwiYnRuLWxpc3Qtc25hcHNob3QtY29udGFpbmVyXCIgW2NvbmZpZ109XCJjb25maWcuYnV0dG9uc1wiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMCBmbGV4LWdyb3ctMVwiICpuZ0lmPVwiY29uZmlnLmZpbHRlckNvbmZpZ1wiPlxuICAgICAgICA8dXAtZmlsdGVyIHBsYWNlaG9sZGVyPVwiVHlwZSB0byBzZWFyY2hcIiBpZD1cImZpbHRlci17eyBpZCB9fVwiIFtjb25maWddPVwiY29uZmlnLmZpbHRlckNvbmZpZ1wiIChvblNlYXJjaCk9XCJzZWFyY2goJGV2ZW50KVwiIC8+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIHB4LTEgcGItMVwiPlxuICAgIDx1cC1wYWdpbmF0aW9uLWdyaWQgW2NvbmZpZ109XCJjb25maWcuZ3JpZENvbmZpZ1wiIFtpZF09XCJncmlkSWRcIiAob25HcmlkUmVhZHkpPVwic2V0R3JpZEFwaSgkZXZlbnQpXCIgKG9uUm93Q2xpY2spPVwib3BlbkRldGFpbCgkZXZlbnQpXCIgLz5cbjwvZGl2PlxuIl19
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1wYWdpbmF0aW9uLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmlwaW4tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvY29udGFpbmVycy9saXN0LWNvbnRhaW5lci9saXN0LXBhZ2luYXRpb24tY29udGFpbmVyL2xpc3QtcGFnaW5hdGlvbi1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pcGluLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2NvbnRhaW5lcnMvbGlzdC1jb250YWluZXIvbGlzdC1wYWdpbmF0aW9uLWNvbnRhaW5lci9saXN0LXBhZ2luYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQVUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQW1CekQsTUFBTSxPQUFPLGdDQUFnQztJQTZDM0MsWUFDMEIsRUFBVSxFQUNmLE1BQWM7UUFEVCxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTVCVCxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFRbkQsZ0JBQVcsR0FBaUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVEvRCxhQUFRLEdBQW9DLElBQUksWUFBWSxFQUFFLENBQUM7UUFPbEYsV0FBTSxHQUF1QixRQUFTLElBQUksQ0FBQyxFQUFFLElBQUcsR0FBSSxFQUFFLENBQUM7SUFNMUQsQ0FBQztJQVdFLFVBQVUsQ0FBQyxJQUFTO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUUsR0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQVEsR0FBSSxJQUFJLENBQUMsSUFBSyxFQUFFLENBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakcsQ0FBQztJQVVNLFVBQVUsQ0FBQyxFQUFrQjtRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQVFNLE1BQU0sQ0FBQyxDQUFvQjtRQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDdEMsQ0FBQzsrR0F0RlUsZ0NBQWdDLGtCQThDOUIsSUFBSTttR0E5Q04sZ0NBQWdDLDZSQzVCN0MsMDJCQWVBLHNMREtJLFdBQVcsOEJBQ1gsWUFBWSxrSUFDWixZQUFZLCtCQUNaLGVBQWUsdUdBQ2Ysb0JBQW9CLDZFQUNwQix1QkFBdUI7OzRGQUdkLGdDQUFnQztrQkFqQjVDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLDhCQUE4QixRQUdsQzt3QkFDSixLQUFLLEVBQUUsZ0NBQWdDO3FCQUN4QyxXQUNRO3dCQUNQLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixZQUFZO3dCQUNaLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQix1QkFBdUI7cUJBQ3hCOzswQkFnREUsU0FBUzsyQkFBQyxJQUFJOzhEQXhDaUIsTUFBTTtzQkFBdkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBTVMsTUFBTTtzQkFBdkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT0MsVUFBVTtzQkFBbkMsTUFBTTtnQkFRbUIsV0FBVztzQkFBcEMsTUFBTTtnQkFRbUIsUUFBUTtzQkFBakMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQXR0cmlidXRlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEdyaWRBcGksIEdyaWRSZWFkeUV2ZW50IH0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHsgTGlzdENvbnRhaW5lckNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvbGlzdC1jb250YWluZXItY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXJTZWFyY2hFdmVudCB9IGZyb20gJy4uLy4uLy4uL2ZpbHRlci9pbnRlcmZhY2VzL2ZpbHRlci1zZWFyY2gtZXZlbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ZpbHRlcic7XG5pbXBvcnQgeyBCdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2J1dHRvbnMnO1xuaW1wb3J0IHsgR3JpZFBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9ncmlkcyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3VwLWxpc3QtcGFnaW5hdGlvbi1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1wYWdpbmF0aW9uLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QtcGFnaW5hdGlvbi1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZC1mbGV4IGZsZXgtY29sdW1uIGgtMTAwIHctMTAwJ1xuICB9LFxuICBpbXBvcnRzOiBbXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBGaWx0ZXJDb21wb25lbnQsXG4gICAgQnV0dG9uR3JvdXBDb21wb25lbnQsXG4gICAgR3JpZFBhZ2luYXRpb25Db21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0UGFnaW5hdGlvbkNvbnRhaW5lckNvbXBvbmVudCB7XG5cbiAgLyoqXG4gICAqIEFuIElucHV0IHZhcmlhYmxlIHRoYXQgdXNlZCB0byBzdHJpbmcgZm9yIGN1c3RvbWl6aW5nIGhlYWRlciB0ZXh0LlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi8gXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpYyBoZWFkZXIhOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbiBpbnB1dCB2YXJpYWJsZSB0aGF0IHVzZWQgdG8gY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGN1c3RvbWl6aW5nIGxpc3QgY29udGFpbmVyIGNvbmZpZyBwcm9wZXJ0aWVzLiBUaGlzXG4gICAqIG9iamVjdCBkZWZpbmVkIGJ5IExpc3RDb250YWluZXJDb25maWcgaW50ZXJmYWNlIGFsbG93cyBzcGVjaWZ5aW5nIGJhc2VVcmwsIGdyaWRDb25maWcsIGZpbHRlckNvbmZpZyBhbmQgcGVybWlzc2lvbi5cbiAgICogQHR5cGUge0xpc3RDb250YWluZXJDb25maWd9XG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwdWJsaWMgY29uZmlnITogTGlzdENvbnRhaW5lckNvbmZpZztcbiAgLyoqXG4gICAqIFRoZSBgb25Sb3dDbGlja2AgRXZlbnRFbWl0dGVyIGlzIHVzZWQgdG8gbm90aWZ5IHBhcmVudCBjb21wb25lbnRzIG9yIGxpc3RlbmVyc1xuICAgKiB3aGVuIGEgcm93IGlzIGNsaWNrZWQgd2l0aGluIHRoZSBjdXJyZW50IGNvbXBvbmVudC4gSXQgZW1pdHMgYW4gZXZlbnQgY29udGFpbmluZ1xuICAgKiBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIHRoZSBjbGlja2VkIHJvdy5cbiAgICogQHR5cGUge0V2ZW50RW1pdHRlcjxhbnk+fVxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBvblJvd0NsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLyoqXG4gICAqIFRoZSBgb25HcmlkUmVhZHlgIEV2ZW50RW1pdHRlciBpcyB1c2VkIHRvIGluZm9ybSBwYXJlbnQgY29tcG9uZW50cyBvciBsaXN0ZW5lcnNcbiAgICogd2hlbiB0aGUgZ3JpZCB3aXRoaW4gdGhlIGN1cnJlbnQgY29tcG9uZW50IGlzIHJlYWR5IGZvciBpbnRlcmFjdGlvbi4gSXQgZW1pdHMgYW5cbiAgICogZXZlbnQgb2YgdHlwZSBgR3JpZFJlYWR5RXZlbnRgLCB3aGljaCBtYXkgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ3JpZCdzXG4gICAqIHJlYWRpbmVzcyBhbmQgY2FwYWJpbGl0aWVzLiAgICAgXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8R3JpZFJlYWR5RXZlbnQ+fSBcbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgb25HcmlkUmVhZHk6IEV2ZW50RW1pdHRlcjxHcmlkUmVhZHlFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIC8qKlxuICAgKiBUaGUgYG9uU2VhcmNoYCBFdmVudEVtaXR0ZXIgaXMgdXNlZCB0byBpbmZvcm0gcGFyZW50IGNvbXBvbmVudHMgb3IgbGlzdGVuZXJzXG4gICAqIHdoZW4gYSBzZWFyY2ggZXZlbnQgaXMgdHJpZ2dlcmVkIHdpdGhpbiB0aGUgY3VycmVudCBjb21wb25lbnQuIEl0IGVtaXRzIGFuXG4gICAqIGV2ZW50IG9mIHR5cGUgYEZpbHRlclNlYXJjaEV2ZW50YCwgd2hpY2ggbWF5IGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4gICAqIHNlYXJjaCBxdWVyeSBhbmQgYWRkaXRpb25hbCBkZXRhaWxzIHJlbGF0ZWQgdG8gdGhlIHNlYXJjaCBvcGVyYXRpb24uXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8RmlsdGVyU2VhcmNoRXZlbnQ+fVxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBvblNlYXJjaDogRXZlbnRFbWl0dGVyPEZpbHRlclNlYXJjaEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLyoqXG4gICAqIFRoZSBgZ3JpZElkYCBwcm9wZXJ0eSBpcyBhIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIGdyaWQgZWxlbWVudC4gSXQgaXNcbiAgICogYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYmFzZWQgb24gdGhlIGNvbXBvbmVudCdzIGBpZGAgcHJvcGVydHkuIElmIHRoZSBgaWRgXG4gICAqIHByb3BlcnR5IGlzIG5vdCBzZXQsIGEgZGVmYXVsdCB2YWx1ZSBvZiAncCcgaXMgdXNlZC5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHB1YmxpYyBncmlkSWQ6IGBncmlkLSR7IHN0cmluZyB9YCA9IGBncmlkLSR7IHRoaXMuaWQ/PyAncCcgfWA7XG4gIHByb3RlY3RlZCBncmlkQXBpITogR3JpZEFwaTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAQXR0cmlidXRlKCdpZCcpIHB1YmxpYyBpZDogc3RyaW5nLFxuICAgIHByb3RlY3RlZCByZWFkb25seSByb3V0ZXI6IFJvdXRlclxuICApIHsgfVxuICBcbiAgLyoqXG4gICAqIFRoZSBgb3BlbkRldGFpbGAgbWV0aG9kIGlzIHVzZWQgdG8gdHJpZ2dlciBhY3Rpb25zIHdoZW4gYSB1c2VyIHJlcXVlc3RzIHRvIG9wZW5cbiAgICogdGhlIGRldGFpbCB2aWV3IGZvciBhIHNwZWNpZmljIGRhdGEgaXRlbS4gSXQgZW1pdHMgYSBgZGF0YWAgZXZlbnQgdXNpbmcgdGhlXG4gICAqIGBvblJvd0NsaWNrYCBFdmVudEVtaXR0ZXIsIHByb3ZpZGluZyBleHRlcm5hbCBjb21wb25lbnRzIG9yIGxpc3RlbmVycyB3aXRoXG4gICAqIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjbGlja2VkIGRhdGEuIEFkZGl0aW9uYWxseSwgaXQgbmF2aWdhdGVzIHRvIHRoZSBkZXRhaWxcbiAgICogcm91dGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBkYXRhIGl0ZW0gdXNpbmcgdGhlIEFuZ3VsYXIgUm91dGVyLlxuICAgKiBcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSBpdGVtIGZvciB3aGljaCB0aGUgZGV0YWlsIHZpZXcgaXMgdG8gYmUgb3BlbmVkLlxuICAgKi9cbiAgcHVibGljIG9wZW5EZXRhaWwoZGF0YTogYW55KTogdm9pZHsgXG4gICAgdGhpcy5vblJvd0NsaWNrLmVtaXQoZGF0YSk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWyBgJHsgdGhpcy5jb25maWcuYmFzZVVybCB9JHsgZGF0YS5ndWlkIH1gIF0sIHsgcHJlc2VydmVGcmFnbWVudDogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYHNldEdyaWRBcGlgIG1ldGhvZCBpcyB1c2VkIHRvIHNldCB0aGUgZ3JpZCBBUEkgd2hlbiB0aGUgZ3JpZCBpcyByZWFkeSwgdHlwaWNhbGx5XG4gICAqIGFmdGVyIHRoZSBgZ3JpZFJlYWR5YCBldmVudCBpcyBmaXJlZC4gSXQgYXNzaWducyB0aGUgZ3JpZCBBUEkgdG8gdGhlIGNvbXBvbmVudCdzXG4gICAqIGBncmlkQXBpYCBwcm9wZXJ0eSBhbmQgZW1pdHMgdGhlIGBvbkdyaWRSZWFkeWAgZXZlbnQsIHByb3ZpZGluZyBleHRlcm5hbCBjb21wb25lbnRzXG4gICAqIG9yIGxpc3RlbmVycyB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBncmlkJ3MgcmVhZGluZXNzLlxuICAgKiBcbiAgICogQHBhcmFtIHtHcmlkUmVhZHlFdmVudH0gZXYgLSBUaGUgYEdyaWRSZWFkeUV2ZW50YCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBncmlkJ3MgcmVhZGluZXNzLlxuICAgKi9cbiAgcHVibGljIHNldEdyaWRBcGkoZXY6IEdyaWRSZWFkeUV2ZW50KTogdm9pZHsgXG4gICAgdGhpcy5ncmlkQXBpID0gZXYuYXBpOyBcbiAgICB0aGlzLm9uR3JpZFJlYWR5LmVtaXQoZXYpO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgYHNlYXJjaGAgbWV0aG9kIGlzIHVzZWQgdG8gdHJpZ2dlciBhIHNlYXJjaCBvcGVyYXRpb24gYmFzZWQgb24gdGhlIHByb3ZpZGVkXG4gICAqIGBGaWx0ZXJTZWFyY2hFdmVudGAuIEl0IGVtaXRzIHRoZSBgb25TZWFyY2hgIGV2ZW50LCBwcm92aWRpbmcgZXh0ZXJuYWwgY29tcG9uZW50c1xuICAgKiBvciBsaXN0ZW5lcnMgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VhcmNoIHF1ZXJ5LiBBZGRpdGlvbmFsbHksIGl0IHJlZnJlc2hlc1xuICAgKiB0aGUgZ3JpZCBjYWNoZSB1c2luZyB0aGUgYHJlZnJlc2hJbmZpbml0ZUNhY2hlYCBtZXRob2Qgb2YgdGhlIGdyaWQgQVBJLlxuICAgKiBAcGFyYW0ge0ZpbHRlclNlYXJjaEV2ZW50fSBrIC0gVGhlIGBGaWx0ZXJTZWFyY2hFdmVudGAgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VhcmNoIG9wZXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2goazogRmlsdGVyU2VhcmNoRXZlbnQpOiB2b2lke1xuICAgIHRoaXMub25TZWFyY2guZW1pdChrKTtcbiAgICB0aGlzLmdyaWRBcGkucmVmcmVzaEluZmluaXRlQ2FjaGUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTQgcC00IGZsZXgtc2hyaW5rLTAgZmxleC13cmFwIGZsZXgtbWQtbm93cmFwXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwibS0wIHRleHQtdHJ1bmNhdGVcIj57eyBoZWFkZXIgfX08L2gzPlxuXG4gICAgICAgIDx1cC1idG4tZ3JvdXAgKm5nSWY9XCJjb25maWcuYnV0dG9ucyAmJiBjb25maWcuYnV0dG9ucy5sZW5ndGggPiAwXCIgY2xhc3M9XCJmbGV4LXNocmluay0wXCIgaWQ9XCJidG4tbGlzdC1zbmFwc2hvdC1jb250YWluZXJcIiBbY29uZmlnXT1cImNvbmZpZy5idXR0b25zXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wIGZsZXgtZ3Jvdy0xIGZsZXgtbGctZ3Jvdy0wXCIgKm5nSWY9XCJjb25maWcuZmlsdGVyQ29uZmlnXCI+XG4gICAgICAgIDx1cC1maWx0ZXIgcGxhY2Vob2xkZXI9XCJUeXBlIHRvIHNlYXJjaFwiIGlkPVwiZmlsdGVyLXt7IGlkIH19XCIgW2NvbmZpZ109XCJjb25maWcuZmlsdGVyQ29uZmlnXCIgKG9uU2VhcmNoKT1cInNlYXJjaCgkZXZlbnQpXCIgLz5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgcHgtMSBwYi0xXCI+XG4gICAgPHVwLXBhZ2luYXRpb24tZ3JpZCBbY29uZmlnXT1cImNvbmZpZy5ncmlkQ29uZmlnXCIgW2lkXT1cImdyaWRJZFwiIChvbkdyaWRSZWFkeSk9XCJzZXRHcmlkQXBpKCRldmVudClcIiAob25Sb3dDbGljayk9XCJvcGVuRGV0YWlsKCRldmVudClcIiAvPlxuPC9kaXY+XG4iXX0=
@@ -30,10 +30,10 @@ export class ListSnapshotContainerComponent {
30
30
  this.gridApi.paginationGoToFirstPage();
31
31
  this.gridApi.purgeInfiniteCache();
32
32
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ListSnapshotContainerComponent, deps: [{ token: 'id', attribute: true }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: ListSnapshotContainerComponent, isStandalone: true, selector: "up-list-snapshot-container", inputs: { header: "header", config: "config" }, outputs: { onRowClick: "onRowClick", onGridReady: "onGridReady", onSearch: "onSearch" }, host: { classAttribute: "d-flex flex-column h-100 w-100" }, ngImport: i0, template: "<div class=\"d-flex align-items-center justify-content-between gap-4 p-4 flex-shrink-0 flex-wrap\">\n <div class=\"flex-grow-1 d-flex align-items-center gap-3\">\n <h3 class=\"m-0\">{{ header }}</h3>\n\n <up-btn-group *ngIf=\"config.buttons && config.buttons.length > 0\" id=\"btn-list-snapshot-container\" [config]=\"config.buttons\" />\n </div>\n\n <div class=\"flex-shrink-0 flex-grow-1\" *ngIf=\"config.filterConfig\">\n <up-filter placeholder=\"Type to search\" id=\"filter-{{ id }}\" [config]=\"config.filterConfig\" (onSearch)=\"search($event)\" />\n </div>\n</div>\n\n<div class=\"flex-grow-1 px-1 pb-1\">\n <up-snapshot-grid [config]=\"config.gridConfig\" [id]=\"gridId\" (onGridReady)=\"setGridApi($event)\" (onRowClick)=\"openDetail($event)\" />\n</div>\n", styles: ["up-filter{min-width:300px}\n"], dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "component", type: FilterComponent, selector: "up-filter", inputs: ["id", "config"], outputs: ["onSearch"] }, { kind: "component", type: ButtonGroupComponent, selector: "up-btn-group", inputs: ["config"] }, { kind: "component", type: GridSnapshotComponent, selector: "up-snapshot-grid", inputs: ["id", "config", "rowSelection"], outputs: ["onRowClick", "onGridReady", "onSelectionChanged"] }] }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ListSnapshotContainerComponent, deps: [{ token: 'id', attribute: true }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ListSnapshotContainerComponent, isStandalone: true, selector: "up-list-snapshot-container", inputs: { header: "header", config: "config" }, outputs: { onRowClick: "onRowClick", onGridReady: "onGridReady", onSearch: "onSearch" }, host: { classAttribute: "d-flex flex-column h-100 w-100" }, ngImport: i0, template: "<div class=\"d-flex align-items-center justify-content-between gap-4 p-4 flex-shrink-0 flex-wrap flex-md-nowrap\">\n <div class=\"flex-grow-1 d-flex align-items-center gap-2\">\n <h3 class=\"m-0 text-truncate\">{{ header }}</h3>\n\n <up-btn-group *ngIf=\"config.buttons && config.buttons.length > 0\" class=\"flex-shrink-0\" id=\"btn-list-snapshot-container\" [config]=\"config.buttons\" />\n </div>\n\n <div class=\"flex-shrink-0 flex-grow-1 flex-lg-grow-0\" *ngIf=\"config.filterConfig\">\n <up-filter placeholder=\"Type to search\" id=\"filter-{{ id }}\" [config]=\"config.filterConfig\" (onSearch)=\"search($event)\" />\n </div>\n</div>\n\n<div class=\"flex-grow-1 px-1 pb-1\">\n <up-snapshot-grid [config]=\"config.gridConfig\" [id]=\"gridId\" (onGridReady)=\"setGridApi($event)\" (onRowClick)=\"openDetail($event)\" />\n</div>\n", styles: ["div:has(>up-filter){flex-basis:50%}@media (max-width: 576px){div:has(>up-filter){flex-basis:100%}}.flex-grow-1{min-width:0}\n"], dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "component", type: FilterComponent, selector: "up-filter", inputs: ["id", "config"], outputs: ["onSearch"] }, { kind: "component", type: ButtonGroupComponent, selector: "up-btn-group", inputs: ["config"] }, { kind: "component", type: GridSnapshotComponent, selector: "up-snapshot-grid", inputs: ["id", "config", "rowSelection"], outputs: ["onRowClick", "onGridReady", "onSelectionChanged"] }] }); }
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ListSnapshotContainerComponent, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ListSnapshotContainerComponent, decorators: [{
37
37
  type: Component,
38
38
  args: [{ standalone: true, selector: 'up-list-snapshot-container', host: {
39
39
  class: 'd-flex flex-column h-100 w-100'
@@ -44,7 +44,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
44
44
  FilterComponent,
45
45
  ButtonGroupComponent,
46
46
  GridSnapshotComponent
47
- ], template: "<div class=\"d-flex align-items-center justify-content-between gap-4 p-4 flex-shrink-0 flex-wrap\">\n <div class=\"flex-grow-1 d-flex align-items-center gap-3\">\n <h3 class=\"m-0\">{{ header }}</h3>\n\n <up-btn-group *ngIf=\"config.buttons && config.buttons.length > 0\" id=\"btn-list-snapshot-container\" [config]=\"config.buttons\" />\n </div>\n\n <div class=\"flex-shrink-0 flex-grow-1\" *ngIf=\"config.filterConfig\">\n <up-filter placeholder=\"Type to search\" id=\"filter-{{ id }}\" [config]=\"config.filterConfig\" (onSearch)=\"search($event)\" />\n </div>\n</div>\n\n<div class=\"flex-grow-1 px-1 pb-1\">\n <up-snapshot-grid [config]=\"config.gridConfig\" [id]=\"gridId\" (onGridReady)=\"setGridApi($event)\" (onRowClick)=\"openDetail($event)\" />\n</div>\n", styles: ["up-filter{min-width:300px}\n"] }]
47
+ ], template: "<div class=\"d-flex align-items-center justify-content-between gap-4 p-4 flex-shrink-0 flex-wrap flex-md-nowrap\">\n <div class=\"flex-grow-1 d-flex align-items-center gap-2\">\n <h3 class=\"m-0 text-truncate\">{{ header }}</h3>\n\n <up-btn-group *ngIf=\"config.buttons && config.buttons.length > 0\" class=\"flex-shrink-0\" id=\"btn-list-snapshot-container\" [config]=\"config.buttons\" />\n </div>\n\n <div class=\"flex-shrink-0 flex-grow-1 flex-lg-grow-0\" *ngIf=\"config.filterConfig\">\n <up-filter placeholder=\"Type to search\" id=\"filter-{{ id }}\" [config]=\"config.filterConfig\" (onSearch)=\"search($event)\" />\n </div>\n</div>\n\n<div class=\"flex-grow-1 px-1 pb-1\">\n <up-snapshot-grid [config]=\"config.gridConfig\" [id]=\"gridId\" (onGridReady)=\"setGridApi($event)\" (onRowClick)=\"openDetail($event)\" />\n</div>\n", styles: ["div:has(>up-filter){flex-basis:50%}@media (max-width: 576px){div:has(>up-filter){flex-basis:100%}}.flex-grow-1{min-width:0}\n"] }]
48
48
  }], ctorParameters: () => [{ type: undefined, decorators: [{
49
49
  type: Attribute,
50
50
  args: ['id']
@@ -61,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
61
61
  }], onSearch: [{
62
62
  type: Output
63
63
  }] } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1zbmFwc2hvdC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pcGluLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2NvbnRhaW5lcnMvbGlzdC1jb250YWluZXIvbGlzdC1zbmFwc2hvdC1jb250YWluZXIvbGlzdC1zbmFwc2hvdC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pcGluLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2NvbnRhaW5lcnMvbGlzdC1jb250YWluZXIvbGlzdC1zbmFwc2hvdC1jb250YWluZXIvbGlzdC1zbmFwc2hvdC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBbUJ4RCxNQUFNLE9BQU8sOEJBQThCO0lBNkN6QyxZQUMwQixFQUFVLEVBQ2YsTUFBYztRQURULE9BQUUsR0FBRixFQUFFLENBQVE7UUFDZixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBNUJULGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVFuRCxnQkFBVyxHQUFpQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBUS9ELGFBQVEsR0FBb0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU9sRixXQUFNLEdBQXVCLFFBQVMsSUFBSSxDQUFDLEVBQUUsSUFBRyxHQUFJLEVBQUUsQ0FBQztJQU0xRCxDQUFDO0lBV0UsVUFBVSxDQUFDLElBQVM7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBRSxHQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBUSxHQUFJLElBQUksQ0FBQyxJQUFLLEVBQUUsQ0FBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBVU0sVUFBVSxDQUFDLEVBQWtCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBU00sTUFBTSxDQUFDLENBQW9CO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRCLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDcEMsQ0FBQzs4R0F6RlUsOEJBQThCLGtCQThDNUIsSUFBSTtrR0E5Q04sOEJBQThCLDJSQzVCM0Msb3lCQWVBLHFGREtJLFdBQVcsOEJBQ1gsWUFBWSxrSUFDWixZQUFZLCtCQUNaLGVBQWUsdUdBQ2Ysb0JBQW9CLDZFQUNwQixxQkFBcUI7OzJGQUdaLDhCQUE4QjtrQkFqQjFDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLDRCQUE0QixRQUdoQzt3QkFDSixLQUFLLEVBQUUsZ0NBQWdDO3FCQUN4QyxXQUNRO3dCQUNQLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixZQUFZO3dCQUNaLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQixxQkFBcUI7cUJBQ3RCOzswQkFnREUsU0FBUzsyQkFBQyxJQUFJOzhEQXhDaUIsTUFBTTtzQkFBdkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBTVMsTUFBTTtzQkFBdkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT0MsVUFBVTtzQkFBbkMsTUFBTTtnQkFRbUIsV0FBVztzQkFBcEMsTUFBTTtnQkFRbUIsUUFBUTtzQkFBakMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQXR0cmlidXRlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEdyaWRBcGksIEdyaWRSZWFkeUV2ZW50IH0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHsgTGlzdENvbnRhaW5lckNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvbGlzdC1jb250YWluZXItY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXJTZWFyY2hFdmVudCB9IGZyb20gJy4uLy4uLy4uL2ZpbHRlci9pbnRlcmZhY2VzL2ZpbHRlci1zZWFyY2gtZXZlbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ZpbHRlcic7XG5pbXBvcnQgeyBHcmlkU25hcHNob3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9ncmlkcyc7XG5pbXBvcnQgeyBCdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2J1dHRvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICd1cC1saXN0LXNuYXBzaG90LWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXNuYXBzaG90LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3Qtc25hcHNob3QtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2QtZmxleCBmbGV4LWNvbHVtbiBoLTEwMCB3LTEwMCdcbiAgfSxcbiAgaW1wb3J0czogW1xuICAgIElvbmljTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgRmlsdGVyQ29tcG9uZW50LFxuICAgIEJ1dHRvbkdyb3VwQ29tcG9uZW50LFxuICAgIEdyaWRTbmFwc2hvdENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExpc3RTbmFwc2hvdENvbnRhaW5lckNvbXBvbmVudCB7XG5cbiAgLyoqXG4gICAqIEFuIElucHV0IHZhcmlhYmxlIHRoYXQgdXNlZCB0byBzdHJpbmcgZm9yIGN1c3RvbWl6aW5nIGhlYWRlci5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovIFxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwdWJsaWMgaGVhZGVyITogc3RyaW5nO1xuICAvKipcbiAgICogQW4gaW5wdXQgdmFyaWFibGUgdGhhdCB1c2VkIHRvIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBjdXN0b21pemluZyBsaXN0IGNvbnRhaW5lciBjb25maWcgcHJvcGVydGllcy4gVGhpc1xuICAgKiBvYmplY3QgZGVmaW5lZCBieSBMaXN0Q29udGFpbmVyQ29uZmlnIGludGVyZmFjZSBhbGxvd3Mgc3BlY2lmeWluZyBiYXNlVXJsLCBncmlkQ29uZmlnLCBmaWx0ZXJDb25maWcgYW5kIHBlcm1pc3Npb24uXG4gICAqIEB0eXBlIHtMaXN0Q29udGFpbmVyQ29uZmlnfVxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcHVibGljIGNvbmZpZyE6IExpc3RDb250YWluZXJDb25maWc7XG4gIC8qKlxuICAgKiBUaGUgYG9uUm93Q2xpY2tgIEV2ZW50RW1pdHRlciBpcyB1c2VkIHRvIG5vdGlmeSBwYXJlbnQgY29tcG9uZW50cyBvciBsaXN0ZW5lcnNcbiAgICogd2hlbiBhIHJvdyBpcyBjbGlja2VkIHdpdGhpbiB0aGUgY3VycmVudCBjb21wb25lbnQuIEl0IGVtaXRzIGFuIGV2ZW50IGNvbnRhaW5pbmdcbiAgICogaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgY2xpY2tlZCByb3cuXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8YW55Pn1cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgb25Sb3dDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIC8qKlxuICAgKiBUaGUgYG9uR3JpZFJlYWR5YCBFdmVudEVtaXR0ZXIgaXMgdXNlZCB0byBpbmZvcm0gcGFyZW50IGNvbXBvbmVudHMgb3IgbGlzdGVuZXJzXG4gICAqIHdoZW4gdGhlIGdyaWQgd2l0aGluIHRoZSBjdXJyZW50IGNvbXBvbmVudCBpcyByZWFkeSBmb3IgaW50ZXJhY3Rpb24uIEl0IGVtaXRzIGFuXG4gICAqIGV2ZW50IG9mIHR5cGUgYEdyaWRSZWFkeUV2ZW50YCwgd2hpY2ggbWF5IGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGdyaWQnc1xuICAgKiByZWFkaW5lc3MgYW5kIGNhcGFiaWxpdGllcy4gIFxuICAgKiBAdHlwZSB7RXZlbnRFbWl0dGVyPEdyaWRSZWFkeUV2ZW50Pn0gICAgXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IG9uR3JpZFJlYWR5OiBFdmVudEVtaXR0ZXI8R3JpZFJlYWR5RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvKipcbiAgICogVGhlIGBvblNlYXJjaGAgRXZlbnRFbWl0dGVyIGlzIHVzZWQgdG8gaW5mb3JtIHBhcmVudCBjb21wb25lbnRzIG9yIGxpc3RlbmVyc1xuICAgKiB3aGVuIGEgc2VhcmNoIGV2ZW50IGlzIHRyaWdnZXJlZCB3aXRoaW4gdGhlIGN1cnJlbnQgY29tcG9uZW50LiBJdCBlbWl0cyBhblxuICAgKiBldmVudCBvZiB0eXBlIGBGaWx0ZXJTZWFyY2hFdmVudGAsIHdoaWNoIG1heSBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuICAgKiBzZWFyY2ggcXVlcnkgYW5kIGFkZGl0aW9uYWwgZGV0YWlscyByZWxhdGVkIHRvIHRoZSBzZWFyY2ggb3BlcmF0aW9uLlxuICAgKiBAdHlwZSB7RXZlbnRFbWl0dGVyPEZpbHRlclNlYXJjaEV2ZW50Pn1cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgb25TZWFyY2g6IEV2ZW50RW1pdHRlcjxGaWx0ZXJTZWFyY2hFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIC8qKlxuICAgKiBUaGUgYGdyaWRJZGAgcHJvcGVydHkgaXMgYSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBncmlkIGVsZW1lbnQuIEl0IGlzXG4gICAqIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJhc2VkIG9uIHRoZSBjb21wb25lbnQncyBgaWRgIHByb3BlcnR5LiBJZiB0aGUgYGlkYFxuICAgKiBwcm9wZXJ0eSBpcyBub3Qgc2V0LCBhIGRlZmF1bHQgdmFsdWUgb2YgJ3AnIGlzIHVzZWQuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBwdWJsaWMgZ3JpZElkOiBgZ3JpZC0keyBzdHJpbmcgfWAgPSBgZ3JpZC0keyB0aGlzLmlkPz8gJ3AnIH1gO1xuICBwcm90ZWN0ZWQgZ3JpZEFwaSE6IEdyaWRBcGk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEF0dHJpYnV0ZSgnaWQnKSBwdWJsaWMgaWQ6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXJcbiAgKSB7IH1cbiAgXG4gIC8qKlxuICAgKiBUaGUgYG9wZW5EZXRhaWxgIG1ldGhvZCBpcyB1c2VkIHRvIHRyaWdnZXIgYWN0aW9ucyB3aGVuIGEgdXNlciByZXF1ZXN0cyB0byBvcGVuXG4gICAqIHRoZSBkZXRhaWwgdmlldyBmb3IgYSBzcGVjaWZpYyBkYXRhIGl0ZW0uIEl0IGVtaXRzIGEgYGRhdGFgIGV2ZW50IHVzaW5nIHRoZVxuICAgKiBgb25Sb3dDbGlja2AgRXZlbnRFbWl0dGVyLCBwcm92aWRpbmcgZXh0ZXJuYWwgY29tcG9uZW50cyBvciBsaXN0ZW5lcnMgd2l0aFxuICAgKiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2xpY2tlZCBkYXRhLiBBZGRpdGlvbmFsbHksIGl0IG5hdmlnYXRlcyB0byB0aGUgZGV0YWlsXG4gICAqIHJvdXRlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGF0YSBpdGVtIHVzaW5nIHRoZSBBbmd1bGFyIFJvdXRlci5cbiAgICogXG4gICAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgaXRlbSBmb3Igd2hpY2ggdGhlIGRldGFpbCB2aWV3IGlzIHRvIGJlIG9wZW5lZC5cbiAgICovXG4gIHB1YmxpYyBvcGVuRGV0YWlsKGRhdGE6IGFueSk6IHZvaWR7IFxuICAgIHRoaXMub25Sb3dDbGljay5lbWl0KGRhdGEpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsgYCR7IHRoaXMuY29uZmlnLmJhc2VVcmwgfSR7IGRhdGEuZ3VpZCB9YCBdLCB7IHByZXNlcnZlRnJhZ21lbnQ6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGBzZXRHcmlkQXBpYCBtZXRob2QgaXMgdXNlZCB0byBzZXQgdGhlIGdyaWQgQVBJIHdoZW4gdGhlIGdyaWQgaXMgcmVhZHksIHR5cGljYWxseVxuICAgKiBhZnRlciB0aGUgYGdyaWRSZWFkeWAgZXZlbnQgaXMgZmlyZWQuIEl0IGFzc2lnbnMgdGhlIGdyaWQgQVBJIHRvIHRoZSBjb21wb25lbnQnc1xuICAgKiBgZ3JpZEFwaWAgcHJvcGVydHkgYW5kIGVtaXRzIHRoZSBgb25HcmlkUmVhZHlgIGV2ZW50LCBwcm92aWRpbmcgZXh0ZXJuYWwgY29tcG9uZW50c1xuICAgKiBvciBsaXN0ZW5lcnMgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ3JpZCdzIHJlYWRpbmVzcy5cbiAgICogXG4gICAqIEBwYXJhbSB7R3JpZFJlYWR5RXZlbnR9IGV2IC0gVGhlIGBHcmlkUmVhZHlFdmVudGAgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ3JpZCdzIHJlYWRpbmVzcy5cbiAgICovXG4gIHB1YmxpYyBzZXRHcmlkQXBpKGV2OiBHcmlkUmVhZHlFdmVudCk6IHZvaWR7IFxuICAgIHRoaXMuZ3JpZEFwaSA9IGV2LmFwaTsgXG4gICAgdGhpcy5vbkdyaWRSZWFkeS5lbWl0KGV2KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYHNlYXJjaGAgbWV0aG9kIGlzIHVzZWQgdG8gdHJpZ2dlciBhIHNlYXJjaCBvcGVyYXRpb24gYmFzZWQgb24gdGhlIHByb3ZpZGVkXG4gICAqIGBGaWx0ZXJTZWFyY2hFdmVudGAuIEl0IGVtaXRzIHRoZSBgb25TZWFyY2hgIGV2ZW50LCBwcm92aWRpbmcgZXh0ZXJuYWwgY29tcG9uZW50c1xuICAgKiBvciBsaXN0ZW5lcnMgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VhcmNoIHF1ZXJ5LiBBZGRpdGlvbmFsbHksIGl0IHJlZnJlc2hlc1xuICAgKiB0aGUgZ3JpZCBjYWNoZSB1c2luZyB0aGUgYHJlZnJlc2hJbmZpbml0ZUNhY2hlYCBtZXRob2Qgb2YgdGhlIGdyaWQgQVBJLlxuICAgKiBAcGFyYW0ge0ZpbHRlclNlYXJjaEV2ZW50fSBrIC0gVGhlIGBGaWx0ZXJTZWFyY2hFdmVudGAgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VhcmNoIG9wZXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2goazogRmlsdGVyU2VhcmNoRXZlbnQpOiB2b2lke1xuICAgIHRoaXMub25TZWFyY2guZW1pdChrKTtcbiAgICBcbiAgICB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdvVG9GaXJzdFBhZ2UoKTtcbiAgICB0aGlzLmdyaWRBcGkucHVyZ2VJbmZpbml0ZUNhY2hlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC00IHAtNCBmbGV4LXNocmluay0wIGZsZXgtd3JhcFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cIm0tMFwiPnt7IGhlYWRlciB9fTwvaDM+XG5cbiAgICAgICAgPHVwLWJ0bi1ncm91cCAqbmdJZj1cImNvbmZpZy5idXR0b25zICYmIGNvbmZpZy5idXR0b25zLmxlbmd0aCA+IDBcIiBpZD1cImJ0bi1saXN0LXNuYXBzaG90LWNvbnRhaW5lclwiIFtjb25maWddPVwiY29uZmlnLmJ1dHRvbnNcIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgZmxleC1ncm93LTFcIiAqbmdJZj1cImNvbmZpZy5maWx0ZXJDb25maWdcIj5cbiAgICAgICAgPHVwLWZpbHRlciBwbGFjZWhvbGRlcj1cIlR5cGUgdG8gc2VhcmNoXCIgaWQ9XCJmaWx0ZXIte3sgaWQgfX1cIiBbY29uZmlnXT1cImNvbmZpZy5maWx0ZXJDb25maWdcIiAob25TZWFyY2gpPVwic2VhcmNoKCRldmVudClcIiAvPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBweC0xIHBiLTFcIj5cbiAgICA8dXAtc25hcHNob3QtZ3JpZCBbY29uZmlnXT1cImNvbmZpZy5ncmlkQ29uZmlnXCIgW2lkXT1cImdyaWRJZFwiIChvbkdyaWRSZWFkeSk9XCJzZXRHcmlkQXBpKCRldmVudClcIiAob25Sb3dDbGljayk9XCJvcGVuRGV0YWlsKCRldmVudClcIiAvPlxuPC9kaXY+XG4iXX0=
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1zbmFwc2hvdC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pcGluLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2NvbnRhaW5lcnMvbGlzdC1jb250YWluZXIvbGlzdC1zbmFwc2hvdC1jb250YWluZXIvbGlzdC1zbmFwc2hvdC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pcGluLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2NvbnRhaW5lcnMvbGlzdC1jb250YWluZXIvbGlzdC1zbmFwc2hvdC1jb250YWluZXIvbGlzdC1zbmFwc2hvdC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBbUJ4RCxNQUFNLE9BQU8sOEJBQThCO0lBNkN6QyxZQUMwQixFQUFVLEVBQ2YsTUFBYztRQURULE9BQUUsR0FBRixFQUFFLENBQVE7UUFDZixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBNUJULGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVFuRCxnQkFBVyxHQUFpQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBUS9ELGFBQVEsR0FBb0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU9sRixXQUFNLEdBQXVCLFFBQVMsSUFBSSxDQUFDLEVBQUUsSUFBRyxHQUFJLEVBQUUsQ0FBQztJQU0xRCxDQUFDO0lBV0UsVUFBVSxDQUFDLElBQVM7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBRSxHQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBUSxHQUFJLElBQUksQ0FBQyxJQUFLLEVBQUUsQ0FBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBVU0sVUFBVSxDQUFDLEVBQWtCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBU00sTUFBTSxDQUFDLENBQW9CO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRCLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDcEMsQ0FBQzsrR0F6RlUsOEJBQThCLGtCQThDNUIsSUFBSTttR0E5Q04sOEJBQThCLDJSQzVCM0MsdzJCQWVBLHNMREtJLFdBQVcsOEJBQ1gsWUFBWSxrSUFDWixZQUFZLCtCQUNaLGVBQWUsdUdBQ2Ysb0JBQW9CLDZFQUNwQixxQkFBcUI7OzRGQUdaLDhCQUE4QjtrQkFqQjFDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLDRCQUE0QixRQUdoQzt3QkFDSixLQUFLLEVBQUUsZ0NBQWdDO3FCQUN4QyxXQUNRO3dCQUNQLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixZQUFZO3dCQUNaLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQixxQkFBcUI7cUJBQ3RCOzswQkFnREUsU0FBUzsyQkFBQyxJQUFJOzhEQXhDaUIsTUFBTTtzQkFBdkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBTVMsTUFBTTtzQkFBdkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT0MsVUFBVTtzQkFBbkMsTUFBTTtnQkFRbUIsV0FBVztzQkFBcEMsTUFBTTtnQkFRbUIsUUFBUTtzQkFBakMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQXR0cmlidXRlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEdyaWRBcGksIEdyaWRSZWFkeUV2ZW50IH0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHsgTGlzdENvbnRhaW5lckNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvbGlzdC1jb250YWluZXItY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXJTZWFyY2hFdmVudCB9IGZyb20gJy4uLy4uLy4uL2ZpbHRlci9pbnRlcmZhY2VzL2ZpbHRlci1zZWFyY2gtZXZlbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ZpbHRlcic7XG5pbXBvcnQgeyBHcmlkU25hcHNob3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9ncmlkcyc7XG5pbXBvcnQgeyBCdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2J1dHRvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICd1cC1saXN0LXNuYXBzaG90LWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXNuYXBzaG90LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3Qtc25hcHNob3QtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2QtZmxleCBmbGV4LWNvbHVtbiBoLTEwMCB3LTEwMCdcbiAgfSxcbiAgaW1wb3J0czogW1xuICAgIElvbmljTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgRmlsdGVyQ29tcG9uZW50LFxuICAgIEJ1dHRvbkdyb3VwQ29tcG9uZW50LFxuICAgIEdyaWRTbmFwc2hvdENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExpc3RTbmFwc2hvdENvbnRhaW5lckNvbXBvbmVudCB7XG5cbiAgLyoqXG4gICAqIEFuIElucHV0IHZhcmlhYmxlIHRoYXQgdXNlZCB0byBzdHJpbmcgZm9yIGN1c3RvbWl6aW5nIGhlYWRlci5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovIFxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwdWJsaWMgaGVhZGVyITogc3RyaW5nO1xuICAvKipcbiAgICogQW4gaW5wdXQgdmFyaWFibGUgdGhhdCB1c2VkIHRvIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBjdXN0b21pemluZyBsaXN0IGNvbnRhaW5lciBjb25maWcgcHJvcGVydGllcy4gVGhpc1xuICAgKiBvYmplY3QgZGVmaW5lZCBieSBMaXN0Q29udGFpbmVyQ29uZmlnIGludGVyZmFjZSBhbGxvd3Mgc3BlY2lmeWluZyBiYXNlVXJsLCBncmlkQ29uZmlnLCBmaWx0ZXJDb25maWcgYW5kIHBlcm1pc3Npb24uXG4gICAqIEB0eXBlIHtMaXN0Q29udGFpbmVyQ29uZmlnfVxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcHVibGljIGNvbmZpZyE6IExpc3RDb250YWluZXJDb25maWc7XG4gIC8qKlxuICAgKiBUaGUgYG9uUm93Q2xpY2tgIEV2ZW50RW1pdHRlciBpcyB1c2VkIHRvIG5vdGlmeSBwYXJlbnQgY29tcG9uZW50cyBvciBsaXN0ZW5lcnNcbiAgICogd2hlbiBhIHJvdyBpcyBjbGlja2VkIHdpdGhpbiB0aGUgY3VycmVudCBjb21wb25lbnQuIEl0IGVtaXRzIGFuIGV2ZW50IGNvbnRhaW5pbmdcbiAgICogaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgY2xpY2tlZCByb3cuXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8YW55Pn1cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgb25Sb3dDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIC8qKlxuICAgKiBUaGUgYG9uR3JpZFJlYWR5YCBFdmVudEVtaXR0ZXIgaXMgdXNlZCB0byBpbmZvcm0gcGFyZW50IGNvbXBvbmVudHMgb3IgbGlzdGVuZXJzXG4gICAqIHdoZW4gdGhlIGdyaWQgd2l0aGluIHRoZSBjdXJyZW50IGNvbXBvbmVudCBpcyByZWFkeSBmb3IgaW50ZXJhY3Rpb24uIEl0IGVtaXRzIGFuXG4gICAqIGV2ZW50IG9mIHR5cGUgYEdyaWRSZWFkeUV2ZW50YCwgd2hpY2ggbWF5IGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGdyaWQnc1xuICAgKiByZWFkaW5lc3MgYW5kIGNhcGFiaWxpdGllcy4gIFxuICAgKiBAdHlwZSB7RXZlbnRFbWl0dGVyPEdyaWRSZWFkeUV2ZW50Pn0gICAgXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IG9uR3JpZFJlYWR5OiBFdmVudEVtaXR0ZXI8R3JpZFJlYWR5RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvKipcbiAgICogVGhlIGBvblNlYXJjaGAgRXZlbnRFbWl0dGVyIGlzIHVzZWQgdG8gaW5mb3JtIHBhcmVudCBjb21wb25lbnRzIG9yIGxpc3RlbmVyc1xuICAgKiB3aGVuIGEgc2VhcmNoIGV2ZW50IGlzIHRyaWdnZXJlZCB3aXRoaW4gdGhlIGN1cnJlbnQgY29tcG9uZW50LiBJdCBlbWl0cyBhblxuICAgKiBldmVudCBvZiB0eXBlIGBGaWx0ZXJTZWFyY2hFdmVudGAsIHdoaWNoIG1heSBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuICAgKiBzZWFyY2ggcXVlcnkgYW5kIGFkZGl0aW9uYWwgZGV0YWlscyByZWxhdGVkIHRvIHRoZSBzZWFyY2ggb3BlcmF0aW9uLlxuICAgKiBAdHlwZSB7RXZlbnRFbWl0dGVyPEZpbHRlclNlYXJjaEV2ZW50Pn1cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgb25TZWFyY2g6IEV2ZW50RW1pdHRlcjxGaWx0ZXJTZWFyY2hFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIC8qKlxuICAgKiBUaGUgYGdyaWRJZGAgcHJvcGVydHkgaXMgYSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBncmlkIGVsZW1lbnQuIEl0IGlzXG4gICAqIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJhc2VkIG9uIHRoZSBjb21wb25lbnQncyBgaWRgIHByb3BlcnR5LiBJZiB0aGUgYGlkYFxuICAgKiBwcm9wZXJ0eSBpcyBub3Qgc2V0LCBhIGRlZmF1bHQgdmFsdWUgb2YgJ3AnIGlzIHVzZWQuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBwdWJsaWMgZ3JpZElkOiBgZ3JpZC0keyBzdHJpbmcgfWAgPSBgZ3JpZC0keyB0aGlzLmlkPz8gJ3AnIH1gO1xuICBwcm90ZWN0ZWQgZ3JpZEFwaSE6IEdyaWRBcGk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEF0dHJpYnV0ZSgnaWQnKSBwdWJsaWMgaWQ6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXJcbiAgKSB7IH1cbiAgXG4gIC8qKlxuICAgKiBUaGUgYG9wZW5EZXRhaWxgIG1ldGhvZCBpcyB1c2VkIHRvIHRyaWdnZXIgYWN0aW9ucyB3aGVuIGEgdXNlciByZXF1ZXN0cyB0byBvcGVuXG4gICAqIHRoZSBkZXRhaWwgdmlldyBmb3IgYSBzcGVjaWZpYyBkYXRhIGl0ZW0uIEl0IGVtaXRzIGEgYGRhdGFgIGV2ZW50IHVzaW5nIHRoZVxuICAgKiBgb25Sb3dDbGlja2AgRXZlbnRFbWl0dGVyLCBwcm92aWRpbmcgZXh0ZXJuYWwgY29tcG9uZW50cyBvciBsaXN0ZW5lcnMgd2l0aFxuICAgKiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2xpY2tlZCBkYXRhLiBBZGRpdGlvbmFsbHksIGl0IG5hdmlnYXRlcyB0byB0aGUgZGV0YWlsXG4gICAqIHJvdXRlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGF0YSBpdGVtIHVzaW5nIHRoZSBBbmd1bGFyIFJvdXRlci5cbiAgICogXG4gICAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgaXRlbSBmb3Igd2hpY2ggdGhlIGRldGFpbCB2aWV3IGlzIHRvIGJlIG9wZW5lZC5cbiAgICovXG4gIHB1YmxpYyBvcGVuRGV0YWlsKGRhdGE6IGFueSk6IHZvaWR7IFxuICAgIHRoaXMub25Sb3dDbGljay5lbWl0KGRhdGEpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsgYCR7IHRoaXMuY29uZmlnLmJhc2VVcmwgfSR7IGRhdGEuZ3VpZCB9YCBdLCB7IHByZXNlcnZlRnJhZ21lbnQ6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGBzZXRHcmlkQXBpYCBtZXRob2QgaXMgdXNlZCB0byBzZXQgdGhlIGdyaWQgQVBJIHdoZW4gdGhlIGdyaWQgaXMgcmVhZHksIHR5cGljYWxseVxuICAgKiBhZnRlciB0aGUgYGdyaWRSZWFkeWAgZXZlbnQgaXMgZmlyZWQuIEl0IGFzc2lnbnMgdGhlIGdyaWQgQVBJIHRvIHRoZSBjb21wb25lbnQnc1xuICAgKiBgZ3JpZEFwaWAgcHJvcGVydHkgYW5kIGVtaXRzIHRoZSBgb25HcmlkUmVhZHlgIGV2ZW50LCBwcm92aWRpbmcgZXh0ZXJuYWwgY29tcG9uZW50c1xuICAgKiBvciBsaXN0ZW5lcnMgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ3JpZCdzIHJlYWRpbmVzcy5cbiAgICogXG4gICAqIEBwYXJhbSB7R3JpZFJlYWR5RXZlbnR9IGV2IC0gVGhlIGBHcmlkUmVhZHlFdmVudGAgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ3JpZCdzIHJlYWRpbmVzcy5cbiAgICovXG4gIHB1YmxpYyBzZXRHcmlkQXBpKGV2OiBHcmlkUmVhZHlFdmVudCk6IHZvaWR7IFxuICAgIHRoaXMuZ3JpZEFwaSA9IGV2LmFwaTsgXG4gICAgdGhpcy5vbkdyaWRSZWFkeS5lbWl0KGV2KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYHNlYXJjaGAgbWV0aG9kIGlzIHVzZWQgdG8gdHJpZ2dlciBhIHNlYXJjaCBvcGVyYXRpb24gYmFzZWQgb24gdGhlIHByb3ZpZGVkXG4gICAqIGBGaWx0ZXJTZWFyY2hFdmVudGAuIEl0IGVtaXRzIHRoZSBgb25TZWFyY2hgIGV2ZW50LCBwcm92aWRpbmcgZXh0ZXJuYWwgY29tcG9uZW50c1xuICAgKiBvciBsaXN0ZW5lcnMgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VhcmNoIHF1ZXJ5LiBBZGRpdGlvbmFsbHksIGl0IHJlZnJlc2hlc1xuICAgKiB0aGUgZ3JpZCBjYWNoZSB1c2luZyB0aGUgYHJlZnJlc2hJbmZpbml0ZUNhY2hlYCBtZXRob2Qgb2YgdGhlIGdyaWQgQVBJLlxuICAgKiBAcGFyYW0ge0ZpbHRlclNlYXJjaEV2ZW50fSBrIC0gVGhlIGBGaWx0ZXJTZWFyY2hFdmVudGAgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VhcmNoIG9wZXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2goazogRmlsdGVyU2VhcmNoRXZlbnQpOiB2b2lke1xuICAgIHRoaXMub25TZWFyY2guZW1pdChrKTtcbiAgICBcbiAgICB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdvVG9GaXJzdFBhZ2UoKTtcbiAgICB0aGlzLmdyaWRBcGkucHVyZ2VJbmZpbml0ZUNhY2hlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC00IHAtNCBmbGV4LXNocmluay0wIGZsZXgtd3JhcCBmbGV4LW1kLW5vd3JhcFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cIm0tMCB0ZXh0LXRydW5jYXRlXCI+e3sgaGVhZGVyIH19PC9oMz5cblxuICAgICAgICA8dXAtYnRuLWdyb3VwICpuZ0lmPVwiY29uZmlnLmJ1dHRvbnMgJiYgY29uZmlnLmJ1dHRvbnMubGVuZ3RoID4gMFwiIGNsYXNzPVwiZmxleC1zaHJpbmstMFwiIGlkPVwiYnRuLWxpc3Qtc25hcHNob3QtY29udGFpbmVyXCIgW2NvbmZpZ109XCJjb25maWcuYnV0dG9uc1wiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMCBmbGV4LWdyb3ctMSBmbGV4LWxnLWdyb3ctMFwiICpuZ0lmPVwiY29uZmlnLmZpbHRlckNvbmZpZ1wiPlxuICAgICAgICA8dXAtZmlsdGVyIHBsYWNlaG9sZGVyPVwiVHlwZSB0byBzZWFyY2hcIiBpZD1cImZpbHRlci17eyBpZCB9fVwiIFtjb25maWddPVwiY29uZmlnLmZpbHRlckNvbmZpZ1wiIChvblNlYXJjaCk9XCJzZWFyY2goJGV2ZW50KVwiIC8+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIHB4LTEgcGItMVwiPlxuICAgIDx1cC1zbmFwc2hvdC1ncmlkIFtjb25maWddPVwiY29uZmlnLmdyaWRDb25maWdcIiBbaWRdPVwiZ3JpZElkXCIgKG9uR3JpZFJlYWR5KT1cInNldEdyaWRBcGkoJGV2ZW50KVwiIChvblJvd0NsaWNrKT1cIm9wZW5EZXRhaWwoJGV2ZW50KVwiIC8+XG48L2Rpdj5cbiJdfQ==
@@ -5,6 +5,7 @@ import * as i1 from "@ionic/angular";
5
5
  export class ModalContainerComponent {
6
6
  constructor(modalCtrl) {
7
7
  this.modalCtrl = modalCtrl;
8
+ this.disabled = false;
8
9
  }
9
10
  ngOnInit() {
10
11
  this.key = this.header.replace(/ /g, '-');
@@ -18,22 +19,22 @@ export class ModalContainerComponent {
18
19
  if (!ev.state[this.key])
19
20
  this.modalCtrl.dismiss();
20
21
  }
21
- close() {
22
- this.modalCtrl.dismiss();
23
- }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ModalContainerComponent, deps: [{ token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
25
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: ModalContainerComponent, isStandalone: true, selector: "up-modal-container", inputs: { header: "header" }, host: { listeners: { "window:popstate": "popState($event)" } }, ngImport: i0, template: "<ion-header class=\"ion-no-border\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"close()\">\n <ion-icon slot=\"icon-only\" name=\"close\" />\n </ion-button>\n </ion-buttons>\n\n <ion-title class=\"p-0 fs-5\">{{ header }}</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<div class=\"p-4\">\n <ng-content />\n</div>\n", styles: ["ion-toolbar{color:#616161}ion-header{border-bottom:1px solid #e0e0e0}\n"], dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22
+ close() { this.modalCtrl.dismiss(); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ModalContainerComponent, deps: [{ token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ModalContainerComponent, isStandalone: true, selector: "up-modal-container", inputs: { header: "header", disabled: "disabled" }, host: { listeners: { "window:popstate": "popState($event)" } }, ngImport: i0, template: "<ion-header class=\"ion-no-border\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-button [disabled]=\"disabled\" (click)=\"close()\">\n <ion-icon slot=\"icon-only\" name=\"close\" />\n </ion-button>\n </ion-buttons>\n\n <ion-title class=\"p-0 fs-5\">{{ header }}</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<div class=\"p-4\">\n <ng-content />\n</div>\n", styles: ["ion-toolbar{color:#616161}ion-header{border-bottom:1px solid #e0e0e0}\n"], dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26
25
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ModalContainerComponent, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ModalContainerComponent, decorators: [{
28
27
  type: Component,
29
28
  args: [{ standalone: true, selector: 'up-modal-container', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
30
29
  IonicModule
31
- ], template: "<ion-header class=\"ion-no-border\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"close()\">\n <ion-icon slot=\"icon-only\" name=\"close\" />\n </ion-button>\n </ion-buttons>\n\n <ion-title class=\"p-0 fs-5\">{{ header }}</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<div class=\"p-4\">\n <ng-content />\n</div>\n", styles: ["ion-toolbar{color:#616161}ion-header{border-bottom:1px solid #e0e0e0}\n"] }]
30
+ ], template: "<ion-header class=\"ion-no-border\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-button [disabled]=\"disabled\" (click)=\"close()\">\n <ion-icon slot=\"icon-only\" name=\"close\" />\n </ion-button>\n </ion-buttons>\n\n <ion-title class=\"p-0 fs-5\">{{ header }}</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<div class=\"p-4\">\n <ng-content />\n</div>\n", styles: ["ion-toolbar{color:#616161}ion-header{border-bottom:1px solid #e0e0e0}\n"] }]
32
31
  }], ctorParameters: () => [{ type: i1.ModalController }], propDecorators: { header: [{
33
32
  type: Input,
34
33
  args: [{ required: true }]
34
+ }], disabled: [{
35
+ type: Input
35
36
  }], popState: [{
36
37
  type: HostListener,
37
38
  args: ['window:popstate', ['$event']]
38
39
  }] } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9jb250YWluZXJzL21vZGFsLWNvbnRhaW5lci9tb2RhbC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pcGluLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2NvbnRhaW5lcnMvbW9kYWwtY29udGFpbmVyL21vZGFsLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFFLFdBQVcsRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBc0I5RCxNQUFNLE9BQU8sdUJBQXVCO0lBa0JsQyxZQUNxQixTQUEwQjtRQUExQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtJQUMzQyxDQUFDO0lBT0UsUUFBUTtRQUNiLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBTU0sV0FBVztRQUNoQixJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBUU0sUUFBUSxDQUFDLEVBQWlCO1FBQy9CLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFLTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDOzhHQXZEVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qiw0S0N2QnBDLDBaQWVBLGdJREtJLFdBQVc7OzJGQUdGLHVCQUF1QjtrQkFWbkMsU0FBUztpQ0FDSSxJQUFJLFlBQ04sb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsV0FBVztxQkFDWjtvRkFXaUMsTUFBTTtzQkFBdkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBcUNsQixRQUFRO3NCQURkLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBRSxRQUFRLENBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbmljTW9kdWxlLCBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5cbi8qKlxuICogYE1vZGFsQ29udGFpbmVyQ29tcG9uZW50YCBpcyBhIGNvbnRhaW5lciB0byBkaXNwbGF5IGEgbW9kYWwgZGlhbG9nXG4gKiB0aGlzIGNvbXBvbmVudCBwcm92aWRlIHRoZSBtb2RhbCBoZWFkZXIuXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHVwLW1vZGFsLWNvbnRhaW5lciBoZWFkZXI9XCJUaGUgdGl0bGVcIj5cbiAqICB0aGUgY29udGVudFxuICogPC91cC1tb2RhbC1jb250YWluZXI+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAndXAtbW9kYWwtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogWyBcbiAgICBJb25pY01vZHVsZSBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIEFuIGlucHV0IHB1YmxpYyB2YXJpYWJsZSB0byBzZXQgdGhlIG1vZGFsIGhlYWRlciB0ZXh0IHZpc2libGUgb24gdG9wIGxlZnQgb2YgdGhlIG1vZGFsLlxuICAgKiBDb25zaWRlcmVkIGFzIG1vZGFsIHRpdGxlIHJlcHJlc2VudCB3aGF0IGlzIHRoZSBtb2RhbCBmb3IuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBkZWZhdWx0IHtudWxsfVxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpYyBoZWFkZXIhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcHJvdGVjdGVkIHZhcmlhYmxlIHRvIHNldCB0aGUga2V5IGZvciB3aW5kb3cgc3RhdGUgcHVycG9zZS5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQGRlZmF1bHQge251bGx9XG4gICAqL1xuICBwcm90ZWN0ZWQga2V5ITogc3RyaW5nO1xuICBcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZGFsQ3RybDogTW9kYWxDb250cm9sbGVyXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIExpZmVjeWNsZSBob29rIHRvIGluaXRpYWxpemUgdGhlIGNvbXBvbmVudC5cbiAgICogU2V0IGtleSB1c2UgdGhlIGhlYWRlciBhbmQgcmVwbGFpY25nIHRoZSBlbXB0eSBzcGFjZSB3aXRoIGAtYC5cbiAgICogUHVzaCBzdGF0ZSB0byB0aGUgd2luZG93IGhpc3RvcnkuXG4gICAqL1xuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZHtcbiAgICB0aGlzLmtleSA9IHRoaXMuaGVhZGVyLnJlcGxhY2UoLyAvZywgJy0nKTtcbiAgICBoaXN0b3J5LnB1c2hTdGF0ZSh7IFt0aGlzLmtleV06IHRydWUgfSwgJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpZmVjeWNsZSBob29rIHRvIGhhbmRsZSBjb21wb25lbiBkZXN0cnVjdGlvbi5cbiAgICogQ2hlY2sgaWYgdGhlIHN0YXRlIGhpc3RvcnkgZXhpc3QgdGhlbiBuYXZpZ2F0ZSB0byBwcmV2aW91cyBzdGF0ZS5cbiAgICovXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lke1xuICAgIGlmIChoaXN0b3J5LnN0YXRlW3RoaXMua2V5XSkgaGlzdG9yeS5iYWNrKCk7IFxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgcHJvY2VkdXJlIGlzIGEgbGlzdGVuZXIgZm9yIHRoZSAncG9wc3RhdGUnIGV2ZW50IG9uIHRoZSB3aW5kb3cuXG4gICAqIEl0IGlzIHRvIGhhbmRsZSBicm93c2VyIG5hdmlnYXRpb24gY2hhbmdlcyAoZS5nLiwgYmFjayBvciBmb3J3YXJkIGJ1dHRvbiBjbGlja3MpLlxuICAgKiBAcGFyYW0ge1BvcFN0YXRlRXZlbnR9IGV2IC0gVGhlIFBvcFN0YXRlRXZlbnQgb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRlIGNoYW5nZS5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpwb3BzdGF0ZScsIFsgJyRldmVudCcgXSlcbiAgcHVibGljIHBvcFN0YXRlKGV2OiBQb3BTdGF0ZUV2ZW50KTogdm9pZHsgXG4gICAgaWYgKCFldi5zdGF0ZVt0aGlzLmtleV0pIHRoaXMubW9kYWxDdHJsLmRpc21pc3MoKTsgXG4gIH1cblxuICAvKipcbiAgICogQSBwb3JjZWR1cmUgdG8gZGlzbWlzcyB0aGUgbW9kYWwuXG4gICAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZHsgXG4gICAgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcygpOyBcbiAgfVxufVxuIiwiPGlvbi1oZWFkZXIgY2xhc3M9XCJpb24tbm8tYm9yZGVyXCI+XG4gICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNsb3NlXCIgLz5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cblxuICAgICAgICA8aW9uLXRpdGxlIGNsYXNzPVwicC0wIGZzLTVcIj57eyBoZWFkZXIgfX08L2lvbi10aXRsZT5cbiAgICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48ZGl2IGNsYXNzPVwicC00XCI+XG4gICAgPG5nLWNvbnRlbnQgLz5cbjwvZGl2PlxuIl19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9jb250YWluZXJzL21vZGFsLWNvbnRhaW5lci9tb2RhbC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pcGluLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2NvbnRhaW5lcnMvbW9kYWwtY29udGFpbmVyL21vZGFsLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFFLFdBQVcsRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBc0I5RCxNQUFNLE9BQU8sdUJBQXVCO0lBNEJsQyxZQUNxQixTQUEwQjtRQUExQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQVYvQixhQUFRLEdBQVksS0FBSyxDQUFDO0lBV3RDLENBQUM7SUFPRSxRQUFRO1FBQ2IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFNTSxXQUFXO1FBQ2hCLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFRTSxRQUFRLENBQUMsRUFBaUI7UUFDL0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUtNLEtBQUssS0FBVSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQzsrR0EvRHRDLHVCQUF1QjttR0FBdkIsdUJBQXVCLGtNQ3ZCcEMsa2JBZUEsZ0lES0ksV0FBVzs7NEZBR0YsdUJBQXVCO2tCQVZuQyxTQUFTO2lDQUNJLElBQUksWUFDTixvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxXQUFXO3FCQUNaO29GQVdpQyxNQUFNO3NCQUF2QyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFVVCxRQUFRO3NCQUF2QixLQUFLO2dCQXFDQyxRQUFRO3NCQURkLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBRSxRQUFRLENBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbmljTW9kdWxlLCBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5cbi8qKlxuICogYE1vZGFsQ29udGFpbmVyQ29tcG9uZW50YCBpcyBhIGNvbnRhaW5lciB0byBkaXNwbGF5IGEgbW9kYWwgZGlhbG9nXG4gKiB0aGlzIGNvbXBvbmVudCBwcm92aWRlIHRoZSBtb2RhbCBoZWFkZXIuXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHVwLW1vZGFsLWNvbnRhaW5lciBoZWFkZXI9XCJUaGUgdGl0bGVcIj5cbiAqICBUaGUgY29udGVudFxuICogPC91cC1tb2RhbC1jb250YWluZXI+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAndXAtbW9kYWwtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIElvbmljTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8qKlxuICAgKiBBbiBpbnB1dCBwdWJsaWMgdmFyaWFibGUgdG8gc2V0IHRoZSBtb2RhbCBoZWFkZXIgdGV4dCB2aXNpYmxlIG9uIHRvcCBsZWZ0IG9mIHRoZSBtb2RhbC5cbiAgICogQ29uc2lkZXJlZCBhcyBtb2RhbCB0aXRsZSByZXByZXNlbnQgd2hhdCBpcyB0aGUgbW9kYWwgZm9yLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAZGVmYXVsdCB7bnVsbH1cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwdWJsaWMgaGVhZGVyITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBpbnB1dCBwdWJsaWMgdmFyaWFibGUgdG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgbW9kYWwncyBpbnRlcmFjdGl2ZSBlbGVtZW50cy5cbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgYnV0dG9ucyBhbmQgb3RoZXIgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2l0aGluIHRoZSBtb2RhbCB3aWxsIGJlIGRpc2FibGVkLlxuICAgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJldmVudGluZyB1c2VyIGFjdGlvbnMgd2hpbGUgdGhlIG1vZGFsIGlzIGluIGEgc3BlY2lmaWMgc3RhdGUgb3Igd2hlblxuICAgKiBjZXJ0YWluIGNvbmRpdGlvbnMgYXJlIG1ldCAoZS5nLiwgd2hlbiAnc3VnZ2VzdGVkTG9naW4nIGlzICdDaGFuZ2VQYXNzd29yZCcpLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIHByb3RlY3RlZCB2YXJpYWJsZSB0byBzZXQgdGhlIGtleSBmb3Igd2luZG93IHN0YXRlIHB1cnBvc2UuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBkZWZhdWx0IHtudWxsfVxuICAgKi9cbiAgcHJvdGVjdGVkIGtleSE6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXJcbiAgKSB7IH1cblxuICAvKipcbiAgICogTGlmZWN5Y2xlIGhvb2sgdG8gaW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50LlxuICAgKiBTZXQga2V5IHVzZSB0aGUgaGVhZGVyIGFuZCByZXBsYWljbmcgdGhlIGVtcHR5IHNwYWNlIHdpdGggYC1gLlxuICAgKiBQdXNoIHN0YXRlIHRvIHRoZSB3aW5kb3cgaGlzdG9yeS5cbiAgICovXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lke1xuICAgIHRoaXMua2V5ID0gdGhpcy5oZWFkZXIucmVwbGFjZSgvIC9nLCAnLScpO1xuICAgIGhpc3RvcnkucHVzaFN0YXRlKHsgW3RoaXMua2V5XTogdHJ1ZSB9LCAnJyk7XG4gIH1cblxuICAvKipcbiAgICogTGlmZWN5Y2xlIGhvb2sgdG8gaGFuZGxlIGNvbXBvbmVuIGRlc3RydWN0aW9uLlxuICAgKiBDaGVjayBpZiB0aGUgc3RhdGUgaGlzdG9yeSBleGlzdCB0aGVuIG5hdmlnYXRlIHRvIHByZXZpb3VzIHN0YXRlLlxuICAgKi9cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWR7XG4gICAgaWYgKGhpc3Rvcnkuc3RhdGVbdGhpcy5rZXldKSBoaXN0b3J5LmJhY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHByb2NlZHVyZSBpcyBhIGxpc3RlbmVyIGZvciB0aGUgJ3BvcHN0YXRlJyBldmVudCBvbiB0aGUgd2luZG93LlxuICAgKiBJdCBpcyB0byBoYW5kbGUgYnJvd3NlciBuYXZpZ2F0aW9uIGNoYW5nZXMgKGUuZy4sIGJhY2sgb3IgZm9yd2FyZCBidXR0b24gY2xpY2tzKS5cbiAgICogQHBhcmFtIHtQb3BTdGF0ZUV2ZW50fSBldiAtIFRoZSBQb3BTdGF0ZUV2ZW50IG9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGF0ZSBjaGFuZ2UuXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cG9wc3RhdGUnLCBbICckZXZlbnQnIF0pXG4gIHB1YmxpYyBwb3BTdGF0ZShldjogUG9wU3RhdGVFdmVudCk6IHZvaWR7XG4gICAgaWYgKCFldi5zdGF0ZVt0aGlzLmtleV0pIHRoaXMubW9kYWxDdHJsLmRpc21pc3MoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHBvcmNlZHVyZSB0byBkaXNtaXNzIHRoZSBtb2RhbC5cbiAgICovXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkeyB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKCk7IH1cbn1cbiIsIjxpb24taGVhZGVyIGNsYXNzPVwiaW9uLW5vLWJvcmRlclwiPlxuICAgIDxpb24tdG9vbGJhcj5cbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjbG9zZVwiIC8+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG5cbiAgICAgICAgPGlvbi10aXRsZSBjbGFzcz1cInAtMCBmcy01XCI+e3sgaGVhZGVyIH19PC9pb24tdGl0bGU+XG4gICAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuPGRpdiBjbGFzcz1cInAtNFwiPlxuICAgIDxuZy1jb250ZW50IC8+XG48L2Rpdj5cbiJdfQ==
@@ -89,10 +89,10 @@ export class FilterComponent {
89
89
  this.activeFilter.push({ label: `${key}:${val}`, key, value: val });
90
90
  }
91
91
  }
92
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FilterComponent, deps: [{ token: 'placeholder', attribute: true }, { token: i0.ChangeDetectorRef }, { token: i1.PopoverController }], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FilterComponent, isStandalone: true, selector: "up-filter", inputs: { id: "id", config: "config" }, outputs: { onSearch: "onSearch" }, host: { classAttribute: "d-block position-relative" }, viewQueries: [{ propertyName: "searchBox", first: true, predicate: ["searchBox"], descendants: true }], ngImport: i0, template: "<ion-icon name=\"search\" class=\"fs-4 position-absolute\" />\n\n<div class=\"d-flex align-items-center form-control ps-5 py-0 pe-0 gap-3\">\n <div *ngIf=\"activeFilter.length > 0\" class=\"d-flex flex-grow-1 flex-shrink-0 tag-container gap-2 text-nowrap overflow-auto\">\n <div class=\"tag-item p-1 rounded d-flex align-items-center user-select-none\" *ngFor=\"let item of activeFilter; index as i\">\n <ion-icon name=\"close\" class=\"pe-1 me-1 cursor-pointer text-primary\" (click)=\"removeFilter(i);\" />\n {{ item.label }}\n </div>\n </div>\n\n <input #searchBox type=\"search\" placeholder=\"{{ placeholder }}\" class=\"flex-shrink-1 border-0 form-control ps-0 py-2\" [class.adv]=\"config.mode === 'advanced'\" (keyup.enter)=\"add();\" />\n</div>\n\n<ng-container *ngIf=\"config.mode === 'advanced'\">\n <ion-icon name=\"filter\" class=\"position-absolute fs-4 cursor-pointer\" id=\"filter-{{ id }}\" />\n <ion-icon name=\"close\" class=\"position-absolute fs-4 cursor-pointer\" (click)=\"clear();\" />\n\n <ion-popover trigger=\"filter-{{ id }}\" triggerAction=\"click\">\n <ng-template>\n <div class=\"d-flex flex-column filter\">\n <div class=\"flex-shrink-0 border-bottom p-1 pe-4 d-flex align-items-center\">\n <ion-buttons>\n <ion-button size=\"small\" (click)=\"close()\">\n <ion-icon slot=\"icon-only\" name=\"close\" />\n </ion-button>\n </ion-buttons>\n \n <div class=\"fs-5 fw-medium\">Advanced Filter</div>\n </div>\n \n <form class=\"flex-grow-1 overflow-auto px-4\" [formGroup]=\"form\">\n <ng-container *ngFor=\"let c of config.fields\">\n <ng-container [ngSwitch]=\"c.type\">\n <up-input type=\"number\" autocomplete=\"off\" class=\"my-4\" label=\"{{ c.label }}\" formControlName=\"{{ c.key }}\" *ngSwitchCase=\"'number'\" />\n \n <div class=\"my-4\" *ngSwitchCase=\"'checkbox'\">\n <ion-checkbox labelPlacement=\"end\" formControlName=\"{{ c.key }}\">{{ c.label }}</ion-checkbox>\n </div>\n \n <div class=\"d-flex gap-3 my-4\" *ngSwitchCase=\"'date-range'\">\n <up-date class=\"flex-grow-1\" name=\"filter-from\" label=\"{{ c.label[0] }}\" formControlName=\"{{ c.key[0] }}\" />\n <up-date class=\"flex-grow-1\" name=\"filter-to\" label=\"{{ c.label[1] }}\" formControlName=\"{{ c.key[1] }}\" />\n </div>\n \n <up-select class=\"my-4\" label=\"{{ c.label }}\" formControlName=\"{{ c.key }}\" [items]=\"c.options!\" *ngSwitchCase=\"'select'\" />\n <up-searchable-select class=\"my-4\" label=\"{{ c.label }}\" formControlName=\"{{ c.key }}\" [queryFunc]=\"c.getOptions!\" [initialItems]=\"c.options!\" *ngSwitchCase=\"'searchable-select'\" />\n \n <up-input type=\"text\" autocomplete=\"off\" class=\"my-4\" label=\"{{ c.label }}\" formControlName=\"{{ c.key }}\" *ngSwitchDefault />\n </ng-container>\n </ng-container>\n </form>\n \n <div class=\"flex-shrink-0 py-3 px-4 border-top d-flex gap-3\">\n <ion-button class=\"flex-grow-1\" color=\"secondary\" (click)=\"form.reset();\">Reset</ion-button>\n <ion-button class=\"flex-grow-1\" color=\"primary\" (click)=\"search();\">Search</ion-button>\n </div>\n </div>\n </ng-template>\n </ion-popover> \n</ng-container>\n", styles: ["ion-icon{top:7px}ion-icon[name=close]{right:16px}ion-icon[name=search]{left:14px}ion-icon[name=filter]{right:48px}ion-popover{--width: 80%;--max-width: 450px}.adv{padding-right:60px}.fs-5,ion-icon{color:#616161}.tag-container{max-width:47%}.tag-container::-webkit-scrollbar{height:0px}.tag-item{color:#ed6b26;background-color:#fef3ee}.tag-item ion-icon{border-right:1px solid #fbd1be}\n"], dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCheckbox, selector: "ion-checkbox", inputs: ["alignment", "checked", "color", "disabled", "indeterminate", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonPopover, selector: "ion-popover" }, { kind: "directive", type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: FormDateComponent, selector: "up-date", inputs: ["label", "required", "disabled", "presentation"] }, { kind: "component", type: FormInputComponent, selector: "up-input", inputs: ["label", "value", "required", "disabled"], outputs: ["onInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormSelectComponent, selector: "up-select", inputs: ["items", "clearable", "label", "multiple", "required", "addTag", "disabled", "searchable", "bindLabel", "bindValue"] }, { kind: "component", type: FormSearchableSelectComponent, selector: "up-searchable-select", inputs: ["queryFunc", "clearable", "label", "initialItems", "required", "addTag", "disabled", "multiple", "bindLabel", "bindValue"], outputs: ["onChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
92
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FilterComponent, deps: [{ token: 'placeholder', attribute: true }, { token: i0.ChangeDetectorRef }, { token: i1.PopoverController }], target: i0.ɵɵFactoryTarget.Component }); }
93
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: FilterComponent, isStandalone: true, selector: "up-filter", inputs: { id: "id", config: "config" }, outputs: { onSearch: "onSearch" }, host: { classAttribute: "d-block position-relative" }, viewQueries: [{ propertyName: "searchBox", first: true, predicate: ["searchBox"], descendants: true }], ngImport: i0, template: "<ion-icon name=\"search\" class=\"fs-4 position-absolute\" />\n\n<div class=\"d-flex align-items-center form-control ps-5 py-0 pe-0 gap-3\">\n <div *ngIf=\"activeFilter.length > 0\" class=\"d-flex flex-grow-1 flex-shrink-0 tag-container gap-2 text-nowrap overflow-auto\">\n <div class=\"tag-item p-1 rounded d-flex align-items-center user-select-none\" *ngFor=\"let item of activeFilter; index as i\">\n <ion-icon name=\"close\" class=\"pe-1 me-1 cursor-pointer text-primary\" (click)=\"removeFilter(i);\" />\n {{ item.label }}\n </div>\n </div>\n\n <input #searchBox type=\"search\" placeholder=\"{{ placeholder }}\" class=\"flex-shrink-1 border-0 form-control ps-0 py-2\" [class.adv]=\"config.mode === 'advanced'\" (keyup.enter)=\"add();\" />\n</div>\n\n<ng-container *ngIf=\"config.mode === 'advanced'\">\n <ion-icon name=\"filter\" class=\"position-absolute fs-4 cursor-pointer\" id=\"filter-{{ id }}\" />\n <ion-icon name=\"close\" class=\"position-absolute fs-4 cursor-pointer\" (click)=\"clear();\" />\n\n <ion-popover trigger=\"filter-{{ id }}\" triggerAction=\"click\">\n <ng-template>\n <div class=\"d-flex flex-column filter\">\n <div class=\"flex-shrink-0 border-bottom p-1 pe-4 d-flex align-items-center\">\n <ion-buttons>\n <ion-button size=\"small\" (click)=\"close()\">\n <ion-icon slot=\"icon-only\" name=\"close\" />\n </ion-button>\n </ion-buttons>\n \n <div class=\"fs-5 fw-medium\">Advanced Filter</div>\n </div>\n \n <form class=\"flex-grow-1 overflow-auto px-4\" [formGroup]=\"form\">\n <ng-container *ngFor=\"let c of config.fields\">\n <ng-container [ngSwitch]=\"c.type\">\n <up-input type=\"number\" autocomplete=\"off\" class=\"my-4\" label=\"{{ c.label }}\" formControlName=\"{{ c.key }}\" *ngSwitchCase=\"'number'\" />\n \n <div class=\"my-4\" *ngSwitchCase=\"'checkbox'\">\n <ion-checkbox labelPlacement=\"end\" formControlName=\"{{ c.key }}\">{{ c.label }}</ion-checkbox>\n </div>\n \n <div class=\"d-flex gap-3 my-4\" *ngSwitchCase=\"'date-range'\">\n <up-date class=\"flex-grow-1\" name=\"filter-from\" label=\"{{ c.label[0] }}\" formControlName=\"{{ c.key[0] }}\" />\n <up-date class=\"flex-grow-1\" name=\"filter-to\" label=\"{{ c.label[1] }}\" formControlName=\"{{ c.key[1] }}\" />\n </div>\n \n <up-select class=\"my-4\" label=\"{{ c.label }}\" formControlName=\"{{ c.key }}\" [items]=\"c.options!\" *ngSwitchCase=\"'select'\" />\n <up-searchable-select class=\"my-4\" label=\"{{ c.label }}\" formControlName=\"{{ c.key }}\" [queryFunc]=\"c.getOptions!\" [initialItems]=\"c.options!\" *ngSwitchCase=\"'searchable-select'\" />\n \n <up-input type=\"text\" autocomplete=\"off\" class=\"my-4\" label=\"{{ c.label }}\" formControlName=\"{{ c.key }}\" *ngSwitchDefault />\n </ng-container>\n </ng-container>\n </form>\n \n <div class=\"flex-shrink-0 py-3 px-4 border-top d-flex gap-3\">\n <ion-button class=\"flex-grow-1\" color=\"secondary\" (click)=\"form.reset();\">Reset</ion-button>\n <ion-button class=\"flex-grow-1\" color=\"primary\" (click)=\"search();\">Search</ion-button>\n </div>\n </div>\n </ng-template>\n </ion-popover> \n</ng-container>\n", styles: ["ion-icon{top:7px}ion-icon[name=close]{right:16px}ion-icon[name=search]{left:14px}ion-icon[name=filter]{right:48px}ion-popover{--width: 80%;--max-width: 450px}.adv{padding-right:60px}.fs-5,ion-icon{color:#616161}.tag-container{max-width:45%}@media (max-width: 576px){.tag-container{max-width:35%}}.tag-container::-webkit-scrollbar{height:0px}.tag-item{color:#ed6b26;background-color:#fef3ee}.tag-item ion-icon{border-right:1px solid #fbd1be}input::-webkit-search-decoration,input::-webkit-search-cancel-button,input::-webkit-search-results-button,input::-webkit-search-results-decoration{-webkit-appearance:none}\n"], dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCheckbox, selector: "ion-checkbox", inputs: ["alignment", "checked", "color", "disabled", "indeterminate", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonPopover, selector: "ion-popover" }, { kind: "directive", type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: FormDateComponent, selector: "up-date", inputs: ["label", "required", "disabled", "presentation"] }, { kind: "component", type: FormInputComponent, selector: "up-input", inputs: ["label", "value", "required", "disabled"], outputs: ["onInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormSelectComponent, selector: "up-select", inputs: ["items", "clearable", "label", "multiple", "required", "addTag", "disabled", "searchable", "bindLabel", "bindValue"] }, { kind: "component", type: FormSearchableSelectComponent, selector: "up-searchable-select", inputs: ["queryFunc", "clearable", "label", "initialItems", "required", "addTag", "disabled", "multiple", "bindLabel", "bindValue"], outputs: ["onChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
94
94
  }
95
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FilterComponent, decorators: [{
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FilterComponent, decorators: [{
96
96
  type: Component,
97
97
  args: [{ standalone: true, selector: 'up-filter', changeDetection: ChangeDetectionStrategy.OnPush, host: {
98
98
  class: 'd-block position-relative'
@@ -104,7 +104,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
104
104
  ReactiveFormsModule,
105
105
  FormSelectComponent,
106
106
  FormSearchableSelectComponent
107
- ], template: "<ion-icon name=\"search\" class=\"fs-4 position-absolute\" />\n\n<div class=\"d-flex align-items-center form-control ps-5 py-0 pe-0 gap-3\">\n <div *ngIf=\"activeFilter.length > 0\" class=\"d-flex flex-grow-1 flex-shrink-0 tag-container gap-2 text-nowrap overflow-auto\">\n <div class=\"tag-item p-1 rounded d-flex align-items-center user-select-none\" *ngFor=\"let item of activeFilter; index as i\">\n <ion-icon name=\"close\" class=\"pe-1 me-1 cursor-pointer text-primary\" (click)=\"removeFilter(i);\" />\n {{ item.label }}\n </div>\n </div>\n\n <input #searchBox type=\"search\" placeholder=\"{{ placeholder }}\" class=\"flex-shrink-1 border-0 form-control ps-0 py-2\" [class.adv]=\"config.mode === 'advanced'\" (keyup.enter)=\"add();\" />\n</div>\n\n<ng-container *ngIf=\"config.mode === 'advanced'\">\n <ion-icon name=\"filter\" class=\"position-absolute fs-4 cursor-pointer\" id=\"filter-{{ id }}\" />\n <ion-icon name=\"close\" class=\"position-absolute fs-4 cursor-pointer\" (click)=\"clear();\" />\n\n <ion-popover trigger=\"filter-{{ id }}\" triggerAction=\"click\">\n <ng-template>\n <div class=\"d-flex flex-column filter\">\n <div class=\"flex-shrink-0 border-bottom p-1 pe-4 d-flex align-items-center\">\n <ion-buttons>\n <ion-button size=\"small\" (click)=\"close()\">\n <ion-icon slot=\"icon-only\" name=\"close\" />\n </ion-button>\n </ion-buttons>\n \n <div class=\"fs-5 fw-medium\">Advanced Filter</div>\n </div>\n \n <form class=\"flex-grow-1 overflow-auto px-4\" [formGroup]=\"form\">\n <ng-container *ngFor=\"let c of config.fields\">\n <ng-container [ngSwitch]=\"c.type\">\n <up-input type=\"number\" autocomplete=\"off\" class=\"my-4\" label=\"{{ c.label }}\" formControlName=\"{{ c.key }}\" *ngSwitchCase=\"'number'\" />\n \n <div class=\"my-4\" *ngSwitchCase=\"'checkbox'\">\n <ion-checkbox labelPlacement=\"end\" formControlName=\"{{ c.key }}\">{{ c.label }}</ion-checkbox>\n </div>\n \n <div class=\"d-flex gap-3 my-4\" *ngSwitchCase=\"'date-range'\">\n <up-date class=\"flex-grow-1\" name=\"filter-from\" label=\"{{ c.label[0] }}\" formControlName=\"{{ c.key[0] }}\" />\n <up-date class=\"flex-grow-1\" name=\"filter-to\" label=\"{{ c.label[1] }}\" formControlName=\"{{ c.key[1] }}\" />\n </div>\n \n <up-select class=\"my-4\" label=\"{{ c.label }}\" formControlName=\"{{ c.key }}\" [items]=\"c.options!\" *ngSwitchCase=\"'select'\" />\n <up-searchable-select class=\"my-4\" label=\"{{ c.label }}\" formControlName=\"{{ c.key }}\" [queryFunc]=\"c.getOptions!\" [initialItems]=\"c.options!\" *ngSwitchCase=\"'searchable-select'\" />\n \n <up-input type=\"text\" autocomplete=\"off\" class=\"my-4\" label=\"{{ c.label }}\" formControlName=\"{{ c.key }}\" *ngSwitchDefault />\n </ng-container>\n </ng-container>\n </form>\n \n <div class=\"flex-shrink-0 py-3 px-4 border-top d-flex gap-3\">\n <ion-button class=\"flex-grow-1\" color=\"secondary\" (click)=\"form.reset();\">Reset</ion-button>\n <ion-button class=\"flex-grow-1\" color=\"primary\" (click)=\"search();\">Search</ion-button>\n </div>\n </div>\n </ng-template>\n </ion-popover> \n</ng-container>\n", styles: ["ion-icon{top:7px}ion-icon[name=close]{right:16px}ion-icon[name=search]{left:14px}ion-icon[name=filter]{right:48px}ion-popover{--width: 80%;--max-width: 450px}.adv{padding-right:60px}.fs-5,ion-icon{color:#616161}.tag-container{max-width:47%}.tag-container::-webkit-scrollbar{height:0px}.tag-item{color:#ed6b26;background-color:#fef3ee}.tag-item ion-icon{border-right:1px solid #fbd1be}\n"] }]
107
+ ], template: "<ion-icon name=\"search\" class=\"fs-4 position-absolute\" />\n\n<div class=\"d-flex align-items-center form-control ps-5 py-0 pe-0 gap-3\">\n <div *ngIf=\"activeFilter.length > 0\" class=\"d-flex flex-grow-1 flex-shrink-0 tag-container gap-2 text-nowrap overflow-auto\">\n <div class=\"tag-item p-1 rounded d-flex align-items-center user-select-none\" *ngFor=\"let item of activeFilter; index as i\">\n <ion-icon name=\"close\" class=\"pe-1 me-1 cursor-pointer text-primary\" (click)=\"removeFilter(i);\" />\n {{ item.label }}\n </div>\n </div>\n\n <input #searchBox type=\"search\" placeholder=\"{{ placeholder }}\" class=\"flex-shrink-1 border-0 form-control ps-0 py-2\" [class.adv]=\"config.mode === 'advanced'\" (keyup.enter)=\"add();\" />\n</div>\n\n<ng-container *ngIf=\"config.mode === 'advanced'\">\n <ion-icon name=\"filter\" class=\"position-absolute fs-4 cursor-pointer\" id=\"filter-{{ id }}\" />\n <ion-icon name=\"close\" class=\"position-absolute fs-4 cursor-pointer\" (click)=\"clear();\" />\n\n <ion-popover trigger=\"filter-{{ id }}\" triggerAction=\"click\">\n <ng-template>\n <div class=\"d-flex flex-column filter\">\n <div class=\"flex-shrink-0 border-bottom p-1 pe-4 d-flex align-items-center\">\n <ion-buttons>\n <ion-button size=\"small\" (click)=\"close()\">\n <ion-icon slot=\"icon-only\" name=\"close\" />\n </ion-button>\n </ion-buttons>\n \n <div class=\"fs-5 fw-medium\">Advanced Filter</div>\n </div>\n \n <form class=\"flex-grow-1 overflow-auto px-4\" [formGroup]=\"form\">\n <ng-container *ngFor=\"let c of config.fields\">\n <ng-container [ngSwitch]=\"c.type\">\n <up-input type=\"number\" autocomplete=\"off\" class=\"my-4\" label=\"{{ c.label }}\" formControlName=\"{{ c.key }}\" *ngSwitchCase=\"'number'\" />\n \n <div class=\"my-4\" *ngSwitchCase=\"'checkbox'\">\n <ion-checkbox labelPlacement=\"end\" formControlName=\"{{ c.key }}\">{{ c.label }}</ion-checkbox>\n </div>\n \n <div class=\"d-flex gap-3 my-4\" *ngSwitchCase=\"'date-range'\">\n <up-date class=\"flex-grow-1\" name=\"filter-from\" label=\"{{ c.label[0] }}\" formControlName=\"{{ c.key[0] }}\" />\n <up-date class=\"flex-grow-1\" name=\"filter-to\" label=\"{{ c.label[1] }}\" formControlName=\"{{ c.key[1] }}\" />\n </div>\n \n <up-select class=\"my-4\" label=\"{{ c.label }}\" formControlName=\"{{ c.key }}\" [items]=\"c.options!\" *ngSwitchCase=\"'select'\" />\n <up-searchable-select class=\"my-4\" label=\"{{ c.label }}\" formControlName=\"{{ c.key }}\" [queryFunc]=\"c.getOptions!\" [initialItems]=\"c.options!\" *ngSwitchCase=\"'searchable-select'\" />\n \n <up-input type=\"text\" autocomplete=\"off\" class=\"my-4\" label=\"{{ c.label }}\" formControlName=\"{{ c.key }}\" *ngSwitchDefault />\n </ng-container>\n </ng-container>\n </form>\n \n <div class=\"flex-shrink-0 py-3 px-4 border-top d-flex gap-3\">\n <ion-button class=\"flex-grow-1\" color=\"secondary\" (click)=\"form.reset();\">Reset</ion-button>\n <ion-button class=\"flex-grow-1\" color=\"primary\" (click)=\"search();\">Search</ion-button>\n </div>\n </div>\n </ng-template>\n </ion-popover> \n</ng-container>\n", styles: ["ion-icon{top:7px}ion-icon[name=close]{right:16px}ion-icon[name=search]{left:14px}ion-icon[name=filter]{right:48px}ion-popover{--width: 80%;--max-width: 450px}.adv{padding-right:60px}.fs-5,ion-icon{color:#616161}.tag-container{max-width:45%}@media (max-width: 576px){.tag-container{max-width:35%}}.tag-container::-webkit-scrollbar{height:0px}.tag-item{color:#ed6b26;background-color:#fef3ee}.tag-item ion-icon{border-right:1px solid #fbd1be}input::-webkit-search-decoration,input::-webkit-search-cancel-button,input::-webkit-search-results-button,input::-webkit-search-results-decoration{-webkit-appearance:none}\n"] }]
108
108
  }], ctorParameters: () => [{ type: undefined, decorators: [{
109
109
  type: Attribute,
110
110
  args: ['placeholder']
@@ -120,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
120
120
  type: ViewChild,
121
121
  args: ['searchBox']
122
122
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQXFCLE1BQU0sZ0JBQWdCLENBQUM7QUFJaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLDZCQUE2QixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7OztBQXFCckgsTUFBTSxPQUFPLGVBQWU7SUF5QzFCLFlBQ21DLFdBQW1CLEVBQ2pDLEVBQXFCLEVBQ3JCLFdBQThCO1FBRmhCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ2pDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQXZCekIsYUFBUSxHQUFvQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBWXpFLFNBQUksR0FBbUIsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFNbEQsaUJBQVksR0FBb0QsRUFBRSxDQUFDO0lBTXRFLENBQUM7SUFNRSxR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QUM7UUFDMUUsQ0FBQztJQUNILENBQUM7OEdBeEtVLGVBQWUsa0JBMENiLGFBQWE7a0dBMUNmLGVBQWUsK1NDNUI1Qix5eUhBNERBLDJiRHpDSSxXQUFXLDY0QkFDWCxZQUFZLDRnQkFDWixpQkFBaUIsK0dBQ2pCLGtCQUFrQiw4SEFDbEIsbUJBQW1CLDZyQkFDbkIsbUJBQW1CLHFMQUNuQiw2QkFBNkI7OzJGQUdwQixlQUFlO2tCQW5CM0IsU0FBUztpQ0FDSSxJQUFJLFlBQ04sV0FBVyxtQkFHSix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNKLEtBQUssRUFBRSwyQkFBMkI7cUJBQ25DLFdBQ1E7d0JBQ1AsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsNkJBQTZCO3FCQUM5Qjs7MEJBNENFLFNBQVM7MkJBQUMsYUFBYTt5R0FuQ1EsRUFBRTtzQkFBbkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT1MsTUFBTTtzQkFBdkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT0MsUUFBUTtzQkFBakMsTUFBTTtnQkFNb0MsU0FBUztzQkFBbkQsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXR0cmlidXRlLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25pY01vZHVsZSwgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBGaWx0ZXJDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyRmllbGQgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXJTZWFyY2hFdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9maWx0ZXItc2VhcmNoLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBGb3JtSW5wdXRDb21wb25lbnQsIEZvcm1TZWxlY3RDb21wb25lbnQsIEZvcm1EYXRlQ29tcG9uZW50LCBGb3JtU2VhcmNoYWJsZVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAndXAtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyAnLi9maWx0ZXIuY29tcG9uZW50LnNjc3MnIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IFxuICAgIGNsYXNzOiAnZC1ibG9jayBwb3NpdGlvbi1yZWxhdGl2ZScgXG4gIH0sXG4gIGltcG9ydHM6IFsgXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLCBcbiAgICBGb3JtRGF0ZUNvbXBvbmVudCxcbiAgICBGb3JtSW5wdXRDb21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3JtU2VsZWN0Q29tcG9uZW50LFxuICAgIEZvcm1TZWFyY2hhYmxlU2VsZWN0Q29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAvKipcbiAgICogSW5wdXQgdmFyaWFibGUgZm9yIHRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZmlsdGVyLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpYyBpZCE6IHN0cmluZztcblxuICAvKipcbiAgICogSW5wdXQgdmFyaWFibGUgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCBzcGVjaWZ5aW5nIGZpbHRlciBmaWVsZHMgYW5kIG1vZGUuXG4gICAqIEB0eXBlIHtGaWx0ZXJDb25maWd9XG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcHVibGljIGNvbmZpZyE6IEZpbHRlckNvbmZpZztcblxuICAvKipcbiAgICogT3V0cHV0IGV2ZW50IGVtaXR0ZXIgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgcGVyZm9ybXMgYSBzZWFyY2guXG4gICAqIEVtaXRzIGEgYEZpbHRlclNlYXJjaEV2ZW50YCBvYmplY3Qgd2l0aCBzZWFyY2ggbW9kZSBhbmQgY3JpdGVyaWEgZGF0YS5cbiAgICogQHR5cGUge0V2ZW50RW1pdHRlcjxGaWx0ZXJTZWFyY2hFdmVudD59XG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IG9uU2VhcmNoOiBFdmVudEVtaXR0ZXI8RmlsdGVyU2VhcmNoRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBWaWV3Q2hpbGQgZGVjb3JhdG9yIHRvIHJlZmVyZW5jZSB0aGUgc2VhcmNoQm94IGVsZW1lbnQgaW4gdGhlIHRlbXBsYXRlLlxuICAgKiBAdHlwZSB7RWxlbWVudFJlZn1cbiAgICovXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaEJveCcpIHByb3RlY3RlZCByZWFkb25seSBzZWFyY2hCb3ghOiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBGb3JtIGdyb3VwIGZvciBtYW5hZ2luZyBmb3JtIGNvbnRyb2xzLlxuICAgKiBAdHlwZSB7Rm9ybUdyb3VwPGFueT59XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZm9ybTogRm9ybUdyb3VwPGFueT4gPSBuZXcgRm9ybUdyb3VwKHt9KTtcblxuICAvKipcbiAgICogQXJyYXkgdG8gc3RvcmUgYWN0aXZlIGZpbHRlciBjcml0ZXJpYS5cbiAgICogQHR5cGUge3sgbGFiZWw6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdfVxuICAgKi9cbiAgcHVibGljIGFjdGl2ZUZpbHRlcjogeyBsYWJlbDogc3RyaW5nLCBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAQXR0cmlidXRlKCdwbGFjZWhvbGRlcicpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBjaDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHBvcG92ZXJDdHJsOiBQb3BvdmVyQ29udHJvbGxlclxuICApIHsgfSBcblxuICAvKipcbiAgICogTGlmZWN5Y2xlIGhvb2sgdG8gaW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50LlxuICAgKiBDcmVhdGVzIGZvcm0gY29udHJvbHMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZHtcbiAgICB0aGlzLmNvbmZpZy5maWVsZHMuZm9yRWFjaCgoeyBrZXksIGluaXRpYWxWYWx1ZSB9OiBGaWx0ZXJGaWVsZCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB0aGlzLmNyZWF0ZUZvcm1Db250cm9sKGtleSwgaW5pdGlhbFZhbHVlKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBrZXkuZm9yRWFjaCgoazogc3RyaW5nLCBpOiBudW1iZXIpID0+IHRoaXMuY3JlYXRlRm9ybUNvbnRyb2woaywgaW5pdGlhbFZhbHVlPy5hdChpKSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgZmlsdGVyIHBvcG92ZXIuXG4gICAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZHsgdGhpcy5wb3BvdmVyQ3RybC5kaXNtaXNzKCk7IH1cblxuICAvKipcbiAgICogQ2xlYXJzIGFsbCBmaWx0ZXIgY3JpdGVyaWEgYW5kIHRyaWdnZXJzIGEgc2VhcmNoIGV2ZW50IHdpdGggbnVsbCBkYXRhLlxuICAgKi9cbiAgcHVibGljIGNsZWFyKCk6IHZvaWR7XG4gICAgdGhpcy5yZXNldFZhbHVlKCk7XG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5vblNlYXJjaC5lbWl0KHsgbW9kZTogdGhpcy5jb25maWcubW9kZSwgZGF0YTogbnVsbCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgc3BlY2lmaWMgZmlsdGVyIGNyaXRlcmlhIGJhc2VkIG9uIGl0cyBpbmRleC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGkgLSBJbmRleCBvZiB0aGUgZmlsdGVyIGNyaXRlcmlhIHRvIGJlIHJlbW92ZWQuXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlRmlsdGVyKGk6IG51bWJlcik6IHZvaWR7XG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuYWN0aXZlRmlsdGVyW2ldLmtleV0uc2V0VmFsdWUoJycpO1xuICAgIHRoaXMuYWN0aXZlRmlsdGVyLnNwbGljZShpLCAxKTtcbiAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYXRlcyBhIHNlYXJjaCBiYXNlZCBvbiB0aGUgYWN0aXZlIGZpbHRlciBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2goKTogdm9pZHtcbiAgICB0aGlzLnJlc2V0VmFsdWUoKTtcbiAgICB0aGlzLmVtaXRWYWx1ZSgoazogc3RyaW5nLCB2OiBzdHJpbmcpID0+IHRoaXMuYWN0aXZlRmlsdGVyLnB1c2goeyAga2V5OiBrLCB2YWx1ZTogdiwgbGFiZWw6IGAkeyBrIH06JHsgay5pbmNsdWRlcygnZGF0ZScpPyBmb3JtYXREYXRlKHYsICdkZCBNTU0geXl5eScsICdlbi1VUycpIDogdiB9YCB9KSk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgZmlsdGVyIGNyaXRlcmlhIGJhc2VkIG9uIHRoZSB1c2VyIGlucHV0LlxuICAgKi9cbiAgcHVibGljIGFkZCgpOiB2b2lke1xuICAgIGNvbnN0IHsga2V5LCB2YWx1ZSB9ID0gdGhpcy5nZXRWYWx1ZSh0aGlzLnNlYXJjaEJveC5uYXRpdmVFbGVtZW50LnZhbHVlKTtcbiAgICBpZiAodGhpcy5jb25maWcuZmllbGRzLmZpbmRJbmRleCgoeyBrZXk6IGsgfSkgPT4gayA9PT0ga2V5KSA9PT0gLTEpIHtcbiAgICAgIHRoaXMuc2VhcmNoQm94Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpID0gdGhpcy5hY3RpdmVGaWx0ZXIuZmluZEluZGV4KCh7IGtleTogayB9KSA9PiBrID09PSBrZXkpO1xuICAgIGlmIChpID09PSAtMSkgdGhpcy5hY3RpdmVGaWx0ZXIucHVzaCh7IGxhYmVsOiBgJHsga2V5IH06JHsgdmFsdWUgfWAsIGtleSwgdmFsdWUgfSk7XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlcltpXS5rZXkgPSBrZXk7XG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlcltpXS52YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJbaV0ubGFiZWwgPSBgJHsga2V5IH06JHsgdmFsdWUgfWA7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBba2V5XTogdmFsdWUgfSk7XG4gICAgdGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBhY3RpdmUgZmlsdGVyIGFuZCBjbGVhcnMgdGhlIHNlYXJjaCBib3guXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzZXRWYWx1ZSgpOiB2b2lke1xuICAgIHRoaXMuYWN0aXZlRmlsdGVyLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcyB0aGUgaW5wdXQgdmFsdWUgYW5kIHJldHVybnMgYSBrZXktdmFsdWUgcGFpci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gSW5wdXQgdmFsdWUgdG8gYmUgcGFyc2VkLlxuICAgKiBAcmV0dXJucyB7eyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9fSAtIEtleS12YWx1ZSBwYWlyIGV4dHJhY3RlZCBmcm9tIHRoZSBpbnB1dCB2YWx1ZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogeyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9e1xuICAgIGNvbnN0IHZhbHVlczogc3RyaW5nW10gPSB2YWx1ZS5zcGxpdCgnOicpO1xuXG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDEpIHJldHVybiB7IGtleTogPHN0cmluZz4gdGhpcy5jb25maWcuZmllbGRzWzBdLmtleSwgdmFsdWU6IHZhbHVlc1swXSB9O1xuICAgIHJldHVybiB7IGtleTogdmFsdWVzWzBdLCB2YWx1ZTogdmFsdWVzWzFdIH07XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHNlYXJjaCBldmVudCBiYXNlZCBvbiB0aGUgZm9ybSB2YWx1ZXMuXG4gICAqIEludm9rZXMgYW4gZXh0cmEgYWN0aW9uIGlmIHByb3ZpZGVkLlxuICAgKiBAcGFyYW0geyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZH0gW2V4dHJhQWN0aW9uXSAtIE9wdGlvbmFsIGV4dHJhIGFjdGlvbiB0byBiZSBpbnZva2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGVtaXRWYWx1ZShleHRyYUFjdGlvbj86IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWR7XG4gICAgbGV0IGZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBjb25zdCBmID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgY29uc3QgZGF0YTogeyBbazogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBcbiAgICBPYmplY3Qua2V5cyhmKS5mb3JFYWNoKChrOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghZltrXSkgcmV0dXJuO1xuICAgICAgXG4gICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgIGRhdGFba10gPSBmW2tdO1xuICAgICAgZXh0cmFBY3Rpb24/LihrLCBmW2tdKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uU2VhcmNoLmVtaXQoeyBtb2RlOiB0aGlzLmNvbmZpZy5tb2RlLCBkYXRhOiBmbGFnPyBkYXRhIDogbnVsbCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZm9ybSBjb250cm9sIGZvciBhIGdpdmVuIGtleSBhbmQgc2V0cyBpdHMgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIEtleSBmb3IgdGhlIGZvcm0gY29udHJvbC5cbiAgICogQHBhcmFtIHsqfSBbdmFsXSAtIEluaXRpYWwgdmFsdWUgZm9yIHRoZSBmb3JtIGNvbnRyb2wuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlRm9ybUNvbnRyb2woa2V5OiBzdHJpbmcsIHZhbD86IGFueSk6IHZvaWR7XG4gICAgdGhpcy5mb3JtLmFkZENvbnRyb2woa2V5LCBuZXcgRm9ybUNvbnRyb2woJycpKTtcblxuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1trZXldLnNldFZhbHVlKHZhbCk7XG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlci5wdXNoKHsgbGFiZWw6IGAkeyBrZXkgfTokeyB2YWwgfWAsIGtleSwgdmFsdWU6IHZhbCB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxpb24taWNvbiBuYW1lPVwic2VhcmNoXCIgY2xhc3M9XCJmcy00IHBvc2l0aW9uLWFic29sdXRlXCIgLz5cblxuPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZm9ybS1jb250cm9sIHBzLTUgcHktMCBwZS0wIGdhcC0zXCI+XG4gICAgPGRpdiAqbmdJZj1cImFjdGl2ZUZpbHRlci5sZW5ndGggPiAwXCIgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTEgZmxleC1zaHJpbmstMCB0YWctY29udGFpbmVyIGdhcC0yIHRleHQtbm93cmFwIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhZy1pdGVtIHAtMSByb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdXNlci1zZWxlY3Qtbm9uZVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFjdGl2ZUZpbHRlcjsgaW5kZXggYXMgaVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiIGNsYXNzPVwicGUtMSBtZS0xIGN1cnNvci1wb2ludGVyIHRleHQtcHJpbWFyeVwiIChjbGljayk9XCJyZW1vdmVGaWx0ZXIoaSk7XCIgLz5cbiAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8aW5wdXQgI3NlYXJjaEJveCB0eXBlPVwic2VhcmNoXCIgcGxhY2Vob2xkZXI9XCJ7eyBwbGFjZWhvbGRlciB9fVwiIGNsYXNzPVwiZmxleC1zaHJpbmstMSBib3JkZXItMCBmb3JtLWNvbnRyb2wgcHMtMCBweS0yXCIgW2NsYXNzLmFkdl09XCJjb25maWcubW9kZSA9PT0gJ2FkdmFuY2VkJ1wiIChrZXl1cC5lbnRlcik9XCJhZGQoKTtcIiAvPlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcubW9kZSA9PT0gJ2FkdmFuY2VkJ1wiPlxuICAgIDxpb24taWNvbiBuYW1lPVwiZmlsdGVyXCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBmcy00IGN1cnNvci1wb2ludGVyXCIgaWQ9XCJmaWx0ZXIte3sgaWQgfX1cIiAvPlxuICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGZzLTQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xlYXIoKTtcIiAvPlxuXG4gICAgPGlvbi1wb3BvdmVyIHRyaWdnZXI9XCJmaWx0ZXIte3sgaWQgfX1cIiB0cmlnZ2VyQWN0aW9uPVwiY2xpY2tcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmaWx0ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMCBib3JkZXItYm90dG9tIHAtMSBwZS00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b25zPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjbG9zZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy01IGZ3LW1lZGl1bVwiPkFkdmFuY2VkIEZpbHRlcjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgIFxuICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZmxleC1ncm93LTEgb3ZlcmZsb3ctYXV0byBweC00XCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGMgb2YgY29uZmlnLmZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiYy50eXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLWlucHV0IHR5cGU9XCJudW1iZXJcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm15LTRcIiBsYWJlbD1cInt7IGMubGFiZWwgfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJ7eyBjLmtleSB9fVwiICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrYm94J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNoZWNrYm94IGxhYmVsUGxhY2VtZW50PVwiZW5kXCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXkgfX1cIj57eyBjLmxhYmVsIH19PC9pb24tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBteS00XCIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlLXJhbmdlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXAtZGF0ZSBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgbmFtZT1cImZpbHRlci1mcm9tXCIgbGFiZWw9XCJ7eyBjLmxhYmVsWzBdIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXlbMF0gfX1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXAtZGF0ZSBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgbmFtZT1cImZpbHRlci10b1wiIGxhYmVsPVwie3sgYy5sYWJlbFsxXSB9fVwiIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5WzFdIH19XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXAtc2VsZWN0IGNsYXNzPVwibXktNFwiIGxhYmVsPVwie3sgYy5sYWJlbCB9fVwiIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5IH19XCIgW2l0ZW1zXT1cImMub3B0aW9ucyFcIiAqbmdTd2l0Y2hDYXNlPVwiJ3NlbGVjdCdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1zZWFyY2hhYmxlLXNlbGVjdCBjbGFzcz1cIm15LTRcIiBsYWJlbD1cInt7IGMubGFiZWwgfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJ7eyBjLmtleSB9fVwiIFtxdWVyeUZ1bmNdPVwiYy5nZXRPcHRpb25zIVwiIFtpbml0aWFsSXRlbXNdPVwiYy5vcHRpb25zIVwiICpuZ1N3aXRjaENhc2U9XCInc2VhcmNoYWJsZS1zZWxlY3QnXCIgLz5cbiAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXAtaW5wdXQgdHlwZT1cInRleHRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm15LTRcIiBsYWJlbD1cInt7IGMubGFiZWwgfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJ7eyBjLmtleSB9fVwiICpuZ1N3aXRjaERlZmF1bHQgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgcHktMyBweC00IGJvcmRlci10b3AgZC1mbGV4IGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGNsYXNzPVwiZmxleC1ncm93LTFcIiBjb2xvcj1cInNlY29uZGFyeVwiIChjbGljayk9XCJmb3JtLnJlc2V0KCk7XCI+UmVzZXQ8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGNsYXNzPVwiZmxleC1ncm93LTFcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2VhcmNoKCk7XCI+U2VhcmNoPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tcG9wb3Zlcj4gICAgXG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQXFCLE1BQU0sZ0JBQWdCLENBQUM7QUFJaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLDZCQUE2QixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7OztBQXFCckgsTUFBTSxPQUFPLGVBQWU7SUF5QzFCLFlBQ21DLFdBQW1CLEVBQ2pDLEVBQXFCLEVBQ3JCLFdBQThCO1FBRmhCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ2pDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQXZCekIsYUFBUSxHQUFvQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBWXpFLFNBQUksR0FBbUIsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFNbEQsaUJBQVksR0FBb0QsRUFBRSxDQUFDO0lBTXRFLENBQUM7SUFNRSxR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QUM7UUFDMUUsQ0FBQztJQUNILENBQUM7K0dBeEtVLGVBQWUsa0JBMENiLGFBQWE7bUdBMUNmLGVBQWUsK1NDNUI1Qix5eUhBNERBLDhwQkR6Q0ksV0FBVyw2NEJBQ1gsWUFBWSw0Z0JBQ1osaUJBQWlCLCtHQUNqQixrQkFBa0IsOEhBQ2xCLG1CQUFtQiw2ckJBQ25CLG1CQUFtQixxTEFDbkIsNkJBQTZCOzs0RkFHcEIsZUFBZTtrQkFuQjNCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFdBQVcsbUJBR0osdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixLQUFLLEVBQUUsMkJBQTJCO3FCQUNuQyxXQUNRO3dCQUNQLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLDZCQUE2QjtxQkFDOUI7OzBCQTRDRSxTQUFTOzJCQUFDLGFBQWE7eUdBbkNRLEVBQUU7c0JBQW5DLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQU9TLE1BQU07c0JBQXZDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQU9DLFFBQVE7c0JBQWpDLE1BQU07Z0JBTW9DLFNBQVM7c0JBQW5ELFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dHJpYnV0ZSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uaWNNb2R1bGUsIFBvcG92ZXJDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2ZpbHRlci1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpbHRlckZpZWxkIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2ZpbHRlci1maWVsZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyU2VhcmNoRXZlbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLXNlYXJjaC1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRm9ybUlucHV0Q29tcG9uZW50LCBGb3JtU2VsZWN0Q29tcG9uZW50LCBGb3JtRGF0ZUNvbXBvbmVudCwgRm9ybVNlYXJjaGFibGVTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3VwLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsgJy4vZmlsdGVyLmNvbXBvbmVudC5zY3NzJyBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogeyBcbiAgICBjbGFzczogJ2QtYmxvY2sgcG9zaXRpb24tcmVsYXRpdmUnIFxuICB9LFxuICBpbXBvcnRzOiBbIFxuICAgIElvbmljTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSwgXG4gICAgRm9ybURhdGVDb21wb25lbnQsXG4gICAgRm9ybUlucHV0Q29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybVNlbGVjdENvbXBvbmVudCxcbiAgICBGb3JtU2VhcmNoYWJsZVNlbGVjdENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIGZvciB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGZpbHRlci5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwdWJsaWMgaWQhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIGZvciB0aGUgY29uZmlndXJhdGlvbiBvYmplY3Qgc3BlY2lmeWluZyBmaWx0ZXIgZmllbGRzIGFuZCBtb2RlLlxuICAgKiBAdHlwZSB7RmlsdGVyQ29uZmlnfVxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpYyBjb25maWchOiBGaWx0ZXJDb25maWc7XG5cbiAgLyoqXG4gICAqIE91dHB1dCBldmVudCBlbWl0dGVyIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHBlcmZvcm1zIGEgc2VhcmNoLlxuICAgKiBFbWl0cyBhIGBGaWx0ZXJTZWFyY2hFdmVudGAgb2JqZWN0IHdpdGggc2VhcmNoIG1vZGUgYW5kIGNyaXRlcmlhIGRhdGEuXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8RmlsdGVyU2VhcmNoRXZlbnQ+fVxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBvblNlYXJjaDogRXZlbnRFbWl0dGVyPEZpbHRlclNlYXJjaEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogVmlld0NoaWxkIGRlY29yYXRvciB0byByZWZlcmVuY2UgdGhlIHNlYXJjaEJveCBlbGVtZW50IGluIHRoZSB0ZW1wbGF0ZS5cbiAgICogQHR5cGUge0VsZW1lbnRSZWZ9XG4gICAqL1xuICBAVmlld0NoaWxkKCdzZWFyY2hCb3gnKSBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VhcmNoQm94ITogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogRm9ybSBncm91cCBmb3IgbWFuYWdpbmcgZm9ybSBjb250cm9scy5cbiAgICogQHR5cGUge0Zvcm1Hcm91cDxhbnk+fVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZvcm06IEZvcm1Hcm91cDxhbnk+ID0gbmV3IEZvcm1Hcm91cCh7fSk7XG5cbiAgLyoqXG4gICAqIEFycmF5IHRvIHN0b3JlIGFjdGl2ZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqIEB0eXBlIHt7IGxhYmVsOiBzdHJpbmcsIGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH1bXX1cbiAgICovXG4gIHB1YmxpYyBhY3RpdmVGaWx0ZXI6IHsgbGFiZWw6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInKSBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2g6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBwb3BvdmVyQ3RybDogUG9wb3ZlckNvbnRyb2xsZXJcbiAgKSB7IH0gXG5cbiAgLyoqXG4gICAqIExpZmVjeWNsZSBob29rIHRvIGluaXRpYWxpemUgdGhlIGNvbXBvbmVudC5cbiAgICogQ3JlYXRlcyBmb3JtIGNvbnRyb2xzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWR7XG4gICAgdGhpcy5jb25maWcuZmllbGRzLmZvckVhY2goKHsga2V5LCBpbml0aWFsVmFsdWUgfTogRmlsdGVyRmllbGQpID0+IHtcbiAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykgdGhpcy5jcmVhdGVGb3JtQ29udHJvbChrZXksIGluaXRpYWxWYWx1ZSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAga2V5LmZvckVhY2goKGs6IHN0cmluZywgaTogbnVtYmVyKSA9PiB0aGlzLmNyZWF0ZUZvcm1Db250cm9sKGssIGluaXRpYWxWYWx1ZT8uYXQoaSkpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGZpbHRlciBwb3BvdmVyLlxuICAgKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWR7IHRoaXMucG9wb3ZlckN0cmwuZGlzbWlzcygpOyB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgZmlsdGVyIGNyaXRlcmlhIGFuZCB0cmlnZ2VycyBhIHNlYXJjaCBldmVudCB3aXRoIG51bGwgZGF0YS5cbiAgICovXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lke1xuICAgIHRoaXMucmVzZXRWYWx1ZSgpO1xuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgIHRoaXMub25TZWFyY2guZW1pdCh7IG1vZGU6IHRoaXMuY29uZmlnLm1vZGUsIGRhdGE6IG51bGwgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIHNwZWNpZmljIGZpbHRlciBjcml0ZXJpYSBiYXNlZCBvbiBpdHMgaW5kZXguXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpIC0gSW5kZXggb2YgdGhlIGZpbHRlciBjcml0ZXJpYSB0byBiZSByZW1vdmVkLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZUZpbHRlcihpOiBudW1iZXIpOiB2b2lke1xuICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmFjdGl2ZUZpbHRlcltpXS5rZXldLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLmFjdGl2ZUZpbHRlci5zcGxpY2UoaSwgMSk7XG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWF0ZXMgYSBzZWFyY2ggYmFzZWQgb24gdGhlIGFjdGl2ZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgc2VhcmNoKCk6IHZvaWR7XG4gICAgdGhpcy5yZXNldFZhbHVlKCk7XG4gICAgdGhpcy5lbWl0VmFsdWUoKGs6IHN0cmluZywgdjogc3RyaW5nKSA9PiB0aGlzLmFjdGl2ZUZpbHRlci5wdXNoKHsgIGtleTogaywgdmFsdWU6IHYsIGxhYmVsOiBgJHsgayB9OiR7IGsuaW5jbHVkZXMoJ2RhdGUnKT8gZm9ybWF0RGF0ZSh2LCAnZGQgTU1NIHl5eXknLCAnZW4tVVMnKSA6IHYgfWAgfSkpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IGZpbHRlciBjcml0ZXJpYSBiYXNlZCBvbiB0aGUgdXNlciBpbnB1dC5cbiAgICovXG4gIHB1YmxpYyBhZGQoKTogdm9pZHtcbiAgICBjb25zdCB7IGtleSwgdmFsdWUgfSA9IHRoaXMuZ2V0VmFsdWUodGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudC52YWx1ZSk7XG4gICAgaWYgKHRoaXMuY29uZmlnLmZpZWxkcy5maW5kSW5kZXgoKHsga2V5OiBrIH0pID0+IGsgPT09IGtleSkgPT09IC0xKSB7XG4gICAgICB0aGlzLnNlYXJjaEJveC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaSA9IHRoaXMuYWN0aXZlRmlsdGVyLmZpbmRJbmRleCgoeyBrZXk6IGsgfSkgPT4gayA9PT0ga2V5KTtcbiAgICBpZiAoaSA9PT0gLTEpIHRoaXMuYWN0aXZlRmlsdGVyLnB1c2goeyBsYWJlbDogYCR7IGtleSB9OiR7IHZhbHVlIH1gLCBrZXksIHZhbHVlIH0pO1xuICAgIGVsc2Uge1xuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJbaV0ua2V5ID0ga2V5O1xuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJbaV0udmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyW2ldLmxhYmVsID0gYCR7IGtleSB9OiR7IHZhbHVlIH1gO1xuICAgIH1cblxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgW2tleV06IHZhbHVlIH0pO1xuICAgIHRoaXMuc2VhcmNoQm94Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgYWN0aXZlIGZpbHRlciBhbmQgY2xlYXJzIHRoZSBzZWFyY2ggYm94LlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlc2V0VmFsdWUoKTogdm9pZHtcbiAgICB0aGlzLmFjdGl2ZUZpbHRlci5sZW5ndGggPSAwO1xuICAgIHRoaXMuc2VhcmNoQm94Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGlucHV0IHZhbHVlIGFuZCByZXR1cm5zIGEga2V5LXZhbHVlIHBhaXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIElucHV0IHZhbHVlIHRvIGJlIHBhcnNlZC5cbiAgICogQHJldHVybnMge3sga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfX0gLSBLZXktdmFsdWUgcGFpciBleHRyYWN0ZWQgZnJvbSB0aGUgaW5wdXQgdmFsdWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0VmFsdWUodmFsdWU6IHN0cmluZyk6IHsga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfXtcbiAgICBjb25zdCB2YWx1ZXM6IHN0cmluZ1tdID0gdmFsdWUuc3BsaXQoJzonKTtcblxuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAxKSByZXR1cm4geyBrZXk6IDxzdHJpbmc+IHRoaXMuY29uZmlnLmZpZWxkc1swXS5rZXksIHZhbHVlOiB2YWx1ZXNbMF0gfTtcbiAgICByZXR1cm4geyBrZXk6IHZhbHVlc1swXSwgdmFsdWU6IHZhbHVlc1sxXSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBzZWFyY2ggZXZlbnQgYmFzZWQgb24gdGhlIGZvcm0gdmFsdWVzLlxuICAgKiBJbnZva2VzIGFuIGV4dHJhIGFjdGlvbiBpZiBwcm92aWRlZC5cbiAgICogQHBhcmFtIHsoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHZvaWR9IFtleHRyYUFjdGlvbl0gLSBPcHRpb25hbCBleHRyYSBhY3Rpb24gdG8gYmUgaW52b2tlZC5cbiAgICovXG4gIHByb3RlY3RlZCBlbWl0VmFsdWUoZXh0cmFBY3Rpb24/OiAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lke1xuICAgIGxldCBmbGFnOiBib29sZWFuID0gZmFsc2U7XG4gICAgY29uc3QgZiA9IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpO1xuICAgIGNvbnN0IGRhdGE6IHsgW2s6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgXG4gICAgT2JqZWN0LmtleXMoZikuZm9yRWFjaCgoazogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoIWZba10pIHJldHVybjtcbiAgICAgIFxuICAgICAgZmxhZyA9IHRydWU7XG4gICAgICBkYXRhW2tdID0gZltrXTtcbiAgICAgIGV4dHJhQWN0aW9uPy4oaywgZltrXSk7XG4gICAgfSk7XG4gICAgdGhpcy5vblNlYXJjaC5lbWl0KHsgbW9kZTogdGhpcy5jb25maWcubW9kZSwgZGF0YTogZmxhZz8gZGF0YSA6IG51bGwgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGZvcm0gY29udHJvbCBmb3IgYSBnaXZlbiBrZXkgYW5kIHNldHMgaXRzIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBLZXkgZm9yIHRoZSBmb3JtIGNvbnRyb2wuXG4gICAqIEBwYXJhbSB7Kn0gW3ZhbF0gLSBJbml0aWFsIHZhbHVlIGZvciB0aGUgZm9ybSBjb250cm9sLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUZvcm1Db250cm9sKGtleTogc3RyaW5nLCB2YWw/OiBhbnkpOiB2b2lke1xuICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGtleSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNba2V5XS5zZXRWYWx1ZSh2YWwpO1xuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXIucHVzaCh7IGxhYmVsOiBgJHsga2V5IH06JHsgdmFsIH1gLCBrZXksIHZhbHVlOiB2YWwgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8aW9uLWljb24gbmFtZT1cInNlYXJjaFwiIGNsYXNzPVwiZnMtNCBwb3NpdGlvbi1hYnNvbHV0ZVwiIC8+XG5cbjxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZvcm0tY29udHJvbCBwcy01IHB5LTAgcGUtMCBnYXAtM1wiPlxuICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVGaWx0ZXIubGVuZ3RoID4gMFwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xIGZsZXgtc2hyaW5rLTAgdGFnLWNvbnRhaW5lciBnYXAtMiB0ZXh0LW5vd3JhcCBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWctaXRlbSBwLTEgcm91bmRlZCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHVzZXItc2VsZWN0LW5vbmVcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhY3RpdmVGaWx0ZXI7IGluZGV4IGFzIGlcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBjbGFzcz1cInBlLTEgbWUtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXByaW1hcnlcIiAoY2xpY2spPVwicmVtb3ZlRmlsdGVyKGkpO1wiIC8+XG4gICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGlucHV0ICNzZWFyY2hCb3ggdHlwZT1cInNlYXJjaFwiIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIgfX1cIiBjbGFzcz1cImZsZXgtc2hyaW5rLTEgYm9yZGVyLTAgZm9ybS1jb250cm9sIHBzLTAgcHktMlwiIFtjbGFzcy5hZHZdPVwiY29uZmlnLm1vZGUgPT09ICdhZHZhbmNlZCdcIiAoa2V5dXAuZW50ZXIpPVwiYWRkKCk7XCIgLz5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLm1vZGUgPT09ICdhZHZhbmNlZCdcIj5cbiAgICA8aW9uLWljb24gbmFtZT1cImZpbHRlclwiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgZnMtNCBjdXJzb3ItcG9pbnRlclwiIGlkPVwiZmlsdGVyLXt7IGlkIH19XCIgLz5cbiAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlXCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBmcy00IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNsZWFyKCk7XCIgLz5cblxuICAgIDxpb24tcG9wb3ZlciB0cmlnZ2VyPVwiZmlsdGVyLXt7IGlkIH19XCIgdHJpZ2dlckFjdGlvbj1cImNsaWNrXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgYm9yZGVyLWJvdHRvbSBwLTEgcGUtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9ucz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2xvc2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgIFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNSBmdy1tZWRpdW1cIj5BZHZhbmNlZCBGaWx0ZXI8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICBcbiAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz1cImZsZXgtZ3Jvdy0xIG92ZXJmbG93LWF1dG8gcHgtNFwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjIG9mIGNvbmZpZy5maWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImMudHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1pbnB1dCB0eXBlPVwibnVtYmVyXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJteS00XCIgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXkgfX1cIiAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCIgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jaGVja2JveCBsYWJlbFBsYWNlbWVudD1cImVuZFwiIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5IH19XCI+e3sgYy5sYWJlbCB9fTwvaW9uLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbXktNFwiICpuZ1N3aXRjaENhc2U9XCInZGF0ZS1yYW5nZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLWRhdGUgY2xhc3M9XCJmbGV4LWdyb3ctMVwiIG5hbWU9XCJmaWx0ZXItZnJvbVwiIGxhYmVsPVwie3sgYy5sYWJlbFswXSB9fVwiIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5WzBdIH19XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLWRhdGUgY2xhc3M9XCJmbGV4LWdyb3ctMVwiIG5hbWU9XCJmaWx0ZXItdG9cIiBsYWJlbD1cInt7IGMubGFiZWxbMV0gfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJ7eyBjLmtleVsxXSB9fVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLXNlbGVjdCBjbGFzcz1cIm15LTRcIiBsYWJlbD1cInt7IGMubGFiZWwgfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJ7eyBjLmtleSB9fVwiIFtpdGVtc109XCJjLm9wdGlvbnMhXCIgKm5nU3dpdGNoQ2FzZT1cIidzZWxlY3QnXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXAtc2VhcmNoYWJsZS1zZWxlY3QgY2xhc3M9XCJteS00XCIgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXkgfX1cIiBbcXVlcnlGdW5jXT1cImMuZ2V0T3B0aW9ucyFcIiBbaW5pdGlhbEl0ZW1zXT1cImMub3B0aW9ucyFcIiAqbmdTd2l0Y2hDYXNlPVwiJ3NlYXJjaGFibGUtc2VsZWN0J1wiIC8+XG4gICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLWlucHV0IHR5cGU9XCJ0ZXh0XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJteS00XCIgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXkgfX1cIiAqbmdTd2l0Y2hEZWZhdWx0IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgIFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wIHB5LTMgcHgtNCBib3JkZXItdG9wIGQtZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgY29sb3I9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwiZm9ybS5yZXNldCgpO1wiPlJlc2V0PC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNlYXJjaCgpO1wiPlNlYXJjaDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLXBvcG92ZXI+ICAgIFxuPC9uZy1jb250YWluZXI+XG4iXX0=