@tetacom/ng-components 1.0.151 → 1.1.0

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 (208) hide show
  1. package/assets/color-icons.svg +521 -49
  2. package/assets/file-icons.svg +1 -0
  3. package/assets/icons.svg +138 -205
  4. package/component/accordion/accordion-item/accordion-item.component.d.ts +1 -4
  5. package/component/button/button/button.component.d.ts +1 -4
  6. package/component/checkbox/checkbox/checkbox.component.d.ts +1 -2
  7. package/component/date-picker/date-picker/date-picker.component.d.ts +68 -38
  8. package/component/date-picker/date-picker.module.d.ts +16 -19
  9. package/component/date-picker/day-select/day-select.component.d.ts +51 -0
  10. package/component/date-picker/model/date-picker-mode.enum.d.ts +5 -0
  11. package/component/date-picker/month-picker/month-picker.component.d.ts +50 -16
  12. package/component/date-picker/month-select/month-select.component.d.ts +40 -0
  13. package/component/date-picker/public-api.d.ts +4 -5
  14. package/component/date-picker/service/picker-touch.service.d.ts +12 -0
  15. package/component/date-picker/time-part-control/time-part-control.component.d.ts +26 -0
  16. package/component/date-picker/util/date-picker-util.d.ts +15 -0
  17. package/component/date-picker/year-select/year-select.component.d.ts +45 -0
  18. package/component/dropdown/dropdown-base.d.ts +1 -3
  19. package/component/filter/filter.module.d.ts +2 -1
  20. package/component/icon/icon-file/icon-file.component.d.ts +3 -9
  21. package/component/icon/icon.module.d.ts +5 -4
  22. package/component/icon/public-api.d.ts +0 -1
  23. package/component/input/input/input.component.d.ts +1 -3
  24. package/component/message/model/message.d.ts +0 -3
  25. package/component/public-api.d.ts +0 -2
  26. package/component/select/select/select.component.d.ts +1 -4
  27. package/component/select/select.module.d.ts +2 -1
  28. package/component/switch/switch/switch.component.d.ts +1 -4
  29. package/component/table/table-body/table-body.component.d.ts +1 -0
  30. package/component/table/table.module.d.ts +2 -1
  31. package/component/tree/tree.module.d.ts +2 -1
  32. package/directive/hint/hint.directive.d.ts +1 -3
  33. package/directive/only-number/only-number.directive.d.ts +2 -1
  34. package/directive/public-api.d.ts +1 -0
  35. package/directive/scrollable/public-api.d.ts +3 -0
  36. package/directive/scrollable/scrollable/scrollable.component.d.ts +32 -0
  37. package/directive/scrollable/scrollable.directive.d.ts +6 -0
  38. package/directive/scrollable/scrollable.module.d.ts +10 -0
  39. package/esm2020/component/accordion/accordion/accordion.component.mjs +2 -3
  40. package/esm2020/component/accordion/accordion-head/accordion-head.component.mjs +2 -3
  41. package/esm2020/component/accordion/accordion-item/accordion-item.component.mjs +3 -13
  42. package/esm2020/component/button/button/button.component.mjs +3 -18
  43. package/esm2020/component/checkbox/checkbox/checkbox.component.mjs +3 -6
  44. package/esm2020/component/date-picker/date-picker/date-picker.component.mjs +235 -141
  45. package/esm2020/component/date-picker/date-picker.module.mjs +45 -41
  46. package/esm2020/component/date-picker/day-select/day-select.component.mjs +184 -0
  47. package/esm2020/component/date-picker/model/date-picker-mode.enum.mjs +7 -0
  48. package/esm2020/component/date-picker/month-picker/month-picker.component.mjs +237 -33
  49. package/esm2020/component/date-picker/month-select/month-select.component.mjs +148 -0
  50. package/esm2020/component/date-picker/public-api.mjs +5 -6
  51. package/esm2020/component/date-picker/service/picker-touch.service.mjs +34 -0
  52. package/esm2020/component/date-picker/time-part-control/time-part-control.component.mjs +73 -0
  53. package/esm2020/component/date-picker/util/date-picker-util.mjs +142 -0
  54. package/esm2020/component/date-picker/year-select/year-select.component.mjs +189 -0
  55. package/esm2020/component/dropdown/dropdown/dropdown.component.mjs +2 -3
  56. package/esm2020/component/dropdown/dropdown-base.mjs +2 -6
  57. package/esm2020/component/dropdown/dropdown.directive.mjs +1 -1
  58. package/esm2020/component/expand-card/expand-card/expand-card.component.mjs +1 -1
  59. package/esm2020/component/expand-card/expand-item/expand-item.component.mjs +1 -1
  60. package/esm2020/component/expand-panel/expand-panel/expand-panel.component.mjs +1 -1
  61. package/esm2020/component/file-upload/file-upload-area/file-upload-area.component.mjs +1 -1
  62. package/esm2020/component/filter/date-filter/date-filter.component.mjs +1 -1
  63. package/esm2020/component/filter/filter.module.mjs +7 -3
  64. package/esm2020/component/filter/list-filter/list-filter.component.mjs +4 -3
  65. package/esm2020/component/filter/numeric-filter/numeric-filter.component.mjs +1 -1
  66. package/esm2020/component/filter/string-filter/string-filter.component.mjs +1 -1
  67. package/esm2020/component/icon/icon-file/icon-file.component.mjs +6 -20
  68. package/esm2020/component/icon/icon.module.mjs +6 -1
  69. package/esm2020/component/icon/public-api.mjs +1 -2
  70. package/esm2020/component/input/input/input.component.mjs +3 -6
  71. package/esm2020/component/input/input.module.mjs +1 -1
  72. package/esm2020/component/input/text-field/text-field.component.mjs +3 -3
  73. package/esm2020/component/message/message/message.component.mjs +3 -4
  74. package/esm2020/component/message/message-host/message-host.component.mjs +1 -1
  75. package/esm2020/component/message/model/message.mjs +1 -2
  76. package/esm2020/component/modal/dialog/dialog.component.mjs +1 -1
  77. package/esm2020/component/property-grid/property-grid/property-grid-item/property-grid-item.component.mjs +2 -2
  78. package/esm2020/component/public-api.mjs +1 -4
  79. package/esm2020/component/select/select/select.component.mjs +6 -9
  80. package/esm2020/component/select/select.module.mjs +7 -3
  81. package/esm2020/component/switch/switch/switch.component.mjs +7 -19
  82. package/esm2020/component/table/default/boolean-cell/boolean-cell.component.mjs +1 -1
  83. package/esm2020/component/table/default/date-cell/date-cell.component.mjs +1 -1
  84. package/esm2020/component/table/default/date-time-cell/date-time-cell.component.mjs +1 -1
  85. package/esm2020/component/table/default/default-head-cell/default-head-cell.component.mjs +1 -1
  86. package/esm2020/component/table/default/list-cell/list-cell.component.mjs +1 -1
  87. package/esm2020/component/table/default/string-cell/string-cell.component.mjs +1 -1
  88. package/esm2020/component/table/selection-cell/selection-cell.component.mjs +1 -1
  89. package/esm2020/component/table/selection-head-cell/selection-head-cell.component.mjs +1 -1
  90. package/esm2020/component/table/table-body/table-body.component.mjs +11 -6
  91. package/esm2020/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.mjs +1 -1
  92. package/esm2020/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.mjs +4 -3
  93. package/esm2020/component/table/table.module.mjs +7 -3
  94. package/esm2020/component/theme-switch/theme-switch/theme-switch.component.mjs +1 -1
  95. package/esm2020/component/tree/tree/tree.component.mjs +6 -4
  96. package/esm2020/component/tree/tree.module.mjs +5 -4
  97. package/esm2020/directive/hint/hint.directive.mjs +3 -6
  98. package/esm2020/directive/only-number/only-number.directive.mjs +12 -2
  99. package/esm2020/directive/public-api.mjs +2 -1
  100. package/esm2020/directive/scrollable/public-api.mjs +4 -0
  101. package/esm2020/directive/scrollable/scrollable/scrollable.component.mjs +96 -0
  102. package/esm2020/directive/scrollable/scrollable.directive.mjs +19 -0
  103. package/esm2020/directive/scrollable/scrollable.module.mjs +33 -0
  104. package/esm2020/locale/en.mjs +1 -3
  105. package/esm2020/locale/ru.mjs +1 -3
  106. package/esm2020/locale/teta-localisation.mjs +1 -1
  107. package/esm2020/observable/animation-frame.mjs +30 -0
  108. package/esm2020/observable/public-api.mjs +2 -1
  109. package/esm2020/pipe/prepend-zero/prepend-zero.module.mjs +18 -0
  110. package/esm2020/pipe/prepend-zero/prepend-zero.pipe.mjs +21 -0
  111. package/fesm2015/tetacom-ng-components.mjs +5483 -5181
  112. package/fesm2015/tetacom-ng-components.mjs.map +1 -1
  113. package/fesm2020/tetacom-ng-components.mjs +3333 -3025
  114. package/fesm2020/tetacom-ng-components.mjs.map +1 -1
  115. package/locale/teta-localisation.d.ts +0 -2
  116. package/observable/animation-frame.d.ts +4 -0
  117. package/observable/public-api.d.ts +1 -0
  118. package/package.json +2 -3
  119. package/pipe/prepend-zero/prepend-zero.module.d.ts +8 -0
  120. package/pipe/prepend-zero/prepend-zero.pipe.d.ts +7 -0
  121. package/style/accordion.scss +6 -28
  122. package/style/assembly-library.scss +1 -4
  123. package/style/assembly-presets.scss +1 -0
  124. package/style/button.scss +13 -16
  125. package/style/checkbox.scss +13 -26
  126. package/style/chips.scss +10 -10
  127. package/style/color.scss +36 -1
  128. package/style/datepicker.scss +24 -139
  129. package/style/drag.scss +1 -1
  130. package/style/dropdown.scss +4 -6
  131. package/style/hint.scss +5 -5
  132. package/style/icon.scss +1 -2
  133. package/style/input.scss +23 -32
  134. package/style/layout.scss +2 -6
  135. package/style/library.scss +17 -0
  136. package/style/list.scss +8 -11
  137. package/style/loader.scss +2 -2
  138. package/style/message.scss +7 -15
  139. package/style/modal.scss +2 -3
  140. package/style/navigation.scss +1 -4
  141. package/style/presets/color-presets.scss +160 -8
  142. package/style/presets/font-presets.scss +25 -26
  143. package/style/presets/shadow-presets.scss +16 -0
  144. package/style/progress.scss +3 -3
  145. package/style/radio.scss +7 -21
  146. package/style/resize-panel.scss +2 -2
  147. package/style/scroll.scss +21 -17
  148. package/style/select.scss +21 -26
  149. package/style/shadow.scss +20 -0
  150. package/style/sidebar.scss +1 -1
  151. package/style/switch.scss +10 -15
  152. package/style/table.scss +15 -17
  153. package/style/tabs.scss +11 -11
  154. package/style/toggle.scss +18 -20
  155. package/style/tokens/basedark.tokens.css +77 -0
  156. package/style/tokens/baselight.tokens.css +61 -0
  157. package/style/tokens/global.tokens.css +235 -0
  158. package/style/tokens/utility.tokens.css +1119 -0
  159. package/style/toolbar.scss +1 -1
  160. package/style/tooltip.scss +6 -8
  161. package/style/tree.scss +4 -4
  162. package/style/util/button-util.scss +58 -0
  163. package/common/model/view-type.model.d.ts +0 -1
  164. package/component/avatar/avatar/avatar.component.d.ts +0 -17
  165. package/component/avatar/avatar.module.d.ts +0 -9
  166. package/component/avatar/model/avatar-color.enum.d.ts +0 -20
  167. package/component/avatar/public-api.d.ts +0 -2
  168. package/component/date-picker/base-calendar.d.ts +0 -49
  169. package/component/date-picker/base-picker.d.ts +0 -60
  170. package/component/date-picker/date-picker/date-calendar/date-calendar.component.d.ts +0 -20
  171. package/component/date-picker/date-range/date-range.component.d.ts +0 -46
  172. package/component/date-picker/date-range/range-calendar/range-calendar.component.d.ts +0 -39
  173. package/component/date-picker/day-picker/day-item/day-item.component.d.ts +0 -9
  174. package/component/date-picker/day-picker/day-picker.component.d.ts +0 -30
  175. package/component/date-picker/model/from-to.model.d.ts +0 -4
  176. package/component/date-picker/model/min-max-date.model.d.ts +0 -4
  177. package/component/date-picker/year-picker/scroll-to-selected-year.directive.d.ts +0 -11
  178. package/component/date-picker/year-picker/year-picker.component.d.ts +0 -24
  179. package/component/divider/divider/divider.component.d.ts +0 -10
  180. package/component/divider/divider.module.d.ts +0 -8
  181. package/component/divider/public-api.d.ts +0 -2
  182. package/component/icon/icon-file/icon-file.module.d.ts +0 -9
  183. package/esm2020/common/model/view-type.model.mjs +0 -2
  184. package/esm2020/component/avatar/avatar/avatar.component.mjs +0 -57
  185. package/esm2020/component/avatar/avatar.module.mjs +0 -28
  186. package/esm2020/component/avatar/model/avatar-color.enum.mjs +0 -22
  187. package/esm2020/component/avatar/public-api.mjs +0 -3
  188. package/esm2020/component/date-picker/base-calendar.mjs +0 -99
  189. package/esm2020/component/date-picker/base-picker.mjs +0 -102
  190. package/esm2020/component/date-picker/date-picker/date-calendar/date-calendar.component.mjs +0 -49
  191. package/esm2020/component/date-picker/date-range/date-range.component.mjs +0 -211
  192. package/esm2020/component/date-picker/date-range/range-calendar/range-calendar.component.mjs +0 -108
  193. package/esm2020/component/date-picker/day-picker/day-item/day-item.component.mjs +0 -15
  194. package/esm2020/component/date-picker/day-picker/day-picker.component.mjs +0 -113
  195. package/esm2020/component/date-picker/model/from-to.model.mjs +0 -2
  196. package/esm2020/component/date-picker/model/min-max-date.model.mjs +0 -2
  197. package/esm2020/component/date-picker/year-picker/scroll-to-selected-year.directive.mjs +0 -26
  198. package/esm2020/component/date-picker/year-picker/year-picker.component.mjs +0 -48
  199. package/esm2020/component/divider/divider/divider.component.mjs +0 -18
  200. package/esm2020/component/divider/divider.module.mjs +0 -20
  201. package/esm2020/component/divider/public-api.mjs +0 -3
  202. package/esm2020/component/icon/icon-file/icon-file.module.mjs +0 -28
  203. package/style/badge.scss +0 -28
  204. package/style/bottombar.scss +0 -5
  205. package/style/divider.scss +0 -15
  206. package/style/presets/view-types.scss +0 -15
  207. package/style/tag.scss +0 -37
  208. package/style/util/scroll-util.scss +0 -4
@@ -11,9 +11,11 @@ import * as i2 from "../../../locale/teta-config.service";
11
11
  import * as i3 from "@angular/common";
12
12
  import * as i4 from "../../icon/icon/icon.component";
13
13
  import * as i5 from "@angular/cdk/scrolling";
14
- import * as i6 from "../cell/cell.component";
15
- import * as i7 from "../selection-cell/selection-cell.component";
16
- import * as i8 from "../../../pipe/number-pipe/number.pipe";
14
+ import * as i6 from "../../../directive/scrollable/scrollable.directive";
15
+ import * as i7 from "../../../directive/scrollable/scrollable/scrollable.component";
16
+ import * as i8 from "../cell/cell.component";
17
+ import * as i9 from "../selection-cell/selection-cell.component";
18
+ import * as i10 from "../../../pipe/number-pipe/number.pipe";
17
19
  export class TableBodyComponent {
18
20
  constructor(_svc, _elementRef, _config, _cdr) {
19
21
  this._svc = _svc;
@@ -126,6 +128,9 @@ export class TableBodyComponent {
126
128
  }
127
129
  return '';
128
130
  }
131
+ emitScroll(event) {
132
+ this.scroll.emit(event);
133
+ }
129
134
  // trackRow(index: number, row: T): any {
130
135
  // if (row['id']) {
131
136
  // return row['id'];
@@ -164,10 +169,10 @@ export class TableBodyComponent {
164
169
  }
165
170
  }
166
171
  TableBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TableBodyComponent, deps: [{ token: i1.TableService }, { token: i0.ElementRef }, { token: i2.TetaConfigService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
167
- TableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TableBodyComponent, selector: "teta-table-body", inputs: { virtual: "virtual", activeRow: "activeRow", selectedRows: "selectedRows", additionalComponent: "additionalComponent", aggregate: "aggregate", selectType: "selectType", rowClass: "rowClass", trackRow: "trackRow", trackColumns: "trackColumns" }, outputs: { scroll: "scroll" }, host: { properties: { "class.table-body": "this.tableBodyClass" } }, viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: "<cdk-virtual-scroll-viewport *ngIf=\"virtual && data.length > 0; else nonVirtual\"\n class=\"table-body-container\"\n (scroll)=\"scroll.emit($event)\"\n [itemSize]=\"28\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n</cdk-virtual-scroll-viewport>\n<ng-template #nonVirtual>\n <div class=\"table-body-container\" (scroll)=\"scroll.emit($event)\">\n <div class=\"column column_auto\"\n style=\"position: absolute; top:0; bottom:16px;left:0;right:0;\"\n *ngIf=\"!data?.length\">\n <ng-content></ng-content>\n </div>\n <ng-container *ngTemplateOutlet=\"emptyRow;\"></ng-container>\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n (click)=\"setActiveRow(row, $event)\"\n [attr.data-row]=\"rowIndex\"\n [class.table-row_odd]=\"rowIndex % 2 === 1\"\n [ngClass]=\"rowClass ? rowClass(row, rowIndex) : ''\"\n [class.table-row_selected]=\"selectedRows && selectedRows.indexOf(row) >= 0\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n [style.zIndex]=\"row === activeRow ? 2 : 1\">\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length\"\n [row]=\"row\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\"\n [row]=\"row\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <ng-container *ngIf=\"locale | async as loc\">\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\">\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component aggregate-cell\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component aggregate-cell\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n </ng-container>\n</ng-template>\n<ng-template #emptyRow>\n <div class=\"empty-table-row\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "directive", type: i5.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i5.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i5.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i6.CellComponent, selector: "teta-cell", inputs: ["column", "filterOptions", "dict", "row"] }, { kind: "component", type: i7.SelectionCellComponent, selector: "teta-selection-cell", inputs: ["row"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.NumberPipe, name: "tetaNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
172
+ TableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TableBodyComponent, selector: "teta-table-body", inputs: { virtual: "virtual", activeRow: "activeRow", selectedRows: "selectedRows", additionalComponent: "additionalComponent", aggregate: "aggregate", selectType: "selectType", rowClass: "rowClass", trackRow: "trackRow", trackColumns: "trackColumns" }, outputs: { scroll: "scroll" }, host: { properties: { "class.table-body": "this.tableBodyClass" } }, viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: "<teta-scrollable class=\"table-body-container\"\n style=\"padding-bottom: 12px\"\n showScrollbars=\"true\"\n *ngIf=\"virtual && data.length > 0; else nonVirtual\">\n <cdk-virtual-scroll-viewport tetaScrollable\n class=\"table-body-container\"\n (scroll)=\"emitScroll($event)\"\n [itemSize]=\"28\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n</teta-scrollable>\n<ng-template #nonVirtual>\n <teta-scrollable class=\"table-body-container\"\n style=\"padding-bottom: 12px\"\n direction=\"column\"\n showScrollbars=\"true\"\n (scroll)=\"emitScroll($event)\">\n <div class=\"table-body-container\">\n <div class=\"column column_auto\"\n style=\"position: absolute; top:0; bottom:16px;left:0;right:0;\"\n *ngIf=\"!data?.length\">\n <ng-content></ng-content>\n </div>\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"emptyRow;\"></ng-container>\n </div>\n </teta-scrollable>\n</ng-template>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n (click)=\"setActiveRow(row, $event)\"\n [attr.data-row]=\"rowIndex\"\n [class.table-row_odd]=\"rowIndex % 2 === 1\"\n [ngClass]=\"rowClass ? rowClass(row, rowIndex) : ''\"\n [class.table-row_selected]=\"selectedRows && selectedRows.indexOf(row) >= 0\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n [style.zIndex]=\"row === activeRow ? 2 : 1\">\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length\"\n [row]=\"row\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\"\n [row]=\"row\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <ng-container *ngIf=\"locale | async as loc\">\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\">\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component aggregate-cell\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component aggregate-cell\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n </ng-container>\n</ng-template>\n<ng-template #emptyRow>\n <div class=\"empty-table-row\"\n style=\"height: 0.1px\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "directive", type: i5.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i5.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i5.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i6.ScrollableDirective, selector: "[tetaScrollable]" }, { kind: "component", type: i7.ScrollableComponent, selector: "teta-scrollable", inputs: ["direction", "showScrollbars", "contentClass"], outputs: ["scroll"] }, { kind: "component", type: i8.CellComponent, selector: "teta-cell", inputs: ["column", "filterOptions", "dict", "row"] }, { kind: "component", type: i9.SelectionCellComponent, selector: "teta-selection-cell", inputs: ["row"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.NumberPipe, name: "tetaNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
168
173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TableBodyComponent, decorators: [{
169
174
  type: Component,
170
- args: [{ selector: 'teta-table-body', changeDetection: ChangeDetectionStrategy.OnPush, template: "<cdk-virtual-scroll-viewport *ngIf=\"virtual && data.length > 0; else nonVirtual\"\n class=\"table-body-container\"\n (scroll)=\"scroll.emit($event)\"\n [itemSize]=\"28\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n</cdk-virtual-scroll-viewport>\n<ng-template #nonVirtual>\n <div class=\"table-body-container\" (scroll)=\"scroll.emit($event)\">\n <div class=\"column column_auto\"\n style=\"position: absolute; top:0; bottom:16px;left:0;right:0;\"\n *ngIf=\"!data?.length\">\n <ng-content></ng-content>\n </div>\n <ng-container *ngTemplateOutlet=\"emptyRow;\"></ng-container>\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n (click)=\"setActiveRow(row, $event)\"\n [attr.data-row]=\"rowIndex\"\n [class.table-row_odd]=\"rowIndex % 2 === 1\"\n [ngClass]=\"rowClass ? rowClass(row, rowIndex) : ''\"\n [class.table-row_selected]=\"selectedRows && selectedRows.indexOf(row) >= 0\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n [style.zIndex]=\"row === activeRow ? 2 : 1\">\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length\"\n [row]=\"row\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\"\n [row]=\"row\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <ng-container *ngIf=\"locale | async as loc\">\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\">\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component aggregate-cell\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component aggregate-cell\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n </ng-container>\n</ng-template>\n<ng-template #emptyRow>\n <div class=\"empty-table-row\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n </div>\n</ng-template>\n" }]
175
+ args: [{ selector: 'teta-table-body', changeDetection: ChangeDetectionStrategy.OnPush, template: "<teta-scrollable class=\"table-body-container\"\n style=\"padding-bottom: 12px\"\n showScrollbars=\"true\"\n *ngIf=\"virtual && data.length > 0; else nonVirtual\">\n <cdk-virtual-scroll-viewport tetaScrollable\n class=\"table-body-container\"\n (scroll)=\"emitScroll($event)\"\n [itemSize]=\"28\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n</teta-scrollable>\n<ng-template #nonVirtual>\n <teta-scrollable class=\"table-body-container\"\n style=\"padding-bottom: 12px\"\n direction=\"column\"\n showScrollbars=\"true\"\n (scroll)=\"emitScroll($event)\">\n <div class=\"table-body-container\">\n <div class=\"column column_auto\"\n style=\"position: absolute; top:0; bottom:16px;left:0;right:0;\"\n *ngIf=\"!data?.length\">\n <ng-content></ng-content>\n </div>\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"emptyRow;\"></ng-container>\n </div>\n </teta-scrollable>\n</ng-template>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n (click)=\"setActiveRow(row, $event)\"\n [attr.data-row]=\"rowIndex\"\n [class.table-row_odd]=\"rowIndex % 2 === 1\"\n [ngClass]=\"rowClass ? rowClass(row, rowIndex) : ''\"\n [class.table-row_selected]=\"selectedRows && selectedRows.indexOf(row) >= 0\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n [style.zIndex]=\"row === activeRow ? 2 : 1\">\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length\"\n [row]=\"row\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\"\n [row]=\"row\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <ng-container *ngIf=\"locale | async as loc\">\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\">\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component aggregate-cell\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component aggregate-cell\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n </ng-container>\n</ng-template>\n<ng-template #emptyRow>\n <div class=\"empty-table-row\"\n style=\"height: 0.1px\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n </div>\n</ng-template>\n" }]
171
176
  }], ctorParameters: function () { return [{ type: i1.TableService }, { type: i0.ElementRef }, { type: i2.TetaConfigService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { virtual: [{
172
177
  type: Input
173
178
  }], activeRow: [{
@@ -195,4 +200,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
195
200
  }], scroll: [{
196
201
  type: Output
197
202
  }] } });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL3RhYmxlLWJvZHkvdGFibGUtYm9keS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL3RhYmxlLWJvZHkvdGFibGUtYm9keS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFBYyxZQUFZLEVBQ25DLFdBQVcsRUFDWCxLQUFLLEVBRUcsTUFBTSxFQUVkLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxhQUFhLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRzFELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7OztBQVVoRSxNQUFNLE9BQU8sa0JBQWtCO0lBc0Q3QixZQUFvQixJQUFxQixFQUNyQixXQUF1QixFQUN2QixPQUEwQixFQUMxQixJQUF1QjtRQUh2QixTQUFJLEdBQUosSUFBSSxDQUFpQjtRQUNyQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQUMxQixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQXREbEMsaUJBQVksR0FBUSxFQUFFLENBQUM7UUFTa0IsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDOUQsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFVN0MsV0FB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O1lBQzNDLENBQUMsQ0FBQyxLQUFLO1lBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFDekIsSUFBSSxDQUNMLENBQUM7SUFDSixDQUFDOzsrR0F2TVUsa0JBQWtCO21HQUFsQixrQkFBa0IsbWNBVWxCLHdCQUF3QixnREN6Q3JDLGsyTEF1SUE7MkZEeEdhLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTTs0TEFHdEMsT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNnRCxRQUFRO3NCQUE3RCxTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFFRixjQUFjO3NCQUEvRCxXQUFXO3VCQUFDLGtCQUFrQjtnQkFDckIsTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCwgT3V0cHV0LFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUYWJsZUNvbHVtbn0gZnJvbSAnLi4vY29udHJhY3QvdGFibGUtY29sdW1uJztcbmltcG9ydCB7VGFibGVTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL3RhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHtEZXRhaWxDb21wb25lbnRCYXNlfSBmcm9tICcuLi9iYXNlL2RldGFpbC1jb21wb25lbnQtYmFzZSc7XG5pbXBvcnQge3Rha2VXaGlsZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtTZWxlY3RUeXBlfSBmcm9tICcuLi9lbnVtL3NlbGVjdC10eXBlLmVudW0nO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7QXJyYXlVdGlsfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbC9hcnJheS11dGlsJztcbmltcG9ydCB7SURpY3Rpb25hcnl9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLWRpY3Rpb25hcnknO1xuaW1wb3J0IHtJSWROYW1lfSBmcm9tICcuLi8uLi8uLi9jb21tb24vY29udHJhY3QvaS1pZC1uYW1lJztcbmltcG9ydCB7QWdncmVnYXRpb25UeXBlfSBmcm9tICcuLi9lbnVtL2FnZ3JlZ2F0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQge0Nka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQge1RldGFMb2NhbGlzYXRpb259IGZyb20gJy4uLy4uLy4uL2xvY2FsZS90ZXRhLWxvY2FsaXNhdGlvbic7XG5pbXBvcnQge1RldGFDb25maWdTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9sb2NhbGUvdGV0YS1jb25maWcuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtdGFibGUtYm9keScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1ib2R5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtYm9keS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVCb2R5Q29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSB2aXJ0dWFsOiBib29sZWFuO1xuICBASW5wdXQoKSBhY3RpdmVSb3c6IFQ7XG4gIEBJbnB1dCgpIHNlbGVjdGVkUm93czogVFtdID0gW107XG4gIEBJbnB1dCgpIGFkZGl0aW9uYWxDb21wb25lbnQ6IFR5cGU8RGV0YWlsQ29tcG9uZW50QmFzZTxUPj47XG4gIEBJbnB1dCgpIGFnZ3JlZ2F0ZTogYm9vbGVhbjtcbiAgQElucHV0KCkgc2VsZWN0VHlwZTogU2VsZWN0VHlwZTtcbiAgQElucHV0KCkgcm93Q2xhc3M6IChyb3c6IFQsIGluZGV4PzogbnVtYmVyKSA9PiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRyYWNrUm93OiAoaW5kZXg6IG51bWJlciwgcm93OiBUKSA9PiBhbnk7XG4gIEBJbnB1dCgpIHRyYWNrQ29sdW1uczogKGluZGV4OiBudW1iZXIsIGNvbHVtbjogVGFibGVDb2x1bW4pID0+IGFueTtcbiAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIHtzdGF0aWM6IGZhbHNlfSkgdmlld3BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRhYmxlLWJvZHknKSBwcml2YXRlIHJlYWRvbmx5IHRhYmxlQm9keUNsYXNzID0gdHJ1ZTtcbiAgQE91dHB1dCgpIHNjcm9sbCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIHNldCBkYXRhKGRhdGE6IFRbXSkge1xuICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICB9XG5cbiAgZ2V0IGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cblxuICBkaWN0OiBJRGljdGlvbmFyeTxJSWROYW1lPGFueT5bXT47XG4gIGxvY2tlZDogVGFibGVDb2x1bW5bXSA9IFtdO1xuICB1bmxvY2tlZDogVGFibGVDb2x1bW5bXSA9IFtdO1xuICBzZWxlY3RUeXBlRW51bSA9IFNlbGVjdFR5cGU7XG4gIGxvY2tlZEZsZXg6IG51bWJlcjtcbiAgbG9ja2VkV2lkdGg6IG51bWJlcjtcbiAgdG90YWxGbGV4OiBudW1iZXI7XG4gIHRvdGFsV2lkdGg6IG51bWJlcjtcblxuICBwcml2YXRlIF9jb2x1bW5zOiBUYWJsZUNvbHVtbltdID0gW107XG4gIHByaXZhdGUgX2FsaXZlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfZGF0YTogVFtdO1xuICBwcml2YXRlIF9oaWRkZW5Db2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIF9vYnM6IFJlc2l6ZU9ic2VydmVyO1xuXG4gIHNldCBjb2x1bW5zKGNvbHVtbnM6IFRhYmxlQ29sdW1uW10pIHtcbiAgICB0aGlzLl9jb2x1bW5zID0gY29sdW1ucztcbiAgICB0aGlzLmxvY2tlZCA9IHRoaXMuX2NvbHVtbnM/LmZpbHRlcigoXykgPT4gXy5sb2NrZWQgPT09IHRydWUpO1xuICAgIHRoaXMudW5sb2NrZWQgPSB0aGlzLl9jb2x1bW5zPy5maWx0ZXIoKF8pID0+IF8ubG9ja2VkID09PSBmYWxzZSk7XG4gICAgY29uc3Qgc3RhcnRXaWR0aCA9IHRoaXMuc2VsZWN0VHlwZSA9PT0gU2VsZWN0VHlwZS5jaGVja0JveCA/IDI4IDogMDtcbiAgICB0aGlzLmxvY2tlZEZsZXggPSB0aGlzLmxvY2tlZC5yZWR1Y2UoKHByZXY6IG51bWJlciwgY3VycjogVGFibGVDb2x1bW4pID0+IHByZXYgKyBjdXJyLmZsZXgsIDApO1xuICAgIHRoaXMubG9ja2VkV2lkdGggPSB0aGlzLmxvY2tlZC5yZWR1Y2UoKHByZXY6IG51bWJlciwgY3VycjogVGFibGVDb2x1bW4pID0+IHByZXYgKyBjdXJyLndpZHRoLCBzdGFydFdpZHRoKTtcbiAgICB0aGlzLnRvdGFsRmxleCA9IHRoaXMuX2NvbHVtbnMucmVkdWNlKChwcmV2OiBudW1iZXIsIGN1cnI6IFRhYmxlQ29sdW1uKSA9PiBwcmV2ICsgY3Vyci5mbGV4LCAwKTtcbiAgICB0aGlzLnRvdGFsV2lkdGggPSB0aGlzLl9jb2x1bW5zLnJlZHVjZSgocHJldjogbnVtYmVyLCBjdXJyOiBUYWJsZUNvbHVtbikgPT4gcHJldiArIGN1cnIud2lkdGgsIHN0YXJ0V2lkdGgpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbnMoKTogVGFibGVDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XG4gIH1cblxuICBsb2NhbGU6IE9ic2VydmFibGU8VGV0YUxvY2FsaXNhdGlvbj47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc3ZjOiBUYWJsZVNlcnZpY2U8VD4sXG4gICAgICAgICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NvbmZpZzogVGV0YUNvbmZpZ1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcblxuICB9XG5cbiAgc2V0QWN0aXZlUm93KHJvdzogVCwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIWV2ZW50LnNoaWZ0S2V5ICYmICFldmVudC5jdHJsS2V5KSB7XG4gICAgICB0aGlzLl9zdmMuc2V0QWN0aXZlUm93KHJvdyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLl9jb25maWcubG9jYWxlO1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3N2Yy5jb2x1bW5zLCB0aGlzLl9zdmMuaGlkZGVuQ29sdW1uc10pXG4gICAgICAucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlczogW1RhYmxlQ29sdW1uW10sIHN0cmluZ1tdXSkgPT4ge1xuICAgICAgICBjb25zdCBbY29sdW1ucywgaGlkZGVuQ29sdW1uc10gPSB2YWx1ZXM7XG4gICAgICAgIHRoaXMuX2hpZGRlbkNvbHVtbnMgPSBoaWRkZW5Db2x1bW5zO1xuICAgICAgICB0aGlzLmNvbHVtbnMgPSBBcnJheVV0aWwuZmxhdHRlbihjb2x1bW5zLCAnY29sdW1ucycsIHRydWUpLmZpbHRlcihcbiAgICAgICAgICAoXykgPT4gdGhpcy5faGlkZGVuQ29sdW1ucy5pbmRleE9mKF8ubmFtZSkgPCAwXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fc3ZjLmRpc3BsYXlEYXRhLnBpcGUoXG4gICAgICB0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKVxuICAgICkuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICB0aGlzLmRhdGEgPSBfO1xuICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy52aWV3cG9ydD8uY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3N2Yy5kaWN0LnBpcGUodGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSkpLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgdGhpcy5kaWN0ID0gXztcbiAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3N2Yy5zY3JvbGxJbmRleFxuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKGluZGV4KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnZpZXdwb3J0KSB7XG4gICAgICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb0luZGV4KGluZGV4LCAnYXV0bycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGAudGFibGUtcm93W2RhdGEtcm93PVwiJHtpbmRleH1cIl1gKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICByb3c/LnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9zdmMuYWN0aXZlUm93XG4gICAgICAucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKF8pID0+IHtcbiAgICAgICAgdGhpcy5hY3RpdmVSb3cgPSBfO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB0aGlzLmFkZFJlc2l6ZU9ic2VydmVyKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMucmVtb3ZlUmVzaXplT2JzZXJ2ZXIoKVxuICB9XG5cbiAgZ2V0QWdncmVnYXRlVmFsdWUoY29sdW1uOiBUYWJsZUNvbHVtbik6IG51bWJlciB7XG4gICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgPT09IEFnZ3JlZ2F0aW9uVHlwZS5zdW0pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFN1bShjb2x1bW4ubmFtZSk7XG4gICAgfVxuICAgIGlmIChjb2x1bW4uYWdncmVnYXRlID09PSBBZ2dyZWdhdGlvblR5cGUuYXZnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRTdW0oY29sdW1uLm5hbWUpIC8gdGhpcy5kYXRhLmxlbmd0aDtcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgPT09IEFnZ3JlZ2F0aW9uVHlwZS5taW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldE1pbihjb2x1bW4ubmFtZSk7XG4gICAgfVxuICAgIGlmIChjb2x1bW4uYWdncmVnYXRlID09PSBBZ2dyZWdhdGlvblR5cGUubWF4KSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRNYXgoY29sdW1uLm5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldEFnZ3JlZ2F0ZVRleHQoY29sdW1uOiBUYWJsZUNvbHVtbik6IHN0cmluZyB7XG4gICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgPT09IEFnZ3JlZ2F0aW9uVHlwZS5zdW0pIHtcbiAgICAgIHJldHVybiAnc3VtJztcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgPT09IEFnZ3JlZ2F0aW9uVHlwZS5hdmcpIHtcbiAgICAgIHJldHVybiAnYXZnJztcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgPT09IEFnZ3JlZ2F0aW9uVHlwZS5taW4pIHtcbiAgICAgIHJldHVybiAnbWluJztcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgPT09IEFnZ3JlZ2F0aW9uVHlwZS5tYXgpIHtcbiAgICAgIHJldHVybiAnbWF4JztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLy8gdHJhY2tSb3coaW5kZXg6IG51bWJlciwgcm93OiBUKTogYW55IHtcbiAgLy8gICBpZiAocm93WydpZCddKSB7XG4gIC8vICAgICByZXR1cm4gcm93WydpZCddO1xuICAvLyAgIH1cbiAgLy8gICByZXR1cm4gaW5kZXg7XG4gIC8vIH1cbiAgLy9cbiAgLy8gdHJhY2tDb2x1bW5zKGluZGV4OiBudW1iZXIsIGNvbHVtbjogVGFibGVDb2x1bW4pOiBhbnkge1xuICAvLyAgIHJldHVybiBjb2x1bW4ubmFtZTtcbiAgLy8gfVxuXG4gIHByaXZhdGUgYWRkUmVzaXplT2JzZXJ2ZXIoKSB7XG4gICAgdGhpcy5fb2JzID0gbmV3IFJlc2l6ZU9ic2VydmVyKChfKSA9PiB7XG4gICAgICB0aGlzLnZpZXdwb3J0Py5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fb2JzLm9ic2VydmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUmVzaXplT2JzZXJ2ZXIoKSB7XG4gICAgdGhpcy5fb2JzLnVub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuX29icy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIGdldFN1bShjb2x1bW5OYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YT8ucmVkdWNlKChhY2N1bSwgY3VycmVudCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gcGFyc2VGbG9hdChjdXJyZW50W2NvbHVtbk5hbWVdKTtcbiAgICAgIHJldHVybiBhY2N1bSArIChpc05hTih2YWwpID8gMCA6IHZhbCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIGdldE1pbihjb2x1bW5OYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YT8ucmVkdWNlKFxuICAgICAgKGFjY3VtLCBjdXJyZW50KSA9PlxuICAgICAgICBhY2N1bSAhPSBudWxsICYmIGFjY3VtIDw9IGN1cnJlbnRbY29sdW1uTmFtZV1cbiAgICAgICAgICA/IGFjY3VtXG4gICAgICAgICAgOiBjdXJyZW50W2NvbHVtbk5hbWVdLFxuICAgICAgbnVsbFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldE1heChjb2x1bW5OYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YT8ucmVkdWNlKFxuICAgICAgKGFjY3VtLCBjdXJyZW50KSA9PlxuICAgICAgICBhY2N1bSAhPSBudWxsICYmIGFjY3VtID49IGN1cnJlbnRbY29sdW1uTmFtZV1cbiAgICAgICAgICA/IGFjY3VtXG4gICAgICAgICAgOiBjdXJyZW50W2NvbHVtbk5hbWVdLFxuICAgICAgbnVsbFxuICAgICk7XG4gIH1cbn1cbiIsIjxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgKm5nSWY9XCJ2aXJ0dWFsICYmIGRhdGEubGVuZ3RoID4gMDsgZWxzZSBub25WaXJ0dWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1ib2R5LWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY3JvbGwpPVwic2Nyb2xsLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtU2l6ZV09XCIyOFwiPlxuICA8bmctY29udGFpbmVyICpjZGtWaXJ0dWFsRm9yPVwibGV0IHJvdyBvZiBkYXRhO3RlbXBsYXRlQ2FjaGVTaXplOiAwOyBsZXQgcm93SW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tSb3c7XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlUZW1wbGF0ZTsgY29udGV4dDoge3Jvdzogcm93LCByb3dJbmRleDogcm93SW5kZXh9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG48bmctdGVtcGxhdGUgI25vblZpcnR1YWw+XG4gIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5LWNvbnRhaW5lclwiIChzY3JvbGwpPVwic2Nyb2xsLmVtaXQoJGV2ZW50KVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gY29sdW1uX2F1dG9cIlxuICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDowOyBib3R0b206MTZweDtsZWZ0OjA7cmlnaHQ6MDtcIlxuICAgICAgICAgKm5nSWY9XCIhZGF0YT8ubGVuZ3RoXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5Um93O1wiPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiBkYXRhOyBsZXQgcm93SW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tSb3c7XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYm9keVRlbXBsYXRlOyBjb250ZXh0OiB7cm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWdncmVnYXRlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWdnVGVtcGxhdGU7XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNib2R5VGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIlxuICAgICAgIChjbGljayk9XCJzZXRBY3RpdmVSb3cocm93LCAkZXZlbnQpXCJcbiAgICAgICBbYXR0ci5kYXRhLXJvd109XCJyb3dJbmRleFwiXG4gICAgICAgW2NsYXNzLnRhYmxlLXJvd19vZGRdPVwicm93SW5kZXggJSAyID09PSAxXCJcbiAgICAgICBbbmdDbGFzc109XCJyb3dDbGFzcyA/IHJvd0NsYXNzKHJvdywgcm93SW5kZXgpIDogJydcIlxuICAgICAgIFtjbGFzcy50YWJsZS1yb3dfc2VsZWN0ZWRdPVwic2VsZWN0ZWRSb3dzICYmIHNlbGVjdGVkUm93cy5pbmRleE9mKHJvdykgPj0gMFwiXG4gICAgICAgW3N0eWxlLmZsZXgtZ3Jvd109XCJ0b3RhbEZsZXhcIlxuICAgICAgIFtzdHlsZS5mbGV4LWJhc2lzLnB4XT1cInRvdGFsV2lkdGhcIlxuICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwidG90YWxXaWR0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dfbG9ja2VkXCJcbiAgICAgICAgICpuZ0lmPVwibG9ja2VkLmxlbmd0aCA+IDBcIlxuICAgICAgICAgW3N0eWxlLmZsZXgtZ3Jvd109XCJsb2NrZWRGbGV4XCJcbiAgICAgICAgIFtzdHlsZS5mbGV4LWJhc2lzLnB4XT1cImxvY2tlZFdpZHRoXCJcbiAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwibG9ja2VkV2lkdGhcIlxuICAgICAgICAgW3N0eWxlLnpJbmRleF09XCJyb3cgPT09IGFjdGl2ZVJvdyA/IDIgOiAxXCI+XG4gICAgICA8dGV0YS1zZWxlY3Rpb24tY2VsbCAqbmdJZj1cInNlbGVjdFR5cGUgPT09IHNlbGVjdFR5cGVFbnVtLmNoZWNrQm94ICYmIGxvY2tlZC5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMjhweDtcIj48L3RldGEtc2VsZWN0aW9uLWNlbGw+XG4gICAgICA8dGV0YS1jZWxsXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbG9ja2VkOyBsZXQgY29sSW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tDb2x1bW5zO1wiXG4gICAgICAgIFthdHRyLmRhdGEtcm93XT1cInJvd0luZGV4XCJcbiAgICAgICAgW2F0dHIuZGF0YS1jb2x1bW5dPVwiY29sdW1uLm5hbWVcIlxuICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgIFtmaWx0ZXJPcHRpb25zXT1cImRpY3Q/ZGljdFtjb2x1bW4ubmFtZV06W11cIlxuICAgICAgICBbZGljdF09XCJkaWN0XCJcbiAgICAgICAgW3Jvd109XCJyb3dcIlxuICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uY2VsbENsYXNzXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiMFwiXG4gICAgICAgIFtzdHlsZS5mbGV4LWdyb3ddPVwiY29sdW1uLmZsZXhcIlxuICAgICAgICBbc3R5bGUuZmxleC1iYXNpcy5weF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgPjwvdGV0YS1jZWxsPlxuICAgIDwvZGl2PlxuICAgIDx0ZXRhLXNlbGVjdGlvbi1jZWxsICpuZ0lmPVwic2VsZWN0VHlwZSA9PT0gc2VsZWN0VHlwZUVudW0uY2hlY2tCb3ggJiYgbG9ja2VkLmxlbmd0aCA8IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAyOHB4O1wiPjwvdGV0YS1zZWxlY3Rpb24tY2VsbD5cbiAgICA8dGV0YS1jZWxsXG4gICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHVubG9ja2VkOyBsZXQgY29sSW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tDb2x1bW5zO1wiXG4gICAgICBbYXR0ci5kYXRhLXJvd109XCJyb3dJbmRleFwiXG4gICAgICBbYXR0ci5kYXRhLWNvbHVtbl09XCJjb2x1bW4ubmFtZVwiXG4gICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICBbZmlsdGVyT3B0aW9uc109XCJkaWN0P2RpY3RbY29sdW1uLm5hbWVdOltdXCJcbiAgICAgIFtkaWN0XT1cImRpY3RcIlxuICAgICAgW3Jvd109XCJyb3dcIlxuICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLmNlbGxDbGFzc1wiXG4gICAgICBbYXR0ci50YWJpbmRleF09XCIwXCJcbiAgICAgIFtzdHlsZS5mbGV4LWdyb3ddPVwiY29sdW1uLmZsZXhcIlxuICAgICAgW3N0eWxlLmZsZXgtYmFzaXMucHhdPVwiY29sdW1uLndpZHRoXCJcbiAgICA+PC90ZXRhLWNlbGw+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNhZ2dUZW1wbGF0ZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvY2FsZSB8IGFzeW5jIGFzIGxvY1wiPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIlxuICAgICAgICAgKm5nSWY9XCJhZ2dyZWdhdGVcIlxuICAgICAgICAgW2NsYXNzLnRhYmxlLXJvd192aXJ0dWFsXT1cInZpcnR1YWxcIlxuICAgICAgICAgW3N0eWxlLmZsZXgtZ3Jvd109XCJ0b3RhbEZsZXhcIlxuICAgICAgICAgW3N0eWxlLmZsZXgtYmFzaXMucHhdPVwidG90YWxXaWR0aFwiXG4gICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cInRvdGFsV2lkdGhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dfbG9ja2VkXCJcbiAgICAgICAgICAgKm5nSWY9XCJsb2NrZWQubGVuZ3RoID4gMFwiXG4gICAgICAgICAgIFtzdHlsZS5mbGV4LWdyb3ddPVwibG9ja2VkRmxleFwiXG4gICAgICAgICAgIFtzdHlsZS5mbGV4LWJhc2lzLnB4XT1cImxvY2tlZFdpZHRoXCJcbiAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJsb2NrZWRXaWR0aFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2VsbCBhbGlnbi1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMjhweDtcIlxuICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0VHlwZSA9PT0gc2VsZWN0VHlwZUVudW0uY2hlY2tCb3ggJiYgbG9ja2VkLmxlbmd0aCA8IDFcIj5cbiAgICAgICAgICA8dGV0YS1pY29uIFtuYW1lXT1cIidzdW1Db2xvcidcIj48L3RldGEtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjZWxsIGNlbGwtY29tcG9uZW50IGFnZ3JlZ2F0ZS1jZWxsXCJcbiAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGxvY2tlZDsgbGV0IGNvbEluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQ29sdW1ucztcIlxuICAgICAgICAgICAgIFthdHRyLmRhdGEtY29sdW1uXT1cImNvbHVtbi5uYW1lXCJcbiAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uY2VsbENsYXNzXCJcbiAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgICBbc3R5bGUuZmxleC1ncm93XT1cImNvbHVtbi5mbGV4XCJcbiAgICAgICAgICAgICBbc3R5bGUuZmxleC1iYXNpcy5weF09XCJjb2x1bW4ud2lkdGhcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjZWxsLXRleHQgY2VsbC10ZXh0X251bWVyaWMgZm9udC10aXRsZS0zXCI+XG4gICAgICAgICAge3tsb2NbZ2V0QWdncmVnYXRlVGV4dChjb2x1bW4pXX19OlxuICAgICAgICAgIHt7Z2V0QWdncmVnYXRlVmFsdWUoY29sdW1uKSB8IHRldGFOdW1iZXIgOiAyfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNlbGwgYWxpZ24tY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAyOHB4O1wiXG4gICAgICAgICAgICpuZ0lmPVwic2VsZWN0VHlwZSA9PT0gc2VsZWN0VHlwZUVudW0uY2hlY2tCb3ggJiYgbG9ja2VkLmxlbmd0aCA8IDFcIj5cbiAgICAgICAgPHRldGEtaWNvbiBbbmFtZV09XCInc3VtQ29sb3InXCI+PC90ZXRhLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjZWxsIGNlbGwtY29tcG9uZW50IGFnZ3JlZ2F0ZS1jZWxsXCJcbiAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB1bmxvY2tlZDsgbGV0IGNvbEluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQ29sdW1ucztcIlxuICAgICAgICAgICBbYXR0ci5kYXRhLWNvbHVtbl09XCJjb2x1bW4ubmFtZVwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5jZWxsQ2xhc3NcIlxuICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgW3N0eWxlLmZsZXgtZ3Jvd109XCJjb2x1bW4uZmxleFwiXG4gICAgICAgICAgIFtzdHlsZS5mbGV4LWJhc2lzLnB4XT1cImNvbHVtbi53aWR0aFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjZWxsLXRleHQgY2VsbC10ZXh0X251bWVyaWMgZm9udC10aXRsZS0zXCI+XG4gICAgICAgIHt7bG9jW2dldEFnZ3JlZ2F0ZVRleHQoY29sdW1uKV19fTpcbiAgICAgICAge3tnZXRBZ2dyZWdhdGVWYWx1ZShjb2x1bW4pIHwgdGV0YU51bWJlciA6IDJ9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlSb3c+XG4gIDxkaXYgY2xhc3M9XCJlbXB0eS10YWJsZS1yb3dcIlxuICAgICAgIFtzdHlsZS5mbGV4LWdyb3ddPVwidG90YWxGbGV4XCJcbiAgICAgICBbc3R5bGUuZmxleC1iYXNpcy5weF09XCJ0b3RhbFdpZHRoXCJcbiAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cInRvdGFsV2lkdGhcIj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL3RhYmxlLWJvZHkvdGFibGUtYm9keS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL3RhYmxlLWJvZHkvdGFibGUtYm9keS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFBYyxZQUFZLEVBQ25DLFdBQVcsRUFDWCxLQUFLLEVBRUcsTUFBTSxFQUVkLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxhQUFhLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRzFELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBVWhFLE1BQU0sT0FBTyxrQkFBa0I7SUFzRDdCLFlBQW9CLElBQXFCLEVBQ3JCLFdBQXVCLEVBQ3ZCLE9BQTBCLEVBQzFCLElBQXVCO1FBSHZCLFNBQUksR0FBSixJQUFJLENBQWlCO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBQzFCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBdERsQyxpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQVNrQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUM5RCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQVU3QyxX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QUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQ2pCLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDM0MsQ0FBQyxDQUFDLEtBQUs7WUFDUCxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUN6QixJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7OytHQTNNVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixtY0FVbEIsd0JBQXdCLGdEQ3pDckMsbzFNQW1KQTsyRkRwSGEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNOzRMQUd0QyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ2dELFFBQVE7c0JBQTdELFNBQVM7dUJBQUMsd0JBQXdCLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQUVGLGNBQWM7c0JBQS9ELFdBQVc7dUJBQUMsa0JBQWtCO2dCQUNyQixNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LCBPdXRwdXQsXG4gIFR5cGUsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RhYmxlQ29sdW1ufSBmcm9tICcuLi9jb250cmFjdC90YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHtUYWJsZVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvdGFibGUuc2VydmljZSc7XG5pbXBvcnQge0RldGFpbENvbXBvbmVudEJhc2V9IGZyb20gJy4uL2Jhc2UvZGV0YWlsLWNvbXBvbmVudC1iYXNlJztcbmltcG9ydCB7dGFrZVdoaWxlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1NlbGVjdFR5cGV9IGZyb20gJy4uL2VudW0vc2VsZWN0LXR5cGUuZW51bSc7XG5pbXBvcnQge2NvbWJpbmVMYXRlc3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBcnJheVV0aWx9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL2FycmF5LXV0aWwnO1xuaW1wb3J0IHtJRGljdGlvbmFyeX0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2NvbnRyYWN0L2ktZGljdGlvbmFyeSc7XG5pbXBvcnQge0lJZE5hbWV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLWlkLW5hbWUnO1xuaW1wb3J0IHtBZ2dyZWdhdGlvblR5cGV9IGZyb20gJy4uL2VudW0vYWdncmVnYXRpb24tdHlwZS5lbnVtJztcbmltcG9ydCB7Q2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0fSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7VGV0YUxvY2FsaXNhdGlvbn0gZnJvbSAnLi4vLi4vLi4vbG9jYWxlL3RldGEtbG9jYWxpc2F0aW9uJztcbmltcG9ydCB7VGV0YUNvbmZpZ1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2xvY2FsZS90ZXRhLWNvbmZpZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS10YWJsZS1ib2R5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWJvZHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1ib2R5LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUJvZHlDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHZpcnR1YWw6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGFjdGl2ZVJvdzogVDtcbiAgQElucHV0KCkgc2VsZWN0ZWRSb3dzOiBUW10gPSBbXTtcbiAgQElucHV0KCkgYWRkaXRpb25hbENvbXBvbmVudDogVHlwZTxEZXRhaWxDb21wb25lbnRCYXNlPFQ+PjtcbiAgQElucHV0KCkgYWdncmVnYXRlOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWxlY3RUeXBlOiBTZWxlY3RUeXBlO1xuICBASW5wdXQoKSByb3dDbGFzczogKHJvdzogVCwgaW5kZXg/OiBudW1iZXIpID0+IHN0cmluZztcbiAgQElucHV0KCkgdHJhY2tSb3c6IChpbmRleDogbnVtYmVyLCByb3c6IFQpID0+IGFueTtcbiAgQElucHV0KCkgdHJhY2tDb2x1bW5zOiAoaW5kZXg6IG51bWJlciwgY29sdW1uOiBUYWJsZUNvbHVtbikgPT4gYW55O1xuICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwge3N0YXRpYzogZmFsc2V9KSB2aWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MudGFibGUtYm9keScpIHByaXZhdGUgcmVhZG9ubHkgdGFibGVCb2R5Q2xhc3MgPSB0cnVlO1xuICBAT3V0cHV0KCkgc2Nyb2xsID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgc2V0IGRhdGEoZGF0YTogVFtdKSB7XG4gICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gIH1cblxuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuXG4gIGRpY3Q6IElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPjtcbiAgbG9ja2VkOiBUYWJsZUNvbHVtbltdID0gW107XG4gIHVubG9ja2VkOiBUYWJsZUNvbHVtbltdID0gW107XG4gIHNlbGVjdFR5cGVFbnVtID0gU2VsZWN0VHlwZTtcbiAgbG9ja2VkRmxleDogbnVtYmVyO1xuICBsb2NrZWRXaWR0aDogbnVtYmVyO1xuICB0b3RhbEZsZXg6IG51bWJlcjtcbiAgdG90YWxXaWR0aDogbnVtYmVyO1xuXG4gIHByaXZhdGUgX2NvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgcHJpdmF0ZSBfYWxpdmUgPSB0cnVlO1xuICBwcml2YXRlIF9kYXRhOiBUW107XG4gIHByaXZhdGUgX2hpZGRlbkNvbHVtbnM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgX29iczogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgc2V0IGNvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSkge1xuICAgIHRoaXMuX2NvbHVtbnMgPSBjb2x1bW5zO1xuICAgIHRoaXMubG9ja2VkID0gdGhpcy5fY29sdW1ucz8uZmlsdGVyKChfKSA9PiBfLmxvY2tlZCA9PT0gdHJ1ZSk7XG4gICAgdGhpcy51bmxvY2tlZCA9IHRoaXMuX2NvbHVtbnM/LmZpbHRlcigoXykgPT4gXy5sb2NrZWQgPT09IGZhbHNlKTtcbiAgICBjb25zdCBzdGFydFdpZHRoID0gdGhpcy5zZWxlY3RUeXBlID09PSBTZWxlY3RUeXBlLmNoZWNrQm94ID8gMjggOiAwO1xuICAgIHRoaXMubG9ja2VkRmxleCA9IHRoaXMubG9ja2VkLnJlZHVjZSgocHJldjogbnVtYmVyLCBjdXJyOiBUYWJsZUNvbHVtbikgPT4gcHJldiArIGN1cnIuZmxleCwgMCk7XG4gICAgdGhpcy5sb2NrZWRXaWR0aCA9IHRoaXMubG9ja2VkLnJlZHVjZSgocHJldjogbnVtYmVyLCBjdXJyOiBUYWJsZUNvbHVtbikgPT4gcHJldiArIGN1cnIud2lkdGgsIHN0YXJ0V2lkdGgpO1xuICAgIHRoaXMudG90YWxGbGV4ID0gdGhpcy5fY29sdW1ucy5yZWR1Y2UoKHByZXY6IG51bWJlciwgY3VycjogVGFibGVDb2x1bW4pID0+IHByZXYgKyBjdXJyLmZsZXgsIDApO1xuICAgIHRoaXMudG90YWxXaWR0aCA9IHRoaXMuX2NvbHVtbnMucmVkdWNlKChwcmV2OiBudW1iZXIsIGN1cnI6IFRhYmxlQ29sdW1uKSA9PiBwcmV2ICsgY3Vyci53aWR0aCwgc3RhcnRXaWR0aCk7XG4gIH1cblxuICBnZXQgY29sdW1ucygpOiBUYWJsZUNvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1ucztcbiAgfVxuXG4gIGxvY2FsZTogT2JzZXJ2YWJsZTxUZXRhTG9jYWxpc2F0aW9uPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zdmM6IFRhYmxlU2VydmljZTxUPixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfY29uZmlnOiBUZXRhQ29uZmlnU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuXG4gIH1cblxuICBzZXRBY3RpdmVSb3cocm93OiBULCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50LmN0cmxLZXkpIHtcbiAgICAgIHRoaXMuX3N2Yy5zZXRBY3RpdmVSb3cocm93KTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2FsZSA9IHRoaXMuX2NvbmZpZy5sb2NhbGU7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5fc3ZjLmNvbHVtbnMsIHRoaXMuX3N2Yy5oaWRkZW5Db2x1bW5zXSlcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWVzOiBbVGFibGVDb2x1bW5bXSwgc3RyaW5nW11dKSA9PiB7XG4gICAgICAgIGNvbnN0IFtjb2x1bW5zLCBoaWRkZW5Db2x1bW5zXSA9IHZhbHVlcztcbiAgICAgICAgdGhpcy5faGlkZGVuQ29sdW1ucyA9IGhpZGRlbkNvbHVtbnM7XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IEFycmF5VXRpbC5mbGF0dGVuKGNvbHVtbnMsICdjb2x1bW5zJywgdHJ1ZSkuZmlsdGVyKFxuICAgICAgICAgIChfKSA9PiB0aGlzLl9oaWRkZW5Db2x1bW5zLmluZGV4T2YoXy5uYW1lKSA8IDBcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9zdmMuZGlzcGxheURhdGEucGlwZShcbiAgICAgIHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpXG4gICAgKS5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIHRoaXMuZGF0YSA9IF87XG4gICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aGlzLnZpZXdwb3J0Py5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fc3ZjLmRpY3QucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSkuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICB0aGlzLmRpY3QgPSBfO1xuICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fc3ZjLnNjcm9sbEluZGV4XG4gICAgICAucGlwZSh0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAoaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMudmlld3BvcnQpIHtcbiAgICAgICAgICB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvSW5kZXgoaW5kZXgsICdhdXRvJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYC50YWJsZS1yb3dbZGF0YS1yb3c9XCIke2luZGV4fVwiXWApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgIHJvdz8uc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX3N2Yy5hY3RpdmVSb3dcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAoXykgPT4ge1xuICAgICAgICB0aGlzLmFjdGl2ZVJvdyA9IF87XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuYWRkUmVzaXplT2JzZXJ2ZXIoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2FsaXZlID0gZmFsc2U7XG4gICAgdGhpcy5yZW1vdmVSZXNpemVPYnNlcnZlcigpXG4gIH1cblxuICBnZXRBZ2dyZWdhdGVWYWx1ZShjb2x1bW46IFRhYmxlQ29sdW1uKTogbnVtYmVyIHtcbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLnN1bSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0U3VtKGNvbHVtbi5uYW1lKTtcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgPT09IEFnZ3JlZ2F0aW9uVHlwZS5hdmcpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFN1bShjb2x1bW4ubmFtZSkgLyB0aGlzLmRhdGEubGVuZ3RoO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLm1pbikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TWluKGNvbHVtbi5uYW1lKTtcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgPT09IEFnZ3JlZ2F0aW9uVHlwZS5tYXgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldE1heChjb2x1bW4ubmFtZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWdncmVnYXRlVGV4dChjb2x1bW46IFRhYmxlQ29sdW1uKTogc3RyaW5nIHtcbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLnN1bSkge1xuICAgICAgcmV0dXJuICdzdW0nO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLmF2Zykge1xuICAgICAgcmV0dXJuICdhdmcnO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLm1pbikge1xuICAgICAgcmV0dXJuICdtaW4nO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLmFnZ3JlZ2F0ZSA9PT0gQWdncmVnYXRpb25UeXBlLm1heCkge1xuICAgICAgcmV0dXJuICdtYXgnO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBlbWl0U2Nyb2xsKGV2ZW50KSB7XG4gICAgdGhpcy5zY3JvbGwuZW1pdChldmVudClcbiAgfVxuXG4gIC8vIHRyYWNrUm93KGluZGV4OiBudW1iZXIsIHJvdzogVCk6IGFueSB7XG4gIC8vICAgaWYgKHJvd1snaWQnXSkge1xuICAvLyAgICAgcmV0dXJuIHJvd1snaWQnXTtcbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIGluZGV4O1xuICAvLyB9XG4gIC8vXG4gIC8vIHRyYWNrQ29sdW1ucyhpbmRleDogbnVtYmVyLCBjb2x1bW46IFRhYmxlQ29sdW1uKTogYW55IHtcbiAgLy8gICByZXR1cm4gY29sdW1uLm5hbWU7XG4gIC8vIH1cblxuICBwcml2YXRlIGFkZFJlc2l6ZU9ic2VydmVyKCkge1xuICAgIHRoaXMuX29icyA9IG5ldyBSZXNpemVPYnNlcnZlcigoXykgPT4ge1xuICAgICAgdGhpcy52aWV3cG9ydD8uY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX29icy5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVJlc2l6ZU9ic2VydmVyKCkge1xuICAgIHRoaXMuX29icy51bm9ic2VydmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLl9vYnMuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdW0oY29sdW1uTmFtZSkge1xuICAgIHJldHVybiB0aGlzLmRhdGE/LnJlZHVjZSgoYWNjdW0sIGN1cnJlbnQpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHBhcnNlRmxvYXQoY3VycmVudFtjb2x1bW5OYW1lXSk7XG4gICAgICByZXR1cm4gYWNjdW0gKyAoaXNOYU4odmFsKSA/IDAgOiB2YWwpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNaW4oY29sdW1uTmFtZSkge1xuICAgIHJldHVybiB0aGlzLmRhdGE/LnJlZHVjZShcbiAgICAgIChhY2N1bSwgY3VycmVudCkgPT5cbiAgICAgICAgYWNjdW0gIT0gbnVsbCAmJiBhY2N1bSA8PSBjdXJyZW50W2NvbHVtbk5hbWVdXG4gICAgICAgICAgPyBhY2N1bVxuICAgICAgICAgIDogY3VycmVudFtjb2x1bW5OYW1lXSxcbiAgICAgIG51bGxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYXgoY29sdW1uTmFtZSkge1xuICAgIHJldHVybiB0aGlzLmRhdGE/LnJlZHVjZShcbiAgICAgIChhY2N1bSwgY3VycmVudCkgPT5cbiAgICAgICAgYWNjdW0gIT0gbnVsbCAmJiBhY2N1bSA+PSBjdXJyZW50W2NvbHVtbk5hbWVdXG4gICAgICAgICAgPyBhY2N1bVxuICAgICAgICAgIDogY3VycmVudFtjb2x1bW5OYW1lXSxcbiAgICAgIG51bGxcbiAgICApO1xuICB9XG59XG4iLCI8dGV0YS1zY3JvbGxhYmxlIGNsYXNzPVwidGFibGUtYm9keS1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAxMnB4XCJcbiAgICAgICAgICAgICAgICAgc2hvd1Njcm9sbGJhcnM9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aXJ0dWFsICYmIGRhdGEubGVuZ3RoID4gMDsgZWxzZSBub25WaXJ0dWFsXCI+XG4gIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgdGV0YVNjcm9sbGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWJvZHktY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nyb2xsKT1cImVtaXRTY3JvbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1TaXplXT1cIjI4XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqY2RrVmlydHVhbEZvcj1cImxldCByb3cgb2YgZGF0YTt0ZW1wbGF0ZUNhY2hlU2l6ZTogMDsgbGV0IHJvd0luZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrUm93O1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlUZW1wbGF0ZTsgY29udGV4dDoge3Jvdzogcm93LCByb3dJbmRleDogcm93SW5kZXh9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuPC90ZXRhLXNjcm9sbGFibGU+XG48bmctdGVtcGxhdGUgI25vblZpcnR1YWw+XG4gIDx0ZXRhLXNjcm9sbGFibGUgY2xhc3M9XCJ0YWJsZS1ib2R5LWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMTJweFwiXG4gICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICBzaG93U2Nyb2xsYmFycz1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgIChzY3JvbGwpPVwiZW1pdFNjcm9sbCgkZXZlbnQpXCI+XG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHktY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGNvbHVtbl9hdXRvXCJcbiAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDowOyBib3R0b206MTZweDtsZWZ0OjA7cmlnaHQ6MDtcIlxuICAgICAgICAgICAqbmdJZj1cIiFkYXRhPy5sZW5ndGhcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb3cgb2YgZGF0YTsgbGV0IHJvd0luZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrUm93O1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYm9keVRlbXBsYXRlOyBjb250ZXh0OiB7cm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFnZ3JlZ2F0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWdnVGVtcGxhdGU7XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVJvdztcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC90ZXRhLXNjcm9sbGFibGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cbiAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd1wiXG4gICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZVJvdyhyb3csICRldmVudClcIlxuICAgICAgIFthdHRyLmRhdGEtcm93XT1cInJvd0luZGV4XCJcbiAgICAgICBbY2xhc3MudGFibGUtcm93X29kZF09XCJyb3dJbmRleCAlIDIgPT09IDFcIlxuICAgICAgIFtuZ0NsYXNzXT1cInJvd0NsYXNzID8gcm93Q2xhc3Mocm93LCByb3dJbmRleCkgOiAnJ1wiXG4gICAgICAgW2NsYXNzLnRhYmxlLXJvd19zZWxlY3RlZF09XCJzZWxlY3RlZFJvd3MgJiYgc2VsZWN0ZWRSb3dzLmluZGV4T2Yocm93KSA+PSAwXCJcbiAgICAgICBbc3R5bGUuZmxleC1ncm93XT1cInRvdGFsRmxleFwiXG4gICAgICAgW3N0eWxlLmZsZXgtYmFzaXMucHhdPVwidG90YWxXaWR0aFwiXG4gICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJ0b3RhbFdpZHRoXCI+XG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd19sb2NrZWRcIlxuICAgICAgICAgKm5nSWY9XCJsb2NrZWQubGVuZ3RoID4gMFwiXG4gICAgICAgICBbc3R5bGUuZmxleC1ncm93XT1cImxvY2tlZEZsZXhcIlxuICAgICAgICAgW3N0eWxlLmZsZXgtYmFzaXMucHhdPVwibG9ja2VkV2lkdGhcIlxuICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJsb2NrZWRXaWR0aFwiXG4gICAgICAgICBbc3R5bGUuekluZGV4XT1cInJvdyA9PT0gYWN0aXZlUm93ID8gMiA6IDFcIj5cbiAgICAgIDx0ZXRhLXNlbGVjdGlvbi1jZWxsICpuZ0lmPVwic2VsZWN0VHlwZSA9PT0gc2VsZWN0VHlwZUVudW0uY2hlY2tCb3ggJiYgbG9ja2VkLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAyOHB4O1wiPjwvdGV0YS1zZWxlY3Rpb24tY2VsbD5cbiAgICAgIDx0ZXRhLWNlbGxcbiAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBsb2NrZWQ7IGxldCBjb2xJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0NvbHVtbnM7XCJcbiAgICAgICAgW2F0dHIuZGF0YS1yb3ddPVwicm93SW5kZXhcIlxuICAgICAgICBbYXR0ci5kYXRhLWNvbHVtbl09XCJjb2x1bW4ubmFtZVwiXG4gICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgW2ZpbHRlck9wdGlvbnNdPVwiZGljdD9kaWN0W2NvbHVtbi5uYW1lXTpbXVwiXG4gICAgICAgIFtkaWN0XT1cImRpY3RcIlxuICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5jZWxsQ2xhc3NcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCIwXCJcbiAgICAgICAgW3N0eWxlLmZsZXgtZ3Jvd109XCJjb2x1bW4uZmxleFwiXG4gICAgICAgIFtzdHlsZS5mbGV4LWJhc2lzLnB4XT1cImNvbHVtbi53aWR0aFwiXG4gICAgICA+PC90ZXRhLWNlbGw+XG4gICAgPC9kaXY+XG4gICAgPHRldGEtc2VsZWN0aW9uLWNlbGwgKm5nSWY9XCJzZWxlY3RUeXBlID09PSBzZWxlY3RUeXBlRW51bS5jaGVja0JveCAmJiBsb2NrZWQubGVuZ3RoIDwgMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDI4cHg7XCI+PC90ZXRhLXNlbGVjdGlvbi1jZWxsPlxuICAgIDx0ZXRhLWNlbGxcbiAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdW5sb2NrZWQ7IGxldCBjb2xJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0NvbHVtbnM7XCJcbiAgICAgIFthdHRyLmRhdGEtcm93XT1cInJvd0luZGV4XCJcbiAgICAgIFthdHRyLmRhdGEtY29sdW1uXT1cImNvbHVtbi5uYW1lXCJcbiAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgIFtmaWx0ZXJPcHRpb25zXT1cImRpY3Q/ZGljdFtjb2x1bW4ubmFtZV06W11cIlxuICAgICAgW2RpY3RdPVwiZGljdFwiXG4gICAgICBbcm93XT1cInJvd1wiXG4gICAgICBbbmdDbGFzc109XCJjb2x1bW4uY2VsbENsYXNzXCJcbiAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgW3N0eWxlLmZsZXgtZ3Jvd109XCJjb2x1bW4uZmxleFwiXG4gICAgICBbc3R5bGUuZmxleC1iYXNpcy5weF09XCJjb2x1bW4ud2lkdGhcIlxuICAgID48L3RldGEtY2VsbD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FnZ1RlbXBsYXRlPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9jYWxlIHwgYXN5bmMgYXMgbG9jXCI+XG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd1wiXG4gICAgICAgICAqbmdJZj1cImFnZ3JlZ2F0ZVwiXG4gICAgICAgICBbY2xhc3MudGFibGUtcm93X3ZpcnR1YWxdPVwidmlydHVhbFwiXG4gICAgICAgICBbc3R5bGUuZmxleC1ncm93XT1cInRvdGFsRmxleFwiXG4gICAgICAgICBbc3R5bGUuZmxleC1iYXNpcy5weF09XCJ0b3RhbFdpZHRoXCJcbiAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwidG90YWxXaWR0aFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd19sb2NrZWRcIlxuICAgICAgICAgICAqbmdJZj1cImxvY2tlZC5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgW3N0eWxlLmZsZXgtZ3Jvd109XCJsb2NrZWRGbGV4XCJcbiAgICAgICAgICAgW3N0eWxlLmZsZXgtYmFzaXMucHhdPVwibG9ja2VkV2lkdGhcIlxuICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImxvY2tlZFdpZHRoXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjZWxsIGFsaWduLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAyOHB4O1wiXG4gICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RUeXBlID09PSBzZWxlY3RUeXBlRW51bS5jaGVja0JveCAmJiBsb2NrZWQubGVuZ3RoIDwgMVwiPlxuICAgICAgICAgIDx0ZXRhLWljb24gW25hbWVdPVwiJ3N1bUNvbG9yJ1wiPjwvdGV0YS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNlbGwgY2VsbC1jb21wb25lbnQgYWdncmVnYXRlLWNlbGxcIlxuICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbG9ja2VkOyBsZXQgY29sSW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tDb2x1bW5zO1wiXG4gICAgICAgICAgICAgW2F0dHIuZGF0YS1jb2x1bW5dPVwiY29sdW1uLm5hbWVcIlxuICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5jZWxsQ2xhc3NcIlxuICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICAgIFtzdHlsZS5mbGV4LWdyb3ddPVwiY29sdW1uLmZsZXhcIlxuICAgICAgICAgICAgIFtzdHlsZS5mbGV4LWJhc2lzLnB4XT1cImNvbHVtbi53aWR0aFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNlbGwtdGV4dCBjZWxsLXRleHRfbnVtZXJpYyBmb250LXRpdGxlLTNcIj5cbiAgICAgICAgICB7e2xvY1tnZXRBZ2dyZWdhdGVUZXh0KGNvbHVtbildfX06XG4gICAgICAgICAge3tnZXRBZ2dyZWdhdGVWYWx1ZShjb2x1bW4pIHwgdGV0YU51bWJlciA6IDJ9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2VsbCBhbGlnbi1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDI4cHg7XCJcbiAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RUeXBlID09PSBzZWxlY3RUeXBlRW51bS5jaGVja0JveCAmJiBsb2NrZWQubGVuZ3RoIDwgMVwiPlxuICAgICAgICA8dGV0YS1pY29uIFtuYW1lXT1cIidzdW1Db2xvcidcIj48L3RldGEtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNlbGwgY2VsbC1jb21wb25lbnQgYWdncmVnYXRlLWNlbGxcIlxuICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHVubG9ja2VkOyBsZXQgY29sSW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tDb2x1bW5zO1wiXG4gICAgICAgICAgIFthdHRyLmRhdGEtY29sdW1uXT1cImNvbHVtbi5uYW1lXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLmNlbGxDbGFzc1wiXG4gICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICBbc3R5bGUuZmxleC1ncm93XT1cImNvbHVtbi5mbGV4XCJcbiAgICAgICAgICAgW3N0eWxlLmZsZXgtYmFzaXMucHhdPVwiY29sdW1uLndpZHRoXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNlbGwtdGV4dCBjZWxsLXRleHRfbnVtZXJpYyBmb250LXRpdGxlLTNcIj5cbiAgICAgICAge3tsb2NbZ2V0QWdncmVnYXRlVGV4dChjb2x1bW4pXX19OlxuICAgICAgICB7e2dldEFnZ3JlZ2F0ZVZhbHVlKGNvbHVtbikgfCB0ZXRhTnVtYmVyIDogMn19XG4gICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNlbXB0eVJvdz5cbiAgPGRpdiBjbGFzcz1cImVtcHR5LXRhYmxlLXJvd1wiXG4gICAgICAgc3R5bGU9XCJoZWlnaHQ6IDAuMXB4XCJcbiAgICAgICBbc3R5bGUuZmxleC1ncm93XT1cInRvdGFsRmxleFwiXG4gICAgICAgW3N0eWxlLmZsZXgtYmFzaXMucHhdPVwidG90YWxXaWR0aFwiXG4gICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJ0b3RhbFdpZHRoXCI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -34,7 +34,7 @@ export class FilterDropdownTabComponent {
34
34
  }
35
35
  }
36
36
  FilterDropdownTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FilterDropdownTabComponent, deps: [{ token: i1.TableService }, { token: i2.TetaConfigService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
37
- FilterDropdownTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FilterDropdownTabComponent, selector: "teta-filter-dropdown-tab", inputs: { columns: "columns", column: "column", state: "state", data: "data", close: "close" }, host: { listeners: { "keydown.enter": "enter()" } }, ngImport: i0, template: "<ng-container *ngIf=\"locale | async as loc\">\n <teta-filter-host [column]=\"column\"\n [data]=\"data\"\n [state]=\"state\"\n *ngIf=\"filterOptions | async as options\"\n [filterOptions]=\"options[column.name]\"></teta-filter-host>\n <teta-toolbar class=\"justify-content-between\">\n <button type=\"button\" teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n {{loc.clear}}\n </button>\n <button type=\"button\" teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\"></teta-icon>\n {{loc.apply}}\n </button>\n </teta-toolbar>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.FilterHostComponent, selector: "teta-filter-host", inputs: ["column", "state", "data", "filterOptions"], outputs: ["filterChanged"] }, { kind: "component", type: i5.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square", "viewType", "size"] }, { kind: "component", type: i7.ToolbarComponent, selector: "teta-toolbar", inputs: ["palette", "class"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
37
+ FilterDropdownTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FilterDropdownTabComponent, selector: "teta-filter-dropdown-tab", inputs: { columns: "columns", column: "column", state: "state", data: "data", close: "close" }, host: { listeners: { "keydown.enter": "enter()" } }, ngImport: i0, template: "<ng-container *ngIf=\"locale | async as loc\">\n <teta-filter-host [column]=\"column\"\n [data]=\"data\"\n [state]=\"state\"\n *ngIf=\"filterOptions | async as options\"\n [filterOptions]=\"options[column.name]\"></teta-filter-host>\n <teta-toolbar class=\"justify-content-between\">\n <button type=\"button\" teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n {{loc.clear}}\n </button>\n <button type=\"button\" teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\"></teta-icon>\n {{loc.apply}}\n </button>\n </teta-toolbar>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.FilterHostComponent, selector: "teta-filter-host", inputs: ["column", "state", "data", "filterOptions"], outputs: ["filterChanged"] }, { kind: "component", type: i5.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square"] }, { kind: "component", type: i7.ToolbarComponent, selector: "teta-toolbar", inputs: ["palette", "class"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
38
38
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FilterDropdownTabComponent, decorators: [{
39
39
  type: Component,
40
40
  args: [{ selector: 'teta-filter-dropdown-tab', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"locale | async as loc\">\n <teta-filter-host [column]=\"column\"\n [data]=\"data\"\n [state]=\"state\"\n *ngIf=\"filterOptions | async as options\"\n [filterOptions]=\"options[column.name]\"></teta-filter-host>\n <teta-toolbar class=\"justify-content-between\">\n <button type=\"button\" teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n {{loc.clear}}\n </button>\n <button type=\"button\" teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\"></teta-icon>\n {{loc.apply}}\n </button>\n </teta-toolbar>\n</ng-container>\n" }]
@@ -12,6 +12,7 @@ import * as i7 from "../../../tree/tree/tree.component";
12
12
  import * as i8 from "../../../../directive/teta-template/teta-template.directive";
13
13
  import * as i9 from "../../../tree/tree-item-toggle/tree-item-toggle.component";
14
14
  import * as i10 from "../../../toolbar/toolbar/toolbar.component";
15
+ import * as i11 from "../../../../directive/scrollable/scrollable/scrollable.component";
15
16
  export class VisibilityDropdownTabComponent {
16
17
  constructor(_svc, _config, _elementRef, _cdr) {
17
18
  this._svc = _svc;
@@ -122,10 +123,10 @@ export class VisibilityDropdownTabComponent {
122
123
  }
123
124
  }
124
125
  VisibilityDropdownTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: VisibilityDropdownTabComponent, deps: [{ token: i1.TableService }, { token: i2.TetaConfigService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
125
- VisibilityDropdownTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: VisibilityDropdownTabComponent, selector: "teta-visibility-dropdown-tab", inputs: { columns: "columns", column: "column", state: "state", data: "data", close: "close" }, ngImport: i0, template: "<ng-container *ngIf=\"locale | async as loc\">\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n {{loc.all}}\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"padding-v-2 column column_auto scrollable\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\" style=\"align-items: unset\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\n style=\"flex-grow: 1;\"\n [ngModel]=\"!columnIsHidden(item)\"\n (ngModelChange)=\"setColumnVisibility(item, $event)\"\n (click)=\"$event.stopPropagation()\"\n [binary]=\"true\"\n >\n {{item.caption}}\n </teta-checkbox>\n </div>\n </ng-template>\n </teta-tree>\n </div>\n <teta-toolbar class=\"justify-content-end\">\n <button type=\"button\"\n teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n {{loc.apply}}\n </button>\n </teta-toolbar>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.CheckboxComponent, selector: "teta-checkbox", inputs: ["class", "palette", "noLabel", "disabled", "value", "binary", "labelPosition", "allowNull"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square", "viewType", "size"] }, { kind: "component", type: i7.TreeComponent, selector: "teta-tree", inputs: ["data", "padding", "childNodeName", "virtual", "height", "openItems", "compareItems"], outputs: ["service", "openItemsChange"] }, { kind: "directive", type: i8.TetaTemplateDirective, selector: "[tetaTemplate]", inputs: ["tetaTemplate"] }, { kind: "component", type: i9.TreeItemToggleComponent, selector: "teta-tree-item-toggle", inputs: ["item"] }, { kind: "component", type: i10.ToolbarComponent, selector: "teta-toolbar", inputs: ["palette", "class"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
126
+ VisibilityDropdownTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: VisibilityDropdownTabComponent, selector: "teta-visibility-dropdown-tab", inputs: { columns: "columns", column: "column", state: "state", data: "data", close: "close" }, ngImport: i0, template: "<ng-container *ngIf=\"locale | async as loc\">\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n {{loc.all}}\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <teta-scrollable class=\"padding-v-2 column column_auto\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\" style=\"align-items: unset\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\n style=\"flex-grow: 1;\"\n [ngModel]=\"!columnIsHidden(item)\"\n (ngModelChange)=\"setColumnVisibility(item, $event)\"\n (click)=\"$event.stopPropagation()\"\n [binary]=\"true\"\n >\n {{item.caption}}\n </teta-checkbox>\n </div>\n </ng-template>\n </teta-tree>\n </teta-scrollable>\n <teta-toolbar class=\"justify-content-end\">\n <button type=\"button\"\n teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n {{loc.apply}}\n </button>\n </teta-toolbar>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.CheckboxComponent, selector: "teta-checkbox", inputs: ["class", "palette", "noLabel", "disabled", "value", "binary", "allowNull"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square"] }, { kind: "component", type: i7.TreeComponent, selector: "teta-tree", inputs: ["data", "padding", "childNodeName", "virtual", "height", "openItems", "compareItems"], outputs: ["service", "openItemsChange"] }, { kind: "directive", type: i8.TetaTemplateDirective, selector: "[tetaTemplate]", inputs: ["tetaTemplate"] }, { kind: "component", type: i9.TreeItemToggleComponent, selector: "teta-tree-item-toggle", inputs: ["item"] }, { kind: "component", type: i10.ToolbarComponent, selector: "teta-toolbar", inputs: ["palette", "class"] }, { kind: "component", type: i11.ScrollableComponent, selector: "teta-scrollable", inputs: ["direction", "showScrollbars", "contentClass"], outputs: ["scroll"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
126
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: VisibilityDropdownTabComponent, decorators: [{
127
128
  type: Component,
128
- args: [{ selector: 'teta-visibility-dropdown-tab', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"locale | async as loc\">\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n {{loc.all}}\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"padding-v-2 column column_auto scrollable\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\" style=\"align-items: unset\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\n style=\"flex-grow: 1;\"\n [ngModel]=\"!columnIsHidden(item)\"\n (ngModelChange)=\"setColumnVisibility(item, $event)\"\n (click)=\"$event.stopPropagation()\"\n [binary]=\"true\"\n >\n {{item.caption}}\n </teta-checkbox>\n </div>\n </ng-template>\n </teta-tree>\n </div>\n <teta-toolbar class=\"justify-content-end\">\n <button type=\"button\"\n teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n {{loc.apply}}\n </button>\n </teta-toolbar>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;min-height:0}\n"] }]
129
+ args: [{ selector: 'teta-visibility-dropdown-tab', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"locale | async as loc\">\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n {{loc.all}}\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <teta-scrollable class=\"padding-v-2 column column_auto\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\" style=\"align-items: unset\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\n style=\"flex-grow: 1;\"\n [ngModel]=\"!columnIsHidden(item)\"\n (ngModelChange)=\"setColumnVisibility(item, $event)\"\n (click)=\"$event.stopPropagation()\"\n [binary]=\"true\"\n >\n {{item.caption}}\n </teta-checkbox>\n </div>\n </ng-template>\n </teta-tree>\n </teta-scrollable>\n <teta-toolbar class=\"justify-content-end\">\n <button type=\"button\"\n teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n {{loc.apply}}\n </button>\n </teta-toolbar>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;min-height:0}\n"] }]
129
130
  }], ctorParameters: function () { return [{ type: i1.TableService }, { type: i2.TetaConfigService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { columns: [{
130
131
  type: Input
131
132
  }], column: [{
@@ -137,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
137
138
  }], close: [{
138
139
  type: Input
139
140
  }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaWJpbGl0eS1kcm9wZG93bi10YWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC90YWJsZS90YWJsZS1oZWFkL3Zpc2liaWxpdHktZHJvcGRvd24tdGFiL3Zpc2liaWxpdHktZHJvcGRvd24tdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFibGUvdGFibGUtaGVhZC92aXNpYmlsaXR5LWRyb3Bkb3duLXRhYi92aXNpYmlsaXR5LWRyb3Bkb3duLXRhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxLQUFLLEVBR04sTUFBTSxlQUFlLENBQUM7QUFRdkIsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7OztBQVE3RCxNQUFNLE9BQU8sOEJBQThCO0lBNEJ6QyxZQUFvQixJQUFxQixFQUNyQixPQUEwQixFQUMxQixXQUF1QixFQUN2QixJQUF1QjtRQUh2QixTQUFJLEdBQUosSUFBSSxDQUFpQjtRQUNyQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUxuQyxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBaUR0QixpQkFBWSxHQUFHLENBQUMsSUFBaUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQU9oRCwwQkFBcUIsR0FBRyxDQUN0QixNQUFtQixFQUNuQixPQUFnQixFQUNoQixhQUF1QixFQUN2QixFQUFFO1lBQ0YsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVB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QUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RhYmxlQ29sdW1ufSBmcm9tICcuLi8uLi9jb250cmFjdC90YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHtGaWx0ZXJTdGF0ZX0gZnJvbSAnLi4vLi4vLi4vZmlsdGVyL2NvbnRhcmN0L2ZpbHRlci1zdGF0ZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtUZXRhTG9jYWxpc2F0aW9ufSBmcm9tICcuLi8uLi8uLi8uLi9sb2NhbGUvdGV0YS1sb2NhbGlzYXRpb24nO1xuaW1wb3J0IHtUYWJsZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdGFibGUuc2VydmljZSc7XG5pbXBvcnQge1RldGFDb25maWdTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9sb2NhbGUvdGV0YS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQge0lUcmVlRGF0YX0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2NvbnRyYWN0L2ktdHJlZS1kYXRhJztcbmltcG9ydCB7bWFwLCB0YWtlV2hpbGV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXJyYXlVdGlsfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vdXRpbC9hcnJheS11dGlsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS12aXNpYmlsaXR5LWRyb3Bkb3duLXRhYicsXG4gIHRlbXBsYXRlVXJsOiAnLi92aXNpYmlsaXR5LWRyb3Bkb3duLXRhYi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Zpc2liaWxpdHktZHJvcGRvd24tdGFiLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFZpc2liaWxpdHlEcm9wZG93blRhYkNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgY29sdW1uczogSVRyZWVEYXRhW107XG4gIEBJbnB1dCgpIGNvbHVtbjogVGFibGVDb2x1bW47XG4gIEBJbnB1dCgpIHN0YXRlOiBGaWx0ZXJTdGF0ZTtcbiAgQElucHV0KCkgZGF0YTogVFtdO1xuICBASW5wdXQoKSBjbG9zZTogKCkgPT4gdm9pZDtcblxuICBsb2NhbGU6IE9ic2VydmFibGU8VGV0YUxvY2FsaXNhdGlvbj47XG4gIGhpZGRlbkNvbHVtbnM6IHN0cmluZ1tdO1xuXG4gIGdldCBvcGVuSXRlbXMoKSB7XG4gICAgaWYgKHRoaXMuX29wZW5JdGVtcyA9PSBudWxsKSB7XG4gICAgICB0aGlzLl9vcGVuSXRlbXMgPSB0aGlzLmNvbHVtbnMubWFwKChfKSA9PiBfKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX29wZW5JdGVtcztcbiAgfVxuXG4gIHNldCBvcGVuSXRlbXMob3Blbkl0ZW1zOiBJVHJlZURhdGFbXSkge1xuICAgIHRoaXMuX29wZW5JdGVtcyA9IG9wZW5JdGVtcztcbiAgfVxuXG4gIGdldCBjaGlsZE1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maW5kKChfOiBhbnkpID0+IF8uY29sdW1ucz8ubGVuZ3RoID4gMCk7XG4gIH1cblxuICBwcml2YXRlIF9vcGVuSXRlbXM6IElUcmVlRGF0YVtdO1xuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc3ZjOiBUYWJsZVNlcnZpY2U8VD4sXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NvbmZpZzogVGV0YUNvbmZpZ1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLmxvY2FsZSA9IHRoaXMuX2NvbmZpZy5sb2NhbGU7XG4gICAgdGhpcy5fc3ZjLmhpZGRlbkNvbHVtbnNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSxcbiAgICAgICAgbWFwKChfKSA9PiBbLi4uX10pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICAgIHRoaXMuaGlkZGVuQ29sdW1ucyA9IF87XG4gICAgICB9KTtcbiAgfVxuXG4gIGNvbHVtbklzSGlkZGVuKGNvbHVtbjogVGFibGVDb2x1bW4pIHtcbiAgICByZXR1cm4gdGhpcy5oaWRkZW5Db2x1bW5zLmluZGV4T2YoY29sdW1uLm5hbWUpID49IDA7XG4gIH1cblxuICBhbGxDb2x1bW5zVmlzaWJsZSgpIHtcbiAgICBpZiAodGhpcy5oaWRkZW5Db2x1bW5zPy5sZW5ndGggPD0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGNvbHVtbnMgPSBBcnJheVV0aWwuZmxhdHRlbih0aGlzLmNvbHVtbnMsICdjb2x1bW5zJyk7XG4gICAgY29uc3Qgbm90SGlkZGVuID0gY29sdW1ucy5maW5kKFxuICAgICAgKF8pID0+IHRoaXMuaGlkZGVuQ29sdW1ucy5pbmRleE9mKF8ubmFtZSkgPCAwXG4gICAgKTtcbiAgICBpZiAoIW5vdEhpZGRlbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHNldEFsbENvbHVtbnModmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuaGlkZGVuQ29sdW1ucyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpZGRlbkNvbHVtbnMgPSBBcnJheVV0aWwuZmxhdHRlbih0aGlzLmNvbHVtbnMsICdjb2x1bW5zJykubWFwKFxuICAgICAgICAoXykgPT4gXy5uYW1lXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHNldENvbHVtbnNWaXNpYmlsaXR5KCkge1xuICAgIHRoaXMuX3N2Yy5zZXRIaWRkZW5Db2x1bW5zKHRoaXMuaGlkZGVuQ29sdW1ucyk7XG4gIH1cblxuICBjb21wYXJlSXRlbXMgPSAoaXRlbTogVGFibGVDb2x1bW4pID0+IGl0ZW0ubmFtZTtcblxuICBzZXRDb2x1bW5WaXNpYmlsaXR5KGl0ZW06IFRhYmxlQ29sdW1uLCB2aXNpYmxlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXRDaGlsZHJlblZpc2liaWxpdHkoaXRlbSwgdmlzaWJsZSwgdGhpcy5oaWRkZW5Db2x1bW5zKTtcbiAgICB0aGlzLnNldFBhcmVudHNWaXNpYmlsaXR5KGl0ZW0sIHZpc2libGUsIHRoaXMuaGlkZGVuQ29sdW1ucyk7XG4gIH1cblxuICBzZXRDaGlsZHJlblZpc2liaWxpdHkgPSAoXG4gICAgY29sdW1uOiBUYWJsZUNvbHVtbixcbiAgICB2aXNpYmxlOiBib29sZWFuLFxuICAgIGhpZGRlbkNvbHVtbnM6IHN0cmluZ1tdXG4gICkgPT4ge1xuICAgIGlmICh2aXNpYmxlKSB7XG4gICAgICB0aGlzLnNob3dDb2x1bW4oY29sdW1uLCBoaWRkZW5Db2x1bW5zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWRlQ29sdW1uKGNvbHVtbiwgaGlkZGVuQ29sdW1ucyk7XG4gICAgfVxuICAgIGlmIChjb2x1bW4uY29sdW1ucykge1xuICAgICAgY29sdW1uLmNvbHVtbnMuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICB0aGlzLnNldENoaWxkcmVuVmlzaWJpbGl0eSh4LCB2aXNpYmxlLCBoaWRkZW5Db2x1bW5zKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBzZXRQYXJlbnRzVmlzaWJpbGl0eSA9IChcbiAgICBjb2x1bW46IFRhYmxlQ29sdW1uLFxuICAgIHZpc2libGU6IGJvb2xlYW4sXG4gICAgaGlkZGVuQ29sdW1uczogc3RyaW5nW11cbiAgKSA9PiB7XG4gICAgaWYgKCF2aXNpYmxlKSB7XG4gICAgICB0aGlzLmhpZGVQYXJlbnRzKGNvbHVtbiwgaGlkZGVuQ29sdW1ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd1BhcmVudHMoY29sdW1uLCBoaWRkZW5Db2x1bW5zKTtcbiAgICB9XG4gIH07XG5cbiAgc2hvd1BhcmVudHMoY29sdW1uOiBUYWJsZUNvbHVtbiwgaGlkZGVuQ29sdW1uczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmZpbmRQYXJlbnRDb2x1bW4oY29sdW1uLCB0aGlzLmNvbHVtbnMgYXMgVGFibGVDb2x1bW5bXSk7XG4gICAgaWYgKHBhcmVudCAmJiB0aGlzLmNvbHVtbklzSGlkZGVuKHBhcmVudCkpIHtcbiAgICAgIHRoaXMuc2hvd0NvbHVtbihwYXJlbnQsIGhpZGRlbkNvbHVtbnMpO1xuICAgICAgdGhpcy5zaG93UGFyZW50cyhwYXJlbnQsIGhpZGRlbkNvbHVtbnMpO1xuICAgIH1cbiAgfVxuXG4gIGhpZGVQYXJlbnRzKGNvbHVtbjogVGFibGVDb2x1bW4sIGhpZGRlbkNvbHVtbnM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5maW5kUGFyZW50Q29sdW1uKGNvbHVtbiwgdGhpcy5jb2x1bW5zIGFzIFRhYmxlQ29sdW1uW10pO1xuICAgIGlmIChcbiAgICAgIHBhcmVudCAmJlxuICAgICAgIXRoaXMuY29sdW1uSXNIaWRkZW4ocGFyZW50KSAmJlxuICAgICAgcGFyZW50LmNvbHVtbnMgJiZcbiAgICAgIHBhcmVudC5jb2x1bW5zLmV2ZXJ5KChfKSA9PiB0aGlzLmNvbHVtbklzSGlkZGVuKF8pKVxuICAgICkge1xuICAgICAgdGhpcy5oaWRlQ29sdW1uKHBhcmVudCwgaGlkZGVuQ29sdW1ucyk7XG4gICAgICB0aGlzLmhpZGVQYXJlbnRzKHBhcmVudCwgaGlkZGVuQ29sdW1ucyk7XG4gICAgfVxuICB9XG5cbiAgaGlkZUNvbHVtbihjb2x1bW46IFRhYmxlQ29sdW1uLCBoaWRkZW5Db2x1bW5zOiBzdHJpbmdbXSkge1xuICAgIGhpZGRlbkNvbHVtbnMucHVzaChjb2x1bW4ubmFtZSk7XG4gIH1cblxuICBzaG93Q29sdW1uKGNvbHVtbjogVGFibGVDb2x1bW4sIGhpZGRlbkNvbHVtbnM6IHN0cmluZ1tdKSB7XG4gICAgaGlkZGVuQ29sdW1ucy5zcGxpY2UoaGlkZGVuQ29sdW1ucy5pbmRleE9mKGNvbHVtbi5uYW1lKSwgMSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRQYXJlbnRDb2x1bW4oXG4gICAgY29sdW1uOiBUYWJsZUNvbHVtbixcbiAgICBjb2x1bW5zOiBUYWJsZUNvbHVtbltdXG4gICk6IFRhYmxlQ29sdW1uIHwgbnVsbCB7XG4gICAgcmV0dXJuIEFycmF5VXRpbC5maW5kUmVjdXJzaXZlKFxuICAgICAgY29sdW1ucyxcbiAgICAgIChpdGVyYWJsZU5vZGUpID0+IGl0ZXJhYmxlTm9kZS5jb2x1bW5zPy5pbmRleE9mKGNvbHVtbikgPj0gMCxcbiAgICAgICdjb2x1bW5zJ1xuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2FsaXZlID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJsb2NhbGUgfCBhc3luYyBhcyBsb2NcIj5cbiAgPGRpdiBjbGFzcz1cImxpc3QtaXRlbSBwYWRkaW5nLWxlZnQtNiBwYWRkaW5nLXRvcC0yXCIgW2NsYXNzLnBhZGRpbmctbGVmdC05XT1cImNoaWxkTW9kZVwiPlxuICAgIDx0ZXRhLWNoZWNrYm94IFtiaW5hcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgW2FsbG93TnVsbF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJhbGxDb2x1bW5zVmlzaWJsZSgpXCJcbiAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRBbGxDb2x1bW5zKCRldmVudClcIj5cbiAgICAgIHt7bG9jLmFsbH19XG4gICAgPC90ZXRhLWNoZWNrYm94PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImxpc3QtZGl2aWRlclwiPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicGFkZGluZy12LTIgY29sdW1uIGNvbHVtbl9hdXRvIHNjcm9sbGFibGVcIj5cbiAgICA8dGV0YS10cmVlIFtkYXRhXT1cImNvbHVtbnNcIlxuICAgICAgICAgICAgICAgW29wZW5JdGVtc109XCJvcGVuSXRlbXNcIlxuICAgICAgICAgICAgICAgKG9wZW5JdGVtc0NoYW5nZSk9XCJvcGVuSXRlbXMgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICAgW2NoaWxkTm9kZU5hbWVdPVwiJ2NvbHVtbnMnXCJcbiAgICAgICAgICAgICAgIFtjb21wYXJlSXRlbXNdPVwiY29tcGFyZUl0ZW1zXCI+XG4gICAgICA8bmctdGVtcGxhdGUgdGV0YVRlbXBsYXRlIGxldC1pdGVtPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZV9faXRlbVwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IHVuc2V0XCI+XG4gICAgICAgICAgPHRldGEtdHJlZS1pdGVtLXRvZ2dsZSBbaXRlbV09XCJpdGVtXCIgKm5nSWY9XCJpdGVtLmNvbHVtbnM/Lmxlbmd0aCA+IDBcIj48L3RldGEtdHJlZS1pdGVtLXRvZ2dsZT5cbiAgICAgICAgICA8dGV0YS1jaGVja2JveFxuICAgICAgICAgICAgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cIiFjb2x1bW5Jc0hpZGRlbihpdGVtKVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRDb2x1bW5WaXNpYmlsaXR5KGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICBbYmluYXJ5XT1cInRydWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7aXRlbS5jYXB0aW9ufX1cbiAgICAgICAgICA8L3RldGEtY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3RldGEtdHJlZT5cbiAgPC9kaXY+XG4gIDx0ZXRhLXRvb2xiYXIgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHRldGEtYnV0dG9uXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWxsQ29sdW1uc1Zpc2libGUoKSA9PT0gZmFsc2VcIlxuICAgICAgICAgICAgW3BhbGV0dGVdPVwiJ3ByaW1hcnknXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZXRDb2x1bW5zVmlzaWJpbGl0eSgpXCI+XG4gICAgICB7e2xvYy5hcHBseX19XG4gICAgPC9idXR0b24+XG4gIDwvdGV0YS10b29sYmFyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaWJpbGl0eS1kcm9wZG93bi10YWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC90YWJsZS90YWJsZS1oZWFkL3Zpc2liaWxpdHktZHJvcGRvd24tdGFiL3Zpc2liaWxpdHktZHJvcGRvd24tdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFibGUvdGFibGUtaGVhZC92aXNpYmlsaXR5LWRyb3Bkb3duLXRhYi92aXNpYmlsaXR5LWRyb3Bkb3duLXRhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxLQUFLLEVBR04sTUFBTSxlQUFlLENBQUM7QUFRdkIsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFRN0QsTUFBTSxPQUFPLDhCQUE4QjtJQTRCekMsWUFBb0IsSUFBcUIsRUFDckIsT0FBMEIsRUFDMUIsV0FBdUIsRUFDdkIsSUFBdUI7UUFIdkIsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFMbkMsV0FBTSxHQUFHLElBQUksQ0FBQztRQWlEdEIsaUJBQVksR0FBRyxDQUFDLElBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFPaEQsMEJBQXFCLEdBQUcsQ0FDdEIsTUFBbUIsRUFDbkIsT0FBZ0IsRUFDaEIsYUFBdUIsRUFDdkIsRUFBRTtZQUNGLElBQUksT0FBTyxFQUFFO2dCQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxF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QUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUYWJsZUNvbHVtbn0gZnJvbSAnLi4vLi4vY29udHJhY3QvdGFibGUtY29sdW1uJztcbmltcG9ydCB7RmlsdGVyU3RhdGV9IGZyb20gJy4uLy4uLy4uL2ZpbHRlci9jb250YXJjdC9maWx0ZXItc3RhdGUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7VGV0YUxvY2FsaXNhdGlvbn0gZnJvbSAnLi4vLi4vLi4vLi4vbG9jYWxlL3RldGEtbG9jYWxpc2F0aW9uJztcbmltcG9ydCB7VGFibGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHtUZXRhQ29uZmlnU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vbG9jYWxlL3RldGEtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHtJVHJlZURhdGF9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLXRyZWUtZGF0YSc7XG5pbXBvcnQge21hcCwgdGFrZVdoaWxlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FycmF5VXRpbH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL3V0aWwvYXJyYXktdXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtdmlzaWJpbGl0eS1kcm9wZG93bi10YWInLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlzaWJpbGl0eS1kcm9wZG93bi10YWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92aXNpYmlsaXR5LWRyb3Bkb3duLXRhYi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBWaXNpYmlsaXR5RHJvcGRvd25UYWJDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGNvbHVtbnM6IElUcmVlRGF0YVtdO1xuICBASW5wdXQoKSBjb2x1bW46IFRhYmxlQ29sdW1uO1xuICBASW5wdXQoKSBzdGF0ZTogRmlsdGVyU3RhdGU7XG4gIEBJbnB1dCgpIGRhdGE6IFRbXTtcbiAgQElucHV0KCkgY2xvc2U6ICgpID0+IHZvaWQ7XG5cbiAgbG9jYWxlOiBPYnNlcnZhYmxlPFRldGFMb2NhbGlzYXRpb24+O1xuICBoaWRkZW5Db2x1bW5zOiBzdHJpbmdbXTtcblxuICBnZXQgb3Blbkl0ZW1zKCkge1xuICAgIGlmICh0aGlzLl9vcGVuSXRlbXMgPT0gbnVsbCkge1xuICAgICAgdGhpcy5fb3Blbkl0ZW1zID0gdGhpcy5jb2x1bW5zLm1hcCgoXykgPT4gXyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9vcGVuSXRlbXM7XG4gIH1cblxuICBzZXQgb3Blbkl0ZW1zKG9wZW5JdGVtczogSVRyZWVEYXRhW10pIHtcbiAgICB0aGlzLl9vcGVuSXRlbXMgPSBvcGVuSXRlbXM7XG4gIH1cblxuICBnZXQgY2hpbGRNb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmluZCgoXzogYW55KSA9PiBfLmNvbHVtbnM/Lmxlbmd0aCA+IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBfb3Blbkl0ZW1zOiBJVHJlZURhdGFbXTtcbiAgcHJpdmF0ZSBfYWxpdmUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3N2YzogVGFibGVTZXJ2aWNlPFQ+LFxuICAgICAgICAgICAgICBwcml2YXRlIF9jb25maWc6IFRldGFDb25maWdTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLl9jb25maWcubG9jYWxlO1xuICAgIHRoaXMuX3N2Yy5oaWRkZW5Db2x1bW5zXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSksXG4gICAgICAgIG1hcCgoXykgPT4gWy4uLl9dKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICB0aGlzLmhpZGRlbkNvbHVtbnMgPSBfO1xuICAgICAgfSk7XG4gIH1cblxuICBjb2x1bW5Jc0hpZGRlbihjb2x1bW46IFRhYmxlQ29sdW1uKSB7XG4gICAgcmV0dXJuIHRoaXMuaGlkZGVuQ29sdW1ucy5pbmRleE9mKGNvbHVtbi5uYW1lKSA+PSAwO1xuICB9XG5cbiAgYWxsQ29sdW1uc1Zpc2libGUoKSB7XG4gICAgaWYgKHRoaXMuaGlkZGVuQ29sdW1ucz8ubGVuZ3RoIDw9IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW5zID0gQXJyYXlVdGlsLmZsYXR0ZW4odGhpcy5jb2x1bW5zLCAnY29sdW1ucycpO1xuICAgIGNvbnN0IG5vdEhpZGRlbiA9IGNvbHVtbnMuZmluZChcbiAgICAgIChfKSA9PiB0aGlzLmhpZGRlbkNvbHVtbnMuaW5kZXhPZihfLm5hbWUpIDwgMFxuICAgICk7XG4gICAgaWYgKCFub3RIaWRkZW4pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzZXRBbGxDb2x1bW5zKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmhpZGRlbkNvbHVtbnMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWRkZW5Db2x1bW5zID0gQXJyYXlVdGlsLmZsYXR0ZW4odGhpcy5jb2x1bW5zLCAnY29sdW1ucycpLm1hcChcbiAgICAgICAgKF8pID0+IF8ubmFtZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBzZXRDb2x1bW5zVmlzaWJpbGl0eSgpIHtcbiAgICB0aGlzLl9zdmMuc2V0SGlkZGVuQ29sdW1ucyh0aGlzLmhpZGRlbkNvbHVtbnMpO1xuICB9XG5cbiAgY29tcGFyZUl0ZW1zID0gKGl0ZW06IFRhYmxlQ29sdW1uKSA9PiBpdGVtLm5hbWU7XG5cbiAgc2V0Q29sdW1uVmlzaWJpbGl0eShpdGVtOiBUYWJsZUNvbHVtbiwgdmlzaWJsZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0Q2hpbGRyZW5WaXNpYmlsaXR5KGl0ZW0sIHZpc2libGUsIHRoaXMuaGlkZGVuQ29sdW1ucyk7XG4gICAgdGhpcy5zZXRQYXJlbnRzVmlzaWJpbGl0eShpdGVtLCB2aXNpYmxlLCB0aGlzLmhpZGRlbkNvbHVtbnMpO1xuICB9XG5cbiAgc2V0Q2hpbGRyZW5WaXNpYmlsaXR5ID0gKFxuICAgIGNvbHVtbjogVGFibGVDb2x1bW4sXG4gICAgdmlzaWJsZTogYm9vbGVhbixcbiAgICBoaWRkZW5Db2x1bW5zOiBzdHJpbmdbXVxuICApID0+IHtcbiAgICBpZiAodmlzaWJsZSkge1xuICAgICAgdGhpcy5zaG93Q29sdW1uKGNvbHVtbiwgaGlkZGVuQ29sdW1ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZUNvbHVtbihjb2x1bW4sIGhpZGRlbkNvbHVtbnMpO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLmNvbHVtbnMpIHtcbiAgICAgIGNvbHVtbi5jb2x1bW5zLmZvckVhY2goKHgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRDaGlsZHJlblZpc2liaWxpdHkoeCwgdmlzaWJsZSwgaGlkZGVuQ29sdW1ucyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgc2V0UGFyZW50c1Zpc2liaWxpdHkgPSAoXG4gICAgY29sdW1uOiBUYWJsZUNvbHVtbixcbiAgICB2aXNpYmxlOiBib29sZWFuLFxuICAgIGhpZGRlbkNvbHVtbnM6IHN0cmluZ1tdXG4gICkgPT4ge1xuICAgIGlmICghdmlzaWJsZSkge1xuICAgICAgdGhpcy5oaWRlUGFyZW50cyhjb2x1bW4sIGhpZGRlbkNvbHVtbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dQYXJlbnRzKGNvbHVtbiwgaGlkZGVuQ29sdW1ucyk7XG4gICAgfVxuICB9O1xuXG4gIHNob3dQYXJlbnRzKGNvbHVtbjogVGFibGVDb2x1bW4sIGhpZGRlbkNvbHVtbnM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5maW5kUGFyZW50Q29sdW1uKGNvbHVtbiwgdGhpcy5jb2x1bW5zIGFzIFRhYmxlQ29sdW1uW10pO1xuICAgIGlmIChwYXJlbnQgJiYgdGhpcy5jb2x1bW5Jc0hpZGRlbihwYXJlbnQpKSB7XG4gICAgICB0aGlzLnNob3dDb2x1bW4ocGFyZW50LCBoaWRkZW5Db2x1bW5zKTtcbiAgICAgIHRoaXMuc2hvd1BhcmVudHMocGFyZW50LCBoaWRkZW5Db2x1bW5zKTtcbiAgICB9XG4gIH1cblxuICBoaWRlUGFyZW50cyhjb2x1bW46IFRhYmxlQ29sdW1uLCBoaWRkZW5Db2x1bW5zOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZmluZFBhcmVudENvbHVtbihjb2x1bW4sIHRoaXMuY29sdW1ucyBhcyBUYWJsZUNvbHVtbltdKTtcbiAgICBpZiAoXG4gICAgICBwYXJlbnQgJiZcbiAgICAgICF0aGlzLmNvbHVtbklzSGlkZGVuKHBhcmVudCkgJiZcbiAgICAgIHBhcmVudC5jb2x1bW5zICYmXG4gICAgICBwYXJlbnQuY29sdW1ucy5ldmVyeSgoXykgPT4gdGhpcy5jb2x1bW5Jc0hpZGRlbihfKSlcbiAgICApIHtcbiAgICAgIHRoaXMuaGlkZUNvbHVtbihwYXJlbnQsIGhpZGRlbkNvbHVtbnMpO1xuICAgICAgdGhpcy5oaWRlUGFyZW50cyhwYXJlbnQsIGhpZGRlbkNvbHVtbnMpO1xuICAgIH1cbiAgfVxuXG4gIGhpZGVDb2x1bW4oY29sdW1uOiBUYWJsZUNvbHVtbiwgaGlkZGVuQ29sdW1uczogc3RyaW5nW10pIHtcbiAgICBoaWRkZW5Db2x1bW5zLnB1c2goY29sdW1uLm5hbWUpO1xuICB9XG5cbiAgc2hvd0NvbHVtbihjb2x1bW46IFRhYmxlQ29sdW1uLCBoaWRkZW5Db2x1bW5zOiBzdHJpbmdbXSkge1xuICAgIGhpZGRlbkNvbHVtbnMuc3BsaWNlKGhpZGRlbkNvbHVtbnMuaW5kZXhPZihjb2x1bW4ubmFtZSksIDEpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUGFyZW50Q29sdW1uKFxuICAgIGNvbHVtbjogVGFibGVDb2x1bW4sXG4gICAgY29sdW1uczogVGFibGVDb2x1bW5bXVxuICApOiBUYWJsZUNvbHVtbiB8IG51bGwge1xuICAgIHJldHVybiBBcnJheVV0aWwuZmluZFJlY3Vyc2l2ZShcbiAgICAgIGNvbHVtbnMsXG4gICAgICAoaXRlcmFibGVOb2RlKSA9PiBpdGVyYWJsZU5vZGUuY29sdW1ucz8uaW5kZXhPZihjb2x1bW4pID49IDAsXG4gICAgICAnY29sdW1ucydcbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbGl2ZSA9IGZhbHNlO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibG9jYWxlIHwgYXN5bmMgYXMgbG9jXCI+XG4gIDxkaXYgY2xhc3M9XCJsaXN0LWl0ZW0gcGFkZGluZy1sZWZ0LTYgcGFkZGluZy10b3AtMlwiIFtjbGFzcy5wYWRkaW5nLWxlZnQtOV09XCJjaGlsZE1vZGVcIj5cbiAgICA8dGV0YS1jaGVja2JveCBbYmluYXJ5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgIFthbGxvd051bGxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiYWxsQ29sdW1uc1Zpc2libGUoKVwiXG4gICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0QWxsQ29sdW1ucygkZXZlbnQpXCI+XG4gICAgICB7e2xvYy5hbGx9fVxuICAgIDwvdGV0YS1jaGVja2JveD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJsaXN0LWRpdmlkZXJcIj48L2Rpdj5cbiAgPHRldGEtc2Nyb2xsYWJsZSBjbGFzcz1cInBhZGRpbmctdi0yIGNvbHVtbiBjb2x1bW5fYXV0b1wiPlxuICAgIDx0ZXRhLXRyZWUgW2RhdGFdPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICBbb3Blbkl0ZW1zXT1cIm9wZW5JdGVtc1wiXG4gICAgICAgICAgICAgICAob3Blbkl0ZW1zQ2hhbmdlKT1cIm9wZW5JdGVtcyA9ICRldmVudFwiXG4gICAgICAgICAgICAgICBbY2hpbGROb2RlTmFtZV09XCInY29sdW1ucydcIlxuICAgICAgICAgICAgICAgW2NvbXBhcmVJdGVtc109XCJjb21wYXJlSXRlbXNcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSB0ZXRhVGVtcGxhdGUgbGV0LWl0ZW0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVlX19pdGVtXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogdW5zZXRcIj5cbiAgICAgICAgICA8dGV0YS10cmVlLWl0ZW0tdG9nZ2xlIFtpdGVtXT1cIml0ZW1cIiAqbmdJZj1cIml0ZW0uY29sdW1ucz8ubGVuZ3RoID4gMFwiPjwvdGV0YS10cmVlLWl0ZW0tdG9nZ2xlPlxuICAgICAgICAgIDx0ZXRhLWNoZWNrYm94XG4gICAgICAgICAgICBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiIWNvbHVtbklzSGlkZGVuKGl0ZW0pXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldENvbHVtblZpc2liaWxpdHkoaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIFtiaW5hcnldPVwidHJ1ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3tpdGVtLmNhcHRpb259fVxuICAgICAgICAgIDwvdGV0YS1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdGV0YS10cmVlPlxuICA8L3RldGEtc2Nyb2xsYWJsZT5cbiAgPHRldGEtdG9vbGJhciBjbGFzcz1cImp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgdGV0YS1idXR0b25cbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhbGxDb2x1bW5zVmlzaWJsZSgpID09PSBmYWxzZVwiXG4gICAgICAgICAgICBbcGFsZXR0ZV09XCIncHJpbWFyeSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNldENvbHVtbnNWaXNpYmlsaXR5KClcIj5cbiAgICAgIHt7bG9jLmFwcGx5fX1cbiAgICA8L2J1dHRvbj5cbiAgPC90ZXRhLXRvb2xiYXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -39,6 +39,7 @@ import { ContextMenuModule } from '../../directive/context-menu/context-menu.mod
39
39
  import { MainDropdownTabComponent } from './table-head/main-dropdown-tab/main-dropdown-tab.component';
40
40
  import { FilterDropdownTabComponent } from './table-head/filter-dropdown-tab/filter-dropdown-tab.component';
41
41
  import { VisibilityDropdownTabComponent } from './table-head/visibility-dropdown-tab/visibility-dropdown-tab.component';
42
+ import { ScrollableModule } from "../../directive/scrollable/scrollable.module";
42
43
  import * as i0 from "@angular/core";
43
44
  export class TableModule {
44
45
  }
@@ -81,7 +82,8 @@ TableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "1
81
82
  ClickOutsideModule,
82
83
  ResizeDragModule,
83
84
  ScrollingModule,
84
- ContextMenuModule], exports: [TableComponent,
85
+ ContextMenuModule,
86
+ ScrollableModule], exports: [TableComponent,
85
87
  NumericCellComponent,
86
88
  ListCellComponent,
87
89
  DateCellComponent,
@@ -111,7 +113,8 @@ TableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "1
111
113
  ClickOutsideModule,
112
114
  ResizeDragModule,
113
115
  ScrollingModule,
114
- ContextMenuModule] });
116
+ ContextMenuModule,
117
+ ScrollableModule] });
115
118
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TableModule, decorators: [{
116
119
  type: NgModule,
117
120
  args: [{
@@ -172,7 +175,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
172
175
  ResizeDragModule,
173
176
  ScrollingModule,
174
177
  ContextMenuModule,
178
+ ScrollableModule,
175
179
  ],
176
180
  }]
177
181
  }] });
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC90YWJsZS90YWJsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUNuRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUN0RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUNqRyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDM0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQy9GLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDeEYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDaEYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFDbkYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUNuRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUM1RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQzs7QUE4RHhILE1BQU0sT0FBTyxXQUFXOzt3R0FBWCxXQUFXO3lHQUFYLFdBQVcsaUJBMURwQixjQUFjO1FBQ2Qsb0JBQW9CO1FBQ3BCLGlCQUFpQjtRQUNqQixpQkFBaUI7UUFDakIsbUJBQW1CO1FBQ25CLHFCQUFxQjtRQUNyQixrQkFBa0I7UUFDbEIsa0JBQWtCO1FBQ2xCLGFBQWE7UUFDYixpQkFBaUI7UUFDakIsdUJBQXVCO1FBQ3ZCLGlCQUFpQjtRQUNqQix3QkFBd0I7UUFDeEIsc0JBQXNCO1FBQ3RCLDBCQUEwQjtRQUMxQix5QkFBeUI7UUFDekIscUJBQXFCO1FBQ3JCLG9CQUFvQjtRQUNwQix3QkFBd0I7UUFDeEIsMEJBQTBCO1FBQzFCLDhCQUE4QixhQWlCOUIsWUFBWTtRQUNaLFlBQVk7UUFDWixXQUFXO1FBQ1gsY0FBYztRQUNkLFVBQVU7UUFDVixjQUFjO1FBQ2QsVUFBVTtRQUNWLFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixVQUFVO1FBQ1YsVUFBVTtRQUNWLGdCQUFnQjtRQUNoQixhQUFhO1FBQ2Isa0JBQWtCO1FBQ2xCLGdCQUFnQjtRQUNoQixlQUFlO1FBQ2YsaUJBQWlCLGFBaENqQixjQUFjO1FBQ2Qsb0JBQW9CO1FBQ3BCLGlCQUFpQjtRQUNqQixpQkFBaUI7UUFDakIsbUJBQW1CO1FBQ25CLHFCQUFxQjtRQUNyQixrQkFBa0I7UUFDbEIsa0JBQWtCO1FBQ2xCLGFBQWE7UUFDYixpQkFBaUI7UUFDakIscUJBQXFCO1FBQ3JCLG9CQUFvQjt5R0F3QlgsV0FBVyxZQXJCcEIsWUFBWTtRQUNaLFlBQVk7UUFDWixXQUFXO1FBQ1gsY0FBYztRQUNkLFVBQVU7UUFDVixjQUFjO1FBQ2QsVUFBVTtRQUNWLFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixVQUFVO1FBQ1YsVUFBVTtRQUNWLGdCQUFnQjtRQUNoQixhQUFhO1FBQ2Isa0JBQWtCO1FBQ2xCLGdCQUFnQjtRQUNoQixlQUFlO1FBQ2YsaUJBQWlCOzJGQUdSLFdBQVc7a0JBNUR2QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixjQUFjO3dCQUNkLG9CQUFvQjt3QkFDcEIsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFDdkIsaUJBQWlCO3dCQUNqQix3QkFBd0I7d0JBQ3hCLHNCQUFzQjt3QkFDdEIsMEJBQTBCO3dCQUMxQix5QkFBeUI7d0JBQ3pCLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQix3QkFBd0I7d0JBQ3hCLDBCQUEwQjt3QkFDMUIsOEJBQThCO3FCQUMvQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsY0FBYzt3QkFDZCxvQkFBb0I7d0JBQ3BCLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjtxQkFDckI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsVUFBVTt3QkFDVixjQUFjO3dCQUNkLFVBQVU7d0JBQ1YsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGlCQUFpQjtxQkFDbEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtUYWJsZUNvbXBvbmVudH0gZnJvbSAnLi90YWJsZS90YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHtGaWx0ZXJNb2R1bGV9IGZyb20gJy4uL2ZpbHRlci9maWx0ZXIubW9kdWxlJztcbmltcG9ydCB7TnVtZXJpY0NlbGxDb21wb25lbnR9IGZyb20gJy4vZGVmYXVsdC9udW1lcmljLWNlbGwvbnVtZXJpYy1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQge0xpc3RDZWxsQ29tcG9uZW50fSBmcm9tICcuL2RlZmF1bHQvbGlzdC1jZWxsL2xpc3QtY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHtEYXRlQ2VsbENvbXBvbmVudH0gZnJvbSAnLi9kZWZhdWx0L2RhdGUtY2VsbC9kYXRlLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7U3RyaW5nQ2VsbENvbXBvbmVudH0gZnJvbSAnLi9kZWZhdWx0L3N0cmluZy1jZWxsL3N0cmluZy1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQge0hlYWRDZWxsSG9zdENvbXBvbmVudH0gZnJvbSAnLi9oZWFkLWNlbGwtaG9zdC9oZWFkLWNlbGwtaG9zdC5jb21wb25lbnQnO1xuaW1wb3J0IHtUYWJsZUhlYWRDb21wb25lbnR9IGZyb20gJy4vdGFibGUtaGVhZC90YWJsZS1oZWFkLmNvbXBvbmVudCc7XG5pbXBvcnQge1RhYmxlQm9keUNvbXBvbmVudH0gZnJvbSAnLi90YWJsZS1ib2R5L3RhYmxlLWJvZHkuY29tcG9uZW50JztcbmltcG9ydCB7Q2VsbENvbXBvbmVudH0gZnJvbSAnLi9jZWxsL2NlbGwuY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Q2hlY2tib3hNb2R1bGV9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94Lm1vZHVsZSc7XG5pbXBvcnQge0NlbGxIb3N0Q29tcG9uZW50fSBmcm9tICcuL2NlbGwtaG9zdC9jZWxsLWhvc3QuY29tcG9uZW50JztcbmltcG9ydCB7VGFibGVIZWFkR3JvdXBDb21wb25lbnR9IGZyb20gJy4vdGFibGUtaGVhZC1ncm91cC90YWJsZS1oZWFkLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQge0hlYWRDZWxsQ29tcG9uZW50fSBmcm9tICcuL2hlYWQtY2VsbC9oZWFkLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7RGVmYXVsdEhlYWRDZWxsQ29tcG9uZW50fSBmcm9tICcuL2RlZmF1bHQvZGVmYXVsdC1oZWFkLWNlbGwvZGVmYXVsdC1oZWFkLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7SWNvbk1vZHVsZX0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZHVsZSc7XG5pbXBvcnQge0Ryb3Bkb3duTW9kdWxlfSBmcm9tICcuLi9kcm9wZG93bi9kcm9wZG93bi5tb2R1bGUnO1xuaW1wb3J0IHtUYWJzTW9kdWxlfSBmcm9tICcuLi90YWJzL3RhYnMubW9kdWxlJztcbmltcG9ydCB7U2VsZWN0TW9kdWxlfSBmcm9tICcuLi9zZWxlY3Qvc2VsZWN0Lm1vZHVsZSc7XG5pbXBvcnQge051bWJlclBpcGVNb2R1bGV9IGZyb20gJy4uLy4uL3BpcGUvbnVtYmVyLXBpcGUvbnVtYmVyLXBpcGUubW9kdWxlJztcbmltcG9ydCB7RGF0ZVBpY2tlck1vZHVsZX0gZnJvbSAnLi4vZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIubW9kdWxlJztcbmltcG9ydCB7QnV0dG9uTW9kdWxlfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLm1vZHVsZSc7XG5pbXBvcnQge1NlbGVjdGlvbkNlbGxDb21wb25lbnR9IGZyb20gJy4vc2VsZWN0aW9uLWNlbGwvc2VsZWN0aW9uLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7U2VsZWN0aW9uSGVhZENlbGxDb21wb25lbnR9IGZyb20gJy4vc2VsZWN0aW9uLWhlYWQtY2VsbC9zZWxlY3Rpb24taGVhZC1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQge0hpbnRNb2R1bGV9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9oaW50L2hpbnQubW9kdWxlJztcbmltcG9ydCB7VHJlZU1vZHVsZX0gZnJvbSAnLi4vdHJlZS90cmVlLm1vZHVsZSc7XG5pbXBvcnQge0hlYWRDZWxsRHJvcGRvd25Db21wb25lbnR9IGZyb20gJy4vaGVhZC1jZWxsLWRyb3Bkb3duL2hlYWQtY2VsbC1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHtEYXRlVGltZUNlbGxDb21wb25lbnR9IGZyb20gJy4vZGVmYXVsdC9kYXRlLXRpbWUtY2VsbC9kYXRlLXRpbWUtY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHtPbmx5TnVtYmVyTW9kdWxlfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb25seS1udW1iZXIvb25seS1udW1iZXIubW9kdWxlJztcbmltcG9ydCB7Qm9vbGVhbkNlbGxDb21wb25lbnR9IGZyb20gJy4vZGVmYXVsdC9ib29sZWFuLWNlbGwvYm9vbGVhbi1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQge1Rvb2xiYXJNb2R1bGV9IGZyb20gJy4uL3Rvb2xiYXIvdG9vbGJhci5tb2R1bGUnO1xuaW1wb3J0IHtDbGlja091dHNpZGVNb2R1bGV9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jbGljay1vdXRzaWRlL2NsaWNrLW91dHNpZGUubW9kdWxlJztcbmltcG9ydCB7UmVzaXplRHJhZ01vZHVsZX0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3Jlc2l6ZS1kcmFnL3Jlc2l6ZS1kcmFnLm1vZHVsZSc7XG5pbXBvcnQge1Njcm9sbGluZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQge0NvbnRleHRNZW51TW9kdWxlfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5tb2R1bGUnO1xuaW1wb3J0IHsgTWFpbkRyb3Bkb3duVGFiQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1oZWFkL21haW4tZHJvcGRvd24tdGFiL21haW4tZHJvcGRvd24tdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWx0ZXJEcm9wZG93blRhYkNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtaGVhZC9maWx0ZXItZHJvcGRvd24tdGFiL2ZpbHRlci1kcm9wZG93bi10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFZpc2liaWxpdHlEcm9wZG93blRhYkNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtaGVhZC92aXNpYmlsaXR5LWRyb3Bkb3duLXRhYi92aXNpYmlsaXR5LWRyb3Bkb3duLXRhYi5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBUYWJsZUNvbXBvbmVudCxcbiAgICBOdW1lcmljQ2VsbENvbXBvbmVudCxcbiAgICBMaXN0Q2VsbENvbXBvbmVudCxcbiAgICBEYXRlQ2VsbENvbXBvbmVudCxcbiAgICBTdHJpbmdDZWxsQ29tcG9uZW50LFxuICAgIEhlYWRDZWxsSG9zdENvbXBvbmVudCxcbiAgICBUYWJsZUhlYWRDb21wb25lbnQsXG4gICAgVGFibGVCb2R5Q29tcG9uZW50LFxuICAgIENlbGxDb21wb25lbnQsXG4gICAgQ2VsbEhvc3RDb21wb25lbnQsXG4gICAgVGFibGVIZWFkR3JvdXBDb21wb25lbnQsXG4gICAgSGVhZENlbGxDb21wb25lbnQsXG4gICAgRGVmYXVsdEhlYWRDZWxsQ29tcG9uZW50LFxuICAgIFNlbGVjdGlvbkNlbGxDb21wb25lbnQsXG4gICAgU2VsZWN0aW9uSGVhZENlbGxDb21wb25lbnQsXG4gICAgSGVhZENlbGxEcm9wZG93bkNvbXBvbmVudCxcbiAgICBEYXRlVGltZUNlbGxDb21wb25lbnQsXG4gICAgQm9vbGVhbkNlbGxDb21wb25lbnQsXG4gICAgTWFpbkRyb3Bkb3duVGFiQ29tcG9uZW50LFxuICAgIEZpbHRlckRyb3Bkb3duVGFiQ29tcG9uZW50LFxuICAgIFZpc2liaWxpdHlEcm9wZG93blRhYkNvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIE51bWVyaWNDZWxsQ29tcG9uZW50LFxuICAgIExpc3RDZWxsQ29tcG9uZW50LFxuICAgIERhdGVDZWxsQ29tcG9uZW50LFxuICAgIFN0cmluZ0NlbGxDb21wb25lbnQsXG4gICAgSGVhZENlbGxIb3N0Q29tcG9uZW50LFxuICAgIFRhYmxlSGVhZENvbXBvbmVudCxcbiAgICBUYWJsZUJvZHlDb21wb25lbnQsXG4gICAgQ2VsbENvbXBvbmVudCxcbiAgICBDZWxsSG9zdENvbXBvbmVudCxcbiAgICBEYXRlVGltZUNlbGxDb21wb25lbnQsXG4gICAgQm9vbGVhbkNlbGxDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRmlsdGVyTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENoZWNrYm94TW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgRHJvcGRvd25Nb2R1bGUsXG4gICAgVGFic01vZHVsZSxcbiAgICBTZWxlY3RNb2R1bGUsXG4gICAgTnVtYmVyUGlwZU1vZHVsZSxcbiAgICBEYXRlUGlja2VyTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBIaW50TW9kdWxlLFxuICAgIFRyZWVNb2R1bGUsXG4gICAgT25seU51bWJlck1vZHVsZSxcbiAgICBUb29sYmFyTW9kdWxlLFxuICAgIENsaWNrT3V0c2lkZU1vZHVsZSxcbiAgICBSZXNpemVEcmFnTW9kdWxlLFxuICAgIFNjcm9sbGluZ01vZHVsZSxcbiAgICBDb250ZXh0TWVudU1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVNb2R1bGUge1xufVxuIl19
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC90YWJsZS90YWJsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUNuRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUN0RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVB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VUFBVTt3QkFDVixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixnQkFBZ0I7cUJBQ2pCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7VGFibGVDb21wb25lbnR9IGZyb20gJy4vdGFibGUvdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7RmlsdGVyTW9kdWxlfSBmcm9tICcuLi9maWx0ZXIvZmlsdGVyLm1vZHVsZSc7XG5pbXBvcnQge051bWVyaWNDZWxsQ29tcG9uZW50fSBmcm9tICcuL2RlZmF1bHQvbnVtZXJpYy1jZWxsL251bWVyaWMtY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHtMaXN0Q2VsbENvbXBvbmVudH0gZnJvbSAnLi9kZWZhdWx0L2xpc3QtY2VsbC9saXN0LWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7RGF0ZUNlbGxDb21wb25lbnR9IGZyb20gJy4vZGVmYXVsdC9kYXRlLWNlbGwvZGF0ZS1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQge1N0cmluZ0NlbGxDb21wb25lbnR9IGZyb20gJy4vZGVmYXVsdC9zdHJpbmctY2VsbC9zdHJpbmctY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHtIZWFkQ2VsbEhvc3RDb21wb25lbnR9IGZyb20gJy4vaGVhZC1jZWxsLWhvc3QvaGVhZC1jZWxsLWhvc3QuY29tcG9uZW50JztcbmltcG9ydCB7VGFibGVIZWFkQ29tcG9uZW50fSBmcm9tICcuL3RhYmxlLWhlYWQvdGFibGUtaGVhZC5jb21wb25lbnQnO1xuaW1wb3J0IHtUYWJsZUJvZHlDb21wb25lbnR9IGZyb20gJy4vdGFibGUtYm9keS90YWJsZS1ib2R5LmNvbXBvbmVudCc7XG5pbXBvcnQge0NlbGxDb21wb25lbnR9IGZyb20gJy4vY2VsbC9jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0NoZWNrYm94TW9kdWxlfSBmcm9tICcuLi9jaGVja2JveC9jaGVja2JveC5tb2R1bGUnO1xuaW1wb3J0IHtDZWxsSG9zdENvbXBvbmVudH0gZnJvbSAnLi9jZWxsLWhvc3QvY2VsbC1ob3N0LmNvbXBvbmVudCc7XG5pbXBvcnQge1RhYmxlSGVhZEdyb3VwQ29tcG9uZW50fSBmcm9tICcuL3RhYmxlLWhlYWQtZ3JvdXAvdGFibGUtaGVhZC1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHtIZWFkQ2VsbENvbXBvbmVudH0gZnJvbSAnLi9oZWFkLWNlbGwvaGVhZC1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQge0RlZmF1bHRIZWFkQ2VsbENvbXBvbmVudH0gZnJvbSAnLi9kZWZhdWx0L2RlZmF1bHQtaGVhZC1jZWxsL2RlZmF1bHQtaGVhZC1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQge0ljb25Nb2R1bGV9IGZyb20gJy4uL2ljb24vaWNvbi5tb2R1bGUnO1xuaW1wb3J0IHtEcm9wZG93bk1vZHVsZX0gZnJvbSAnLi4vZHJvcGRvd24vZHJvcGRvd24ubW9kdWxlJztcbmltcG9ydCB7VGFic01vZHVsZX0gZnJvbSAnLi4vdGFicy90YWJzLm1vZHVsZSc7XG5pbXBvcnQge1NlbGVjdE1vZHVsZX0gZnJvbSAnLi4vc2VsZWN0L3NlbGVjdC5tb2R1bGUnO1xuaW1wb3J0IHtOdW1iZXJQaXBlTW9kdWxlfSBmcm9tICcuLi8uLi9waXBlL251bWJlci1waXBlL251bWJlci1waXBlLm1vZHVsZSc7XG5pbXBvcnQge0RhdGVQaWNrZXJNb2R1bGV9IGZyb20gJy4uL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLm1vZHVsZSc7XG5pbXBvcnQge0J1dHRvbk1vZHVsZX0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5tb2R1bGUnO1xuaW1wb3J0IHtTZWxlY3Rpb25DZWxsQ29tcG9uZW50fSBmcm9tICcuL3NlbGVjdGlvbi1jZWxsL3NlbGVjdGlvbi1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQge1NlbGVjdGlvbkhlYWRDZWxsQ29tcG9uZW50fSBmcm9tICcuL3NlbGVjdGlvbi1oZWFkLWNlbGwvc2VsZWN0aW9uLWhlYWQtY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHtIaW50TW9kdWxlfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaGludC9oaW50Lm1vZHVsZSc7XG5pbXBvcnQge1RyZWVNb2R1bGV9IGZyb20gJy4uL3RyZWUvdHJlZS5tb2R1bGUnO1xuaW1wb3J0IHtIZWFkQ2VsbERyb3Bkb3duQ29tcG9uZW50fSBmcm9tICcuL2hlYWQtY2VsbC1kcm9wZG93bi9oZWFkLWNlbGwtZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7RGF0ZVRpbWVDZWxsQ29tcG9uZW50fSBmcm9tICcuL2RlZmF1bHQvZGF0ZS10aW1lLWNlbGwvZGF0ZS10aW1lLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7T25seU51bWJlck1vZHVsZX0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL29ubHktbnVtYmVyL29ubHktbnVtYmVyLm1vZHVsZSc7XG5pbXBvcnQge0Jvb2xlYW5DZWxsQ29tcG9uZW50fSBmcm9tICcuL2RlZmF1bHQvYm9vbGVhbi1jZWxsL2Jvb2xlYW4tY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHtUb29sYmFyTW9kdWxlfSBmcm9tICcuLi90b29sYmFyL3Rvb2xiYXIubW9kdWxlJztcbmltcG9ydCB7Q2xpY2tPdXRzaWRlTW9kdWxlfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY2xpY2stb3V0c2lkZS9jbGljay1vdXRzaWRlLm1vZHVsZSc7XG5pbXBvcnQge1Jlc2l6ZURyYWdNb2R1bGV9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9yZXNpemUtZHJhZy9yZXNpemUtZHJhZy5tb2R1bGUnO1xuaW1wb3J0IHtTY3JvbGxpbmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHtDb250ZXh0TWVudU1vZHVsZX0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRleHQtbWVudS9jb250ZXh0LW1lbnUubW9kdWxlJztcbmltcG9ydCB7IE1haW5Ecm9wZG93blRhYkNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtaGVhZC9tYWluLWRyb3Bkb3duLXRhYi9tYWluLWRyb3Bkb3duLXRhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsdGVyRHJvcGRvd25UYWJDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLWhlYWQvZmlsdGVyLWRyb3Bkb3duLXRhYi9maWx0ZXItZHJvcGRvd24tdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaXNpYmlsaXR5RHJvcGRvd25UYWJDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLWhlYWQvdmlzaWJpbGl0eS1kcm9wZG93bi10YWIvdmlzaWJpbGl0eS1kcm9wZG93bi10YWIuY29tcG9uZW50JztcbmltcG9ydCB7U2Nyb2xsYWJsZU1vZHVsZX0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZS9zY3JvbGxhYmxlL3Njcm9sbGFibGUubW9kdWxlXCI7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIE51bWVyaWNDZWxsQ29tcG9uZW50LFxuICAgIExpc3RDZWxsQ29tcG9uZW50LFxuICAgIERhdGVDZWxsQ29tcG9uZW50LFxuICAgIFN0cmluZ0NlbGxDb21wb25lbnQsXG4gICAgSGVhZENlbGxIb3N0Q29tcG9uZW50LFxuICAgIFRhYmxlSGVhZENvbXBvbmVudCxcbiAgICBUYWJsZUJvZHlDb21wb25lbnQsXG4gICAgQ2VsbENvbXBvbmVudCxcbiAgICBDZWxsSG9zdENvbXBvbmVudCxcbiAgICBUYWJsZUhlYWRHcm91cENvbXBvbmVudCxcbiAgICBIZWFkQ2VsbENvbXBvbmVudCxcbiAgICBEZWZhdWx0SGVhZENlbGxDb21wb25lbnQsXG4gICAgU2VsZWN0aW9uQ2VsbENvbXBvbmVudCxcbiAgICBTZWxlY3Rpb25IZWFkQ2VsbENvbXBvbmVudCxcbiAgICBIZWFkQ2VsbERyb3Bkb3duQ29tcG9uZW50LFxuICAgIERhdGVUaW1lQ2VsbENvbXBvbmVudCxcbiAgICBCb29sZWFuQ2VsbENvbXBvbmVudCxcbiAgICBNYWluRHJvcGRvd25UYWJDb21wb25lbnQsXG4gICAgRmlsdGVyRHJvcGRvd25UYWJDb21wb25lbnQsXG4gICAgVmlzaWJpbGl0eURyb3Bkb3duVGFiQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgVGFibGVDb21wb25lbnQsXG4gICAgTnVtZXJpY0NlbGxDb21wb25lbnQsXG4gICAgTGlzdENlbGxDb21wb25lbnQsXG4gICAgRGF0ZUNlbGxDb21wb25lbnQsXG4gICAgU3RyaW5nQ2VsbENvbXBvbmVudCxcbiAgICBIZWFkQ2VsbEhvc3RDb21wb25lbnQsXG4gICAgVGFibGVIZWFkQ29tcG9uZW50LFxuICAgIFRhYmxlQm9keUNvbXBvbmVudCxcbiAgICBDZWxsQ29tcG9uZW50LFxuICAgIENlbGxIb3N0Q29tcG9uZW50LFxuICAgIERhdGVUaW1lQ2VsbENvbXBvbmVudCxcbiAgICBCb29sZWFuQ2VsbENvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGaWx0ZXJNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQ2hlY2tib3hNb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBEcm9wZG93bk1vZHVsZSxcbiAgICBUYWJzTW9kdWxlLFxuICAgIFNlbGVjdE1vZHVsZSxcbiAgICBOdW1iZXJQaXBlTW9kdWxlLFxuICAgIERhdGVQaWNrZXJNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEhpbnRNb2R1bGUsXG4gICAgVHJlZU1vZHVsZSxcbiAgICBPbmx5TnVtYmVyTW9kdWxlLFxuICAgIFRvb2xiYXJNb2R1bGUsXG4gICAgQ2xpY2tPdXRzaWRlTW9kdWxlLFxuICAgIFJlc2l6ZURyYWdNb2R1bGUsXG4gICAgU2Nyb2xsaW5nTW9kdWxlLFxuICAgIENvbnRleHRNZW51TW9kdWxlLFxuICAgIFNjcm9sbGFibGVNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlTW9kdWxlIHtcbn1cbiJdfQ==
@@ -16,7 +16,7 @@ export class ThemeSwitchComponent {
16
16
  }
17
17
  }
18
18
  ThemeSwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ThemeSwitchComponent, deps: [{ token: i1.ThemeSwitchService }], target: i0.ɵɵFactoryTarget.Component });
19
- ThemeSwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: ThemeSwitchComponent, selector: "teta-theme-switch", inputs: { palette: "palette", view: "view" }, ngImport: i0, template: "<button type=\"button\" teta-button [palette]=\"palette\" [view]=\"view\" [square]=\"true\" (click)=\"switchTheme()\">\n <teta-icon [name]=\"'lamp'\"></teta-icon>\n</button>\n", styles: [":host{display:flex;align-items:center}\n"], dependencies: [{ kind: "component", type: i2.ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square", "viewType", "size"] }, { kind: "component", type: i3.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
19
+ ThemeSwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: ThemeSwitchComponent, selector: "teta-theme-switch", inputs: { palette: "palette", view: "view" }, ngImport: i0, template: "<button type=\"button\" teta-button [palette]=\"palette\" [view]=\"view\" [square]=\"true\" (click)=\"switchTheme()\">\n <teta-icon [name]=\"'lamp'\"></teta-icon>\n</button>\n", styles: [":host{display:flex;align-items:center}\n"], dependencies: [{ kind: "component", type: i2.ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square"] }, { kind: "component", type: i3.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20
20
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ThemeSwitchComponent, decorators: [{
21
21
  type: Component,
22
22
  args: [{ selector: 'teta-theme-switch', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button type=\"button\" teta-button [palette]=\"palette\" [view]=\"view\" [square]=\"true\" (click)=\"switchTheme()\">\n <teta-icon [name]=\"'lamp'\"></teta-icon>\n</button>\n", styles: [":host{display:flex;align-items:center}\n"] }]