@one-paragon/angular-utilities 1.2.6 → 1.2.8-beta.3

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 (112) hide show
  1. package/README.md +24 -24
  2. package/action-state/ngrx.d.ts +1 -1
  3. package/esm2022/action-state/action-state-spinner/action-state-spinner.component.mjs +3 -3
  4. package/esm2022/action-state/action-state-ui/action-state-ui.module.mjs +1 -1
  5. package/esm2022/action-state/index.mjs +1 -1
  6. package/esm2022/action-state/ngrx-ext/ngrx-ext.module.mjs +1 -1
  7. package/esm2022/action-state/ngrx.mjs +1 -1
  8. package/esm2022/http-request-state/HttpRequestStateStore.mjs +19 -3
  9. package/esm2022/http-request-state/directives/index.mjs +1 -1
  10. package/esm2022/http-request-state/index.mjs +1 -1
  11. package/esm2022/http-request-state/rxjs/getRequestorBody.mjs +1 -1
  12. package/esm2022/http-request-state/rxjs/getRequestorState.mjs +1 -1
  13. package/esm2022/http-request-state/rxjs/index.mjs +1 -1
  14. package/esm2022/http-request-state/types.mjs +1 -1
  15. package/esm2022/ngrx/actionable-selector.mjs +1 -1
  16. package/esm2022/public-api.mjs +2 -1
  17. package/esm2022/rxjs/defaultShareReplay.mjs +1 -1
  18. package/esm2022/rxjs/index.mjs +1 -1
  19. package/esm2022/rxjs/mapError.mjs +1 -1
  20. package/esm2022/rxjs/rxjs-operators.mjs +1 -1
  21. package/esm2022/rxjs/subjectifier.mjs +1 -1
  22. package/esm2022/rxjs/subscriber.directive.mjs +1 -1
  23. package/esm2022/table-builder/classes/DefaultSettings.mjs +1 -1
  24. package/esm2022/table-builder/classes/MatTableObservableDataSource.mjs +1 -1
  25. package/esm2022/table-builder/classes/TableBuilderConfig.mjs +1 -1
  26. package/esm2022/table-builder/classes/TableBuilderDataSource.mjs +1 -1
  27. package/esm2022/table-builder/classes/TableState.mjs +1 -1
  28. package/esm2022/table-builder/classes/display-col.mjs +1 -1
  29. package/esm2022/table-builder/classes/filter-info.mjs +1 -1
  30. package/esm2022/table-builder/classes/table-builder-general-settings.mjs +1 -1
  31. package/esm2022/table-builder/classes/table-builder.mjs +1 -1
  32. package/esm2022/table-builder/classes/table-store.mjs +1 -1
  33. package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +3 -3
  34. package/esm2022/table-builder/components/column-builder/column-helpers.mjs +1 -1
  35. package/esm2022/table-builder/components/date-filter/date-filter.component.mjs +3 -3
  36. package/esm2022/table-builder/components/date-time-filter/date-time-filter.component.mjs +3 -3
  37. package/esm2022/table-builder/components/filter/filter.component.mjs +3 -3
  38. package/esm2022/table-builder/components/filter/in-list/in-list-filter.component.mjs +19 -19
  39. package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +3 -3
  40. package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +4 -7
  41. package/esm2022/table-builder/components/generic-table/paginator.component.mjs +25 -25
  42. package/esm2022/table-builder/components/group-by-list/group-by-list.component.mjs +3 -3
  43. package/esm2022/table-builder/components/in-filter/in-filter.component.mjs +3 -3
  44. package/esm2022/table-builder/components/index.mjs +1 -1
  45. package/esm2022/table-builder/components/initialization-component/initialization-component.mjs +3 -3
  46. package/esm2022/table-builder/components/link-column.component.mjs +31 -31
  47. package/esm2022/table-builder/components/number-filter/number-filter.component.mjs +3 -3
  48. package/esm2022/table-builder/components/profiles-menu/profiles-menu.component.mjs +3 -3
  49. package/esm2022/table-builder/components/scroll-strategy.mjs +1 -1
  50. package/esm2022/table-builder/components/sort-menu/sort-menu.component-store.mjs +1 -1
  51. package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +3 -3
  52. package/esm2022/table-builder/components/table-container/table-container-imports.mjs +1 -1
  53. package/esm2022/table-builder/components/table-container/table-container.helpers/data-state.helpers.mjs +1 -1
  54. package/esm2022/table-builder/components/table-container/table-container.helpers/filter-state.helpers.mjs +1 -1
  55. package/esm2022/table-builder/components/table-container/table-container.helpers/groupBy.helpers.mjs +1 -1
  56. package/esm2022/table-builder/components/table-container/table-container.helpers/sort-state.helpers.mjs +1 -1
  57. package/esm2022/table-builder/components/table-container/table-container.mjs +47 -43
  58. package/esm2022/table-builder/components/table-container/tableProps.mjs +1 -1
  59. package/esm2022/table-builder/components/table-container/virtual-scroll-container.mjs +9 -9
  60. package/esm2022/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +3 -3
  61. package/esm2022/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +3 -3
  62. package/esm2022/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +1 -1
  63. package/esm2022/table-builder/directives/custom-cell-directive.mjs +1 -1
  64. package/esm2022/table-builder/directives/index.mjs +1 -1
  65. package/esm2022/table-builder/directives/multi-sort.directive.mjs +1 -1
  66. package/esm2022/table-builder/directives/resize-column.directive.mjs +1 -1
  67. package/esm2022/table-builder/directives/table-wrapper.directive.mjs +4 -4
  68. package/esm2022/table-builder/directives/tb-filter.directive.mjs +1 -1
  69. package/esm2022/table-builder/enums/filterTypes.mjs +1 -1
  70. package/esm2022/table-builder/functions/boolean-filter-function.mjs +1 -1
  71. package/esm2022/table-builder/functions/date-filter-function.mjs +1 -1
  72. package/esm2022/table-builder/functions/download-data.mjs +1 -1
  73. package/esm2022/table-builder/functions/null-filter-function.mjs +1 -1
  74. package/esm2022/table-builder/functions/number-filter-function.mjs +1 -1
  75. package/esm2022/table-builder/functions/sort-data-function.mjs +1 -1
  76. package/esm2022/table-builder/functions/string-filter-function.mjs +1 -1
  77. package/esm2022/table-builder/interfaces/ColumnInfo.mjs +1 -1
  78. package/esm2022/table-builder/interfaces/report-def.mjs +1 -1
  79. package/esm2022/table-builder/ngrx/tableBuilderStateStore.mjs +1 -1
  80. package/esm2022/table-builder/pipes/column-total.pipe.mjs +1 -1
  81. package/esm2022/table-builder/pipes/format-filter-type.pipe.mjs +1 -1
  82. package/esm2022/table-builder/pipes/format-filter-value.pipe.mjs +1 -1
  83. package/esm2022/table-builder/services/export-to-csv.service.mjs +1 -1
  84. package/esm2022/table-builder/services/link-creator.service.mjs +1 -1
  85. package/esm2022/table-builder/services/table-template-service.mjs +1 -1
  86. package/esm2022/table-builder/services/transform-creator.mjs +1 -1
  87. package/esm2022/table-builder/table-builder.module.mjs +1 -1
  88. package/esm2022/utilities/array-helpers.mjs +1 -1
  89. package/esm2022/utilities/directives/auto-focus.directive.mjs +1 -1
  90. package/esm2022/utilities/directives/clickEmitterDirective.mjs +1 -1
  91. package/esm2022/utilities/directives/clickSubject.mjs +1 -1
  92. package/esm2022/utilities/directives/conditional-classes.directive.mjs +1 -1
  93. package/esm2022/utilities/directives/dialog-service.mjs +1 -1
  94. package/esm2022/utilities/directives/dialog.mjs +1 -1
  95. package/esm2022/utilities/directives/mat-toggle-group-directive.mjs +1 -1
  96. package/esm2022/utilities/directives/prevent-enter.directive.mjs +1 -1
  97. package/esm2022/utilities/directives/stop-propagation.directive.mjs +1 -1
  98. package/esm2022/utilities/directives/trim-whitespace.directive.mjs +1 -1
  99. package/esm2022/utilities/index.mjs +1 -1
  100. package/esm2022/utilities/module.mjs +1 -1
  101. package/esm2022/utilities/pipes/function.pipe.mjs +1 -1
  102. package/esm2022/utilities/pipes/phone.pipe.mjs +1 -1
  103. package/esm2022/utilities/pipes/space-case.pipes.mjs +1 -1
  104. package/fesm2022/one-paragon-angular-utilities.mjs +337 -322
  105. package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -1
  106. package/http-request-state/HttpRequestStateStore.d.ts +5 -0
  107. package/http-request-state/types.d.ts +1 -1
  108. package/package.json +1 -1
  109. package/public-api.d.ts +1 -2
  110. package/table-builder/components/table-container/table-container-imports.d.ts +1 -1
  111. package/table-builder/components/table-container/table-container.d.ts +6 -3
  112. package/table-builder/directives/table-wrapper.directive.d.ts +1 -1
@@ -60,30 +60,30 @@ export class InListFilterComponent {
60
60
  provide: NG_VALUE_ACCESSOR,
61
61
  useExisting: InListFilterComponent,
62
62
  multi: true
63
- }], ngImport: i0, template: `
64
- @for (item of keyValues$ | async| keyvalue; track item.key) {
65
- <div>
66
- <mat-checkbox [checked]='selectedKeys.includes(item.key)' stop-propagation (change)='selectFilterChanged($event, item.key)' >
67
- {{metaData.fieldType === FieldType.Enum ? (item.value | spaceCase) : item.value}}
68
- </mat-checkbox>
69
- </div>
70
- }
71
-
63
+ }], ngImport: i0, template: `
64
+ @for (item of keyValues$ | async| keyvalue; track item.key) {
65
+ <div>
66
+ <mat-checkbox [checked]='selectedKeys.includes(item.key)' stop-propagation (change)='selectFilterChanged($event, item.key)' >
67
+ {{metaData.fieldType === FieldType.Enum ? (item.value | spaceCase) : item.value}}
68
+ </mat-checkbox>
69
+ </div>
70
+ }
71
+
72
72
  `, isInline: true, dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: StopPropagationDirective, selector: "[stop-propagation]" }, { kind: "pipe", type: SpaceCasePipe, name: "spaceCase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
73
73
  }
74
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: InListFilterComponent, decorators: [{
75
75
  type: Component,
76
76
  args: [{
77
77
  selector: 'tb-in-list-filter , [tb-in-list-filter]',
78
- template: `
79
- @for (item of keyValues$ | async| keyvalue; track item.key) {
80
- <div>
81
- <mat-checkbox [checked]='selectedKeys.includes(item.key)' stop-propagation (change)='selectFilterChanged($event, item.key)' >
82
- {{metaData.fieldType === FieldType.Enum ? (item.value | spaceCase) : item.value}}
83
- </mat-checkbox>
84
- </div>
85
- }
86
-
78
+ template: `
79
+ @for (item of keyValues$ | async| keyvalue; track item.key) {
80
+ <div>
81
+ <mat-checkbox [checked]='selectedKeys.includes(item.key)' stop-propagation (change)='selectFilterChanged($event, item.key)' >
82
+ {{metaData.fieldType === FieldType.Enum ? (item.value | spaceCase) : item.value}}
83
+ </mat-checkbox>
84
+ </div>
85
+ }
86
+
87
87
  `,
88
88
  changeDetection: ChangeDetectionStrategy.OnPush,
89
89
  providers: [{
@@ -99,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
99
99
  }], propDecorators: { key: [{
100
100
  type: Input
101
101
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tbGlzdC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9maWx0ZXIvaW4tbGlzdC9pbi1saXN0LWZpbHRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9CLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQXdCLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFNBQVMsRUFBWSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUEwQmhGLE1BQU0sT0FBTyxxQkFBcUI7SUFDeEIsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFeEMsS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUNyQixTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQ3RCLFVBQVUsQ0FBQyxHQUFhO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBRWpCLElBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBRSxDQUFDO1FBQy9DLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUUzQixnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxTQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUNRLEdBQUcsQ0FBVTtJQUV0QixVQUFVLENBQW1DO0lBQzdDLFlBQVksR0FBYyxFQUFFLENBQUM7SUFDN0IsUUFBUSxDQUFZO0lBRXBCLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzNELEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEVBQ3pDLEdBQUcsQ0FBRSxRQUFRLENBQUMsRUFBRTtZQUNkLElBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUcsQ0FBQztnQkFDekQsT0FBUSxRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUUsQ0FBQyxJQUFTLEVBQUUsR0FBRyxFQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUgsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUcsUUFBUSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFHLENBQUM7b0JBQzFDLE9BQU8sUUFBUSxDQUFDLFVBQVcsQ0FBQyxPQUFPLENBQUM7Z0JBQ3RDLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQU0sRUFBRSxHQUFHO1FBQzdCLElBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQzt1R0F2RFUscUJBQXFCOzJGQUFyQixxQkFBcUIsOEdBVnJCLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLHFCQUFxQjtnQkFDbEMsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLDBCQWZROzs7Ozs7Ozs7R0FTVCx1REFTQyxTQUFTLHlDQUFFLFlBQVksZ0RBQUUsaUJBQWlCLHFZQUFFLHdCQUF3QiwwREFBRSxhQUFhOzsyRkFHMUUscUJBQXFCO2tCQXZCakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUNBQXlDO29CQUNuRCxRQUFRLEVBQUU7Ozs7Ozs7OztHQVNUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUUsQ0FBQzs0QkFDVixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHVCQUF1Qjs0QkFDbEMsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQztvQkFDRixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFNBQVMsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsYUFBYTtxQkFDcEY7aUJBQ0Y7OEJBeUJVLEdBQUc7c0JBQVgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NvbnRhaW5lclJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvdGFibGUtc3RvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvZGljdGlvbmFyeSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUsIE1ldGFEYXRhIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgS2V5VmFsdWVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgU3BhY2VDYXNlUGlwZSwgU3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0Yi1pbi1saXN0LWZpbHRlciAsIFt0Yi1pbi1saXN0LWZpbHRlcl0nLFxuICB0ZW1wbGF0ZTogYFxuICBAZm9yIChpdGVtIG9mIGtleVZhbHVlcyQgfCBhc3luY3wga2V5dmFsdWU7IHRyYWNrIGl0ZW0ua2V5KSB7XG4gICAgPGRpdj5cbiAgICAgIDxtYXQtY2hlY2tib3ggW2NoZWNrZWRdPSdzZWxlY3RlZEtleXMuaW5jbHVkZXMoaXRlbS5rZXkpJyBzdG9wLXByb3BhZ2F0aW9uIChjaGFuZ2UpPSdzZWxlY3RGaWx0ZXJDaGFuZ2VkKCRldmVudCwgaXRlbS5rZXkpJyA+XG4gICAgICAgIHt7bWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuRW51bSA/IChpdGVtLnZhbHVlIHwgc3BhY2VDYXNlKSA6IGl0ZW0udmFsdWV9fVxuICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgPC9kaXY+XG4gIH1cblxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbe1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBJbkxpc3RGaWx0ZXJDb21wb25lbnQsXG4gICAgbXVsdGk6IHRydWVcbiAgfV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsIEtleVZhbHVlUGlwZSwgTWF0Q2hlY2tib3hNb2R1bGUsIFN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSwgU3BhY2VDYXNlUGlwZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEluTGlzdEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcHJpdmF0ZSByZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHRhYmxlU3RhdGUgPSBpbmplY3QoVGFibGVTdG9yZSk7XG5cbiAgdmFsdWU6IHN0cmluZ1tdID0gW107XG4gIEZpZWxkVHlwZSA9IEZpZWxkVHlwZTtcbiAgd3JpdGVWYWx1ZShvYmo6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG9iajtcblxuICAgIGlmKHRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXlzID0gdGhpcy52YWx1ZS5tYXAoIGYgPT4gZiApO1xuICAgIH1cbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuICBvblRvdWNoZWQgPSAoKSA9PiB7IH07XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG4gIEBJbnB1dCgpIGtleSE6IHN0cmluZztcblxuICBrZXlWYWx1ZXMkISA6IE9ic2VydmFibGU8RGljdGlvbmFyeTxzdHJpbmc+PjtcbiAgc2VsZWN0ZWRLZXlzIDogc3RyaW5nW10gPSBbXTtcbiAgbWV0YURhdGEhOiBNZXRhRGF0YTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmtleVZhbHVlcyQgPSB0aGlzLnRhYmxlU3RhdGUuZ2V0TWV0YURhdGEkKHRoaXMua2V5KS5waXBlKFxuICAgICAgdGFwKG1ldGFEYXRhID0+IHRoaXMubWV0YURhdGEgPSBtZXRhRGF0YSksXG4gICAgICBtYXAoIG1ldGFEYXRhID0+IHtcbiAgICAgICAgaWYobWV0YURhdGEuYWRkaXRpb25hbD8uZmlsdGVyT3B0aW9ucz8uZmlsdGVyYWJsZVZhbHVlcyApIHtcbiAgICAgICAgICByZXR1cm4gIG1ldGFEYXRhLmFkZGl0aW9uYWwuZmlsdGVyT3B0aW9ucy5maWx0ZXJhYmxlVmFsdWVzLnJlZHVjZSggKHByZXY6IGFueSwgY3VyKT0+IHsgcHJldltjdXJdID0gY3VyOyByZXR1cm4gcHJldiB9LCB7fSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYobWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuRW51bSApIHtcbiAgICAgICAgICAgIHJldHVybiBtZXRhRGF0YS5hZGRpdGlvbmFsIS5lbnVtTWFwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge307XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzZWxlY3RGaWx0ZXJDaGFuZ2VkKCRldmVudCwgdmFsKSB7XG4gICAgaWYoJGV2ZW50LmNoZWNrZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXlzID0gWy4uLnRoaXMuc2VsZWN0ZWRLZXlzLCB2YWxdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkS2V5cyA9IHRoaXMuc2VsZWN0ZWRLZXlzLmZpbHRlciggaXRlbSA9PiBpdGVtICE9PSB2YWwpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB0aGlzLnNlbGVjdGVkS2V5cztcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbn1cbiJdfQ==
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tbGlzdC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9maWx0ZXIvaW4tbGlzdC9pbi1saXN0LWZpbHRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9CLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQXdCLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFNBQVMsRUFBWSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUEwQmhGLE1BQU0sT0FBTyxxQkFBcUI7SUFDeEIsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFeEMsS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUNyQixTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQ3RCLFVBQVUsQ0FBQyxHQUFhO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBRWpCLElBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFD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Q0FBQzs0QkFDVixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHVCQUF1Qjs0QkFDbEMsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQztvQkFDRixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFNBQVMsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsYUFBYTtxQkFDcEY7aUJBQ0Y7OEJBeUJVLEdBQUc7c0JBQVgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NvbnRhaW5lclJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XHJcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2RpY3Rpb25hcnknO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUsIE1ldGFEYXRhIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcclxuaW1wb3J0IHsgQXN5bmNQaXBlLCBLZXlWYWx1ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgU3BhY2VDYXNlUGlwZSwgU3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RiLWluLWxpc3QtZmlsdGVyICwgW3RiLWluLWxpc3QtZmlsdGVyXScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICBAZm9yIChpdGVtIG9mIGtleVZhbHVlcyQgfCBhc3luY3wga2V5dmFsdWU7IHRyYWNrIGl0ZW0ua2V5KSB7XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8bWF0LWNoZWNrYm94IFtjaGVja2VkXT0nc2VsZWN0ZWRLZXlzLmluY2x1ZGVzKGl0ZW0ua2V5KScgc3RvcC1wcm9wYWdhdGlvbiAoY2hhbmdlKT0nc2VsZWN0RmlsdGVyQ2hhbmdlZCgkZXZlbnQsIGl0ZW0ua2V5KScgPlxyXG4gICAgICAgIHt7bWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuRW51bSA/IChpdGVtLnZhbHVlIHwgc3BhY2VDYXNlKSA6IGl0ZW0udmFsdWV9fVxyXG4gICAgICA8L21hdC1jaGVja2JveD5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuXHJcbiAgYCxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBJbkxpc3RGaWx0ZXJDb21wb25lbnQsXHJcbiAgICBtdWx0aTogdHJ1ZVxyXG4gIH1dLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQXN5bmNQaXBlLCBLZXlWYWx1ZVBpcGUsIE1hdENoZWNrYm94TW9kdWxlLCBTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmUsIFNwYWNlQ2FzZVBpcGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbkxpc3RGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgcHJpdmF0ZSByZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIHByaXZhdGUgdGFibGVTdGF0ZSA9IGluamVjdChUYWJsZVN0b3JlKTtcclxuXHJcbiAgdmFsdWU6IHN0cmluZ1tdID0gW107XHJcbiAgRmllbGRUeXBlID0gRmllbGRUeXBlO1xyXG4gIHdyaXRlVmFsdWUob2JqOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IG9iajtcclxuXHJcbiAgICBpZih0aGlzLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXlzID0gdGhpcy52YWx1ZS5tYXAoIGYgPT4gZiApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIG9uVG91Y2hlZCA9ICgpID0+IHsgfTtcclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuICBASW5wdXQoKSBrZXkhOiBzdHJpbmc7XHJcblxyXG4gIGtleVZhbHVlcyQhIDogT2JzZXJ2YWJsZTxEaWN0aW9uYXJ5PHN0cmluZz4+O1xyXG4gIHNlbGVjdGVkS2V5cyA6IHN0cmluZ1tdID0gW107XHJcbiAgbWV0YURhdGEhOiBNZXRhRGF0YTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmtleVZhbHVlcyQgPSB0aGlzLnRhYmxlU3RhdGUuZ2V0TWV0YURhdGEkKHRoaXMua2V5KS5waXBlKFxyXG4gICAgICB0YXAobWV0YURhdGEgPT4gdGhpcy5tZXRhRGF0YSA9IG1ldGFEYXRhKSxcclxuICAgICAgbWFwKCBtZXRhRGF0YSA9PiB7XHJcbiAgICAgICAgaWYobWV0YURhdGEuYWRkaXRpb25hbD8uZmlsdGVyT3B0aW9ucz8uZmlsdGVyYWJsZVZhbHVlcyApIHtcclxuICAgICAgICAgIHJldHVybiAgbWV0YURhdGEuYWRkaXRpb25hbC5maWx0ZXJPcHRpb25zLmZpbHRlcmFibGVWYWx1ZXMucmVkdWNlKCAocHJldjogYW55LCBjdXIpPT4geyBwcmV2W2N1cl0gPSBjdXI7IHJldHVybiBwcmV2IH0sIHt9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYobWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuRW51bSApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1ldGFEYXRhLmFkZGl0aW9uYWwhLmVudW1NYXA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RGaWx0ZXJDaGFuZ2VkKCRldmVudCwgdmFsKSB7XHJcbiAgICBpZigkZXZlbnQuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5cyA9IFsuLi50aGlzLnNlbGVjdGVkS2V5cywgdmFsXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXlzID0gdGhpcy5zZWxlY3RlZEtleXMuZmlsdGVyKCBpdGVtID0+IGl0ZW0gIT09IHZhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuc2VsZWN0ZWRLZXlzO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -41,13 +41,13 @@ export class GenColDisplayerComponent {
41
41
  this.tableState.setHiddenColumns(displayCols.map(c => ({ key: c.key, visible: c.isVisible })));
42
42
  }
43
43
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: GenColDisplayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: GenColDisplayerComponent, isStandalone: true, selector: "tb-col-displayer", ngImport: i0, template: "@if(columns$ | async; as displayCols){\n <span matTooltip=\"Show/hide columns\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon color=\"primary\">visibility_off</mat-icon>\n </button>\n </span>\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\">\n\n <button mat-menu-item>\n <span matTooltip=\"Close\">\n <button class=\"filter-button\" mat-icon-button>\n <mat-icon>close</mat-icon>\n </button>\n </span>\n </button>\n\n <button mat-menu-item stop-propagation>\n <span matTooltip=\"Show all columns\">\n <button mat-icon-button (click)=\"reset(displayCols)\">\n <mat-icon color=\"primary\">done_all</mat-icon>\n </button>\n </span>\n\n <span matTooltip=\"Hide all columns\">\n <button mat-icon-button (click)=\"unset(displayCols)\">\n <mat-icon color=\"primary\">cancel</mat-icon>\n </button>\n </span>\n </button>\n\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" stop-propagation [cdkDropListLockAxis]=\"'y'\">\n @for (col of displayCols; track col.key) {\n <button [class.isHidden]=\"!col.isVisible\" stop-propagation mat-menu-item cdkDrag [cdkDragData]=\"col\">\n <div (click)=\"col.isVisible = !col.isVisible; emit(displayCols)\" style=\"display: flex; align-items: center;\">\n @if(col.isVisible){\n <button mat-icon-button matTooltip=\"Hide Column\" class=\"show-hide\">\n <mat-icon color=\"primary\">check_box</mat-icon>\n </button>\n } @else {\n <button mat-icon-button matTooltip=\"Show Column\" class=\"show-hide\">\n <mat-icon>indeterminate_check_box</mat-icon>\n </button>\n }\n \n <p class=\"label\">\n {{col.displayName || (col.key | spaceCase) }}\n </p>\n\n </div>\n </button>\n }\n\n </div>\n </mat-menu>\n}", styles: [".show-hide{margin-right:15px;height:24px;width:24px;padding:4px}.label{color:#6495ed;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;text-align:left;margin:0;font-size:17px;font-weight:700;display:inline-block;width:66%}.row{margin:0;padding:0}.isHidden{background-color:#d3d3d3;color:#a9a9a9;font-weight:700;font-size:17px;white-space:nowrap}.filter-button{margin-top:10px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.mdc-list-item__primary-text{display:inline-block;width:100%}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: StopPropagationDirective, selector: "[stop-propagation]" }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "pipe", type: SpaceCasePipe, name: "spaceCase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
44
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: GenColDisplayerComponent, isStandalone: true, selector: "tb-col-displayer", ngImport: i0, template: "@if(columns$ | async; as displayCols){\r\n <span matTooltip=\"Show/hide columns\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n </button>\r\n </span>\r\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\">\r\n\r\n <button mat-menu-item>\r\n <span matTooltip=\"Close\">\r\n <button class=\"filter-button\" mat-icon-button>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </span>\r\n </button>\r\n\r\n <button mat-menu-item stop-propagation>\r\n <span matTooltip=\"Show all columns\">\r\n <button mat-icon-button (click)=\"reset(displayCols)\">\r\n <mat-icon color=\"primary\">done_all</mat-icon>\r\n </button>\r\n </span>\r\n\r\n <span matTooltip=\"Hide all columns\">\r\n <button mat-icon-button (click)=\"unset(displayCols)\">\r\n <mat-icon color=\"primary\">cancel</mat-icon>\r\n </button>\r\n </span>\r\n </button>\r\n\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" stop-propagation [cdkDropListLockAxis]=\"'y'\">\r\n @for (col of displayCols; track col.key) {\r\n <button [class.isHidden]=\"!col.isVisible\" stop-propagation mat-menu-item cdkDrag [cdkDragData]=\"col\">\r\n <div (click)=\"col.isVisible = !col.isVisible; emit(displayCols)\" style=\"display: flex; align-items: center;\">\r\n @if(col.isVisible){\r\n <button mat-icon-button matTooltip=\"Hide Column\" class=\"show-hide\">\r\n <mat-icon color=\"primary\">check_box</mat-icon>\r\n </button>\r\n } @else {\r\n <button mat-icon-button matTooltip=\"Show Column\" class=\"show-hide\">\r\n <mat-icon>indeterminate_check_box</mat-icon>\r\n </button>\r\n }\r\n \r\n <p class=\"label\">\r\n {{col.displayName || (col.key | spaceCase) }}\r\n </p>\r\n\r\n </div>\r\n </button>\r\n }\r\n\r\n </div>\r\n </mat-menu>\r\n}", styles: [".show-hide{margin-right:15px;height:24px;width:24px;padding:4px}.label{color:#6495ed;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;text-align:left;margin:0;font-size:17px;font-weight:700;display:inline-block;width:66%}.row{margin:0;padding:0}.isHidden{background-color:#d3d3d3;color:#a9a9a9;font-weight:700;font-size:17px;white-space:nowrap}.filter-button{margin-top:10px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.mdc-list-item__primary-text{display:inline-block;width:100%}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: StopPropagationDirective, selector: "[stop-propagation]" }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "pipe", type: SpaceCasePipe, name: "spaceCase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
45
45
  }
46
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: GenColDisplayerComponent, decorators: [{
47
47
  type: Component,
48
48
  args: [{ selector: 'tb-col-displayer', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
49
49
  AsyncPipe, MatTooltipModule, MatIconModule, MatButtonModule, MatMenuModule, StopPropagationDirective,
50
50
  DragDropModule, SpaceCasePipe
51
- ], template: "@if(columns$ | async; as displayCols){\n <span matTooltip=\"Show/hide columns\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon color=\"primary\">visibility_off</mat-icon>\n </button>\n </span>\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\">\n\n <button mat-menu-item>\n <span matTooltip=\"Close\">\n <button class=\"filter-button\" mat-icon-button>\n <mat-icon>close</mat-icon>\n </button>\n </span>\n </button>\n\n <button mat-menu-item stop-propagation>\n <span matTooltip=\"Show all columns\">\n <button mat-icon-button (click)=\"reset(displayCols)\">\n <mat-icon color=\"primary\">done_all</mat-icon>\n </button>\n </span>\n\n <span matTooltip=\"Hide all columns\">\n <button mat-icon-button (click)=\"unset(displayCols)\">\n <mat-icon color=\"primary\">cancel</mat-icon>\n </button>\n </span>\n </button>\n\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" stop-propagation [cdkDropListLockAxis]=\"'y'\">\n @for (col of displayCols; track col.key) {\n <button [class.isHidden]=\"!col.isVisible\" stop-propagation mat-menu-item cdkDrag [cdkDragData]=\"col\">\n <div (click)=\"col.isVisible = !col.isVisible; emit(displayCols)\" style=\"display: flex; align-items: center;\">\n @if(col.isVisible){\n <button mat-icon-button matTooltip=\"Hide Column\" class=\"show-hide\">\n <mat-icon color=\"primary\">check_box</mat-icon>\n </button>\n } @else {\n <button mat-icon-button matTooltip=\"Show Column\" class=\"show-hide\">\n <mat-icon>indeterminate_check_box</mat-icon>\n </button>\n }\n \n <p class=\"label\">\n {{col.displayName || (col.key | spaceCase) }}\n </p>\n\n </div>\n </button>\n }\n\n </div>\n </mat-menu>\n}", styles: [".show-hide{margin-right:15px;height:24px;width:24px;padding:4px}.label{color:#6495ed;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;text-align:left;margin:0;font-size:17px;font-weight:700;display:inline-block;width:66%}.row{margin:0;padding:0}.isHidden{background-color:#d3d3d3;color:#a9a9a9;font-weight:700;font-size:17px;white-space:nowrap}.filter-button{margin-top:10px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.mdc-list-item__primary-text{display:inline-block;width:100%}\n"] }]
51
+ ], template: "@if(columns$ | async; as displayCols){\r\n <span matTooltip=\"Show/hide columns\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n </button>\r\n </span>\r\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\">\r\n\r\n <button mat-menu-item>\r\n <span matTooltip=\"Close\">\r\n <button class=\"filter-button\" mat-icon-button>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </span>\r\n </button>\r\n\r\n <button mat-menu-item stop-propagation>\r\n <span matTooltip=\"Show all columns\">\r\n <button mat-icon-button (click)=\"reset(displayCols)\">\r\n <mat-icon color=\"primary\">done_all</mat-icon>\r\n </button>\r\n </span>\r\n\r\n <span matTooltip=\"Hide all columns\">\r\n <button mat-icon-button (click)=\"unset(displayCols)\">\r\n <mat-icon color=\"primary\">cancel</mat-icon>\r\n </button>\r\n </span>\r\n </button>\r\n\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" stop-propagation [cdkDropListLockAxis]=\"'y'\">\r\n @for (col of displayCols; track col.key) {\r\n <button [class.isHidden]=\"!col.isVisible\" stop-propagation mat-menu-item cdkDrag [cdkDragData]=\"col\">\r\n <div (click)=\"col.isVisible = !col.isVisible; emit(displayCols)\" style=\"display: flex; align-items: center;\">\r\n @if(col.isVisible){\r\n <button mat-icon-button matTooltip=\"Hide Column\" class=\"show-hide\">\r\n <mat-icon color=\"primary\">check_box</mat-icon>\r\n </button>\r\n } @else {\r\n <button mat-icon-button matTooltip=\"Show Column\" class=\"show-hide\">\r\n <mat-icon>indeterminate_check_box</mat-icon>\r\n </button>\r\n }\r\n \r\n <p class=\"label\">\r\n {{col.displayName || (col.key | spaceCase) }}\r\n </p>\r\n\r\n </div>\r\n </button>\r\n }\r\n\r\n </div>\r\n </mat-menu>\r\n}", styles: [".show-hide{margin-right:15px;height:24px;width:24px;padding:4px}.label{color:#6495ed;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;text-align:left;margin:0;font-size:17px;font-weight:700;display:inline-block;width:66%}.row{margin:0;padding:0}.isHidden{background-color:#d3d3d3;color:#a9a9a9;font-weight:700;font-size:17px;white-space:nowrap}.filter-button{margin-top:10px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.mdc-list-item__primary-text{display:inline-block;width:100%}\n"] }]
52
52
  }], ctorParameters: () => [] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuLWNvbC1kaXNwbGF5ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9nZW4tY29sLWRpc3BsYXllci9nZW4tY29sLWRpc3BsYXllci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dlbi1jb2wtZGlzcGxheWVyL2dlbi1jb2wtZGlzcGxheWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkYsT0FBTyxFQUFjLGNBQWMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBYW5ELE1BQU0sT0FBTyx3QkFBd0I7SUFDM0IsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV4QyxRQUFRLENBQTRCO0lBQ3BDO1FBQ0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3pDLEdBQUcsQ0FBRSxLQUFLLENBQUMsRUFBRSxDQUNYLDBCQUEwQixDQUFDLEtBQUssQ0FBQzthQUM5QixHQUFHLENBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1gsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHO1lBQ1gsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXO1lBQzNCLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7U0FDOUMsQ0FBQyxDQUFDLENBQ04sRUFDRCxrQkFBa0IsRUFBRSxDQUNyQixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxXQUF5QjtRQUM3QixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLENBQUMsS0FBNEI7UUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQTtJQUNyRyxDQUFDO0lBQ0QsS0FBSyxDQUFDLFdBQXlCO1FBQzdCLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksQ0FBQyxXQUF5QjtRQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO3VHQWhDVSx3QkFBd0I7MkZBQXhCLHdCQUF3Qiw0RUN6QnJDLHc2REFzREMscXVCRGpDRyxTQUFTLDZDQUFFLGdCQUFnQiw0VEFBRSxhQUFhLG1MQUFFLGVBQWUsMklBQUUsYUFBYSw4dkJBQUUsd0JBQXdCLDhEQUNwRyxjQUFjLHcvQkFBRSxhQUFhOzsyRkFHcEIsd0JBQXdCO2tCQVhwQyxTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsd0JBQXdCO3dCQUNwRyxjQUFjLEVBQUUsYUFBYTtxQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpc3BsYXlDb2wgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Rpc3BsYXktY29sJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG9yZGVyZWRDb2RlVmlzaWJsZU1ldGFEYXRhLCBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XG5pbXBvcnQge0Nka0RyYWdEcm9wLCBEcmFnRHJvcE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IFNwYWNlQ2FzZVBpcGUsIFN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcyc7XG5pbXBvcnQgeyBkZWZhdWx0U2hhcmVSZXBsYXkgfSBmcm9tICcuLi8uLi8uLi9yeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGItY29sLWRpc3BsYXllcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW4tY29sLWRpc3BsYXllci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dlbi1jb2wtZGlzcGxheWVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoICxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSwgTWF0VG9vbHRpcE1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRNZW51TW9kdWxlLCBTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmUsXG4gICAgRHJhZ0Ryb3BNb2R1bGUsIFNwYWNlQ2FzZVBpcGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBHZW5Db2xEaXNwbGF5ZXJDb21wb25lbnQge1xuICBwcml2YXRlIHRhYmxlU3RhdGUgPSBpbmplY3QoVGFibGVTdG9yZSk7XG5cbiAgY29sdW1ucyQ6IE9ic2VydmFibGU8IERpc3BsYXlDb2xbXT47XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29sdW1ucyQgPSB0aGlzLnRhYmxlU3RhdGUuc3RhdGUkLnBpcGUoXG4gICAgICBtYXAoIHN0YXRlID0+XG4gICAgICAgIG9yZGVyZWRDb2RlVmlzaWJsZU1ldGFEYXRhKHN0YXRlKVxuICAgICAgICAgIC5tYXAoIG1kID0+ICh7XG4gICAgICAgICAgICBrZXk6IG1kLmtleSxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBtZC5kaXNwbGF5TmFtZSxcbiAgICAgICAgICAgIGlzVmlzaWJsZTogIXN0YXRlLmhpZGRlbktleXMuaW5jbHVkZXMobWQua2V5KVxuICAgICAgICAgIH0pKVxuICAgICAgKSxcbiAgICAgIGRlZmF1bHRTaGFyZVJlcGxheSgpXG4gICAgKTtcbiAgfVxuXG4gIHJlc2V0KGRpc3BsYXlDb2xzOiBEaXNwbGF5Q29sW10pIHtcbiAgICBkaXNwbGF5Q29scy5mb3JFYWNoKGMgPT4gYy5pc1Zpc2libGUgPSB0cnVlKTtcbiAgICB0aGlzLmVtaXQoZGlzcGxheUNvbHMpO1xuICB9XG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPikge1xuICAgIHRoaXMudGFibGVTdGF0ZS5zZXRVc2VyRGVmaW5lZE9yZGVyKHsgbmV3T3JkZXI6IGV2ZW50LmN1cnJlbnRJbmRleCwgb2xkT3JkZXI6ZXZlbnQucHJldmlvdXNJbmRleCB9KVxuICB9XG4gIHVuc2V0KGRpc3BsYXlDb2xzOiBEaXNwbGF5Q29sW10pIHtcbiAgICBkaXNwbGF5Q29scy5mb3JFYWNoKGMgPT4gYy5pc1Zpc2libGUgPSBmYWxzZSk7XG4gICAgdGhpcy5lbWl0KGRpc3BsYXlDb2xzKTtcbiAgfVxuXG4gIGVtaXQoZGlzcGxheUNvbHM6IERpc3BsYXlDb2xbXSkge1xuICAgIHRoaXMudGFibGVTdGF0ZS5zZXRIaWRkZW5Db2x1bW5zKGRpc3BsYXlDb2xzLm1hcCggYyA9PiAoe2tleTogYy5rZXksIHZpc2libGU6IGMuaXNWaXNpYmxlfSkpKTtcbiAgfVxufVxuIiwiQGlmKGNvbHVtbnMkIHwgYXN5bmM7IGFzIGRpc3BsYXlDb2xzKXtcbiAgPHNwYW4gbWF0VG9vbHRpcD1cIlNob3cvaGlkZSBjb2x1bW5zXCI+XG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cbiAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIj52aXNpYmlsaXR5X29mZjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvc3Bhbj5cbiAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIGNsYXNzPVwibXktbWF0LW1lbnVcIj5cblxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbT5cbiAgICAgIDxzcGFuIG1hdFRvb2x0aXA9XCJDbG9zZVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmlsdGVyLWJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbj5cbiAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBzdG9wLXByb3BhZ2F0aW9uPlxuICAgICAgPHNwYW4gbWF0VG9vbHRpcD1cIlNob3cgYWxsIGNvbHVtbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlc2V0KGRpc3BsYXlDb2xzKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIj5kb25lX2FsbDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8c3BhbiBtYXRUb29sdGlwPVwiSGlkZSBhbGwgY29sdW1uc1wiPlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidW5zZXQoZGlzcGxheUNvbHMpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPmNhbmNlbDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiIHN0b3AtcHJvcGFnYXRpb24gW2Nka0Ryb3BMaXN0TG9ja0F4aXNdPVwiJ3knXCI+XG4gICAgICBAZm9yIChjb2wgb2YgZGlzcGxheUNvbHM7IHRyYWNrIGNvbC5rZXkpIHtcbiAgICAgICAgPGJ1dHRvbiBbY2xhc3MuaXNIaWRkZW5dPVwiIWNvbC5pc1Zpc2libGVcIiBzdG9wLXByb3BhZ2F0aW9uIG1hdC1tZW51LWl0ZW0gY2RrRHJhZyBbY2RrRHJhZ0RhdGFdPVwiY29sXCI+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cImNvbC5pc1Zpc2libGUgPSAhY29sLmlzVmlzaWJsZTsgZW1pdChkaXNwbGF5Q29scylcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XG4gICAgICAgICAgQGlmKGNvbC5pc1Zpc2libGUpe1xuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkhpZGUgQ29sdW1uXCIgY2xhc3M9XCJzaG93LWhpZGVcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPmNoZWNrX2JveDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJTaG93IENvbHVtblwiIGNsYXNzPVwic2hvdy1oaWRlXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5pbmRldGVybWluYXRlX2NoZWNrX2JveDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgPHAgY2xhc3M9XCJsYWJlbFwiPlxuICAgICAgICAgICAge3tjb2wuZGlzcGxheU5hbWUgfHwgKGNvbC5rZXkgfCBzcGFjZUNhc2UpIH19XG4gICAgICAgICAgPC9wPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgICB9XG5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtbWVudT5cbn0iXX0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuLWNvbC1kaXNwbGF5ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9nZW4tY29sLWRpc3BsYXllci9nZW4tY29sLWRpc3BsYXllci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dlbi1jb2wtZGlzcGxheWVyL2dlbi1jb2wtZGlzcGxheWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkYsT0FBTyxFQUFjLGNBQWMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBYW5ELE1BQU0sT0FBTyx3QkFBd0I7SUFDM0IsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV4QyxRQUFRLENBQTRCO0lBQ3BDO1FBQ0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3pDLEdBQUcsQ0FBRSxLQUFLLENBQUMsRUFBRSxDQUNYLDBCQUEwQixDQUFDLEtBQUssQ0FBQzthQUM5QixHQUFHLENBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1gsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHO1lBQ1gsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXO1lBQzNCLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7U0FDOUMsQ0FBQyxDQUFDLENBQ04sRUFDRCxrQkFBa0IsRUFBRSxDQUNyQixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxXQUF5QjtRQUM3QixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLENBQUMsS0FBNEI7UUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQTtJQUNyRyxDQUFDO0lBQ0QsS0FBSyxDQUFDLFdBQXlCO1FBQzdCLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksQ0FBQyxXQUF5QjtRQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO3VHQWhDVSx3QkFBd0I7MkZBQXhCLHdCQUF3Qiw0RUN6QnJDLG9oRUFzREMscXVCRGpDRyxTQUFTLDZDQUFFLGdCQUFnQiw0VEFBRSxhQUFhLG1MQUFFLGVBQWUsMklBQUUsYUFBYSw4dkJBQUUsd0JBQXdCLDhEQUNwRyxjQUFjLHcvQkFBRSxhQUFhOzsyRkFHcEIsd0JBQXdCO2tCQVhwQyxTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsd0JBQXdCO3dCQUNwRyxjQUFjLEVBQUUsYUFBYTtxQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlzcGxheUNvbCB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZGlzcGxheS1jb2wnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgb3JkZXJlZENvZGVWaXNpYmxlTWV0YURhdGEsIFRhYmxlU3RvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLXN0b3JlJztcclxuaW1wb3J0IHtDZGtEcmFnRHJvcCwgRHJhZ0Ryb3BNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBTcGFjZUNhc2VQaXBlLCBTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBkZWZhdWx0U2hhcmVSZXBsYXkgfSBmcm9tICcuLi8uLi8uLi9yeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGItY29sLWRpc3BsYXllcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbi1jb2wtZGlzcGxheWVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9nZW4tY29sLWRpc3BsYXllci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoICxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEFzeW5jUGlwZSwgTWF0VG9vbHRpcE1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRNZW51TW9kdWxlLCBTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmUsXHJcbiAgICBEcmFnRHJvcE1vZHVsZSwgU3BhY2VDYXNlUGlwZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEdlbkNvbERpc3BsYXllckNvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSB0YWJsZVN0YXRlID0gaW5qZWN0KFRhYmxlU3RvcmUpO1xyXG5cclxuICBjb2x1bW5zJDogT2JzZXJ2YWJsZTwgRGlzcGxheUNvbFtdPjtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuY29sdW1ucyQgPSB0aGlzLnRhYmxlU3RhdGUuc3RhdGUkLnBpcGUoXHJcbiAgICAgIG1hcCggc3RhdGUgPT5cclxuICAgICAgICBvcmRlcmVkQ29kZVZpc2libGVNZXRhRGF0YShzdGF0ZSlcclxuICAgICAgICAgIC5tYXAoIG1kID0+ICh7XHJcbiAgICAgICAgICAgIGtleTogbWQua2V5LFxyXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogbWQuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgICAgIGlzVmlzaWJsZTogIXN0YXRlLmhpZGRlbktleXMuaW5jbHVkZXMobWQua2V5KVxyXG4gICAgICAgICAgfSkpXHJcbiAgICAgICksXHJcbiAgICAgIGRlZmF1bHRTaGFyZVJlcGxheSgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmVzZXQoZGlzcGxheUNvbHM6IERpc3BsYXlDb2xbXSkge1xyXG4gICAgZGlzcGxheUNvbHMuZm9yRWFjaChjID0+IGMuaXNWaXNpYmxlID0gdHJ1ZSk7XHJcbiAgICB0aGlzLmVtaXQoZGlzcGxheUNvbHMpO1xyXG4gIH1cclxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcclxuICAgIHRoaXMudGFibGVTdGF0ZS5zZXRVc2VyRGVmaW5lZE9yZGVyKHsgbmV3T3JkZXI6IGV2ZW50LmN1cnJlbnRJbmRleCwgb2xkT3JkZXI6ZXZlbnQucHJldmlvdXNJbmRleCB9KVxyXG4gIH1cclxuICB1bnNldChkaXNwbGF5Q29sczogRGlzcGxheUNvbFtdKSB7XHJcbiAgICBkaXNwbGF5Q29scy5mb3JFYWNoKGMgPT4gYy5pc1Zpc2libGUgPSBmYWxzZSk7XHJcbiAgICB0aGlzLmVtaXQoZGlzcGxheUNvbHMpO1xyXG4gIH1cclxuXHJcbiAgZW1pdChkaXNwbGF5Q29sczogRGlzcGxheUNvbFtdKSB7XHJcbiAgICB0aGlzLnRhYmxlU3RhdGUuc2V0SGlkZGVuQ29sdW1ucyhkaXNwbGF5Q29scy5tYXAoIGMgPT4gKHtrZXk6IGMua2V5LCB2aXNpYmxlOiBjLmlzVmlzaWJsZX0pKSk7XHJcbiAgfVxyXG59XHJcbiIsIkBpZihjb2x1bW5zJCB8IGFzeW5jOyBhcyBkaXNwbGF5Q29scyl7XHJcbiAgPHNwYW4gbWF0VG9vbHRpcD1cIlNob3cvaGlkZSBjb2x1bW5zXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxyXG4gICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCI+dmlzaWJpbGl0eV9vZmY8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9zcGFuPlxyXG4gIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cIm15LW1hdC1tZW51XCI+XHJcblxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtPlxyXG4gICAgICA8c3BhbiBtYXRUb29sdGlwPVwiQ2xvc2VcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmlsdGVyLWJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBzdG9wLXByb3BhZ2F0aW9uPlxyXG4gICAgICA8c3BhbiBtYXRUb29sdGlwPVwiU2hvdyBhbGwgY29sdW1uc1wiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZXNldChkaXNwbGF5Q29scylcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIj5kb25lX2FsbDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgIDxzcGFuIG1hdFRvb2x0aXA9XCJIaWRlIGFsbCBjb2x1bW5zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInVuc2V0KGRpc3BsYXlDb2xzKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPmNhbmNlbDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxkaXYgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIiBzdG9wLXByb3BhZ2F0aW9uIFtjZGtEcm9wTGlzdExvY2tBeGlzXT1cIid5J1wiPlxyXG4gICAgICBAZm9yIChjb2wgb2YgZGlzcGxheUNvbHM7IHRyYWNrIGNvbC5rZXkpIHtcclxuICAgICAgICA8YnV0dG9uIFtjbGFzcy5pc0hpZGRlbl09XCIhY29sLmlzVmlzaWJsZVwiIHN0b3AtcHJvcGFnYXRpb24gbWF0LW1lbnUtaXRlbSBjZGtEcmFnIFtjZGtEcmFnRGF0YV09XCJjb2xcIj5cclxuICAgICAgICA8ZGl2IChjbGljayk9XCJjb2wuaXNWaXNpYmxlID0gIWNvbC5pc1Zpc2libGU7IGVtaXQoZGlzcGxheUNvbHMpXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyO1wiPlxyXG4gICAgICAgICAgQGlmKGNvbC5pc1Zpc2libGUpe1xyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiSGlkZSBDb2x1bW5cIiBjbGFzcz1cInNob3ctaGlkZVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIj5jaGVja19ib3g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiU2hvdyBDb2x1bW5cIiBjbGFzcz1cInNob3ctaGlkZVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5pbmRldGVybWluYXRlX2NoZWNrX2JveDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICA8cCBjbGFzcz1cImxhYmVsXCI+XHJcbiAgICAgICAgICAgIHt7Y29sLmRpc3BsYXlOYW1lIHx8IChjb2wua2V5IHwgc3BhY2VDYXNlKSB9fVxyXG4gICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIH1cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1tZW51PlxyXG59Il19
@@ -155,10 +155,7 @@ export class GenericTableComponent {
155
155
  this.state.on(this.selection.changed, c => this.selection$.emit(c));
156
156
  }
157
157
  $selectableData = computed(() => {
158
- if (this.state.$viewType() === 'paginator') {
159
- return this.state.props().dataSource.data;
160
- }
161
- else if (this.state.$viewType() === 'virtual paginator') {
158
+ if (this.state.$viewType() === 'paginator' || this.state.$viewType() === 'virtual paginator') {
162
159
  const previousPageRecords = this.state.state().currentPage * this.state.state().pageSize;
163
160
  return this.$data().slice(previousPageRecords, previousPageRecords + this.state.state().pageSize);
164
161
  }
@@ -225,14 +222,14 @@ export class GenericTableComponent {
225
222
  });
226
223
  $stickyFooter = computed(() => this.state.props().stickyFooter || this.state.$isVirtual());
227
224
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: GenericTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
228
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: GenericTableComponent, isStandalone: true, selector: "tb-generic-table", inputs: { trackBy: { classPropertyName: "trackBy", publicName: "trackBy", isSignal: false, isRequired: false, transformFunction: null }, displayData$: { classPropertyName: "displayData$", publicName: "displayData$", isSignal: false, isRequired: false, transformFunction: null }, $data: { classPropertyName: "$data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: false, isRequired: false, transformFunction: null }, columnBuilders: { classPropertyName: "columnBuilders", publicName: "columnBuilders", isSignal: false, isRequired: false, transformFunction: null }, columnInfos: { classPropertyName: "columnInfos", publicName: "columnInfos", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selection$: "selection$" }, viewQueries: [{ propertyName: "table", first: true, predicate: MatTable, descendants: true, static: true }, { propertyName: "dropList", first: true, predicate: CdkDropList, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-table\n cdkDropList\n cdkDropListLockAxis='x'\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"table-drag-list\"\n [class]=\"(showFooterRow$ | async)\"\n #table\n [dataSource]=\"state.props().dataSource!\"\n [trackBy]=\"trackByFunction\"\n [style]=\"tableWidth | async \"\n>\n\n <!-- select column -->\n <ng-container matColumnDef=\"select\">\n\n <mat-header-cell *matHeaderCellDef class=\"select-column\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"!!(masterToggleChecked$ | async)\"\n [indeterminate]=\"masterToggleIndeterminate$ | async\">\n </mat-checkbox>\n </mat-header-cell>\n\n <mat-cell *matCellDef=\"let row\" class=\"select-column\">\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\"\n [checked]=\"selection.isSelected(row)\"/>\n </mat-cell>\n\n <mat-footer-cell *matFooterCellDef class=\"select-column\">\n {{ selection.selected.length }}\n </mat-footer-cell>\n </ng-container>\n\n\n <!-- index column -->\n <ng-container matColumnDef=\"index\">\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" class=\"index-column\">#\n </mat-header-cell>\n <mat-cell *matCellDef=\"let i = index;\" class=\"index-column\">\n {{ 1 + i + offsetIndex }}\n </mat-cell>\n <mat-footer-cell *matFooterCellDef class=\"index-column\"></mat-footer-cell>\n </ng-container>\n\n <!-- Grouping -->\n <ng-container matColumnDef=\"groupHeader\">\n <mat-cell *matCellDef=\"let row\">\n @let expanded = (state.getIsExpanded | func : row.key : row.groupName );\n <div [style.paddingLeft]=\"row.padding + 'px !important'\">\n <button mat-icon-button (click)=\"setExpanded(row.key, row.groupName, !expanded());\">\n @if (!expanded()) {\n <mat-icon>chevron_right</mat-icon>\n } @else {\n <mat-icon>expand_more</mat-icon>\n }\n </button>\n {{ getTransform | func : row.key : row.groupHeaderDisplay }} ({{ row.length }})\n </div>\n <div style=\"flex-grow: 1\">\n <ng-container *ngTemplateOutlet=\"state.props().groupHeaderTemplate!; context: { element: row }\"></ng-container>\n </div>\n </mat-cell>\n </ng-container>\n\n @if (showHeader$ | async) {\n <mat-header-row [style.height]=\"$headerHeight()\" [style.min-height]=\"$headerHeight()\"\n *matHeaderRowDef=\"keys; sticky: state.props().isSticky\" [style.top.px]=\"((offset$ | async)! * -1)\"/>\n }\n <mat-row [style.height]=\"$rowHeight()\" [style.min-height]=\"$rowHeight()\"\n *matRowDef=\"let row; columns: keys; let i = index\"/>\n <mat-row [style.height]=\"$rowHeight()\" [style.min-height]=\"$rowHeight()\"\n *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" style=\"background-color: white;\"/>\n <mat-footer-row [style.height]=\"$rowHeight()\" [style.min-height]=\"$rowHeight()\"\n *matFooterRowDef=\"(showFooterRow$ | async) === 'regular-footer' ? keys : []; sticky: $stickyFooter() \"\n [style.bottom.px]=\"$stickyFooter() ? (offset$ | async) : undefined\"/>\n\n</mat-table>\n", styles: [":host{--mat-paginator-container-size: initial}.select-column{min-width:var(--tb-min-select-column-width, 42px)}.index-column{min-width:var(--tb-min-index-column-width, 42px)}.mat-mdc-row:nth-child(odd){background-color:var(--tb-odd-row-background-color, #cdeefe)}.page-amounts{color:#0000008a;font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;margin-right:.2rem}:host::ng-deep .table-drag-list.cdk-drop-list-dragging .drag-header:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}:host::ng-deep .mdc-data-table__cell,:host::ng-deep .mdc-data-table__header-cell{padding:var(--tb-cell-padding, 0 0 0 .2rem);line-height:var(--tb-cell-line-height, normal)}::ng-deep .op-date-time-input{line-height:3rem;font-size:.9rem;font-family:Roboto,Helvetica Neue,sans-serif;padding-left:.2rem;width:12rem}.small-footer mat-footer-row{min-height:1rem;height:1rem}.no-footer mat-footer-row{display:none}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i1.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i1.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i1.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: FunctionPipe, name: "func" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
225
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: GenericTableComponent, isStandalone: true, selector: "tb-generic-table", inputs: { trackBy: { classPropertyName: "trackBy", publicName: "trackBy", isSignal: false, isRequired: false, transformFunction: null }, displayData$: { classPropertyName: "displayData$", publicName: "displayData$", isSignal: false, isRequired: false, transformFunction: null }, $data: { classPropertyName: "$data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: false, isRequired: false, transformFunction: null }, columnBuilders: { classPropertyName: "columnBuilders", publicName: "columnBuilders", isSignal: false, isRequired: false, transformFunction: null }, columnInfos: { classPropertyName: "columnInfos", publicName: "columnInfos", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selection$: "selection$" }, viewQueries: [{ propertyName: "table", first: true, predicate: MatTable, descendants: true, static: true }, { propertyName: "dropList", first: true, predicate: CdkDropList, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-table\r\n cdkDropList\r\n cdkDropListLockAxis='x'\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n class=\"table-drag-list\"\r\n [class]=\"(showFooterRow$ | async)\"\r\n #table\r\n [dataSource]=\"state.props().dataSource!\"\r\n [trackBy]=\"trackByFunction\"\r\n [style]=\"tableWidth | async \"\r\n>\r\n\r\n <!-- select column -->\r\n <ng-container matColumnDef=\"select\">\r\n\r\n <mat-header-cell *matHeaderCellDef class=\"select-column\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"!!(masterToggleChecked$ | async)\"\r\n [indeterminate]=\"masterToggleIndeterminate$ | async\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n\r\n <mat-cell *matCellDef=\"let row\" class=\"select-column\">\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"/>\r\n </mat-cell>\r\n\r\n <mat-footer-cell *matFooterCellDef class=\"select-column\">\r\n {{ selection.selected.length }}\r\n </mat-footer-cell>\r\n </ng-container>\r\n\r\n\r\n <!-- index column -->\r\n <ng-container matColumnDef=\"index\">\r\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" class=\"index-column\">#\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let i = index;\" class=\"index-column\">\r\n {{ 1 + i + offsetIndex }}\r\n </mat-cell>\r\n <mat-footer-cell *matFooterCellDef class=\"index-column\"></mat-footer-cell>\r\n </ng-container>\r\n\r\n <!-- Grouping -->\r\n <ng-container matColumnDef=\"groupHeader\">\r\n <mat-cell *matCellDef=\"let row\">\r\n @let expanded = (state.getIsExpanded | func : row.key : row.groupName );\r\n <div [style.paddingLeft]=\"row.padding + 'px !important'\">\r\n <button mat-icon-button (click)=\"setExpanded(row.key, row.groupName, !expanded());\">\r\n @if (!expanded()) {\r\n <mat-icon>chevron_right</mat-icon>\r\n } @else {\r\n <mat-icon>expand_more</mat-icon>\r\n }\r\n </button>\r\n {{ getTransform | func : row.key : row.groupHeaderDisplay }} ({{ row.length }})\r\n </div>\r\n <div style=\"flex-grow: 1\">\r\n <ng-container *ngTemplateOutlet=\"state.props().groupHeaderTemplate!; context: { element: row }\"></ng-container>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n @if (showHeader$ | async) {\r\n <mat-header-row [style.height]=\"$headerHeight()\" [style.min-height]=\"$headerHeight()\"\r\n *matHeaderRowDef=\"keys; sticky: state.props().isSticky\" [style.top.px]=\"((offset$ | async)! * -1)\"/>\r\n }\r\n <mat-row [style.height]=\"$rowHeight()\" [style.min-height]=\"$rowHeight()\"\r\n *matRowDef=\"let row; columns: keys; let i = index\"/>\r\n <mat-row [style.height]=\"$rowHeight()\" [style.min-height]=\"$rowHeight()\"\r\n *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" style=\"background-color: white;\"/>\r\n <mat-footer-row [style.height]=\"$rowHeight()\" [style.min-height]=\"$rowHeight()\"\r\n *matFooterRowDef=\"(showFooterRow$ | async) === 'regular-footer' ? keys : []; sticky: $stickyFooter() \"\r\n [style.bottom.px]=\"$stickyFooter() ? (offset$ | async) : undefined\"/>\r\n\r\n</mat-table>\r\n", styles: [":host{--mat-paginator-container-size: initial}.select-column{min-width:var(--tb-min-select-column-width, 42px)}.index-column{min-width:var(--tb-min-index-column-width, 42px)}.mat-mdc-row:nth-child(odd){background-color:var(--tb-odd-row-background-color, #cdeefe)}.page-amounts{color:#0000008a;font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;margin-right:.2rem}:host::ng-deep .table-drag-list.cdk-drop-list-dragging .drag-header:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}:host::ng-deep .mdc-data-table__cell,:host::ng-deep .mdc-data-table__header-cell{padding:var(--tb-cell-padding, 0 0 0 .2rem);line-height:var(--tb-cell-line-height, normal)}::ng-deep .op-date-time-input{line-height:3rem;font-size:.9rem;font-family:Roboto,Helvetica Neue,sans-serif;padding-left:.2rem;width:12rem}.small-footer mat-footer-row{min-height:1rem;height:1rem}.no-footer mat-footer-row{display:none}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i1.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i1.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i1.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: FunctionPipe, name: "func" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
229
226
  }
230
227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: GenericTableComponent, decorators: [{
231
228
  type: Component,
232
229
  args: [{ selector: 'tb-generic-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
233
230
  MatTableModule, DragDropModule, MatCheckboxModule, MatButtonModule, MatIconModule, NgTemplateOutlet,
234
231
  MatTooltipModule, AsyncPipe, FunctionPipe,
235
- ], template: "<mat-table\n cdkDropList\n cdkDropListLockAxis='x'\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"table-drag-list\"\n [class]=\"(showFooterRow$ | async)\"\n #table\n [dataSource]=\"state.props().dataSource!\"\n [trackBy]=\"trackByFunction\"\n [style]=\"tableWidth | async \"\n>\n\n <!-- select column -->\n <ng-container matColumnDef=\"select\">\n\n <mat-header-cell *matHeaderCellDef class=\"select-column\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"!!(masterToggleChecked$ | async)\"\n [indeterminate]=\"masterToggleIndeterminate$ | async\">\n </mat-checkbox>\n </mat-header-cell>\n\n <mat-cell *matCellDef=\"let row\" class=\"select-column\">\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\"\n [checked]=\"selection.isSelected(row)\"/>\n </mat-cell>\n\n <mat-footer-cell *matFooterCellDef class=\"select-column\">\n {{ selection.selected.length }}\n </mat-footer-cell>\n </ng-container>\n\n\n <!-- index column -->\n <ng-container matColumnDef=\"index\">\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" class=\"index-column\">#\n </mat-header-cell>\n <mat-cell *matCellDef=\"let i = index;\" class=\"index-column\">\n {{ 1 + i + offsetIndex }}\n </mat-cell>\n <mat-footer-cell *matFooterCellDef class=\"index-column\"></mat-footer-cell>\n </ng-container>\n\n <!-- Grouping -->\n <ng-container matColumnDef=\"groupHeader\">\n <mat-cell *matCellDef=\"let row\">\n @let expanded = (state.getIsExpanded | func : row.key : row.groupName );\n <div [style.paddingLeft]=\"row.padding + 'px !important'\">\n <button mat-icon-button (click)=\"setExpanded(row.key, row.groupName, !expanded());\">\n @if (!expanded()) {\n <mat-icon>chevron_right</mat-icon>\n } @else {\n <mat-icon>expand_more</mat-icon>\n }\n </button>\n {{ getTransform | func : row.key : row.groupHeaderDisplay }} ({{ row.length }})\n </div>\n <div style=\"flex-grow: 1\">\n <ng-container *ngTemplateOutlet=\"state.props().groupHeaderTemplate!; context: { element: row }\"></ng-container>\n </div>\n </mat-cell>\n </ng-container>\n\n @if (showHeader$ | async) {\n <mat-header-row [style.height]=\"$headerHeight()\" [style.min-height]=\"$headerHeight()\"\n *matHeaderRowDef=\"keys; sticky: state.props().isSticky\" [style.top.px]=\"((offset$ | async)! * -1)\"/>\n }\n <mat-row [style.height]=\"$rowHeight()\" [style.min-height]=\"$rowHeight()\"\n *matRowDef=\"let row; columns: keys; let i = index\"/>\n <mat-row [style.height]=\"$rowHeight()\" [style.min-height]=\"$rowHeight()\"\n *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" style=\"background-color: white;\"/>\n <mat-footer-row [style.height]=\"$rowHeight()\" [style.min-height]=\"$rowHeight()\"\n *matFooterRowDef=\"(showFooterRow$ | async) === 'regular-footer' ? keys : []; sticky: $stickyFooter() \"\n [style.bottom.px]=\"$stickyFooter() ? (offset$ | async) : undefined\"/>\n\n</mat-table>\n", styles: [":host{--mat-paginator-container-size: initial}.select-column{min-width:var(--tb-min-select-column-width, 42px)}.index-column{min-width:var(--tb-min-index-column-width, 42px)}.mat-mdc-row:nth-child(odd){background-color:var(--tb-odd-row-background-color, #cdeefe)}.page-amounts{color:#0000008a;font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;margin-right:.2rem}:host::ng-deep .table-drag-list.cdk-drop-list-dragging .drag-header:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}:host::ng-deep .mdc-data-table__cell,:host::ng-deep .mdc-data-table__header-cell{padding:var(--tb-cell-padding, 0 0 0 .2rem);line-height:var(--tb-cell-line-height, normal)}::ng-deep .op-date-time-input{line-height:3rem;font-size:.9rem;font-family:Roboto,Helvetica Neue,sans-serif;padding-left:.2rem;width:12rem}.small-footer mat-footer-row{min-height:1rem;height:1rem}.no-footer mat-footer-row{display:none}\n"] }]
232
+ ], template: "<mat-table\r\n cdkDropList\r\n cdkDropListLockAxis='x'\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n class=\"table-drag-list\"\r\n [class]=\"(showFooterRow$ | async)\"\r\n #table\r\n [dataSource]=\"state.props().dataSource!\"\r\n [trackBy]=\"trackByFunction\"\r\n [style]=\"tableWidth | async \"\r\n>\r\n\r\n <!-- select column -->\r\n <ng-container matColumnDef=\"select\">\r\n\r\n <mat-header-cell *matHeaderCellDef class=\"select-column\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"!!(masterToggleChecked$ | async)\"\r\n [indeterminate]=\"masterToggleIndeterminate$ | async\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n\r\n <mat-cell *matCellDef=\"let row\" class=\"select-column\">\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"/>\r\n </mat-cell>\r\n\r\n <mat-footer-cell *matFooterCellDef class=\"select-column\">\r\n {{ selection.selected.length }}\r\n </mat-footer-cell>\r\n </ng-container>\r\n\r\n\r\n <!-- index column -->\r\n <ng-container matColumnDef=\"index\">\r\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" class=\"index-column\">#\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let i = index;\" class=\"index-column\">\r\n {{ 1 + i + offsetIndex }}\r\n </mat-cell>\r\n <mat-footer-cell *matFooterCellDef class=\"index-column\"></mat-footer-cell>\r\n </ng-container>\r\n\r\n <!-- Grouping -->\r\n <ng-container matColumnDef=\"groupHeader\">\r\n <mat-cell *matCellDef=\"let row\">\r\n @let expanded = (state.getIsExpanded | func : row.key : row.groupName );\r\n <div [style.paddingLeft]=\"row.padding + 'px !important'\">\r\n <button mat-icon-button (click)=\"setExpanded(row.key, row.groupName, !expanded());\">\r\n @if (!expanded()) {\r\n <mat-icon>chevron_right</mat-icon>\r\n } @else {\r\n <mat-icon>expand_more</mat-icon>\r\n }\r\n </button>\r\n {{ getTransform | func : row.key : row.groupHeaderDisplay }} ({{ row.length }})\r\n </div>\r\n <div style=\"flex-grow: 1\">\r\n <ng-container *ngTemplateOutlet=\"state.props().groupHeaderTemplate!; context: { element: row }\"></ng-container>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n @if (showHeader$ | async) {\r\n <mat-header-row [style.height]=\"$headerHeight()\" [style.min-height]=\"$headerHeight()\"\r\n *matHeaderRowDef=\"keys; sticky: state.props().isSticky\" [style.top.px]=\"((offset$ | async)! * -1)\"/>\r\n }\r\n <mat-row [style.height]=\"$rowHeight()\" [style.min-height]=\"$rowHeight()\"\r\n *matRowDef=\"let row; columns: keys; let i = index\"/>\r\n <mat-row [style.height]=\"$rowHeight()\" [style.min-height]=\"$rowHeight()\"\r\n *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" style=\"background-color: white;\"/>\r\n <mat-footer-row [style.height]=\"$rowHeight()\" [style.min-height]=\"$rowHeight()\"\r\n *matFooterRowDef=\"(showFooterRow$ | async) === 'regular-footer' ? keys : []; sticky: $stickyFooter() \"\r\n [style.bottom.px]=\"$stickyFooter() ? (offset$ | async) : undefined\"/>\r\n\r\n</mat-table>\r\n", styles: [":host{--mat-paginator-container-size: initial}.select-column{min-width:var(--tb-min-select-column-width, 42px)}.index-column{min-width:var(--tb-min-index-column-width, 42px)}.mat-mdc-row:nth-child(odd){background-color:var(--tb-odd-row-background-color, #cdeefe)}.page-amounts{color:#0000008a;font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;margin-right:.2rem}:host::ng-deep .table-drag-list.cdk-drop-list-dragging .drag-header:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}:host::ng-deep .mdc-data-table__cell,:host::ng-deep .mdc-data-table__header-cell{padding:var(--tb-cell-padding, 0 0 0 .2rem);line-height:var(--tb-cell-line-height, normal)}::ng-deep .op-date-time-input{line-height:3rem;font-size:.9rem;font-family:Roboto,Helvetica Neue,sans-serif;padding-left:.2rem;width:12rem}.small-footer mat-footer-row{min-height:1rem;height:1rem}.no-footer mat-footer-row{display:none}\n"] }]
236
233
  }], ctorParameters: () => [], propDecorators: { trackBy: [{
237
234
  type: Input
238
235
  }], displayData$: [{
@@ -252,4 +249,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
252
249
  }], selection$: [{
253
250
  type: Output
254
251
  }] } });
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dlbmVyaWMtdGFibGUvZ2VuZXJpYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dlbmVyaWMtdGFibGUvZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFvQyxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xNLE9BQU8sRUFBYSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUUsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQW1CLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWxFLE9BQU8sRUFBZSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUVoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7QUFhMUQsTUFBTSxPQUFPLHFCQUFxQjtJQUN0QixLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdCLGFBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN6QyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUdwRCxJQUFJLENBQUMsS0FBNEI7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLFFBQVEsRUFBQyxLQUFLLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQTtJQUMvRixDQUFDO0lBQ0QsUUFBUSxDQUFVO0lBQ2xCLElBQWEsT0FBTyxDQUFDLE9BQWU7UUFDbEMsSUFBRyxPQUFPLEVBQUMsQ0FBQztZQUNWLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxLQUFZLEVBQUUsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksT0FBTyxLQUF5QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUEsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBcUI7SUFDMUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUNoRCxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixJQUFJLENBQTZCO0lBQ2pDLGNBQWMsQ0FBNEI7SUFDMUMsV0FBVyxDQUE0QjtJQUVULEtBQUssQ0FBaUI7SUFDbkIsUUFBUSxDQUFlO0lBRWpFLGNBQWMsQ0FBWTtJQUMxQixJQUFJLEdBQWMsRUFBRSxDQUFDO0lBQ3JCLFNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0IsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDekIsU0FBUyxFQUFFO1lBQ1QsRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2pELEVBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsR0FBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtTQUN4RDtRQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUztLQUN2QixDQUFDLENBQUM7SUFDSCxTQUFTLEdBQXFCLEVBQUUsQ0FBQztJQUNqQyxPQUFPLEdBQWEsRUFBRSxDQUFDO0lBQ3ZCLFNBQVMsR0FBdUMsRUFBRSxDQUFDO0lBQ25ELFdBQVcsQ0FBdUI7SUFDbEMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFFLENBQUM7SUFDMUQsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUNoQixRQUFRLENBQXFCO0lBRTdCO1FBQ0UsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxjQUFjLEdBQUcsQ0FBQyxLQUFZLEVBQUUsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDcEUsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDdEMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUN4QyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzdDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2pELElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzNDLElBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFDLENBQUM7Z0JBQ2pDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMvSCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqRyxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztZQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUM7WUFDckgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUM7U0FDbEksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxDQUFDLEVBQUUsRUFBRTtZQUN2RCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsZUFBZSxDQUFDO1lBQzlELE9BQU8sZUFBZSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsWUFBWSxJQUFJLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDMUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVKLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFGLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7Z0JBQzNDLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMzRCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUdELGFBQWEsQ0FBQyxDQUFTLEVBQUUsR0FBK0I7UUFDdEQsT0FBTyxHQUFHLENBQUMsYUFBYSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBVyxFQUFFLFFBQWdCLEVBQUUsVUFBbUI7UUFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEdBQUcsRUFBRyxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWtCO1FBQzVCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxRCxJQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ2pCLGFBQWEsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUMzQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLHNCQUFzQixFQUFFO2dCQUMzRSxLQUFLLEVBQUUsQ0FBQztnQkFDUixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7YUFDeEIsQ0FBQyxDQUFDO1lBQ0gsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUNsRCxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQzlDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDM0QsQ0FBQztJQUNILENBQUM7SUFFRCxpQkFBaUIsR0FBRyxDQUFDLElBQXFCLEVBQUMsRUFBRTtRQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUEsRUFBRSxDQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNmLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUE7SUFFRCxTQUFTLENBQXdCO0lBQ3ZCLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztJQUNoRSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRSxFQUFFLENBQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLDBCQUEwQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRyxlQUFlLENBQUMsT0FBZ0I7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFNLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBTSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxlQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUM5QixJQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDMUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLFVBQVcsQ0FBQyxJQUFJLENBQUM7UUFDN0MsQ0FBQzthQUFNLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxtQkFBbUIsRUFBQyxDQUFDO1lBQ3hELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUFDekYsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEcsQ0FBQzthQUFLLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxLQUFLLEVBQUMsQ0FBQztZQUN6QyxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDLENBQUMsQ0FBQztJQUNILGVBQWUsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JELGFBQWE7UUFDWCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDcEQsT0FBTyxXQUFXLEtBQUssT0FBTyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxnRkFBZ0Y7SUFDaEYsWUFBWTtRQUNWLElBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUN4QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQ25ELGtCQUFrQixDQUFxQixDQUFDLENBQUMsRUFDekMsR0FBRyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSx1QkFBdUIsQ0FBQyxFQUFFLEVBQUU7UUFDMUQsSUFBSSx1QkFBdUIsRUFBQyxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxFQUFDLEtBQUssRUFBQyxHQUFHLHVCQUF1QixJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDakIsT0FBTyxDQUFDLEVBQUMsS0FBSyxFQUFDLFNBQVMsRUFBQyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVaLFNBQVMsUUFBUTtZQUNmLE9BQU8sQ0FBQyx3QkFBd0IsSUFBSSxDQUFDLENBQUMsSUFBRyxDQUFDLElBQUksdUJBQXVCLElBQUksSUFBSSxDQUFDO1FBQ2hGLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBRUYsY0FBYyxDQUErRDtJQUM3RSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsR0FBVyxFQUFFLEVBQUU7UUFDMUMsSUFBRyxHQUFHLElBQUksU0FBUyxJQUFJLEdBQUcsS0FBSyxNQUFNO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7UUFDcEcsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDckMsSUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFLLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxnQkFBeUMsRUFBRSxnQkFBZ0IsRUFBQyxDQUFDO1lBQ3RILE9BQVEsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLGdCQUEwQyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUU7UUFDbkcsQ0FBQztRQUNELElBQUcsT0FBTyxDQUFDLENBQUMseUJBQXlCLENBQUMsU0FBUyxLQUFLLFFBQVEsRUFBQyxDQUFDO1lBQzVELE9BQU8sQ0FBQyxDQUFDLHlCQUF5QixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEQsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQztJQUUvQyxDQUFDLENBQUMsQ0FBQztJQUVMLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUMxQyxJQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUssQ0FBQyxDQUFDLHlCQUF5QixDQUFDLGdCQUF5QyxFQUFFLG1CQUFtQixFQUFDLENBQUM7WUFDekgsT0FBUSxDQUFDLENBQUMseUJBQXlCLENBQUMsZ0JBQTBDLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUNyRyxDQUFDO1FBQ0QsSUFBRyxPQUFPLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLEtBQUssUUFBUSxFQUFDLENBQUM7WUFDL0QsT0FBTyxDQUFDLENBQUMseUJBQXlCLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6RCxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDO0lBQ2xELENBQUMsQ0FBQyxDQUFDO0lBRUgsYUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7dUdBak9oRixxQkFBcUI7MkZBQXJCLHFCQUFxQiw4N0JBeUJyQixRQUFRLHlGQUNSLFdBQVcsbUZDNUR4QixrdkdBK0VBLHM5QkRqREksY0FBYyx5N0NBQUUsY0FBYywwaUJBQUUsaUJBQWlCLG9ZQUFFLGVBQWUsMklBQUUsYUFBYSxvTEFBRSxnQkFBZ0IsbUpBQ25HLGdCQUFnQiwwQkFBRSxTQUFTLHlDQUFFLFlBQVk7OzJGQUdoQyxxQkFBcUI7a0JBWGpDLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLGNBQWMsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0I7d0JBQ25HLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxZQUFZO3FCQUMxQzt3REFZWSxPQUFPO3NCQUFuQixLQUFLO2dCQVFHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFaUMsS0FBSztzQkFBM0MsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNLLFFBQVE7c0JBQWpELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFzSDlCLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIE9uSW5pdCwgUXVlcnlMaXN0LCBWaWV3Q29udGFpbmVyUmVmLCBJbmplY3RvciwgRXZlbnRFbWl0dGVyLCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Um93RGVmLCBNYXRUYWJsZSwgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25DaGFuZ2UsIFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLXN0b3JlJztcbmltcG9ydCB7IG1hcCwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb2x1bW5CdWlsZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sdW1uLWJ1aWxkZXIvY29sdW1uLWJ1aWxkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2RpY3Rpb25hcnknO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcbmltcG9ydCB7IHByZXZpb3VzQW5kQ3VycmVudCB9IGZyb20gJy4uLy4uLy4uL3J4anMvcnhqcy1vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29sdW1uSW5mbyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvQ29sdW1uSW5mbyc7XG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgQ2RrRHJvcExpc3QsIERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBGdW5jdGlvblBpcGUgfSBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IFRyYW5zZm9ybUNyZWF0b3IgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2Zvcm0tY3JlYXRvcic7XG5pbXBvcnQgeyBpbml0SW5kZXhTeW1ib2wgfSBmcm9tICcuLi90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLmhlbHBlcnMvc29ydC1zdGF0ZS5oZWxwZXJzJztcbmltcG9ydCB7IFZpcnR1YWxTY3JvbGxPcHRpb25zIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1idWlsZGVyLWdlbmVyYWwtc2V0dGluZ3MnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0Yi1nZW5lcmljLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9nZW5lcmljLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0VGFibGVNb2R1bGUsIERyYWdEcm9wTW9kdWxlLCBNYXRDaGVja2JveE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsIEFzeW5jUGlwZSwgRnVuY3Rpb25QaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmljVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcm90ZWN0ZWQgc3RhdGUgPSBpbmplY3QoVGFibGVTdG9yZSk7XG4gIHByaXZhdGUgdmlld0NvbnRhaW5lciA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgcHJpdmF0ZSB0cmFuc2Zvcm1DcmVhdG9yID0gaW5qZWN0KFRyYW5zZm9ybUNyZWF0b3IpO1xuXG5cbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XG4gICAgdGhpcy5zdGF0ZS5zZXRVc2VyRGVmaW5lZE9yZGVyKHsgbmV3T3JkZXI6ZXZlbnQuY3VycmVudEluZGV4LCBvbGRPcmRlcjpldmVudC5wcmV2aW91c0luZGV4IH0pXG4gIH1cbiAgX3RyYWNrQnk/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNldCB0cmFja0J5KHRyYWNrQnk6IHN0cmluZyl7XG4gICAgaWYodHJhY2tCeSl7XG4gICAgICB0aGlzLl90cmFja0J5ID0gdHJhY2tCeTtcbiAgICAgIHRoaXMudHJhY2tCeUZ1bmN0aW9uID0gKGluZGV4Om51bWJlciwgaXRlbTogYW55KSA9PiBpdGVtW3RyYWNrQnldO1xuICAgIH1cbiAgICB0aGlzLnNldFVwU2VsZWN0aW9ucyh0cmFja0J5KTtcbiAgfVxuICBnZXQgdHJhY2tCeSgpOiBzdHJpbmcgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fdHJhY2tCeSB9XG4gIEBJbnB1dCgpIGRpc3BsYXlEYXRhJCE6IE9ic2VydmFibGU8YW55W10+O1xuICAkZGF0YSA9IGlucHV0LnJlcXVpcmVkPGFueVtdPih7IGFsaWFzOiAnZGF0YScgfSlcbiAgZGF0YSQgPSB0b09ic2VydmFibGUodGhpcy4kZGF0YSk7XG4gIEBJbnB1dCgpIHJvd3MhOiBRdWVyeUxpc3Q8TWF0Um93RGVmPGFueT4+O1xuICBASW5wdXQoKSBjb2x1bW5CdWlsZGVycyE6IENvbHVtbkJ1aWxkZXJDb21wb25lbnRbXTtcbiAgQElucHV0KCkgY29sdW1uSW5mb3MhOiBPYnNlcnZhYmxlPENvbHVtbkluZm9bXT47XG5cbiAgQFZpZXdDaGlsZChNYXRUYWJsZSwgeyBzdGF0aWM6IHRydWUgfSkgdGFibGUhOiBNYXRUYWJsZTxhbnk+O1xuICBAVmlld0NoaWxkKENka0Ryb3BMaXN0LCB7IHN0YXRpYzogdHJ1ZSB9KSBkcm9wTGlzdCE6IENka0Ryb3BMaXN0O1xuXG4gIGN1cnJlbnRDb2x1bW5zITogc3RyaW5nW107XG4gIGtleXM6IHN0cmluZyBbXSA9IFtdO1xuICBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICB7cHJvdmlkZTogTWF0VGFibGUsIHVzZUZhY3Rvcnk6ICgpPT4gdGhpcy50YWJsZSB9LFxuICAgICAge3Byb3ZpZGU6IENka0Ryb3BMaXN0LCB1c2VGYWN0b3J5OiAoKT0+IHRoaXMuZHJvcExpc3QgfSxcbiAgICBdLFxuICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3JcbiAgfSk7XG4gIHJvd0RlZkFyciA6TWF0Um93RGVmPGFueT5bXSA9IFtdO1xuICBjb2x1bW5zOnN0cmluZyBbXSA9IFtdO1xuICBteUNvbHVtbnM6IERpY3Rpb25hcnk8Q29sdW1uQnVpbGRlckNvbXBvbmVudD4gPSB7fTtcbiAgc2hvd0hlYWRlciQhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBvZmZzZXQkID0gdGhpcy5zdGF0ZS5zZWxlY3QoIHMgPT4gcy52aXJ0dWFsU2Nyb2xsT2Zmc2V0ICk7XG4gIG9mZnNldEluZGV4ID0gMDtcbiAgZGF0YVZpZXchOiBPYnNlcnZhYmxlPGFueVtdPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNldFVwU2VsZWN0aW9ucygpO1xuICB9XG5cbiAgZGVmYXVsdFRyYWNrQnkgPSAoaW5kZXg6bnVtYmVyLCBpdGVtOiBhbnkpID0+IGl0ZW1baW5pdEluZGV4U3ltYm9sXTtcbiAgdHJhY2tCeUZ1bmN0aW9uID0gdGhpcy5kZWZhdWx0VHJhY2tCeTtcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLnJvd3MgJiYgdGhpcy5yb3dzICYmIHRoaXMubXlDb2x1bW5zLmxlbmd0aCkge1xuICAgICAgdGhpcy5pbml0aWFsaXplUm93RGVmcyhbLi4udGhpcy5yb3dzXSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUucHJvcHMoKS5zZWxlY3Rpb25Db2x1bW4pIHtcbiAgICAgIHRoaXMuY29sdW1ucy5wdXNoKCdzZWxlY3QnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdGF0ZS5wcm9wcygpLmluZGV4Q29sdW1uKSB7XG4gICAgIHRoaXMuY29sdW1ucy5wdXNoKCdpbmRleCcpO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUub24odGhpcy5jb2x1bW5JbmZvcywgY29sdW1ucyA9PiB7XG4gICAgICBjb2x1bW5zLmZvckVhY2goY2kgPT4gdGhpcy5hZGRNZXRhRGF0YShjaSkpXG4gICAgfSk7XG5cbiAgICB0aGlzLmluaXRpYWxpemVSb3dEZWZzKFsuLi50aGlzLnJvd3NdKTtcblxuICAgIHRoaXMuc3RhdGUub24odGhpcy5zdGF0ZS5kaXNwbGF5ZWRDb2x1bW5zJCwga2V5cyA9PiB7XG4gICAgICB0aGlzLmtleXMgPSBbLi4udGhpcy5jb2x1bW5zLCAuLi5rZXlzXTtcbiAgICAgIHRoaXMucm93RGVmQXJyPy5mb3JFYWNoKHJvdyA9PiByb3cuY29sdW1ucyA9IHRoaXMua2V5cylcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGUub24odGhpcy5zZWxlY3RhYmxlRGF0YSQsIChkYXRhKSA9PiB7XG4gICAgICBpZih0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGgpe1xuICAgICAgICBjb25zdCB0cmFja0J5RnVuY3Rpb24gPSB0aGlzLnRyYWNrQnkgPyAocykgPT4gZGF0YS5ldmVyeShkID0+ICBkW3RoaXMudHJhY2tCeSFdICE9PSBzW3RoaXMudHJhY2tCeSFdKSA6IHMgPT4gIWRhdGEuaW5jbHVkZXMocyk7XG4gICAgICAgIGNvbnN0IHJlbW92ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5maWx0ZXIodHJhY2tCeUZ1bmN0aW9uKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uZGVzZWxlY3QoLi4ucmVtb3ZlZCk7XG4gICAgICB9XG4gICAgfSlcblxuICAgIHRoaXMuc2hvd0hlYWRlciQgPSB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MkLnBpcGUobWFwKHNldHRpbmdzID0+ICEoc2V0dGluZ3MuaGlkZUNvbHVtbkhlYWRlcikpKTtcblxuICAgIHRoaXMuc2hvd0Zvb3RlclJvdyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZGlzcGxheURhdGEkLnBpcGUobWFwKGQgPT4gISFkLmxlbmd0aCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgICAgdGhpcy5zdGF0ZS5tZXRhRGF0YUFycmF5JC5waXBlKG1hcChtZXRhRGF0YSA9PiBtZXRhRGF0YS5zb21lKG1kID0+ICEhbWQuYWRkaXRpb25hbD8uZm9vdGVyKSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgICAgdGhpcy5jb2x1bW5JbmZvcy5waXBlKG1hcChjb2x1bW5JbmZvcyA9PiBjb2x1bW5JbmZvcy5zb21lKGNpID0+ICEhY2kuY3VzdG9tQ2VsbD8uY29sdW1uRGVmPy5mb290ZXJDZWxsKSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgIF0pLnBpcGUobWFwKChbaGFzRGF0YSwgaGFzRm9vdGVyRGVmLCBoYXNDdXN0b21Gb290ZXJdKSA9PiB7XG4gICAgICBjb25zdCBoYXNTZWxlY3Rpb25Db2x1bW4gPSB0aGlzLnN0YXRlLnByb3BzKCkuc2VsZWN0aW9uQ29sdW1uO1xuICAgICAgcmV0dXJuIGhhc0N1c3RvbUZvb3RlciB8fCAoaGFzRGF0YSAmJiAoaGFzRm9vdGVyRGVmIHx8IGhhc1NlbGVjdGlvbkNvbHVtbikpID8gJ3JlZ3VsYXItZm9vdGVyJyA6IGhhc0RhdGEgPyAnbm8tZm9vdGVyJyA6ICdzbWFsbC1mb290ZXInO1xuICAgIH0pKTtcblxuICAgIGlmKHRoaXMuc3RhdGUudGFibGVTZXR0aW5ncygpLnVzZVBhZ2luYXRvciB8fCB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MoKS51c2VWaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICB0aGlzLnN0YXRlLm9uKHRoaXMuc3RhdGUuc3RhdGUkLCAoc3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5vZmZzZXRJbmRleCA9IHN0YXRlLnZpcnR1YWxFbmRzLnN0YXJ0O1xuICAgICAgICBpZih0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MoKS51c2VQYWdpbmF0b3IpIHtcbiAgICAgICAgICB0aGlzLm9mZnNldEluZGV4ICs9IChzdGF0ZS5wYWdlU2l6ZSAqIHN0YXRlLmN1cnJlbnRQYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cblxuICBpc0dyb3VwSGVhZGVyKF86IG51bWJlciwgcm93OiB7IGlzR3JvdXBIZWFkZXI6IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiByb3cuaXNHcm91cEhlYWRlcjtcbiAgfVxuXG4gIHNldEV4cGFuZGVkKGtleTogc3RyaW5nLCBncm91cEtleTogc3RyaW5nLCBpc0V4cGFuZGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS51cGRhdGVFeHBhbmRlZEdyb3Vwcyh7IGtleSAsIGlzRXhwYW5kZWQsIGdyb3VwS2V5IH0pO1xuICB9XG5cbiAgYWRkTWV0YURhdGEoY29sdW1uOiBDb2x1bW5JbmZvKSB7XG4gICAgY29uc3QgY29sdW1uQnVpbGRlciA9IHRoaXMubXlDb2x1bW5zW2NvbHVtbi5tZXRhRGF0YS5rZXldO1xuICAgIGlmKGNvbHVtbkJ1aWxkZXIpIHtcbiAgICAgIGNvbHVtbkJ1aWxkZXIubWV0YURhdGEgPSBjb2x1bW4ubWV0YURhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoQ29sdW1uQnVpbGRlckNvbXBvbmVudCwge1xuICAgICAgICBpbmRleDogMCxcbiAgICAgICAgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3JcbiAgICAgIH0pO1xuICAgICAgY29tcG9uZW50Lmluc3RhbmNlLmN1c3RvbUNlbGwgPSBjb2x1bW4uY3VzdG9tQ2VsbDtcbiAgICAgIGNvbXBvbmVudC5pbnN0YW5jZS5tZXRhRGF0YSA9IGNvbHVtbi5tZXRhRGF0YTtcbiAgICAgIGNvbXBvbmVudC5pbnN0YW5jZS5kYXRhJCA9IHRoaXMuZGF0YSQ7XG4gICAgICB0aGlzLm15Q29sdW1uc1tjb2x1bW4ubWV0YURhdGEua2V5XSA9IGNvbXBvbmVudC5pbnN0YW5jZTtcbiAgICB9XG4gIH1cblxuICBpbml0aWFsaXplUm93RGVmcyA9IChkZWZzOk1hdFJvd0RlZjxhbnk+W10pPT57XG4gICAgdGhpcy5yb3dEZWZBcnIuZm9yRWFjaChyPT50aGlzLnRhYmxlLnJlbW92ZVJvd0RlZihyKSk7XG4gICAgdGhpcy5yb3dEZWZBcnIgPSBkZWZzO1xuICAgIGRlZnMuZm9yRWFjaChyID0+IHtcbiAgICAgIHIuY29sdW1ucyA9IHRoaXMuY29sdW1ucy5jb25jYXQoT2JqZWN0LnZhbHVlcyh0aGlzLm15Q29sdW1ucykuZmlsdGVyKGMgPT4gYy5tZXRhRGF0YS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pLm1hcChjID0+IGMubWV0YURhdGEua2V5KSk7XG4gICAgICBpZiAodGhpcy50YWJsZSkge1xuICAgICAgICB0aGlzLnRhYmxlLmFkZFJvd0RlZihyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNlbGVjdGlvbiEgOiBTZWxlY3Rpb25Nb2RlbDxhbnk+O1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uJCA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0aW9uQ2hhbmdlPGFueT4+KCk7XG4gIG1hc3RlclRvZ2dsZUNoZWNrZWQkID0gdGhpcy5zZWxlY3Rpb24kLnBpcGUobWFwKCgpPT50aGlzLnNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIHRoaXMuaXNBbGxTZWxlY3RlZCgpKSk7XG4gIG1hc3RlclRvZ2dsZUluZGV0ZXJtaW5hdGUkID0gdGhpcy5zZWxlY3Rpb24kLnBpcGUobWFwKCgpPT50aGlzLnNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICF0aGlzLmlzQWxsU2VsZWN0ZWQoKSkpO1xuICBzZXRVcFNlbGVjdGlvbnModHJhY2tCeT86IHN0cmluZyl7XG4gICAgdGhpcy5zZWxlY3Rpb24gPSB0cmFja0J5ID8gbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odHJ1ZSwgW10sIHRydWUsIChhLCBiKSA9PiBhW3RyYWNrQnldID09PSBiW3RyYWNrQnldKSA6IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRydWUsIFtdKTtcbiAgICB0aGlzLnN0YXRlLm9uKHRoaXMuc2VsZWN0aW9uLmNoYW5nZWQsIGMgPT4gdGhpcy5zZWxlY3Rpb24kLmVtaXQoYykpO1xuICB9XG4gICRzZWxlY3RhYmxlRGF0YSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZih0aGlzLnN0YXRlLiR2aWV3VHlwZSgpID09PSAncGFnaW5hdG9yJykge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhdGUucHJvcHMoKS5kYXRhU291cmNlIS5kYXRhO1xuICAgIH0gZWxzZSBpZih0aGlzLnN0YXRlLiR2aWV3VHlwZSgpID09PSAndmlydHVhbCBwYWdpbmF0b3InKXtcbiAgICAgIGNvbnN0IHByZXZpb3VzUGFnZVJlY29yZHMgPSB0aGlzLnN0YXRlLnN0YXRlKCkuY3VycmVudFBhZ2UgKiB0aGlzLnN0YXRlLnN0YXRlKCkucGFnZVNpemU7XG4gICAgICByZXR1cm4gdGhpcy4kZGF0YSgpLnNsaWNlKHByZXZpb3VzUGFnZVJlY29yZHMsIHByZXZpb3VzUGFnZVJlY29yZHMgKyB0aGlzLnN0YXRlLnN0YXRlKCkucGFnZVNpemUpO1xuICAgIH1lbHNlIGlmKHRoaXMuc3RhdGUuJHZpZXdUeXBlKCkgPT09ICdhbGwnKXtcbiAgICAgIHJldHVybiB0aGlzLiRkYXRhKCk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfSk7XG4gIHNlbGVjdGFibGVEYXRhJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLiRzZWxlY3RhYmxlRGF0YSk7XG4gIGlzQWxsU2VsZWN0ZWQoKSB7XG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMuJHNlbGVjdGFibGVEYXRhKCk/Lmxlbmd0aCB8fCAwO1xuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcbiAgfVxuXG4gIC8qKiBTZWxlY3RzIGFsbCByb3dzIGlmIHRoZXkgYXJlIG5vdCBhbGwgc2VsZWN0ZWQ7IG90aGVyd2lzZSBjbGVhciBzZWxlY3Rpb24uICovXG4gIG1hc3RlclRvZ2dsZSgpIHtcbiAgICBpZih0aGlzLmlzQWxsU2VsZWN0ZWQoKSl7XG4gICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdCguLi50aGlzLiRzZWxlY3RhYmxlRGF0YSgpKTtcbiAgICB9XG4gIH1cblxuICB0YWJsZVdpZHRoID0gdGhpcy5zdGF0ZS5nZXRVc2VyRGVmaW5lZFRhYmxlU2l6ZSQucGlwZShcbiAgICBwcmV2aW91c0FuZEN1cnJlbnQ8bnVtYmVyIHwgdW5kZWZpbmVkPigwKSxcbiAgICBtYXAoKFtwcmV2aW91c1VzZXJEZWZpbmVkV2lkdGgsIGN1cnJlbnRVc2VyRGVmaW5lZFdpZHRoXSkgPT4ge1xuICAgICAgaWYoIGN1cnJlbnRVc2VyRGVmaW5lZFdpZHRoKXtcbiAgICAgICAgcmV0dXJuICh7d2lkdGg6YCR7Y3VycmVudFVzZXJEZWZpbmVkV2lkdGh9cHhgfSk7XG4gICAgICB9IGlmKCB3YXNSZXNldCgpICl7XG4gICAgICAgIHJldHVybiAoe3dpZHRoOidpbml0aWFsJ30pO1xuICAgICAgfVxuICAgICAgcmV0dXJuICh7fSk7XG5cbiAgICAgIGZ1bmN0aW9uIHdhc1Jlc2V0KCl7XG4gICAgICAgIHJldHVybiAocHJldmlvdXNVc2VyRGVmaW5lZFdpZHRoID8/IDApID49MCAmJiBjdXJyZW50VXNlckRlZmluZWRXaWR0aCA9PSBudWxsO1xuICAgICAgfVxuICAgIH0pXG4gICk7XG5cbiAgc2hvd0Zvb3RlclJvdyQhOiBPYnNlcnZhYmxlPCdyZWd1bGFyLWZvb3RlcicgfCAnbm8tZm9vdGVyJyB8ICdzbWFsbC1mb290ZXInPjtcbiAgZ2V0VHJhbnNmb3JtID0gKGtleTogc3RyaW5nLCB2YWw6IHN0cmluZykgPT4ge1xuICAgIGlmKHZhbCA9PSB1bmRlZmluZWQgfHwgdmFsID09PSAnbnVsbCcpIHJldHVybiAnJztcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtQ3JlYXRvci5jcmVhdGVUcmFuc2Zvcm1lcih0aGlzLm15Q29sdW1uc1trZXldLm1ldGFEYXRhLCB0cnVlKSh7IFtrZXldOiB2YWx9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gIH1cblxuICAkcm93SGVpZ2h0ID0gdGhpcy5zdGF0ZS5zZWxlY3RTaWduYWwocyA9PiB7XG4gICAgICBpZih0aGlzLnN0YXRlLiRpc1ZpcnR1YWwoKSAmJiAocy5ub3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzLnVzZVZpcnR1YWxTY3JvbGwgYXMgVmlydHVhbFNjcm9sbE9wdGlvbnMpPy5lbmZvcmNlUm93SGVpZ2h0KXtcbiAgICAgICAgcmV0dXJuIChzLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MudXNlVmlydHVhbFNjcm9sbCBhcyBWaXJ0dWFsU2Nyb2xsT3B0aW9ucykhLnJvd0hlaWdodCArICdweCcgO1xuICAgICAgfVxuICAgICAgaWYodHlwZW9mIHMubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy5yb3dIZWlnaHQgPT09ICdudW1iZXInKXtcbiAgICAgICAgcmV0dXJuIHMubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy5yb3dIZWlnaHQgKyAncHgnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHMubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy5yb3dIZWlnaHQ7XG4gICAgICBcbiAgICB9KTtcblxuICAkaGVhZGVySGVpZ2h0ID0gdGhpcy5zdGF0ZS5zZWxlY3RTaWduYWwocyA9PiB7XG4gICAgaWYodGhpcy5zdGF0ZS4kaXNWaXJ0dWFsKCkgJiYgKHMubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy51c2VWaXJ0dWFsU2Nyb2xsIGFzIFZpcnR1YWxTY3JvbGxPcHRpb25zKT8uZW5mb3JjZUhlYWRlckhlaWdodCl7XG4gICAgICByZXR1cm4gKHMubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy51c2VWaXJ0dWFsU2Nyb2xsIGFzIFZpcnR1YWxTY3JvbGxPcHRpb25zKSEuaGVhZGVySGVpZ2h0ICsgJ3B4JztcbiAgICB9XG4gICAgaWYodHlwZW9mIHMubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy5oZWFkZXJIZWlnaHQgPT09ICdudW1iZXInKXtcbiAgICAgIHJldHVybiBzLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MuaGVhZGVySGVpZ2h0ICsgJ3B4JztcbiAgICB9XG4gICAgcmV0dXJuIHMubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy5oZWFkZXJIZWlnaHQ7XG4gIH0pO1xuXG4gICRzdGlja3lGb290ZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlLnByb3BzKCkuc3RpY2t5Rm9vdGVyIHx8IHRoaXMuc3RhdGUuJGlzVmlydHVhbCgpKTtcbn1cbiIsIjxtYXQtdGFibGVcbiAgY2RrRHJvcExpc3RcbiAgY2RrRHJvcExpc3RMb2NrQXhpcz0neCdcbiAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gIGNsYXNzPVwidGFibGUtZHJhZy1saXN0XCJcbiAgW2NsYXNzXT1cIihzaG93Rm9vdGVyUm93JCB8IGFzeW5jKVwiXG4gICN0YWJsZVxuICBbZGF0YVNvdXJjZV09XCJzdGF0ZS5wcm9wcygpLmRhdGFTb3VyY2UhXCJcbiAgW3RyYWNrQnldPVwidHJhY2tCeUZ1bmN0aW9uXCJcbiAgW3N0eWxlXT1cInRhYmxlV2lkdGggfCBhc3luYyBcIlxuPlxuXG4gIDwhLS0gc2VsZWN0IGNvbHVtbiAtLT5cbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3RcIj5cblxuICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgIGNsYXNzPVwic2VsZWN0LWNvbHVtblwiPlxuICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIiEhKG1hc3RlclRvZ2dsZUNoZWNrZWQkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwibWFzdGVyVG9nZ2xlSW5kZXRlcm1pbmF0ZSQgfCBhc3luY1wiPlxuICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgPC9tYXQtaGVhZGVyLWNlbGw+XG5cbiAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgY2xhc3M9XCJzZWxlY3QtY29sdW1uXCI+XG4gICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbi50b2dnbGUocm93KSA6IG51bGxcIlxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpXCIvPlxuICAgIDwvbWF0LWNlbGw+XG5cbiAgICA8bWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmIGNsYXNzPVwic2VsZWN0LWNvbHVtblwiPlxuICAgICAge3sgc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCB9fVxuICAgIDwvbWF0LWZvb3Rlci1jZWxsPlxuICA8L25nLWNvbnRhaW5lcj5cblxuXG4gIDwhLS0gaW5kZXggY29sdW1uIC0tPlxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImluZGV4XCI+XG4gICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImYtbWF0LWhlYWRlci1jZWxsXCIgY2xhc3M9XCJpbmRleC1jb2x1bW5cIj4jXG4gICAgPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGkgPSBpbmRleDtcIiBjbGFzcz1cImluZGV4LWNvbHVtblwiPlxuICAgICAge3sgMSArIGkgKyBvZmZzZXRJbmRleCB9fVxuICAgIDwvbWF0LWNlbGw+XG4gICAgPG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZiBjbGFzcz1cImluZGV4LWNvbHVtblwiPjwvbWF0LWZvb3Rlci1jZWxsPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIEdyb3VwaW5nIC0tPlxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImdyb3VwSGVhZGVyXCI+XG4gICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgQGxldCBleHBhbmRlZCA9IChzdGF0ZS5nZXRJc0V4cGFuZGVkIHwgZnVuYyA6IHJvdy5rZXkgOiByb3cuZ3JvdXBOYW1lICk7XG4gICAgICA8ZGl2IFtzdHlsZS5wYWRkaW5nTGVmdF09XCJyb3cucGFkZGluZyArICdweCAhaW1wb3J0YW50J1wiPlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2V0RXhwYW5kZWQocm93LmtleSwgcm93Lmdyb3VwTmFtZSwgIWV4cGFuZGVkKCkpO1wiPlxuICAgICAgICAgIEBpZiAoIWV4cGFuZGVkKCkpIHtcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxtYXQtaWNvbj5leHBhbmRfbW9yZTwvbWF0LWljb24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAge3sgZ2V0VHJhbnNmb3JtIHwgZnVuYyA6IHJvdy5rZXkgOiAgcm93Lmdyb3VwSGVhZGVyRGlzcGxheSB9fSAoe3sgcm93Lmxlbmd0aCB9fSlcbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RhdGUucHJvcHMoKS5ncm91cEhlYWRlclRlbXBsYXRlITsgY29udGV4dDogeyBlbGVtZW50OiByb3cgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtY2VsbD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgQGlmIChzaG93SGVhZGVyJCB8IGFzeW5jKSB7XG4gICAgPG1hdC1oZWFkZXItcm93IFtzdHlsZS5oZWlnaHRdPVwiJGhlYWRlckhlaWdodCgpXCIgW3N0eWxlLm1pbi1oZWlnaHRdPVwiJGhlYWRlckhlaWdodCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKm1hdEhlYWRlclJvd0RlZj1cImtleXM7IHN0aWNreTogc3RhdGUucHJvcHMoKS5pc1N0aWNreVwiIFtzdHlsZS50b3AucHhdPVwiKChvZmZzZXQkIHwgYXN5bmMpISAqIC0xKVwiLz5cbiAgfVxuICA8bWF0LXJvdyBbc3R5bGUuaGVpZ2h0XT1cIiRyb3dIZWlnaHQoKVwiIFtzdHlsZS5taW4taGVpZ2h0XT1cIiRyb3dIZWlnaHQoKVwiXG4gICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBrZXlzOyBsZXQgaSA9IGluZGV4XCIvPlxuICA8bWF0LXJvdyBbc3R5bGUuaGVpZ2h0XT1cIiRyb3dIZWlnaHQoKVwiIFtzdHlsZS5taW4taGVpZ2h0XT1cIiRyb3dIZWlnaHQoKVwiXG4gICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2dyb3VwSGVhZGVyJ107IHdoZW46IGlzR3JvdXBIZWFkZXJcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlO1wiLz5cbiAgPG1hdC1mb290ZXItcm93IFtzdHlsZS5oZWlnaHRdPVwiJHJvd0hlaWdodCgpXCIgW3N0eWxlLm1pbi1oZWlnaHRdPVwiJHJvd0hlaWdodCgpXCJcbiAgICAgICAgICAgICAgICAgICptYXRGb290ZXJSb3dEZWY9XCIoc2hvd0Zvb3RlclJvdyQgfCBhc3luYykgPT09ICdyZWd1bGFyLWZvb3RlcicgPyBrZXlzIDogW107IHN0aWNreTogJHN0aWNreUZvb3RlcigpIFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuYm90dG9tLnB4XT1cIiRzdGlja3lGb290ZXIoKSA/IChvZmZzZXQkIHwgYXN5bmMpIDogdW5kZWZpbmVkXCIvPlxuXG48L21hdC10YWJsZT5cbiJdfQ==
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dlbmVyaWMtdGFibGUvZ2VuZXJpYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dlbmVyaWMtdGFibGUvZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFvQyxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xNLE9BQU8sRUFBYSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUUsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQW1CLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWxFLE9BQU8sRUFBZSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENB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QUFDO3VHQS9OaEYscUJBQXFCOzJGQUFyQixxQkFBcUIsODdCQXlCckIsUUFBUSx5RkFDUixXQUFXLG1GQzVEeEIsZzVHQStFQSxzOUJEakRJLGNBQWMseTdDQUFFLGNBQWMsMGlCQUFFLGlCQUFpQixvWUFBRSxlQUFlLDJJQUFFLGFBQWEsb0xBQUUsZ0JBQWdCLG1KQUNuRyxnQkFBZ0IsMEJBQUUsU0FBUyx5Q0FBRSxZQUFZOzsyRkFHaEMscUJBQXFCO2tCQVhqQyxTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxjQUFjLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCO3dCQUNuRyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsWUFBWTtxQkFDMUM7d0RBWVksT0FBTztzQkFBbkIsS0FBSztnQkFRRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRWlDLEtBQUs7c0JBQTNDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDSyxRQUFRO3NCQUFqRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBc0g5QixVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBPbkluaXQsIFF1ZXJ5TGlzdCwgVmlld0NvbnRhaW5lclJlZiwgSW5qZWN0b3IsIEV2ZW50RW1pdHRlciwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0Um93RGVmLCBNYXRUYWJsZSwgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2VsZWN0aW9uQ2hhbmdlLCBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XHJcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLXN0b3JlJztcclxuaW1wb3J0IHsgbWFwLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ29sdW1uQnVpbGRlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbHVtbi1idWlsZGVyL2NvbHVtbi1idWlsZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2RpY3Rpb25hcnknO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xyXG5pbXBvcnQgeyBwcmV2aW91c0FuZEN1cnJlbnQgfSBmcm9tICcuLi8uLi8uLi9yeGpzL3J4anMtb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ29sdW1uSW5mbyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvQ29sdW1uSW5mbyc7XHJcbmltcG9ydCB7IENka0RyYWdEcm9wLCBDZGtEcm9wTGlzdCwgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgRnVuY3Rpb25QaXBlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBUcmFuc2Zvcm1DcmVhdG9yIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNmb3JtLWNyZWF0b3InO1xyXG5pbXBvcnQgeyBpbml0SW5kZXhTeW1ib2wgfSBmcm9tICcuLi90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLmhlbHBlcnMvc29ydC1zdGF0ZS5oZWxwZXJzJztcclxuaW1wb3J0IHsgVmlydHVhbFNjcm9sbE9wdGlvbnMgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLWJ1aWxkZXItZ2VuZXJhbC1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGItZ2VuZXJpYy10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dlbmVyaWMtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdFRhYmxlTW9kdWxlLCBEcmFnRHJvcE1vZHVsZSwgTWF0Q2hlY2tib3hNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsIEFzeW5jUGlwZSwgRnVuY3Rpb25QaXBlLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmljVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHByb3RlY3RlZCBzdGF0ZSA9IGluamVjdChUYWJsZVN0b3JlKTtcclxuICBwcml2YXRlIHZpZXdDb250YWluZXIgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XHJcbiAgcHJpdmF0ZSB0cmFuc2Zvcm1DcmVhdG9yID0gaW5qZWN0KFRyYW5zZm9ybUNyZWF0b3IpO1xyXG5cclxuXHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XHJcbiAgICB0aGlzLnN0YXRlLnNldFVzZXJEZWZpbmVkT3JkZXIoeyBuZXdPcmRlcjpldmVudC5jdXJyZW50SW5kZXgsIG9sZE9yZGVyOmV2ZW50LnByZXZpb3VzSW5kZXggfSlcclxuICB9XHJcbiAgX3RyYWNrQnk/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2V0IHRyYWNrQnkodHJhY2tCeTogc3RyaW5nKXtcclxuICAgIGlmKHRyYWNrQnkpe1xyXG4gICAgICB0aGlzLl90cmFja0J5ID0gdHJhY2tCeTtcclxuICAgICAgdGhpcy50cmFja0J5RnVuY3Rpb24gPSAoaW5kZXg6bnVtYmVyLCBpdGVtOiBhbnkpID0+IGl0ZW1bdHJhY2tCeV07XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFVwU2VsZWN0aW9ucyh0cmFja0J5KTtcclxuICB9XHJcbiAgZ2V0IHRyYWNrQnkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX3RyYWNrQnkgfVxyXG4gIEBJbnB1dCgpIGRpc3BsYXlEYXRhJCE6IE9ic2VydmFibGU8YW55W10+O1xyXG4gICRkYXRhID0gaW5wdXQucmVxdWlyZWQ8YW55W10+KHsgYWxpYXM6ICdkYXRhJyB9KVxyXG4gIGRhdGEkID0gdG9PYnNlcnZhYmxlKHRoaXMuJGRhdGEpO1xyXG4gIEBJbnB1dCgpIHJvd3MhOiBRdWVyeUxpc3Q8TWF0Um93RGVmPGFueT4+O1xyXG4gIEBJbnB1dCgpIGNvbHVtbkJ1aWxkZXJzITogQ29sdW1uQnVpbGRlckNvbXBvbmVudFtdO1xyXG4gIEBJbnB1dCgpIGNvbHVtbkluZm9zITogT2JzZXJ2YWJsZTxDb2x1bW5JbmZvW10+O1xyXG5cclxuICBAVmlld0NoaWxkKE1hdFRhYmxlLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZSE6IE1hdFRhYmxlPGFueT47XHJcbiAgQFZpZXdDaGlsZChDZGtEcm9wTGlzdCwgeyBzdGF0aWM6IHRydWUgfSkgZHJvcExpc3QhOiBDZGtEcm9wTGlzdDtcclxuXHJcbiAgY3VycmVudENvbHVtbnMhOiBzdHJpbmdbXTtcclxuICBrZXlzOiBzdHJpbmcgW10gPSBbXTtcclxuICBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xyXG4gIGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICB7cHJvdmlkZTogTWF0VGFibGUsIHVzZUZhY3Rvcnk6ICgpPT4gdGhpcy50YWJsZSB9LFxyXG4gICAgICB7cHJvdmlkZTogQ2RrRHJvcExpc3QsIHVzZUZhY3Rvcnk6ICgpPT4gdGhpcy5kcm9wTGlzdCB9LFxyXG4gICAgXSxcclxuICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3JcclxuICB9KTtcclxuICByb3dEZWZBcnIgOk1hdFJvd0RlZjxhbnk+W10gPSBbXTtcclxuICBjb2x1bW5zOnN0cmluZyBbXSA9IFtdO1xyXG4gIG15Q29sdW1uczogRGljdGlvbmFyeTxDb2x1bW5CdWlsZGVyQ29tcG9uZW50PiA9IHt9O1xyXG4gIHNob3dIZWFkZXIkITogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICBvZmZzZXQkID0gdGhpcy5zdGF0ZS5zZWxlY3QoIHMgPT4gcy52aXJ0dWFsU2Nyb2xsT2Zmc2V0ICk7XHJcbiAgb2Zmc2V0SW5kZXggPSAwO1xyXG4gIGRhdGFWaWV3ITogT2JzZXJ2YWJsZTxhbnlbXT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5zZXRVcFNlbGVjdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIGRlZmF1bHRUcmFja0J5ID0gKGluZGV4Om51bWJlciwgaXRlbTogYW55KSA9PiBpdGVtW2luaXRJbmRleFN5bWJvbF07XHJcbiAgdHJhY2tCeUZ1bmN0aW9uID0gdGhpcy5kZWZhdWx0VHJhY2tCeTtcclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcy5yb3dzICYmIHRoaXMucm93cyAmJiB0aGlzLm15Q29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplUm93RGVmcyhbLi4udGhpcy5yb3dzXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLnN0YXRlLnByb3BzKCkuc2VsZWN0aW9uQ29sdW1uKSB7XHJcbiAgICAgIHRoaXMuY29sdW1ucy5wdXNoKCdzZWxlY3QnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zdGF0ZS5wcm9wcygpLmluZGV4Q29sdW1uKSB7XHJcbiAgICAgdGhpcy5jb2x1bW5zLnB1c2goJ2luZGV4Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdGF0ZS5vbih0aGlzLmNvbHVtbkluZm9zLCBjb2x1bW5zID0+IHtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKGNpID0+IHRoaXMuYWRkTWV0YURhdGEoY2kpKVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5pbml0aWFsaXplUm93RGVmcyhbLi4udGhpcy5yb3dzXSk7XHJcblxyXG4gICAgdGhpcy5zdGF0ZS5vbih0aGlzLnN0YXRlLmRpc3BsYXllZENvbHVtbnMkLCBrZXlzID0+IHtcclxuICAgICAgdGhpcy5rZXlzID0gWy4uLnRoaXMuY29sdW1ucywgLi4ua2V5c107XHJcbiAgICAgIHRoaXMucm93RGVmQXJyPy5mb3JFYWNoKHJvdyA9PiByb3cuY29sdW1ucyA9IHRoaXMua2V5cylcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc3RhdGUub24odGhpcy5zZWxlY3RhYmxlRGF0YSQsIChkYXRhKSA9PiB7XHJcbiAgICAgIGlmKHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCl7XHJcbiAgICAgICAgY29uc3QgdHJhY2tCeUZ1bmN0aW9uID0gdGhpcy50cmFja0J5ID8gKHMpID0+IGRhdGEuZXZlcnkoZCA9PiAgZFt0aGlzLnRyYWNrQnkhXSAhPT0gc1t0aGlzLnRyYWNrQnkhXSkgOiBzID0+ICFkYXRhLmluY2x1ZGVzKHMpO1xyXG4gICAgICAgIGNvbnN0IHJlbW92ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5maWx0ZXIodHJhY2tCeUZ1bmN0aW9uKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbi5kZXNlbGVjdCguLi5yZW1vdmVkKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnNob3dIZWFkZXIkID0gdGhpcy5zdGF0ZS50YWJsZVNldHRpbmdzJC5waXBlKG1hcChzZXR0aW5ncyA9PiAhKHNldHRpbmdzLmhpZGVDb2x1bW5IZWFkZXIpKSk7XHJcblxyXG4gICAgdGhpcy5zaG93Rm9vdGVyUm93JCA9IGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLmRpc3BsYXlEYXRhJC5waXBlKG1hcChkID0+ICEhZC5sZW5ndGgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSxcclxuICAgICAgdGhpcy5zdGF0ZS5tZXRhRGF0YUFycmF5JC5waXBlKG1hcChtZXRhRGF0YSA9PiBtZXRhRGF0YS5zb21lKG1kID0+ICEhbWQuYWRkaXRpb25hbD8uZm9vdGVyKSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxyXG4gICAgICB0aGlzLmNvbHVtbkluZm9zLnBpcGUobWFwKGNvbHVtbkluZm9zID0+IGNvbHVtbkluZm9zLnNvbWUoY2kgPT4gISFjaS5jdXN0b21DZWxsPy5jb2x1bW5EZWY/LmZvb3RlckNlbGwpKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXHJcbiAgICBdKS5waXBlKG1hcCgoW2hhc0RhdGEsIGhhc0Zvb3RlckRlZiwgaGFzQ3VzdG9tRm9vdGVyXSkgPT4ge1xyXG4gICAgICBjb25zdCBoYXNTZWxlY3Rpb25Db2x1bW4gPSB0aGlzLnN0YXRlLnByb3BzKCkuc2VsZWN0aW9uQ29sdW1uO1xyXG4gICAgICByZXR1cm4gaGFzQ3VzdG9tRm9vdGVyIHx8IChoYXNEYXRhICYmIChoYXNGb290ZXJEZWYgfHwgaGFzU2VsZWN0aW9uQ29sdW1uKSkgPyAncmVndWxhci1mb290ZXInIDogaGFzRGF0YSA/ICduby1mb290ZXInIDogJ3NtYWxsLWZvb3Rlcic7XHJcbiAgICB9KSk7XHJcblxyXG4gICAgaWYodGhpcy5zdGF0ZS50YWJsZVNldHRpbmdzKCkudXNlUGFnaW5hdG9yIHx8IHRoaXMuc3RhdGUudGFibGVTZXR0aW5ncygpLnVzZVZpcnR1YWxTY3JvbGwpIHtcclxuICAgICAgdGhpcy5zdGF0ZS5vbih0aGlzLnN0YXRlLnN0YXRlJCwgKHN0YXRlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vZmZzZXRJbmRleCA9IHN0YXRlLnZpcnR1YWxFbmRzLnN0YXJ0O1xyXG4gICAgICAgIGlmKHRoaXMuc3RhdGUudGFibGVTZXR0aW5ncygpLnVzZVBhZ2luYXRvcikge1xyXG4gICAgICAgICAgdGhpcy5vZmZzZXRJbmRleCArPSAoc3RhdGUucGFnZVNpemUgKiBzdGF0ZS5jdXJyZW50UGFnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBpc0dyb3VwSGVhZGVyKF86IG51bWJlciwgcm93OiB7IGlzR3JvdXBIZWFkZXI6IGJvb2xlYW4gfSkge1xyXG4gICAgcmV0dXJuIHJvdy5pc0dyb3VwSGVhZGVyO1xyXG4gIH1cclxuXHJcbiAgc2V0RXhwYW5kZWQoa2V5OiBzdHJpbmcsIGdyb3VwS2V5OiBzdHJpbmcsIGlzRXhwYW5kZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuc3RhdGUudXBkYXRlRXhwYW5kZWRHcm91cHMoeyBrZXkgLCBpc0V4cGFuZGVkLCBncm91cEtleSB9KTtcclxuICB9XHJcblxyXG4gIGFkZE1ldGFEYXRhKGNvbHVtbjogQ29sdW1uSW5mbykge1xyXG4gICAgY29uc3QgY29sdW1uQnVpbGRlciA9IHRoaXMubXlDb2x1bW5zW2NvbHVtbi5tZXRhRGF0YS5rZXldO1xyXG4gICAgaWYoY29sdW1uQnVpbGRlcikge1xyXG4gICAgICBjb2x1bW5CdWlsZGVyLm1ldGFEYXRhID0gY29sdW1uLm1ldGFEYXRhO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChDb2x1bW5CdWlsZGVyQ29tcG9uZW50LCB7XHJcbiAgICAgICAgaW5kZXg6IDAsXHJcbiAgICAgICAgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3JcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbXBvbmVudC5pbnN0YW5jZS5jdXN0b21DZWxsID0gY29sdW1uLmN1c3RvbUNlbGw7XHJcbiAgICAgIGNvbXBvbmVudC5pbnN0YW5jZS5tZXRhRGF0YSA9IGNvbHVtbi5tZXRhRGF0YTtcclxuICAgICAgY29tcG9uZW50Lmluc3RhbmNlLmRhdGEkID0gdGhpcy5kYXRhJDtcclxuICAgICAgdGhpcy5teUNvbHVtbnNbY29sdW1uLm1ldGFEYXRhLmtleV0gPSBjb21wb25lbnQuaW5zdGFuY2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplUm93RGVmcyA9IChkZWZzOk1hdFJvd0RlZjxhbnk+W10pPT57XHJcbiAgICB0aGlzLnJvd0RlZkFyci5mb3JFYWNoKHI9PnRoaXMudGFibGUucmVtb3ZlUm93RGVmKHIpKTtcclxuICAgIHRoaXMucm93RGVmQXJyID0gZGVmcztcclxuICAgIGRlZnMuZm9yRWFjaChyID0+IHtcclxuICAgICAgci5jb2x1bW5zID0gdGhpcy5jb2x1bW5zLmNvbmNhdChPYmplY3QudmFsdWVzKHRoaXMubXlDb2x1bW5zKS5maWx0ZXIoYyA9PiBjLm1ldGFEYXRhLmZpZWxkVHlwZSAhPT0gRmllbGRUeXBlLkhpZGRlbikubWFwKGMgPT4gYy5tZXRhRGF0YS5rZXkpKTtcclxuICAgICAgaWYgKHRoaXMudGFibGUpIHtcclxuICAgICAgICB0aGlzLnRhYmxlLmFkZFJvd0RlZihyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3Rpb24hIDogU2VsZWN0aW9uTW9kZWw8YW55PjtcclxuICBAT3V0cHV0KCkgc2VsZWN0aW9uJCA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0aW9uQ2hhbmdlPGFueT4+KCk7XHJcbiAgbWFzdGVyVG9nZ2xlQ2hlY2tlZCQgPSB0aGlzLnNlbGVjdGlvbiQucGlwZShtYXAoKCk9PnRoaXMuc2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgdGhpcy5pc0FsbFNlbGVjdGVkKCkpKTtcclxuICBtYXN0ZXJUb2dnbGVJbmRldGVybWluYXRlJCA9IHRoaXMuc2VsZWN0aW9uJC5waXBlKG1hcCgoKT0+dGhpcy5zZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhdGhpcy5pc0FsbFNlbGVjdGVkKCkpKTtcclxuICBzZXRVcFNlbGVjdGlvbnModHJhY2tCeT86IHN0cmluZyl7XHJcbiAgICB0aGlzLnNlbGVjdGlvbiA9IHRyYWNrQnkgPyBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0cnVlLCBbXSwgdHJ1ZSwgKGEsIGIpID0+IGFbdHJhY2tCeV0gPT09IGJbdHJhY2tCeV0pIDogbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odHJ1ZSwgW10pO1xyXG4gICAgdGhpcy5zdGF0ZS5vbih0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkLCBjID0+IHRoaXMuc2VsZWN0aW9uJC5lbWl0KGMpKTtcclxuICB9XHJcbiAgJHNlbGVjdGFibGVEYXRhID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYodGhpcy5zdGF0ZS4kdmlld1R5cGUoKSA9PT0gJ3BhZ2luYXRvcicgfHwgdGhpcy5zdGF0ZS4kdmlld1R5cGUoKSA9PT0gJ3ZpcnR1YWwgcGFnaW5hdG9yJykge1xyXG4gICAgICBjb25zdCBwcmV2aW91c1BhZ2VSZWNvcmRzID0gdGhpcy5zdGF0ZS5zdGF0ZSgpLmN1cnJlbnRQYWdlICogdGhpcy5zdGF0ZS5zdGF0ZSgpLnBhZ2VTaXplO1xyXG4gICAgICByZXR1cm4gdGhpcy4kZGF0YSgpLnNsaWNlKHByZXZpb3VzUGFnZVJlY29yZHMsIHByZXZpb3VzUGFnZVJlY29yZHMgKyB0aGlzLnN0YXRlLnN0YXRlKCkucGFnZVNpemUpO1xyXG4gICAgfSBlbHNlIGlmKHRoaXMuc3RhdGUuJHZpZXdUeXBlKCkgPT09ICdhbGwnKXtcclxuICAgICAgcmV0dXJuIHRoaXMuJGRhdGEoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBbXTtcclxuICB9KTtcclxuICBzZWxlY3RhYmxlRGF0YSQgPSB0b09ic2VydmFibGUodGhpcy4kc2VsZWN0YWJsZURhdGEpO1xyXG4gIGlzQWxsU2VsZWN0ZWQoKSB7XHJcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aDtcclxuICAgIGNvbnN0IG51bVJvd3MgPSB0aGlzLiRzZWxlY3RhYmxlRGF0YSgpPy5sZW5ndGggfHwgMDtcclxuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcclxuICB9XHJcblxyXG4gIC8qKiBTZWxlY3RzIGFsbCByb3dzIGlmIHRoZXkgYXJlIG5vdCBhbGwgc2VsZWN0ZWQ7IG90aGVyd2lzZSBjbGVhciBzZWxlY3Rpb24uICovXHJcbiAgbWFzdGVyVG9nZ2xlKCkge1xyXG4gICAgaWYodGhpcy5pc0FsbFNlbGVjdGVkKCkpe1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3QoLi4udGhpcy4kc2VsZWN0YWJsZURhdGEoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0YWJsZVdpZHRoID0gdGhpcy5zdGF0ZS5nZXRVc2VyRGVmaW5lZFRhYmxlU2l6ZSQucGlwZShcclxuICAgIHByZXZpb3VzQW5kQ3VycmVudDxudW1iZXIgfCB1bmRlZmluZWQ+KDApLFxyXG4gICAgbWFwKChbcHJldmlvdXNVc2VyRGVmaW5lZFdpZHRoLCBjdXJyZW50VXNlckRlZmluZWRXaWR0aF0pID0+IHtcclxuICAgICAgaWYoIGN1cnJlbnRVc2VyRGVmaW5lZFdpZHRoKXtcclxuICAgICAgICByZXR1cm4gKHt3aWR0aDpgJHtjdXJyZW50VXNlckRlZmluZWRXaWR0aH1weGB9KTtcclxuICAgICAgfSBpZiggd2FzUmVzZXQoKSApe1xyXG4gICAgICAgIHJldHVybiAoe3dpZHRoOidpbml0aWFsJ30pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoe30pO1xyXG5cclxuICAgICAgZnVuY3Rpb24gd2FzUmVzZXQoKXtcclxuICAgICAgICByZXR1cm4gKHByZXZpb3VzVXNlckRlZmluZWRXaWR0aCA/PyAwKSA+PTAgJiYgY3VycmVudFVzZXJEZWZpbmVkV2lkdGggPT0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICApO1xyXG5cclxuICBzaG93Rm9vdGVyUm93JCE6IE9ic2VydmFibGU8J3JlZ3VsYXItZm9vdGVyJyB8ICduby1mb290ZXInIHwgJ3NtYWxsLWZvb3Rlcic+O1xyXG4gIGdldFRyYW5zZm9ybSA9IChrZXk6IHN0cmluZywgdmFsOiBzdHJpbmcpID0+IHtcclxuICAgIGlmKHZhbCA9PSB1bmRlZmluZWQgfHwgdmFsID09PSAnbnVsbCcpIHJldHVybiAnJztcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybUNyZWF0b3IuY3JlYXRlVHJhbnNmb3JtZXIodGhpcy5teUNvbHVtbnNba2V5XS5tZXRhRGF0YSwgdHJ1ZSkoeyBba2V5XTogdmFsfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICByZXR1cm4gdmFsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJHJvd0hlaWdodCA9IHRoaXMuc3RhdGUuc2VsZWN0U2lnbmFsKHMgPT4ge1xyXG4gICAgICBpZih0aGlzLnN0YXRlLiRpc1ZpcnR1YWwoKSAmJiAocy5ub3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzLnVzZVZpcnR1YWxTY3JvbGwgYXMgVmlydHVhbFNjcm9sbE9wdGlvbnMpPy5lbmZvcmNlUm93SGVpZ2h0KXtcclxuICAgICAgICByZXR1cm4gKHMubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy51c2VWaXJ0dWFsU2Nyb2xsIGFzIFZpcnR1YWxTY3JvbGxPcHRpb25zKSEucm93SGVpZ2h0ICsgJ3B4JyA7XHJcbiAgICAgIH1cclxuICAgICAgaWYodHlwZW9mIHMubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy5yb3dIZWlnaHQgPT09ICdudW1iZXInKXtcclxuICAgICAgICByZXR1cm4gcy5ub3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzLnJvd0hlaWdodCArICdweCc7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHMubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy5yb3dIZWlnaHQ7XHJcbiAgICAgIFxyXG4gICAgfSk7XHJcblxyXG4gICRoZWFkZXJIZWlnaHQgPSB0aGlzLnN0YXRlLnNlbGVjdFNpZ25hbChzID0+IHtcclxuICAgIGlmKHRoaXMuc3RhdGUuJGlzVmlydHVhbCgpICYmIChzLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MudXNlVmlydHVhbFNjcm9sbCBhcyBWaXJ0dWFsU2Nyb2xsT3B0aW9ucyk/LmVuZm9yY2VIZWFkZXJIZWlnaHQpe1xyXG4gICAgICByZXR1cm4gKHMubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy51c2VWaXJ0dWFsU2Nyb2xsIGFzIFZpcnR1YWxTY3JvbGxPcHRpb25zKSEuaGVhZGVySGVpZ2h0ICsgJ3B4JztcclxuICAgIH1cclxuICAgIGlmKHR5cGVvZiBzLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MuaGVhZGVySGVpZ2h0ID09PSAnbnVtYmVyJyl7XHJcbiAgICAgIHJldHVybiBzLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MuaGVhZGVySGVpZ2h0ICsgJ3B4JztcclxuICAgIH1cclxuICAgIHJldHVybiBzLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MuaGVhZGVySGVpZ2h0O1xyXG4gIH0pO1xyXG5cclxuICAkc3RpY2t5Rm9vdGVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZS5wcm9wcygpLnN0aWNreUZvb3RlciB8fCB0aGlzLnN0YXRlLiRpc1ZpcnR1YWwoKSk7XHJcbn1cclxuIiwiPG1hdC10YWJsZVxyXG4gIGNka0Ryb3BMaXN0XHJcbiAgY2RrRHJvcExpc3RMb2NrQXhpcz0neCdcclxuICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIlxyXG4gIGNsYXNzPVwidGFibGUtZHJhZy1saXN0XCJcclxuICBbY2xhc3NdPVwiKHNob3dGb290ZXJSb3ckIHwgYXN5bmMpXCJcclxuICAjdGFibGVcclxuICBbZGF0YVNvdXJjZV09XCJzdGF0ZS5wcm9wcygpLmRhdGFTb3VyY2UhXCJcclxuICBbdHJhY2tCeV09XCJ0cmFja0J5RnVuY3Rpb25cIlxyXG4gIFtzdHlsZV09XCJ0YWJsZVdpZHRoIHwgYXN5bmMgXCJcclxuPlxyXG5cclxuICA8IS0tIHNlbGVjdCBjb2x1bW4gLS0+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3RcIj5cclxuXHJcbiAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmICBjbGFzcz1cInNlbGVjdC1jb2x1bW5cIj5cclxuICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiISEobWFzdGVyVG9nZ2xlQ2hlY2tlZCQgfCBhc3luYylcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cIm1hc3RlclRvZ2dsZUluZGV0ZXJtaW5hdGUkIHwgYXN5bmNcIj5cclxuICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICA8L21hdC1oZWFkZXItY2VsbD5cclxuXHJcbiAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgY2xhc3M9XCJzZWxlY3QtY29sdW1uXCI+XHJcbiAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbi50b2dnbGUocm93KSA6IG51bGxcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdylcIi8+XHJcbiAgICA8L21hdC1jZWxsPlxyXG5cclxuICAgIDxtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWYgY2xhc3M9XCJzZWxlY3QtY29sdW1uXCI+XHJcbiAgICAgIHt7IHNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggfX1cclxuICAgIDwvbWF0LWZvb3Rlci1jZWxsPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgPCEtLSBpbmRleCBjb2x1bW4gLS0+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJpbmRleFwiPlxyXG4gICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImYtbWF0LWhlYWRlci1jZWxsXCIgY2xhc3M9XCJpbmRleC1jb2x1bW5cIj4jXHJcbiAgICA8L21hdC1oZWFkZXItY2VsbD5cclxuICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpID0gaW5kZXg7XCIgY2xhc3M9XCJpbmRleC1jb2x1bW5cIj5cclxuICAgICAge3sgMSArIGkgKyBvZmZzZXRJbmRleCB9fVxyXG4gICAgPC9tYXQtY2VsbD5cclxuICAgIDxtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWYgY2xhc3M9XCJpbmRleC1jb2x1bW5cIj48L21hdC1mb290ZXItY2VsbD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSBHcm91cGluZyAtLT5cclxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImdyb3VwSGVhZGVyXCI+XHJcbiAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XHJcbiAgICAgIEBsZXQgZXhwYW5kZWQgPSAoc3RhdGUuZ2V0SXNFeHBhbmRlZCB8IGZ1bmMgOiByb3cua2V5IDogcm93Lmdyb3VwTmFtZSApO1xyXG4gICAgICA8ZGl2IFtzdHlsZS5wYWRkaW5nTGVmdF09XCJyb3cucGFkZGluZyArICdweCAhaW1wb3J0YW50J1wiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzZXRFeHBhbmRlZChyb3cua2V5LCByb3cuZ3JvdXBOYW1lLCAhZXhwYW5kZWQoKSk7XCI+XHJcbiAgICAgICAgICBAaWYgKCFleHBhbmRlZCgpKSB7XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8bWF0LWljb24+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIHt7IGdldFRyYW5zZm9ybSB8IGZ1bmMgOiByb3cua2V5IDogIHJvdy5ncm91cEhlYWRlckRpc3BsYXkgfX0gKHt7IHJvdy5sZW5ndGggfX0pXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXRlLnByb3BzKCkuZ3JvdXBIZWFkZXJUZW1wbGF0ZSE7IGNvbnRleHQ6IHsgZWxlbWVudDogcm93IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1jZWxsPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICBAaWYgKHNob3dIZWFkZXIkIHwgYXN5bmMpIHtcclxuICAgIDxtYXQtaGVhZGVyLXJvdyBbc3R5bGUuaGVpZ2h0XT1cIiRoZWFkZXJIZWlnaHQoKVwiIFtzdHlsZS5taW4taGVpZ2h0XT1cIiRoZWFkZXJIZWlnaHQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm1hdEhlYWRlclJvd0RlZj1cImtleXM7IHN0aWNreTogc3RhdGUucHJvcHMoKS5pc1N0aWNreVwiIFtzdHlsZS50b3AucHhdPVwiKChvZmZzZXQkIHwgYXN5bmMpISAqIC0xKVwiLz5cclxuICB9XHJcbiAgPG1hdC1yb3cgW3N0eWxlLmhlaWdodF09XCIkcm93SGVpZ2h0KClcIiBbc3R5bGUubWluLWhlaWdodF09XCIkcm93SGVpZ2h0KClcIlxyXG4gICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBrZXlzOyBsZXQgaSA9IGluZGV4XCIvPlxyXG4gIDxtYXQtcm93IFtzdHlsZS5oZWlnaHRdPVwiJHJvd0hlaWdodCgpXCIgW3N0eWxlLm1pbi1oZWlnaHRdPVwiJHJvd0hlaWdodCgpXCJcclxuICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydncm91cEhlYWRlciddOyB3aGVuOiBpc0dyb3VwSGVhZGVyXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIi8+XHJcbiAgPG1hdC1mb290ZXItcm93IFtzdHlsZS5oZWlnaHRdPVwiJHJvd0hlaWdodCgpXCIgW3N0eWxlLm1pbi1oZWlnaHRdPVwiJHJvd0hlaWdodCgpXCJcclxuICAgICAgICAgICAgICAgICAgKm1hdEZvb3RlclJvd0RlZj1cIihzaG93Rm9vdGVyUm93JCB8IGFzeW5jKSA9PT0gJ3JlZ3VsYXItZm9vdGVyJyA/IGtleXMgOiBbXTsgc3RpY2t5OiAkc3RpY2t5Rm9vdGVyKCkgXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvdHRvbS5weF09XCIkc3RpY2t5Rm9vdGVyKCkgPyAob2Zmc2V0JCB8IGFzeW5jKSA6IHVuZGVmaW5lZFwiLz5cclxuXHJcbjwvbWF0LXRhYmxlPlxyXG4iXX0=
@@ -43,34 +43,34 @@ export class PaginatorComponent {
43
43
  this.updatePaginator();
44
44
  }
45
45
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
46
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: PaginatorComponent, isStandalone: true, selector: "tb-paginator", inputs: { data$: "data$", tableElRef: "tableElRef" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], ngImport: i0, template: `
47
- <div class="paginator-row">
48
- @if(currentPageData$ | async; as pageData){
49
- <div [class]="{ 'hide' : ! $collapseFooter(), 'page-amounts':true}">
50
- @if(!$showAll()){{{pageData.currentStart}} - {{pageData.currentEnd}} of }{{pageData.total}}
51
- </div>
52
- }
53
- <mat-paginator [pageSizeOptions]="[5, 10, 20, 50, 100, 500]" showFirstLastButtons (page)="paginatorChange()"
54
- [class]="{ 'hide' : $collapseFooter() }">
55
- </mat-paginator>
56
- @if ($showAllOption()) {<button mat-button (click)="updatePaginator()"><span [style.text-decoration]="$showAll() ? 'line-through' : ''" >All</span></button>}
57
- </div>
46
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: PaginatorComponent, isStandalone: true, selector: "tb-paginator", inputs: { data$: "data$", tableElRef: "tableElRef" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], ngImport: i0, template: `
47
+ <div class="paginator-row">
48
+ @if(currentPageData$ | async; as pageData){
49
+ <div [class]="{ 'hide' : ! $collapseFooter(), 'page-amounts':true}">
50
+ @if(!$showAll()){{{pageData.currentStart}} - {{pageData.currentEnd}} of }{{pageData.total}}
51
+ </div>
52
+ }
53
+ <mat-paginator [pageSizeOptions]="[5, 10, 20, 50, 100, 500]" showFirstLastButtons (page)="paginatorChange()"
54
+ [class]="{ 'hide' : $collapseFooter() }">
55
+ </mat-paginator>
56
+ @if ($showAllOption()) {<button mat-button (click)="updatePaginator()"><span [style.text-decoration]="$showAll() ? 'line-through' : ''" >All</span></button>}
57
+ </div>
58
58
  `, isInline: true, styles: [":host{--mat-paginator-container-size: initial}.select-column{min-width:var(--tb-min-select-column-width, 42px)}.index-column{min-width:var(--tb-min-index-column-width, 42px)}.mat-mdc-row:nth-child(odd){background-color:var(--tb-odd-row-background-color, #cdeefe)}.page-amounts{color:#0000008a;font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;margin-right:.2rem}:host::ng-deep .table-drag-list.cdk-drop-list-dragging .drag-header:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}:host::ng-deep .mdc-data-table__cell,:host::ng-deep .mdc-data-table__header-cell{padding:var(--tb-cell-padding, 0 0 0 .2rem);line-height:var(--tb-cell-line-height, normal)}::ng-deep .op-date-time-input{line-height:3rem;font-size:.9rem;font-family:Roboto,Helvetica Neue,sans-serif;padding-left:.2rem;width:12rem}.small-footer mat-footer-row{min-height:1rem;height:1rem}.no-footer mat-footer-row{display:none}\n", ".collapse-icon{font-size:16px;height:16px;color:#3f51b5;align-self:flex-start}.collapse-icon:hover{cursor:pointer}.hide{display:none}.paginator-row{display:flex;align-items:center}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
59
59
  }
60
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: PaginatorComponent, decorators: [{
61
61
  type: Component,
62
- args: [{ selector: 'tb-paginator', standalone: true, imports: [AsyncPipe, MatPaginatorModule, NgClass, MatButtonModule], template: `
63
- <div class="paginator-row">
64
- @if(currentPageData$ | async; as pageData){
65
- <div [class]="{ 'hide' : ! $collapseFooter(), 'page-amounts':true}">
66
- @if(!$showAll()){{{pageData.currentStart}} - {{pageData.currentEnd}} of }{{pageData.total}}
67
- </div>
68
- }
69
- <mat-paginator [pageSizeOptions]="[5, 10, 20, 50, 100, 500]" showFirstLastButtons (page)="paginatorChange()"
70
- [class]="{ 'hide' : $collapseFooter() }">
71
- </mat-paginator>
72
- @if ($showAllOption()) {<button mat-button (click)="updatePaginator()"><span [style.text-decoration]="$showAll() ? 'line-through' : ''" >All</span></button>}
73
- </div>
62
+ args: [{ selector: 'tb-paginator', standalone: true, imports: [AsyncPipe, MatPaginatorModule, NgClass, MatButtonModule], template: `
63
+ <div class="paginator-row">
64
+ @if(currentPageData$ | async; as pageData){
65
+ <div [class]="{ 'hide' : ! $collapseFooter(), 'page-amounts':true}">
66
+ @if(!$showAll()){{{pageData.currentStart}} - {{pageData.currentEnd}} of }{{pageData.total}}
67
+ </div>
68
+ }
69
+ <mat-paginator [pageSizeOptions]="[5, 10, 20, 50, 100, 500]" showFirstLastButtons (page)="paginatorChange()"
70
+ [class]="{ 'hide' : $collapseFooter() }">
71
+ </mat-paginator>
72
+ @if ($showAllOption()) {<button mat-button (click)="updatePaginator()"><span [style.text-decoration]="$showAll() ? 'line-through' : ''" >All</span></button>}
73
+ </div>
74
74
  `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{--mat-paginator-container-size: initial}.select-column{min-width:var(--tb-min-select-column-width, 42px)}.index-column{min-width:var(--tb-min-index-column-width, 42px)}.mat-mdc-row:nth-child(odd){background-color:var(--tb-odd-row-background-color, #cdeefe)}.page-amounts{color:#0000008a;font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;margin-right:.2rem}:host::ng-deep .table-drag-list.cdk-drop-list-dragging .drag-header:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}:host::ng-deep .mdc-data-table__cell,:host::ng-deep .mdc-data-table__header-cell{padding:var(--tb-cell-padding, 0 0 0 .2rem);line-height:var(--tb-cell-line-height, normal)}::ng-deep .op-date-time-input{line-height:3rem;font-size:.9rem;font-family:Roboto,Helvetica Neue,sans-serif;padding-left:.2rem;width:12rem}.small-footer mat-footer-row{min-height:1rem;height:1rem}.no-footer mat-footer-row{display:none}\n", ".collapse-icon{font-size:16px;height:16px;color:#3f51b5;align-self:flex-start}.collapse-icon:hover{cursor:pointer}.hide{display:none}.paginator-row{display:flex;align-items:center}\n"] }]
75
75
  }], propDecorators: { paginator: [{
76
76
  type: ViewChild,
@@ -93,4 +93,4 @@ const delayToAllowForProperUpdate = delay(0, asyncScheduler);
93
93
  const metaDataPageSizeChange = (state) => state.state$.pipe(map(state => state.userDefined.pageSize || state.pageSize), distinctUntilChanged());
94
94
  const setPaginatorPageSize = (paginator) => (pageSize) => paginator._changePageSize(pageSize);
95
95
  const onPaginatorPageSizeChange = (paginator) => paginator.page.pipe(map(e => e.pageSize), distinctUntilChanged());
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NvbXBvbmVudHMvZ2VuZXJpYy10YWJsZS9wYWdpbmF0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFhLE1BQU0sNkJBQTZCLENBQUM7QUFDMUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFzQjNELE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVRLFNBQVMsQ0FBZ0I7SUFDcEUsZ0JBQWdCLENBQWtDO0lBQ2xELGVBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1SCxLQUFL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QUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7QUFFM0osTUFBTSxvQkFBb0IsR0FBRyxDQUFDLFNBQXNCLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBZ0IsRUFBRSxFQUFFLENBQzVFLFNBQVMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFdEMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLFNBQXVCLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUUsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3Q2hpbGQsIElucHV0LCBBZnRlclZpZXdJbml0LCBPbkluaXQsIEVsZW1lbnRSZWYsIGNvbXB1dGVkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvciwgTWF0UGFnaW5hdG9yTW9kdWxlLCBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgYXN5bmNTY2hlZHVsZXIsIG1lcmdlLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGRpc3RpbmN0VW50aWxLZXlDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGItcGFnaW5hdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0FzeW5jUGlwZSwgTWF0UGFnaW5hdG9yTW9kdWxlLCBOZ0NsYXNzLCBNYXRCdXR0b25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICA8ZGl2IGNsYXNzPVwicGFnaW5hdG9yLXJvd1wiPlxuICAgIEBpZihjdXJyZW50UGFnZURhdGEkIHwgYXN5bmM7IGFzIHBhZ2VEYXRhKXtcbiAgICAgIDxkaXYgW2NsYXNzXT1cInsgJ2hpZGUnIDogISAkY29sbGFwc2VGb290ZXIoKSwgJ3BhZ2UtYW1vdW50cyc6dHJ1ZX1cIj5cbiAgICAgICAgQGlmKCEkc2hvd0FsbCgpKXt7e3BhZ2VEYXRhLmN1cnJlbnRTdGFydH19IC0ge3twYWdlRGF0YS5jdXJyZW50RW5kfX0gb2YgfXt7cGFnZURhdGEudG90YWx9fVxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDxtYXQtcGFnaW5hdG9yIFtwYWdlU2l6ZU9wdGlvbnNdPVwiWzUsIDEwLCAyMCwgNTAsIDEwMCwgNTAwXVwiIHNob3dGaXJzdExhc3RCdXR0b25zIChwYWdlKT1cInBhZ2luYXRvckNoYW5nZSgpXCJcbiAgICAgIFtjbGFzc109XCJ7ICdoaWRlJyA6ICRjb2xsYXBzZUZvb3RlcigpIH1cIj5cbiAgICA8L21hdC1wYWdpbmF0b3I+XG4gICAgQGlmICgkc2hvd0FsbE9wdGlvbigpKSB7PGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJ1cGRhdGVQYWdpbmF0b3IoKVwiPjxzcGFuIFtzdHlsZS50ZXh0LWRlY29yYXRpb25dPVwiJHNob3dBbGwoKSA/ICdsaW5lLXRocm91Z2gnIDogJydcIiA+QWxsPC9zcGFuPjwvYnV0dG9uPn1cbiAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2dlbmVyaWMtdGFibGUuY29tcG9uZW50LnNjc3MnLCcuLi8uLi9zdHlsZXMvY29sbGFwc2VyLnN0eWxlcy5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXR7XG4gIHByaXZhdGUgc3RhdGUgPSBpbmplY3QoVGFibGVTdG9yZSk7XG5cbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcbiAgY3VycmVudFBhZ2VEYXRhJCE6IE9ic2VydmFibGU8Q3VycmVudFBhZ2VEZXRhaWxzPjtcbiAgJGNvbGxhcHNlRm9vdGVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZS5zZWxlY3RTaWduYWwoc3RhdGUgPT4gc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5ncy5jb2xsYXBzZUZvb3RlcikoKSB8fCB0aGlzLiRzaG93QWxsKCkpO1xuICBASW5wdXQoKSBkYXRhJCE6IE9ic2VydmFibGU8YW55W10+O1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSB0YWJsZUVsUmVmISA6IEVsZW1lbnRSZWZcbiAgbmdPbkluaXQoKXtcbiAgICB0aGlzLm91clBhZ2VFdmVudCA9IHRydWU7XG4gICAgdGhpcy5zdGF0ZS5vbihtZXRhRGF0YVBhZ2VTaXplQ2hhbmdlKHRoaXMuc3RhdGUpLCBzZXRQYWdpbmF0b3JQYWdlU2l6ZSh0aGlzLnBhZ2luYXRvcikpO1xuICAgIHRoaXMuc3RhdGUub24odGhpcy5wYWdpbmF0b3IucGFnZSwgKHBhZ2VFdmVudCkgPT4ge1xuICAgICAgdGhpcy5zdGF0ZS51cGRhdGVTdGF0ZSh7Y3VycmVudFBhZ2U6IHBhZ2VFdmVudC5wYWdlSW5kZXh9ICk7XG4gICAgfSk7XG4gICAgdGhpcy5zdGF0ZS5zZXRQYWdlU2l6ZShvblBhZ2luYXRvclBhZ2VTaXplQ2hhbmdlKHRoaXMucGFnaW5hdG9yKSlcblxuICAgIHRoaXMuc3RhdGUub24oIHRoaXMuc3RhdGUuc2VsZWN0KCBzID0+IHMuZGF0YUxlbiksIChsZW4pID0+IHRoaXMucGFnaW5hdG9yLmxlbmd0aCA9IGxlbik7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZURhdGEkID0gbWVyZ2UoXG4gICAgICB0aGlzLnBhZ2luYXRvci5wYWdlLnBpcGUobWFwKG1hcFBhZ2luYXRpb25FdmVudFRvQ3VycmVudFBhZ2VEZXRhaWxzKSksXG4gICAgICB0aGlzLmRhdGEkLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxLZXlDaGFuZ2VkKFwibGVuZ3RoXCIpLFxuICAgICAgICBkZWxheVRvQWxsb3dGb3JQcm9wZXJVcGRhdGUsXG4gICAgICAgIG1hcCh1cGRhdGVDdXJyZW50UGFnZURldGFpbHNPbkRhdGFMZW5ndGhDaGFuZ2UodGhpcy5wYWdpbmF0b3IpKSksXG4gICAgKTtcbiAgfVxuXG4gIHBhZ2luYXRvckNoYW5nZSgpIDogdm9pZCB7XG4gICAgaWYoIXRoaXMub3VyUGFnZUV2ZW50KXtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy50YWJsZUVsUmVmPy5uYXRpdmVFbGVtZW50Py5zY3JvbGxJbnRvVmlldygpLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vdXJQYWdlRXZlbnQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgb3VyUGFnZUV2ZW50ID0gZmFsc2U7XG5cbiAgJHNob3dBbGxPcHRpb24gPSB0aGlzLnN0YXRlLnNlbGVjdFNpZ25hbChzID0+IHMubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncz8uaW5jbHVkZUFsbEluUGFnaW5hdG9yT3B0aW9ucyk7XG4gICRzaG93QWxsID0gdGhpcy5zdGF0ZS5zZWxlY3RTaWduYWwocyA9PiBzLnNob3dBbGwpO1xuICB1cGRhdGVQYWdpbmF0b3IgPSB0aGlzLnN0YXRlLnVwZGF0ZXIoc3RhdGUgPT4gKHsgLi4uc3RhdGUsIHNob3dBbGw6ICFzdGF0ZS5zaG93QWxsIH0pKTtcbiAgc2hvd0FsbCgpe1xuICAgIHRoaXMudXBkYXRlUGFnaW5hdG9yKCk7XG4gIH1cbn1cblxuY29uc3QgbWFwUGFnaW5hdGlvbkV2ZW50VG9DdXJyZW50UGFnZURldGFpbHMgPSAocGFnZURhdGE6IFBhZ2VFdmVudCk6Q3VycmVudFBhZ2VEZXRhaWxzID0+ICh7XG4gIGN1cnJlbnRTdGFydCA6IChwYWdlRGF0YS5wYWdlSW5kZXggKiBwYWdlRGF0YS5wYWdlU2l6ZSkgKyAxLFxuICBjdXJyZW50RW5kIDogTWF0aC5taW4ocGFnZURhdGEubGVuZ3RoICwgKChwYWdlRGF0YS5wYWdlSW5kZXggKyAxKSAqIHBhZ2VEYXRhLnBhZ2VTaXplKSksXG4gIHRvdGFsIDogcGFnZURhdGEubGVuZ3RoXG59KTtcblxuY29uc3QgdXBkYXRlQ3VycmVudFBhZ2VEZXRhaWxzT25EYXRhTGVuZ3RoQ2hhbmdlID0gKHBhZ2luYXRvcjpNYXRQYWdpbmF0b3IpID0+ICgpID0+ICh7Y3VycmVudFN0YXJ0OihwYWdpbmF0b3IucGFnZUluZGV4ICogcGFnaW5hdG9yLnBhZ2VTaXplKSArIDEsXG4gIGN1cnJlbnRFbmQ6IE1hdGgubWluKHBhZ2luYXRvci5sZW5ndGggLCAoKHBhZ2luYXRvci5wYWdlSW5kZXggKyAxKSAqIHBhZ2luYXRvci5wYWdlU2l6ZSkpLFxuICB0b3RhbDpwYWdpbmF0b3IubGVuZ3RofSlcblxuY29uc3QgZGVsYXlUb0FsbG93Rm9yUHJvcGVyVXBkYXRlID0gZGVsYXk8YW55W10+KDAsYXN5bmNTY2hlZHVsZXIpO1xuXG5pbnRlcmZhY2UgQ3VycmVudFBhZ2VEZXRhaWxzIHtcbiAgY3VycmVudFN0YXJ0Om51bWJlcixcbiAgY3VycmVudEVuZDpudW1iZXIsXG4gIHRvdGFsOm51bWJlclxufVxuXG5jb25zdCBtZXRhRGF0YVBhZ2VTaXplQ2hhbmdlID0gKHN0YXRlOlRhYmxlU3RvcmUpID0+IHN0YXRlLnN0YXRlJC5waXBlKG1hcChzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC5wYWdlU2l6ZSB8fCBzdGF0ZS5wYWdlU2l6ZSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG5jb25zdCBzZXRQYWdpbmF0b3JQYWdlU2l6ZSA9IChwYWdpbmF0b3I6TWF0UGFnaW5hdG9yKSA9PiAocGFnZVNpemU6IG51bWJlcikgPT5cbiAgcGFnaW5hdG9yLl9jaGFuZ2VQYWdlU2l6ZShwYWdlU2l6ZSk7XG5cbmNvbnN0IG9uUGFnaW5hdG9yUGFnZVNpemVDaGFuZ2UgPSAocGFnaW5hdG9yOiBNYXRQYWdpbmF0b3IpID0+IHBhZ2luYXRvci5wYWdlLnBpcGUobWFwKCBlID0+IGUucGFnZVNpemUgKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7Il19
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NvbXBvbmVudHMvZ2VuZXJpYy10YWJsZS9wYWdpbmF0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFhLE1BQU0sNkJBQTZCLENBQUM7QUFDMUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFzQjNELE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVRLFNBQVMsQ0FBZ0I7SUFDcEUsZ0JBQWdCLENBQWtDO0lBQ2xELGVBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1SCxLQUFL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QUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7QUFFM0osTUFBTSxvQkFBb0IsR0FBRyxDQUFDLFNBQXNCLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBZ0IsRUFBRSxFQUFFLENBQzVFLFNBQVMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFdEMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLFNBQXVCLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUUsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3Q2hpbGQsIElucHV0LCBBZnRlclZpZXdJbml0LCBPbkluaXQsIEVsZW1lbnRSZWYsIGNvbXB1dGVkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yLCBNYXRQYWdpbmF0b3JNb2R1bGUsIFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IGFzeW5jU2NoZWR1bGVyLCBtZXJnZSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWxheSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGRpc3RpbmN0VW50aWxLZXlDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLXN0b3JlJztcclxuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGItcGFnaW5hdG9yJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtBc3luY1BpcGUsIE1hdFBhZ2luYXRvck1vZHVsZSwgTmdDbGFzcywgTWF0QnV0dG9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gIDxkaXYgY2xhc3M9XCJwYWdpbmF0b3Itcm93XCI+XHJcbiAgICBAaWYoY3VycmVudFBhZ2VEYXRhJCB8IGFzeW5jOyBhcyBwYWdlRGF0YSl7XHJcbiAgICAgIDxkaXYgW2NsYXNzXT1cInsgJ2hpZGUnIDogISAkY29sbGFwc2VGb290ZXIoKSwgJ3BhZ2UtYW1vdW50cyc6dHJ1ZX1cIj5cclxuICAgICAgICBAaWYoISRzaG93QWxsKCkpe3t7cGFnZURhdGEuY3VycmVudFN0YXJ0fX0gLSB7e3BhZ2VEYXRhLmN1cnJlbnRFbmR9fSBvZiB9e3twYWdlRGF0YS50b3RhbH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgPG1hdC1wYWdpbmF0b3IgW3BhZ2VTaXplT3B0aW9uc109XCJbNSwgMTAsIDIwLCA1MCwgMTAwLCA1MDBdXCIgc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgKHBhZ2UpPVwicGFnaW5hdG9yQ2hhbmdlKClcIlxyXG4gICAgICBbY2xhc3NdPVwieyAnaGlkZScgOiAkY29sbGFwc2VGb290ZXIoKSB9XCI+XHJcbiAgICA8L21hdC1wYWdpbmF0b3I+XHJcbiAgICBAaWYgKCRzaG93QWxsT3B0aW9uKCkpIHs8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cInVwZGF0ZVBhZ2luYXRvcigpXCI+PHNwYW4gW3N0eWxlLnRleHQtZGVjb3JhdGlvbl09XCIkc2hvd0FsbCgpID8gJ2xpbmUtdGhyb3VnaCcgOiAnJ1wiID5BbGw8L3NwYW4+PC9idXR0b24+fVxyXG4gIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuc2NzcycsJy4uLy4uL3N0eWxlcy9jb2xsYXBzZXIuc3R5bGVzLnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdHtcclxuICBwcml2YXRlIHN0YXRlID0gaW5qZWN0KFRhYmxlU3RvcmUpO1xyXG5cclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IHRydWUgfSkgcGFnaW5hdG9yITogTWF0UGFnaW5hdG9yO1xyXG4gIGN1cnJlbnRQYWdlRGF0YSQhOiBPYnNlcnZhYmxlPEN1cnJlbnRQYWdlRGV0YWlscz47XHJcbiAgJGNvbGxhcHNlRm9vdGVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZS5zZWxlY3RTaWduYWwoc3RhdGUgPT4gc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5ncy5jb2xsYXBzZUZvb3RlcikoKSB8fCB0aGlzLiRzaG93QWxsKCkpO1xyXG4gIEBJbnB1dCgpIGRhdGEkITogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgdGFibGVFbFJlZiEgOiBFbGVtZW50UmVmXHJcbiAgbmdPbkluaXQoKXtcclxuICAgIHRoaXMub3VyUGFnZUV2ZW50ID0gdHJ1ZTtcclxuICAgIHRoaXMuc3RhdGUub24obWV0YURhdGFQYWdlU2l6ZUNoYW5nZSh0aGlzLnN0YXRlKSwgc2V0UGFnaW5hdG9yUGFnZVNpemUodGhpcy5wYWdpbmF0b3IpKTtcclxuICAgIHRoaXMuc3RhdGUub24odGhpcy5wYWdpbmF0b3IucGFnZSwgKHBhZ2VFdmVudCkgPT4ge1xyXG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZVN0YXRlKHtjdXJyZW50UGFnZTogcGFnZUV2ZW50LnBhZ2VJbmRleH0gKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zdGF0ZS5zZXRQYWdlU2l6ZShvblBhZ2luYXRvclBhZ2VTaXplQ2hhbmdlKHRoaXMucGFnaW5hdG9yKSlcclxuXHJcbiAgICB0aGlzLnN0YXRlLm9uKCB0aGlzLnN0YXRlLnNlbGVjdCggcyA9PiBzLmRhdGFMZW4pLCAobGVuKSA9PiB0aGlzLnBhZ2luYXRvci5sZW5ndGggPSBsZW4pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZURhdGEkID0gbWVyZ2UoXHJcbiAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2UucGlwZShtYXAobWFwUGFnaW5hdGlvbkV2ZW50VG9DdXJyZW50UGFnZURldGFpbHMpKSxcclxuICAgICAgdGhpcy5kYXRhJC5waXBlKFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxLZXlDaGFuZ2VkKFwibGVuZ3RoXCIpLFxyXG4gICAgICAgIGRlbGF5VG9BbGxvd0ZvclByb3BlclVwZGF0ZSxcclxuICAgICAgICBtYXAodXBkYXRlQ3VycmVudFBhZ2VEZXRhaWxzT25EYXRhTGVuZ3RoQ2hhbmdlKHRoaXMucGFnaW5hdG9yKSkpLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHBhZ2luYXRvckNoYW5nZSgpIDogdm9pZCB7XHJcbiAgICBpZighdGhpcy5vdXJQYWdlRXZlbnQpe1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudGFibGVFbFJlZj8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsSW50b1ZpZXcoKSwgMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm91clBhZ2VFdmVudCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBvdXJQYWdlRXZlbnQgPSBmYWxzZTtcclxuXHJcbiAgJHNob3dBbGxPcHRpb24gPSB0aGlzLnN0YXRlLnNlbGVjdFNpZ25hbChzID0+IHMubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncz8uaW5jbHVkZUFsbEluUGFnaW5hdG9yT3B0aW9ucyk7XHJcbiAgJHNob3dBbGwgPSB0aGlzLnN0YXRlLnNlbGVjdFNpZ25hbChzID0+IHMuc2hvd0FsbCk7XHJcbiAgdXBkYXRlUGFnaW5hdG9yID0gdGhpcy5zdGF0ZS51cGRhdGVyKHN0YXRlID0+ICh7IC4uLnN0YXRlLCBzaG93QWxsOiAhc3RhdGUuc2hvd0FsbCB9KSk7XHJcbiAgc2hvd0FsbCgpe1xyXG4gICAgdGhpcy51cGRhdGVQYWdpbmF0b3IoKTtcclxuICB9XHJcbn1cclxuXHJcbmNvbnN0IG1hcFBhZ2luYXRpb25FdmVudFRvQ3VycmVudFBhZ2VEZXRhaWxzID0gKHBhZ2VEYXRhOiBQYWdlRXZlbnQpOkN1cnJlbnRQYWdlRGV0YWlscyA9PiAoe1xyXG4gIGN1cnJlbnRTdGFydCA6IChwYWdlRGF0YS5wYWdlSW5kZXggKiBwYWdlRGF0YS5wYWdlU2l6ZSkgKyAxLFxyXG4gIGN1cnJlbnRFbmQgOiBNYXRoLm1pbihwYWdlRGF0YS5sZW5ndGggLCAoKHBhZ2VEYXRhLnBhZ2VJbmRleCArIDEpICogcGFnZURhdGEucGFnZVNpemUpKSxcclxuICB0b3RhbCA6IHBhZ2VEYXRhLmxlbmd0aFxyXG59KTtcclxuXHJcbmNvbnN0IHVwZGF0ZUN1cnJlbnRQYWdlRGV0YWlsc09uRGF0YUxlbmd0aENoYW5nZSA9IChwYWdpbmF0b3I6TWF0UGFnaW5hdG9yKSA9PiAoKSA9PiAoe2N1cnJlbnRTdGFydDoocGFnaW5hdG9yLnBhZ2VJbmRleCAqIHBhZ2luYXRvci5wYWdlU2l6ZSkgKyAxLFxyXG4gIGN1cnJlbnRFbmQ6IE1hdGgubWluKHBhZ2luYXRvci5sZW5ndGggLCAoKHBhZ2luYXRvci5wYWdlSW5kZXggKyAxKSAqIHBhZ2luYXRvci5wYWdlU2l6ZSkpLFxyXG4gIHRvdGFsOnBhZ2luYXRvci5sZW5ndGh9KVxyXG5cclxuY29uc3QgZGVsYXlUb0FsbG93Rm9yUHJvcGVyVXBkYXRlID0gZGVsYXk8YW55W10+KDAsYXN5bmNTY2hlZHVsZXIpO1xyXG5cclxuaW50ZXJmYWNlIEN1cnJlbnRQYWdlRGV0YWlscyB7XHJcbiAgY3VycmVudFN0YXJ0Om51bWJlcixcclxuICBjdXJyZW50RW5kOm51bWJlcixcclxuICB0b3RhbDpudW1iZXJcclxufVxyXG5cclxuY29uc3QgbWV0YURhdGFQYWdlU2l6ZUNoYW5nZSA9IChzdGF0ZTpUYWJsZVN0b3JlKSA9PiBzdGF0ZS5zdGF0ZSQucGlwZShtYXAoc3RhdGUgPT4gc3RhdGUudXNlckRlZmluZWQucGFnZVNpemUgfHwgc3RhdGUucGFnZVNpemUpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuXHJcbmNvbnN0IHNldFBhZ2luYXRvclBhZ2VTaXplID0gKHBhZ2luYXRvcjpNYXRQYWdpbmF0b3IpID0+IChwYWdlU2l6ZTogbnVtYmVyKSA9PlxyXG4gIHBhZ2luYXRvci5fY2hhbmdlUGFnZVNpemUocGFnZVNpemUpO1xyXG5cclxuY29uc3Qgb25QYWdpbmF0b3JQYWdlU2l6ZUNoYW5nZSA9IChwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcikgPT4gcGFnaW5hdG9yLnBhZ2UucGlwZShtYXAoIGUgPT4gZS5wYWdlU2l6ZSApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTsiXX0=