@elderbyte/ngx-starter 17.4.0 → 17.6.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 (511) hide show
  1. package/esm2022/lib/common/enums/elder-enum-translation.service.mjs +3 -3
  2. package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +3 -3
  3. package/esm2022/lib/common/forms/elder-from-field-base.mjs +3 -3
  4. package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +3 -3
  5. package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +3 -3
  6. package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +3 -3
  7. package/esm2022/lib/common/forms/form-field-base.component.mjs +3 -3
  8. package/esm2022/lib/common/forms/multi-model-base.component.mjs +3 -3
  9. package/esm2022/lib/common/forms/template-composite-control.mjs +3 -3
  10. package/esm2022/lib/common/forms/value-accessor-base.mjs +3 -3
  11. package/esm2022/lib/common/http/http-client-builder.service.mjs +3 -3
  12. package/esm2022/lib/common/http/http-client-pristine.mjs +3 -3
  13. package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +3 -3
  14. package/esm2022/lib/common/url/elder-router.service.mjs +3 -3
  15. package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +3 -3
  16. package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +7 -7
  17. package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +11 -11
  18. package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +12 -11
  19. package/esm2022/lib/components/auditing/elder-audit.module.mjs +11 -11
  20. package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +20 -18
  21. package/esm2022/lib/components/badge/elder-badge.directive.mjs +6 -5
  22. package/esm2022/lib/components/badge/elder-badge.module.mjs +17 -17
  23. package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +5 -5
  24. package/esm2022/lib/components/button-group/elder-button-group.module.mjs +9 -8
  25. package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +7 -7
  26. package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +8 -5
  27. package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +13 -12
  28. package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +11 -9
  29. package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +6 -6
  30. package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +31 -26
  31. package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +14 -15
  32. package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +6 -5
  33. package/esm2022/lib/components/chips/elder-chips.module.mjs +8 -9
  34. package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +10 -10
  35. package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +3 -3
  36. package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +10 -10
  37. package/esm2022/lib/components/containers/elder-containers.module.mjs +7 -8
  38. package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +6 -6
  39. package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +7 -7
  40. package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +3 -3
  41. package/esm2022/lib/components/csv/elder-csv.module.mjs +10 -10
  42. package/esm2022/lib/components/currency/elder-currency.module.mjs +7 -8
  43. package/esm2022/lib/components/currency/elder-currency.pipe.mjs +6 -5
  44. package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +17 -14
  45. package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +3 -3
  46. package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +10 -10
  47. package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +8 -8
  48. package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +13 -13
  49. package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +10 -10
  50. package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +3 -3
  51. package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +9 -8
  52. package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +18 -15
  53. package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +24 -13
  54. package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +11 -10
  55. package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +6 -5
  56. package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +8 -8
  57. package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +33 -28
  58. package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +12 -12
  59. package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +10 -10
  60. package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +8 -5
  61. package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +5 -4
  62. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +7 -7
  63. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +19 -19
  64. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +3 -3
  65. package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +6 -5
  66. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +5 -5
  67. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +8 -7
  68. package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +6 -5
  69. package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +6 -5
  70. package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +6 -5
  71. package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +3 -3
  72. package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +8 -5
  73. package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +17 -20
  74. package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +6 -5
  75. package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +6 -5
  76. package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +6 -5
  77. package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +6 -5
  78. package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +8 -5
  79. package/esm2022/lib/components/data-view/table/elder-table.module.mjs +19 -19
  80. package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +3 -3
  81. package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +13 -11
  82. package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +15 -13
  83. package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +3 -3
  84. package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +16 -14
  85. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +10 -9
  86. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +6 -5
  87. package/esm2022/lib/components/errors/elder-error.module.mjs +11 -11
  88. package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +10 -10
  89. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +8 -8
  90. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +8 -8
  91. package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +6 -6
  92. package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +9 -8
  93. package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +3 -3
  94. package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +6 -5
  95. package/esm2022/lib/components/files/elder-file-select.directive.mjs +6 -5
  96. package/esm2022/lib/components/files/elder-file.module.mjs +16 -14
  97. package/esm2022/lib/components/files/file-select/file-select.component.mjs +8 -8
  98. package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +13 -13
  99. package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +3 -3
  100. package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +3 -3
  101. package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +6 -5
  102. package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +6 -5
  103. package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +5 -4
  104. package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +6 -5
  105. package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +6 -5
  106. package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +6 -5
  107. package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +8 -11
  108. package/esm2022/lib/components/forms/directives/elder-initial-value.directive.mjs +6 -5
  109. package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +6 -5
  110. package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +6 -5
  111. package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +6 -5
  112. package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +6 -5
  113. package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +6 -5
  114. package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +6 -5
  115. package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +6 -5
  116. package/esm2022/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +6 -5
  117. package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +6 -5
  118. package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +3 -3
  119. package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +3 -3
  120. package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +3 -3
  121. package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +6 -5
  122. package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +6 -5
  123. package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +6 -5
  124. package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +6 -5
  125. package/esm2022/lib/components/forms/elder-forms.module.mjs +4 -4
  126. package/esm2022/lib/components/forms/search/domain/context/search-context.service.mjs +3 -3
  127. package/esm2022/lib/components/forms/search/domain/url/elder-search-url.directive.mjs +6 -5
  128. package/esm2022/lib/components/forms/search/domain/url/elder-search-url.service.mjs +3 -3
  129. package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +6 -5
  130. package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +6 -5
  131. package/esm2022/lib/components/forms/search/elder-search.module.mjs +15 -15
  132. package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +21 -19
  133. package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +6 -5
  134. package/esm2022/lib/components/global-search/elder-global-search.component.mjs +13 -12
  135. package/esm2022/lib/components/global-search/elder-global-search.module.mjs +6 -9
  136. package/esm2022/lib/components/global-search/elder-global-search.service.mjs +3 -3
  137. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +6 -6
  138. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +8 -9
  139. package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +6 -5
  140. package/esm2022/lib/components/headers/elder-header.module.mjs +10 -9
  141. package/esm2022/lib/components/http-support/elder-http-client.service.mjs +3 -3
  142. package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +24 -22
  143. package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +15 -13
  144. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +14 -13
  145. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +3 -3
  146. package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +20 -18
  147. package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +8 -5
  148. package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +6 -5
  149. package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +6 -5
  150. package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +6 -5
  151. package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +3 -3
  152. package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +3 -3
  153. package/esm2022/lib/components/i18n/language/elder-language.module.mjs +11 -11
  154. package/esm2022/lib/components/i18n/language/elder-language.service.mjs +3 -3
  155. package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +16 -14
  156. package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +4 -4
  157. package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +5 -6
  158. package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +6 -5
  159. package/esm2022/lib/components/iframes/elder-iframe.module.mjs +18 -15
  160. package/esm2022/lib/components/iframes/iframe-close.directive.mjs +5 -4
  161. package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +7 -7
  162. package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +11 -11
  163. package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +7 -7
  164. package/esm2022/lib/components/iframes/iframe.service.mjs +3 -3
  165. package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +6 -5
  166. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +8 -5
  167. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +8 -11
  168. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +12 -12
  169. package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +6 -5
  170. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +6 -5
  171. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +14 -14
  172. package/esm2022/lib/components/labels/elder-labels.module.mjs +10 -8
  173. package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +16 -15
  174. package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +9 -8
  175. package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +6 -5
  176. package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +6 -5
  177. package/esm2022/lib/components/measures/elder-measures.module.mjs +24 -22
  178. package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +6 -5
  179. package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +6 -5
  180. package/esm2022/lib/components/measures/elder-unit.service.mjs +3 -3
  181. package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +11 -10
  182. package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +11 -8
  183. package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +6 -5
  184. package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +6 -5
  185. package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +3 -3
  186. package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +17 -17
  187. package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +10 -10
  188. package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +16 -15
  189. package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +8 -8
  190. package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +11 -11
  191. package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +5 -5
  192. package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +6 -5
  193. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +13 -12
  194. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +3 -3
  195. package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +9 -9
  196. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +8 -7
  197. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +3 -3
  198. package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +6 -5
  199. package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +6 -5
  200. package/esm2022/lib/components/overlays/elder-overlay.component.mjs +6 -5
  201. package/esm2022/lib/components/overlays/elder-overlay.module.mjs +9 -10
  202. package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +5 -5
  203. package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +5 -5
  204. package/esm2022/lib/components/panels/elder-panel.module.mjs +8 -9
  205. package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +5 -5
  206. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +6 -5
  207. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +20 -14
  208. package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +6 -5
  209. package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +6 -6
  210. package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +6 -5
  211. package/esm2022/lib/components/select/elder-select-base.mjs +17 -6
  212. package/esm2022/lib/components/select/elder-select-chip.directive.mjs +16 -13
  213. package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +6 -5
  214. package/esm2022/lib/components/select/elder-select-value.directive.mjs +8 -5
  215. package/esm2022/lib/components/select/elder-select.module.mjs +37 -28
  216. package/esm2022/lib/components/select/multi/elder-chip-select-option/elder-select-option.component.mjs +17 -0
  217. package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +5 -5
  218. package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.mjs +18 -27
  219. package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +16 -18
  220. package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +3 -3
  221. package/esm2022/lib/components/select/multi/elder-mutli-select-all-directive.mjs +35 -0
  222. package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +5 -4
  223. package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +6 -5
  224. package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +13 -12
  225. package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +6 -5
  226. package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +18 -16
  227. package/esm2022/lib/components/select/single/elder-select-form-field.mjs +3 -3
  228. package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +8 -8
  229. package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +10 -10
  230. package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +3 -3
  231. package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +3 -3
  232. package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +6 -5
  233. package/esm2022/lib/components/shell/elder-shell.module.mjs +18 -16
  234. package/esm2022/lib/components/shell/elder-shell.service.mjs +3 -3
  235. package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +8 -8
  236. package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +34 -25
  237. package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +8 -8
  238. package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +6 -5
  239. package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +6 -5
  240. package/esm2022/lib/components/tabs/elder-tab.module.mjs +8 -9
  241. package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +6 -5
  242. package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +3 -3
  243. package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +10 -9
  244. package/esm2022/lib/components/theme/elder-theme.directive.mjs +6 -5
  245. package/esm2022/lib/components/theme/elder-theme.module.mjs +12 -12
  246. package/esm2022/lib/components/theme/elder-theme.service.mjs +3 -3
  247. package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +3 -3
  248. package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +10 -9
  249. package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +11 -10
  250. package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +10 -8
  251. package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +14 -12
  252. package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +15 -14
  253. package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +10 -8
  254. package/esm2022/lib/components/time/elder-time.module.mjs +23 -17
  255. package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +11 -11
  256. package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +6 -5
  257. package/esm2022/lib/components/toasts/elder-toast.module.mjs +6 -7
  258. package/esm2022/lib/components/toasts/elder-toast.service.mjs +3 -3
  259. package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +8 -8
  260. package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +11 -11
  261. package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +10 -10
  262. package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +5 -5
  263. package/esm2022/lib/components/viewers/elder-viewers.module.mjs +8 -9
  264. package/esm2022/lib/features/event-source/elder-event-source.service.mjs +3 -3
  265. package/esm2022/lib/features/kafent/access-token-provider.mjs +3 -3
  266. package/esm2022/lib/features/kafent/kafent-config.mjs +3 -3
  267. package/esm2022/lib/features/kafent/kafent-event-stream.mjs +3 -3
  268. package/esm2022/lib/features/kafent/kafent-event.service.mjs +3 -3
  269. package/esm2022/lib/features/kafent/kafent.module.mjs +4 -4
  270. package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +3 -3
  271. package/esm2022/lib/pipes/bytes.pipe.mjs +8 -5
  272. package/esm2022/lib/pipes/elder-pipes.module.mjs +21 -18
  273. package/esm2022/lib/pipes/elder-repeat.pipe.mjs +8 -5
  274. package/esm2022/lib/pipes/elder-round.pipe.mjs +6 -5
  275. package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +6 -5
  276. package/esm2022/lib/pipes/elder-truncate.pipe.mjs +6 -5
  277. package/esm2022/lib/pipes/iso-duration.pipe.mjs +6 -5
  278. package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +6 -5
  279. package/esm2022/lib/pipes/iso-interval.pipe.mjs +6 -5
  280. package/esm2022/lib/pipes/time-ago.pipe.mjs +6 -5
  281. package/esm2022/lib/pipes/time-duration.pipe.mjs +6 -5
  282. package/esm2022/lib/pipes/weight.pipe.mjs +8 -5
  283. package/fesm2022/elderbyte-ngx-starter.mjs +2064 -1875
  284. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  285. package/lib/components/access-denied/elder-access-denied.component.d.ts +1 -1
  286. package/lib/components/access-denied/elder-access-denied.module.d.ts +5 -5
  287. package/lib/components/auditing/audited-entity/elder-audited-entity.component.d.ts +1 -1
  288. package/lib/components/auditing/elder-audit.module.d.ts +7 -7
  289. package/lib/components/badge/elder-badge/elder-badge.component.d.ts +3 -3
  290. package/lib/components/badge/elder-badge.directive.d.ts +1 -1
  291. package/lib/components/badge/elder-badge.module.d.ts +8 -8
  292. package/lib/components/button-group/elder-button-group/elder-button-group.component.d.ts +1 -1
  293. package/lib/components/button-group/elder-button-group.module.d.ts +6 -6
  294. package/lib/components/card-organizer/card-organizer/elder-card-organizer.component.d.ts +1 -1
  295. package/lib/components/card-organizer/card-organizer/elder-stack-card.directive.d.ts +1 -1
  296. package/lib/components/card-organizer/card-stack/elder-card-stack.component.d.ts +1 -1
  297. package/lib/components/card-organizer/elder-card-organizer.module.d.ts +12 -12
  298. package/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.d.ts +1 -1
  299. package/lib/components/cards/elder-card/elder-card.component.d.ts +6 -6
  300. package/lib/components/cards/elder-card/elder-card.module.d.ts +7 -7
  301. package/lib/components/chips/elder-chip-label.directive.d.ts +1 -1
  302. package/lib/components/chips/elder-chips.module.d.ts +6 -6
  303. package/lib/components/connectivity/elder-connectivity.module.d.ts +8 -8
  304. package/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.d.ts +1 -1
  305. package/lib/components/containers/elder-containers.module.d.ts +3 -3
  306. package/lib/components/containers/elder-scroll-container/elder-scroll-container.component.d.ts +1 -1
  307. package/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.d.ts +1 -1
  308. package/lib/components/csv/elder-csv.module.d.ts +5 -5
  309. package/lib/components/currency/elder-currency.module.d.ts +3 -3
  310. package/lib/components/currency/elder-currency.pipe.d.ts +1 -1
  311. package/lib/components/data-transfer/elder-data-transfer.module.d.ts +17 -17
  312. package/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.d.ts +1 -1
  313. package/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.d.ts +1 -1
  314. package/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.d.ts +1 -1
  315. package/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.d.ts +1 -1
  316. package/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.d.ts +1 -1
  317. package/lib/components/data-view/common/elder-data-common.module.d.ts +19 -19
  318. package/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.d.ts +2 -2
  319. package/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.d.ts +1 -1
  320. package/lib/components/data-view/common/selection/data-context-selection.directive.d.ts +1 -1
  321. package/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.d.ts +1 -1
  322. package/lib/components/data-view/grid/elder-grid/elder-grid.component.d.ts +3 -3
  323. package/lib/components/data-view/grid/elder-grid.module.d.ts +19 -19
  324. package/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.d.ts +1 -1
  325. package/lib/components/data-view/master-detail/elder-detail.directive.d.ts +1 -1
  326. package/lib/components/data-view/master-detail/elder-master-activation.directive.d.ts +1 -1
  327. package/lib/components/data-view/master-detail/elder-master-detail.component.d.ts +1 -1
  328. package/lib/components/data-view/master-detail/elder-master-detail.module.d.ts +23 -23
  329. package/lib/components/data-view/master-detail/elder-master.directive.d.ts +1 -1
  330. package/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.d.ts +1 -1
  331. package/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.d.ts +22 -22
  332. package/lib/components/data-view/table/activation/elder-delete-active.directive.d.ts +1 -1
  333. package/lib/components/data-view/table/activation/elder-table-activation.directive.d.ts +1 -1
  334. package/lib/components/data-view/table/elder-number-cell.directive.d.ts +1 -1
  335. package/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.d.ts +1 -1
  336. package/lib/components/data-view/table/elder-table/elder-table.component.d.ts +1 -1
  337. package/lib/components/data-view/table/elder-table-column.directive.d.ts +1 -1
  338. package/lib/components/data-view/table/elder-table-extension.directive.d.ts +1 -1
  339. package/lib/components/data-view/table/elder-table-root.directive.d.ts +1 -1
  340. package/lib/components/data-view/table/elder-table-row.directive.d.ts +1 -1
  341. package/lib/components/data-view/table/elder-table-sort.directive.d.ts +1 -1
  342. package/lib/components/data-view/table/elder-table.module.d.ts +32 -32
  343. package/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.d.ts +1 -1
  344. package/lib/components/dialogs/elder-dialog.module.d.ts +16 -16
  345. package/lib/components/dialogs/question-dialog/elder-question-dialog.component.d.ts +1 -1
  346. package/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.d.ts +1 -1
  347. package/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.d.ts +1 -1
  348. package/lib/components/errors/elder-error.module.d.ts +6 -6
  349. package/lib/components/errors/exception-detail/elder-exception-detail.component.d.ts +1 -1
  350. package/lib/components/expand-toggle-button/elder-expand-toggle-button.component.d.ts +1 -1
  351. package/lib/components/expand-toggle-button/elder-expand-toggle-button.module.d.ts +6 -6
  352. package/lib/components/files/blob-viewer/elder-blob-viewer.component.d.ts +1 -1
  353. package/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.d.ts +1 -1
  354. package/lib/components/files/elder-file-drop-zone.directive.d.ts +1 -1
  355. package/lib/components/files/elder-file-select.directive.d.ts +1 -1
  356. package/lib/components/files/elder-file.module.d.ts +14 -14
  357. package/lib/components/files/file-select/file-select.component.d.ts +1 -1
  358. package/lib/components/files/file-upload/file-upload.component.d.ts +1 -1
  359. package/lib/components/forms/directives/elder-clipboard-put.directive.d.ts +1 -1
  360. package/lib/components/forms/directives/elder-delayed-focus.directive.d.ts +1 -1
  361. package/lib/components/forms/directives/elder-form-field-dense.directive.d.ts +1 -1
  362. package/lib/components/forms/directives/elder-form-field-label.directive.d.ts +1 -1
  363. package/lib/components/forms/directives/elder-form-field-no-hint.directive.d.ts +1 -1
  364. package/lib/components/forms/directives/elder-form-field-no-spinner.directive.d.ts +1 -1
  365. package/lib/components/forms/directives/elder-forms-directives.module.d.ts +22 -22
  366. package/lib/components/forms/directives/elder-initial-value.directive.d.ts +1 -1
  367. package/lib/components/forms/directives/elder-input-pattern.directive.d.ts +1 -1
  368. package/lib/components/forms/directives/elder-key-event.directive.d.ts +1 -1
  369. package/lib/components/forms/directives/elder-next-focusable.directive.d.ts +1 -1
  370. package/lib/components/forms/directives/elder-plug-parent-form.directive.d.ts +1 -1
  371. package/lib/components/forms/directives/elder-stop-event-propagation.directive.d.ts +1 -1
  372. package/lib/components/forms/directives/elder-tab-focus-trap.directive.d.ts +1 -1
  373. package/lib/components/forms/directives/elder-touched.directive.d.ts +1 -1
  374. package/lib/components/forms/directives/elder-triple-state-checkbox.directive.d.ts +1 -1
  375. package/lib/components/forms/directives/validation/elder-validation-error.directive.d.ts +1 -1
  376. package/lib/components/forms/directives/validation/validators/elder-max.validator.d.ts +1 -1
  377. package/lib/components/forms/directives/validation/validators/elder-min.validator.d.ts +1 -1
  378. package/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.d.ts +1 -1
  379. package/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.d.ts +1 -1
  380. package/lib/components/forms/search/domain/url/elder-search-url.directive.d.ts +1 -1
  381. package/lib/components/forms/search/elder-search-context.directive.d.ts +1 -1
  382. package/lib/components/forms/search/elder-search-input.directive.d.ts +1 -1
  383. package/lib/components/forms/search/elder-search.module.d.ts +18 -18
  384. package/lib/components/forms/search/search-box/elder-search-box.component.d.ts +1 -1
  385. package/lib/components/forms/search/search-box/elder-search-panel.component.d.ts +1 -1
  386. package/lib/components/global-search/elder-global-search.component.d.ts +1 -1
  387. package/lib/components/global-search/elder-global-search.module.d.ts +8 -8
  388. package/lib/components/graph/elder-progress-bar/elder-progress-bar.component.d.ts +1 -1
  389. package/lib/components/graph/elder-progress-bar/elder-progress-bar.module.d.ts +3 -3
  390. package/lib/components/headers/elder-header/elder-header.component.d.ts +1 -1
  391. package/lib/components/headers/elder-header.module.d.ts +5 -5
  392. package/lib/components/i18n/entities/elder-i18n-entities.module.d.ts +24 -24
  393. package/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.d.ts +1 -1
  394. package/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.d.ts +1 -1
  395. package/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.d.ts +1 -1
  396. package/lib/components/i18n/entities/elder-localized-text-column.directive.d.ts +1 -1
  397. package/lib/components/i18n/entities/elder-localized-texts.directive.d.ts +1 -1
  398. package/lib/components/i18n/entities/picker/i18n-pick-async.pipe.d.ts +1 -1
  399. package/lib/components/i18n/entities/picker/i18n-pick.pipe.d.ts +1 -1
  400. package/lib/components/i18n/language/elder-language.module.d.ts +10 -10
  401. package/lib/components/i18n/language/language-switcher/elder-language-switcher.component.d.ts +1 -1
  402. package/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.d.ts +1 -1
  403. package/lib/components/iframes/data-view/data-view-iframe-adapter.directive.d.ts +1 -1
  404. package/lib/components/iframes/elder-iframe.module.d.ts +16 -16
  405. package/lib/components/iframes/iframe-close.directive.d.ts +1 -1
  406. package/lib/components/iframes/iframe-dialog/iframe-dialog.component.d.ts +1 -1
  407. package/lib/components/iframes/iframe-host/iframe-host.component.d.ts +1 -1
  408. package/lib/components/iframes/iframe-side-content/iframe-side-content.component.d.ts +1 -1
  409. package/lib/components/infinitescroll/elder-infinite-autocomplete.directive.d.ts +1 -1
  410. package/lib/components/infinitescroll/elder-infinite-scroll.directive.d.ts +1 -1
  411. package/lib/components/infinitescroll/elder-infinite-scroll.module.d.ts +4 -4
  412. package/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.d.ts +1 -1
  413. package/lib/components/input/autocomplete/elder-autocomplete-many.directive.d.ts +1 -1
  414. package/lib/components/input/autocomplete/elder-autocomplete.directive.d.ts +1 -1
  415. package/lib/components/input/autocomplete/elder-autocomplete.module.d.ts +11 -11
  416. package/lib/components/labels/elder-labels.module.d.ts +9 -9
  417. package/lib/components/labels/labels-input/labels-input.component.d.ts +1 -1
  418. package/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.d.ts +1 -1
  419. package/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.d.ts +1 -1
  420. package/lib/components/measures/directives/elder-unit-select.directive.d.ts +1 -1
  421. package/lib/components/measures/elder-measures.module.d.ts +17 -17
  422. package/lib/components/measures/elder-quantity-transform.pipe.d.ts +1 -1
  423. package/lib/components/measures/elder-quantity.pipe.d.ts +1 -1
  424. package/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.d.ts +1 -1
  425. package/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.d.ts +1 -1
  426. package/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.d.ts +1 -1
  427. package/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.d.ts +1 -1
  428. package/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.d.ts +1 -1
  429. package/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.d.ts +11 -11
  430. package/lib/components/navigation/nav/elder-nav.module.d.ts +12 -12
  431. package/lib/components/navigation/nav/nav-group/elder-nav-group.component.d.ts +1 -1
  432. package/lib/components/navigation/nav/nav-link/elder-nav-link.component.d.ts +1 -1
  433. package/lib/components/navigation/nav/nav-list/elder-nav-list.component.d.ts +1 -1
  434. package/lib/components/navigation/toolbar/elder-toolbar-column.directive.d.ts +1 -1
  435. package/lib/components/navigation/toolbar/elder-toolbar.module.d.ts +13 -13
  436. package/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.d.ts +1 -1
  437. package/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.d.ts +1 -1
  438. package/lib/components/overlays/elder-overlay-origin.directive.d.ts +1 -1
  439. package/lib/components/overlays/elder-overlay-trigger.directive.d.ts +1 -1
  440. package/lib/components/overlays/elder-overlay.component.d.ts +1 -1
  441. package/lib/components/overlays/elder-overlay.module.d.ts +6 -6
  442. package/lib/components/panels/card-panel/elder-card-panel.component.d.ts +1 -1
  443. package/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.d.ts +1 -1
  444. package/lib/components/panels/elder-panel.module.d.ts +8 -8
  445. package/lib/components/panels/flat/elder-panel.component.d.ts +1 -1
  446. package/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.d.ts +1 -1
  447. package/lib/components/panels/toggle-panel/elder-toggle-panel.component.d.ts +3 -3
  448. package/lib/components/scrollbar/elder-scrollbar.directive.d.ts +1 -1
  449. package/lib/components/scrollbar/elder-scrollbar.module.d.ts +1 -1
  450. package/lib/components/select/auto/elder-auto-select-first.directive.d.ts +1 -1
  451. package/lib/components/select/elder-select-base.d.ts +6 -2
  452. package/lib/components/select/elder-select-chip.directive.d.ts +3 -3
  453. package/lib/components/select/elder-select-on-tab.directive.d.ts +1 -1
  454. package/lib/components/select/elder-select-value.directive.d.ts +1 -1
  455. package/lib/components/select/elder-select.module.d.ts +39 -37
  456. package/lib/components/select/multi/elder-chip-select-option/elder-select-option.component.d.ts +8 -0
  457. package/lib/components/select/multi/elder-multi-select-base.d.ts +1 -1
  458. package/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.d.ts +1 -4
  459. package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.d.ts +1 -1
  460. package/lib/components/select/multi/elder-mutli-select-all-directive.d.ts +15 -0
  461. package/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.d.ts +1 -1
  462. package/lib/components/select/popup/selection-model-popup.directive.d.ts +1 -1
  463. package/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.d.ts +1 -1
  464. package/lib/components/select/single/elder-clear-select.directive.d.ts +1 -1
  465. package/lib/components/select/single/elder-select/elder-select.component.d.ts +1 -1
  466. package/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.d.ts +1 -1
  467. package/lib/components/select-chip-list/elder-chip-list-select.module.d.ts +6 -6
  468. package/lib/components/shell/elder-shell-slot.directive.d.ts +1 -1
  469. package/lib/components/shell/elder-shell.module.d.ts +16 -16
  470. package/lib/components/shell/header/elder-app-header/elder-app-header.component.d.ts +1 -1
  471. package/lib/components/shell/shell/elder-shell.component.d.ts +4 -4
  472. package/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.d.ts +1 -1
  473. package/lib/components/tabs/elder-tab/elder-tab.directive.d.ts +1 -1
  474. package/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.d.ts +1 -1
  475. package/lib/components/tabs/elder-tab.module.d.ts +5 -5
  476. package/lib/components/theme/elder-theme-applier.directive.d.ts +1 -1
  477. package/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.d.ts +1 -1
  478. package/lib/components/theme/elder-theme.directive.d.ts +1 -1
  479. package/lib/components/theme/elder-theme.module.d.ts +8 -8
  480. package/lib/components/time/duration/elder-duration-input/elder-duration-input.component.d.ts +1 -1
  481. package/lib/components/time/elder-date-switcher/elder-date-switcher.component.d.ts +1 -1
  482. package/lib/components/time/elder-date-time-input/elder-date-time-input.component.d.ts +1 -1
  483. package/lib/components/time/elder-interval-input/elder-interval-input.component.d.ts +1 -1
  484. package/lib/components/time/elder-local-date-input/elder-local-date-input.component.d.ts +1 -1
  485. package/lib/components/time/elder-local-time-input/elder-local-time-input.component.d.ts +1 -1
  486. package/lib/components/time/elder-time.module.d.ts +19 -19
  487. package/lib/components/time/period/elder-period-input/elder-period-input.component.d.ts +1 -1
  488. package/lib/components/time/pipes/to-iso-date-string.pipe.d.ts +1 -1
  489. package/lib/components/toasts/elder-toast.module.d.ts +6 -6
  490. package/lib/components/toasts/standard-toast/standard-toast.component.d.ts +1 -1
  491. package/lib/components/url-fragment/elder-url-fragment.module.d.ts +10 -10
  492. package/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.d.ts +1 -1
  493. package/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.d.ts +1 -1
  494. package/lib/components/viewers/elder-viewers.module.d.ts +3 -3
  495. package/lib/pipes/bytes.pipe.d.ts +1 -1
  496. package/lib/pipes/elder-pipes.module.d.ts +15 -15
  497. package/lib/pipes/elder-repeat.pipe.d.ts +1 -1
  498. package/lib/pipes/elder-round.pipe.d.ts +1 -1
  499. package/lib/pipes/elder-safe-url.pipe.d.ts +1 -1
  500. package/lib/pipes/elder-truncate.pipe.d.ts +1 -1
  501. package/lib/pipes/iso-duration.pipe.d.ts +1 -1
  502. package/lib/pipes/iso-interval-parse.pipe.d.ts +1 -1
  503. package/lib/pipes/iso-interval.pipe.d.ts +1 -1
  504. package/lib/pipes/time-ago.pipe.d.ts +1 -1
  505. package/lib/pipes/time-duration.pipe.d.ts +1 -1
  506. package/lib/pipes/weight.pipe.d.ts +1 -1
  507. package/package.json +1 -1
  508. package/esm2022/lib/components/select/multi/elder-chip-select-option/elder-select-chip-option.component.mjs +0 -17
  509. package/lib/components/select/multi/elder-chip-select-option/elder-select-chip-option.component.d.ts +0 -8
  510. package/src/lib/components/select/multi/elder-select-chip/elder-select-chip.component.scss +0 -0
  511. /package/src/lib/components/select/multi/elder-chip-select-option/{elder-select-chip-option.component.scss → elder-select-option.component.scss} +0 -0
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, forwardRef, Input, Optional, Self, TemplateRef, ViewChild } from "@angular/core";
1
+ import { ChangeDetectionStrategy, Component, ContentChild, forwardRef, Input, Optional, Self, TemplateRef, ViewChild } from "@angular/core";
2
2
  import { ElderMultiSelectBase } from "../elder-multi-select-base";
3
3
  import { LoggerFactory } from "@elderbyte/ts-logger";
4
4
  import { BehaviorSubject, combineLatest } from "rxjs";
@@ -7,23 +7,21 @@ import { ElderSelectChipAvatarDirective, ElderSelectChipDirective } from "../../
7
7
  import { ELDER_SELECT_BASE } from "../../elder-select-base";
8
8
  import { MatFormFieldControl } from "@angular/material/form-field";
9
9
  import { SelectOptionChipSpecUtil } from "./select-option-chip-spec";
10
- import { MatChipListbox } from "@angular/material/chips";
10
+ import { MatChipListbox, MatChipOption, MatChipAvatar, MatChipTrailingIcon } from "@angular/material/chips";
11
11
  import { coerceBooleanProperty } from "@angular/cdk/coercion";
12
- import { ElderSelectChipOptionComponent } from "../elder-chip-select-option/elder-select-chip-option.component";
13
12
  import ChipOptionsProvider from "./chip-options-provider";
13
+ import { ElderTruncatePipe } from "../../../../pipes/elder-truncate.pipe";
14
+ import { ElderStopEventPropagationDirective } from "../../../forms/directives/elder-stop-event-propagation.directive";
15
+ import { MatIconButton } from "@angular/material/button";
16
+ import { NgTemplateOutlet, AsyncPipe } from "@angular/common";
17
+ import { ElderChipLabelDirective } from "../../../chips/elder-chip-label.directive";
18
+ import { MatIcon } from "@angular/material/icon";
19
+ import { MatTooltip } from "@angular/material/tooltip";
14
20
  import * as i0 from "@angular/core";
15
21
  import * as i1 from "@angular/cdk/a11y";
16
22
  import * as i2 from "@ngx-translate/core";
17
23
  import * as i3 from "../../../dialogs/elder-dialog.service";
18
24
  import * as i4 from "@angular/forms";
19
- import * as i5 from "@angular/common";
20
- import * as i6 from "@angular/material/icon";
21
- import * as i7 from "@angular/material/button";
22
- import * as i8 from "@angular/material/chips";
23
- import * as i9 from "@angular/material/tooltip";
24
- import * as i10 from "../../../forms/directives/elder-stop-event-propagation.directive";
25
- import * as i11 from "../../../chips/elder-chip-label.directive";
26
- import * as i12 from "../../../../pipes/elder-truncate.pipe";
27
25
  export class ElderMultiSelectChipOptionsComponent extends ElderMultiSelectBase {
28
26
  /***************************************************************************
29
27
  * *
@@ -41,7 +39,6 @@ export class ElderMultiSelectChipOptionsComponent extends ElderMultiSelectBase {
41
39
  this.log = LoggerFactory.getLogger(this.constructor.name);
42
40
  this.chipTemplate$ = new BehaviorSubject(null);
43
41
  this.chipAvatarTemplate$ = new BehaviorSubject(null);
44
- this.templateSelectChips$ = new BehaviorSubject([]);
45
42
  this.defaultChipSpec = SelectOptionChipSpecUtil.DefaultChipSpec;
46
43
  this._chipSpecFn$ = new BehaviorSubject(e => this.defaultChipSpec);
47
44
  this.stacked = false;
@@ -63,15 +60,15 @@ export class ElderMultiSelectChipOptionsComponent extends ElderMultiSelectBase {
63
60
  this.dataContext$,
64
61
  this.dataContext$.pipe(switchMap(dc => dc.data)),
65
62
  this.chipSpecFn$,
66
- this.templateSelectChips$
63
+ this.templateOptions$
67
64
  ]).pipe(map(([dc, data, chipSpecFn, templateChips]) => new ChipOptionsProvider(dc.dataSource, this.buildAvailableEntities(data, templateChips), chipSpecFn)));
68
65
  this.selectChips$ = combineLatest([
69
66
  this.optionsProvider$,
70
67
  this.entities$,
71
68
  this.entityIds$,
72
- this.templateSelectChips$,
69
+ this.templateOptions$,
73
70
  this.context$
74
- ]).pipe(map(([optionsProvider, entities, entitiyIds, templateSelectChips, context]) => this.buildChipModels(optionsProvider, entities, entitiyIds, this.buildEntitiesLabelMap(templateSelectChips), context)));
71
+ ]).pipe(map(([optionsProvider, entities, entityIds, templateSelectChips, context]) => this.buildChipModels(optionsProvider, entities, entityIds, this.buildEntitiesLabelMap(templateSelectChips), context)));
75
72
  this.templates$ = combineLatest([
76
73
  this.chipTemplate$,
77
74
  this.chipAvatarTemplate$
@@ -109,9 +106,6 @@ export class ElderMultiSelectChipOptionsComponent extends ElderMultiSelectBase {
109
106
  set chipTemplateQuery(template) {
110
107
  this.chipTemplate = template;
111
108
  }
112
- set elderOptions(comps) {
113
- this.templateSelectChips$.next(comps);
114
- }
115
109
  set chipTemplate(template) {
116
110
  this.chipTemplate$.next(template);
117
111
  }
@@ -219,16 +213,16 @@ export class ElderMultiSelectChipOptionsComponent extends ElderMultiSelectBase {
219
213
  return new Map(templateChips.filter(chip => chip.label != undefined)
220
214
  .map(chip => [chip.value, chip.label]));
221
215
  }
222
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ElderMultiSelectChipOptionsComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.FocusMonitor }, { token: i2.TranslateService }, { token: i3.ElderDialogService }, { token: i0.DestroyRef }, { token: i4.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
223
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: ElderMultiSelectChipOptionsComponent, selector: "elder-multi-select-chip-options", inputs: { defaultChipSpec: "defaultChipSpec", stacked: "stacked", multiple: "multiple", chipSpecFn: "chipSpecFn", chipTemplate: "chipTemplate", chipAvatarTemplate: "chipAvatarTemplate" }, providers: [
216
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: ElderMultiSelectChipOptionsComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.FocusMonitor }, { token: i2.TranslateService }, { token: i3.ElderDialogService }, { token: i0.DestroyRef }, { token: i4.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
217
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.2", type: ElderMultiSelectChipOptionsComponent, isStandalone: true, selector: "elder-multi-select-chip-options", inputs: { defaultChipSpec: "defaultChipSpec", stacked: "stacked", multiple: "multiple", chipSpecFn: "chipSpecFn", chipTemplate: "chipTemplate", chipAvatarTemplate: "chipAvatarTemplate" }, providers: [
224
218
  { provide: MatFormFieldControl, useExisting: ElderMultiSelectChipOptionsComponent },
225
219
  {
226
220
  provide: ELDER_SELECT_BASE,
227
221
  useExisting: forwardRef(() => ElderMultiSelectChipOptionsComponent)
228
222
  }
229
- ], queries: [{ propertyName: "chipTemplateQuery", first: true, predicate: ElderSelectChipDirective, descendants: true, read: TemplateRef }, { propertyName: "chipAvatarTemplateQuery", first: true, predicate: ElderSelectChipAvatarDirective, descendants: true, read: TemplateRef }, { propertyName: "elderOptions", predicate: ElderSelectChipOptionComponent }], viewQueries: [{ propertyName: "_listBox", first: true, predicate: MatChipListbox, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"(selectChips$ | async) as chipValues\"\n class=\"elder-flex-control\"\n [matTooltip]=\"(state$ | async)?.error\"\n>\n <mat-chip-listbox #chips\n [class.mat-mdc-chip-set-stacked]=\"stacked\"\n [multiple]=\"multiple\"\n >\n\n <ng-container *ngIf=\"(mergedState$ | async) as state\">\n <div *ngIf=\"icon\"\n class=\"elder-input-prefix-icon-container flex-none\"\n >\n <mat-icon *ngIf=\"icon\" disabled\n class=\"elder-prefix-icon elder-mdc-control-icon elder-icon-small noselect\"\n [class.loading]=\"state.loading\"\n >\n {{ icon }}\n </mat-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"templates$ | async as templates\">\n\n <ng-content></ng-content>\n\n <mat-chip-option *ngFor=\"let chipModel of chipValues\"\n class=\"noselect\"\n [value]=\"resolveChipValue(chipModel.value)\"\n elderChipLabel\n [levelColor]=\"chipModel.colorSpec?.levelColor\"\n [stateColor]=\"chipModel.colorSpec?.stateColor\"\n [color]=\"chipModel.colorSpec?.themeColor\"\n [selectable]=\"!chipModel.locked\"\n [disabled]=\"chipModel.locked\"\n [selected]=\"chipModel.selected\"\n (selectionChange)=\"selectionChanged($event, chipModel.value)\"\n >\n\n <mat-chip-avatar\n *ngIf=\"templates.avatar && !chipModel.avatarSpec?.hide\"\n [class.chip-avatar-xl]=\"chipModel.avatarSpec?.large\"\n >\n <ng-container\n *ngTemplateOutlet=\"templates.avatar; context: {$implicit: chipModel}\">\n </ng-container>\n </mat-chip-avatar>\n <ng-container\n *ngTemplateOutlet=\"templates.chip || simpleChipTemplate; context: {$implicit: chipModel}\">\n </ng-container>\n\n <mat-icon matChipTrailingIcon class=\"elder-trailing-icon\"\n *ngIf=\"chipModel.trailingSpec?.icon\"\n [fontSet]=\"chipModel.trailingSpec?.iconFontSet\"\n >{{ chipModel.trailingSpec?.icon }}\n </mat-icon>\n\n\n </mat-chip-option>\n\n <div class=\"layout-row place-start-center elder-chip-input\">\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button elder-browse-icon\"\n *ngIf=\"selectionPopup\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\" aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n </div>\n </ng-container>\n </mat-chip-listbox>\n</div>\n\n<ng-template #simpleChipTemplate let-chipModel>\n <span class=\"elder-chip-text\">{{ chipModel.displayText | elderTruncate:20 }}</span>\n</ng-template>\n\n", styles: [".elder-chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.elder-trailing-icon{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color);opacity:.54}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i8.MatChipAvatar, selector: "mat-chip-avatar, [matChipAvatar]" }, { kind: "component", type: i8.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i8.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: i8.MatChipTrailingIcon, selector: "mat-chip-trailing-icon, [matChipTrailingIcon]" }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i10.ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "directive", type: i11.ElderChipLabelDirective, selector: "[elderChipLabel]", inputs: ["appearance", "color", "stateColor", "levelColor"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.ElderTruncatePipe, name: "elderTruncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
223
+ ], queries: [{ propertyName: "chipTemplateQuery", first: true, predicate: ElderSelectChipDirective, descendants: true, read: TemplateRef }, { propertyName: "chipAvatarTemplateQuery", first: true, predicate: ElderSelectChipAvatarDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "_listBox", first: true, predicate: MatChipListbox, descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (selectChips$ | async;as selectChips) {\n <div class=\"elder-flex-control\"\n [matTooltip]=\"(state$ | async)?.error\"\n >\n <mat-chip-listbox #chips\n [class.mat-mdc-chip-set-stacked]=\"stacked\"\n [multiple]=\"multiple\"\n >\n\n @if (mergedState$ | async;as state) {\n @if (icon) {\n <div class=\"elder-input-prefix-icon-container flex-none\">\n <mat-icon disabled\n class=\"elder-prefix-icon elder-mdc-control-icon elder-icon-small noselect\"\n [class.loading]=\"state.loading\"\n >\n {{ icon }}\n </mat-icon>\n </div>\n }\n }\n\n @if (templates$ | async;as templates) {\n <ng-content></ng-content>\n\n @for (chipModel of selectChips;track chipModel.value) {\n <mat-chip-option class=\"noselect\"\n [value]=\"resolveChipValue(chipModel.value)\"\n elderChipLabel\n [levelColor]=\"chipModel.colorSpec?.levelColor\"\n [stateColor]=\"chipModel.colorSpec?.stateColor\"\n [color]=\"chipModel.colorSpec?.themeColor\"\n [selectable]=\"!chipModel.locked\"\n [disabled]=\"chipModel.locked\"\n [selected]=\"chipModel.selected\"\n (selectionChange)=\"selectionChanged($event, chipModel.value)\"\n >\n\n @if (templates.avatar && !chipModel.avatarSpec?.hide) {\n <mat-chip-avatar\n [class.chip-avatar-xl]=\"chipModel.avatarSpec?.large\"\n >\n <ng-container\n *ngTemplateOutlet=\"templates.avatar; context: {$implicit: chipModel}\">\n </ng-container>\n </mat-chip-avatar>\n }\n\n <ng-container\n *ngTemplateOutlet=\"templates.chip || simpleChipTemplate; context: {$implicit: chipModel}\">\n </ng-container>\n\n @if (chipModel.trailingSpec?.icon) {\n <mat-icon matChipTrailingIcon class=\"elder-trailing-icon\"\n [fontSet]=\"chipModel.trailingSpec?.iconFontSet\"\n >{{ chipModel.trailingSpec?.icon }}\n </mat-icon>\n }\n\n </mat-chip-option>\n }\n\n <div class=\"layout-row place-start-center elder-chip-input\">\n\n @if (selectionPopup) {\n <button mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button elder-browse-icon\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\" aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n }\n </div>\n }\n\n </mat-chip-listbox>\n </div>\n}\n\n<ng-template #simpleChipTemplate let-chipModel>\n <span class=\"elder-chip-text\">{{ chipModel.displayText | elderTruncate:20 }}</span>\n</ng-template>\n\n", styles: [".elder-chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.elder-trailing-icon{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color);opacity:.54}\n"], dependencies: [{ kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: ElderChipLabelDirective, selector: "[elderChipLabel]", inputs: ["appearance", "color", "stateColor", "levelColor"] }, { kind: "directive", type: MatChipAvatar, selector: "mat-chip-avatar, [matChipAvatar]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: MatChipTrailingIcon, selector: "mat-chip-trailing-icon, [matChipTrailingIcon]" }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTruncatePipe, name: "elderTruncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
230
224
  }
231
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ElderMultiSelectChipOptionsComponent, decorators: [{
225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: ElderMultiSelectChipOptionsComponent, decorators: [{
232
226
  type: Component,
233
227
  args: [{ selector: "elder-multi-select-chip-options", changeDetection: ChangeDetectionStrategy.OnPush, providers: [
234
228
  { provide: MatFormFieldControl, useExisting: ElderMultiSelectChipOptionsComponent },
@@ -236,7 +230,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
236
230
  provide: ELDER_SELECT_BASE,
237
231
  useExisting: forwardRef(() => ElderMultiSelectChipOptionsComponent)
238
232
  }
239
- ], template: "<div *ngIf=\"(selectChips$ | async) as chipValues\"\n class=\"elder-flex-control\"\n [matTooltip]=\"(state$ | async)?.error\"\n>\n <mat-chip-listbox #chips\n [class.mat-mdc-chip-set-stacked]=\"stacked\"\n [multiple]=\"multiple\"\n >\n\n <ng-container *ngIf=\"(mergedState$ | async) as state\">\n <div *ngIf=\"icon\"\n class=\"elder-input-prefix-icon-container flex-none\"\n >\n <mat-icon *ngIf=\"icon\" disabled\n class=\"elder-prefix-icon elder-mdc-control-icon elder-icon-small noselect\"\n [class.loading]=\"state.loading\"\n >\n {{ icon }}\n </mat-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"templates$ | async as templates\">\n\n <ng-content></ng-content>\n\n <mat-chip-option *ngFor=\"let chipModel of chipValues\"\n class=\"noselect\"\n [value]=\"resolveChipValue(chipModel.value)\"\n elderChipLabel\n [levelColor]=\"chipModel.colorSpec?.levelColor\"\n [stateColor]=\"chipModel.colorSpec?.stateColor\"\n [color]=\"chipModel.colorSpec?.themeColor\"\n [selectable]=\"!chipModel.locked\"\n [disabled]=\"chipModel.locked\"\n [selected]=\"chipModel.selected\"\n (selectionChange)=\"selectionChanged($event, chipModel.value)\"\n >\n\n <mat-chip-avatar\n *ngIf=\"templates.avatar && !chipModel.avatarSpec?.hide\"\n [class.chip-avatar-xl]=\"chipModel.avatarSpec?.large\"\n >\n <ng-container\n *ngTemplateOutlet=\"templates.avatar; context: {$implicit: chipModel}\">\n </ng-container>\n </mat-chip-avatar>\n <ng-container\n *ngTemplateOutlet=\"templates.chip || simpleChipTemplate; context: {$implicit: chipModel}\">\n </ng-container>\n\n <mat-icon matChipTrailingIcon class=\"elder-trailing-icon\"\n *ngIf=\"chipModel.trailingSpec?.icon\"\n [fontSet]=\"chipModel.trailingSpec?.iconFontSet\"\n >{{ chipModel.trailingSpec?.icon }}\n </mat-icon>\n\n\n </mat-chip-option>\n\n <div class=\"layout-row place-start-center elder-chip-input\">\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button elder-browse-icon\"\n *ngIf=\"selectionPopup\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\" aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n </div>\n </ng-container>\n </mat-chip-listbox>\n</div>\n\n<ng-template #simpleChipTemplate let-chipModel>\n <span class=\"elder-chip-text\">{{ chipModel.displayText | elderTruncate:20 }}</span>\n</ng-template>\n\n", styles: [".elder-chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.elder-trailing-icon{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color);opacity:.54}\n"] }]
233
+ ], standalone: true, imports: [MatTooltip, MatChipListbox, MatIcon, MatChipOption, ElderChipLabelDirective, MatChipAvatar, NgTemplateOutlet, MatChipTrailingIcon, MatIconButton, ElderStopEventPropagationDirective, AsyncPipe, ElderTruncatePipe], template: "@if (selectChips$ | async;as selectChips) {\n <div class=\"elder-flex-control\"\n [matTooltip]=\"(state$ | async)?.error\"\n >\n <mat-chip-listbox #chips\n [class.mat-mdc-chip-set-stacked]=\"stacked\"\n [multiple]=\"multiple\"\n >\n\n @if (mergedState$ | async;as state) {\n @if (icon) {\n <div class=\"elder-input-prefix-icon-container flex-none\">\n <mat-icon disabled\n class=\"elder-prefix-icon elder-mdc-control-icon elder-icon-small noselect\"\n [class.loading]=\"state.loading\"\n >\n {{ icon }}\n </mat-icon>\n </div>\n }\n }\n\n @if (templates$ | async;as templates) {\n <ng-content></ng-content>\n\n @for (chipModel of selectChips;track chipModel.value) {\n <mat-chip-option class=\"noselect\"\n [value]=\"resolveChipValue(chipModel.value)\"\n elderChipLabel\n [levelColor]=\"chipModel.colorSpec?.levelColor\"\n [stateColor]=\"chipModel.colorSpec?.stateColor\"\n [color]=\"chipModel.colorSpec?.themeColor\"\n [selectable]=\"!chipModel.locked\"\n [disabled]=\"chipModel.locked\"\n [selected]=\"chipModel.selected\"\n (selectionChange)=\"selectionChanged($event, chipModel.value)\"\n >\n\n @if (templates.avatar && !chipModel.avatarSpec?.hide) {\n <mat-chip-avatar\n [class.chip-avatar-xl]=\"chipModel.avatarSpec?.large\"\n >\n <ng-container\n *ngTemplateOutlet=\"templates.avatar; context: {$implicit: chipModel}\">\n </ng-container>\n </mat-chip-avatar>\n }\n\n <ng-container\n *ngTemplateOutlet=\"templates.chip || simpleChipTemplate; context: {$implicit: chipModel}\">\n </ng-container>\n\n @if (chipModel.trailingSpec?.icon) {\n <mat-icon matChipTrailingIcon class=\"elder-trailing-icon\"\n [fontSet]=\"chipModel.trailingSpec?.iconFontSet\"\n >{{ chipModel.trailingSpec?.icon }}\n </mat-icon>\n }\n\n </mat-chip-option>\n }\n\n <div class=\"layout-row place-start-center elder-chip-input\">\n\n @if (selectionPopup) {\n <button mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button elder-browse-icon\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\" aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n }\n </div>\n }\n\n </mat-chip-listbox>\n </div>\n}\n\n<ng-template #simpleChipTemplate let-chipModel>\n <span class=\"elder-chip-text\">{{ chipModel.displayText | elderTruncate:20 }}</span>\n</ng-template>\n\n", styles: [".elder-chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.elder-trailing-icon{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color);opacity:.54}\n"] }]
240
234
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.FocusMonitor }, { type: i2.TranslateService }, { type: i3.ElderDialogService }, { type: i0.DestroyRef }, { type: i4.NgControl, decorators: [{
241
235
  type: Optional
242
236
  }, {
@@ -255,9 +249,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
255
249
  }], chipTemplateQuery: [{
256
250
  type: ContentChild,
257
251
  args: [ElderSelectChipDirective, { read: TemplateRef, static: false }]
258
- }], elderOptions: [{
259
- type: ContentChildren,
260
- args: [ElderSelectChipOptionComponent]
261
252
  }], chipTemplate: [{
262
253
  type: Input
263
254
  }], chipAvatarTemplateQuery: [{
@@ -266,4 +257,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
266
257
  }], chipAvatarTemplate: [{
267
258
  type: Input
268
259
  }] } });
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItbXVsdGktc2VsZWN0LWNoaXAtb3B0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9tdWx0aS9lbGRlci1tdWx0aS1zZWxlY3QtY2hpcC1vcHRpb25zL2VsZGVyLW11bHRpLXNlbGVjdC1jaGlwLW9wdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QvbXVsdGkvZWxkZXItbXVsdGktc2VsZWN0LWNoaXAtb3B0aW9ucy9lbGRlci1tdWx0aS1zZWxlY3QtY2hpcC1vcHRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBR2YsVUFBVSxFQUNWLEtBQUssRUFFTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFdBQVcsRUFDWCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBS3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDN0csT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFF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RUFBRSxLQUFLLEVBQUU7Z0JBTWpFLFlBQVk7c0JBRHRCLGVBQWU7dUJBQUMsOEJBQThCO2dCQU1wQyxZQUFZO3NCQUR0QixLQUFLO2dCQVVLLHVCQUF1QjtzQkFEakMsWUFBWTt1QkFBQyw4QkFBOEIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFNdkUsa0JBQWtCO3NCQUQ1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERlc3Ryb3lSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9wdGlvbmFsLFxuICBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBFbGRlck11bHRpU2VsZWN0QmFzZSB9IGZyb20gXCIuLi9lbGRlci1tdWx0aS1zZWxlY3QtYmFzZVwiO1xuaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gXCJAZWxkZXJieXRlL3RzLWxvZ2dlclwiO1xuaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9hMTF5XCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IEVsZGVyRGlhbG9nU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9kaWFsb2dzL2VsZGVyLWRpYWxvZy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBOZ0NvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgRWxkZXJTZWxlY3RDaGlwQXZhdGFyRGlyZWN0aXZlLCBFbGRlclNlbGVjdENoaXBEaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZWxkZXItc2VsZWN0LWNoaXAuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBFTERFUl9TRUxFQ1RfQkFTRSB9IGZyb20gXCIuLi8uLi9lbGRlci1zZWxlY3QtYmFzZVwiO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5pbXBvcnQgeyBJRGF0YUNvbnRleHQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YS1jb250ZXh0L2RhdGEtY29udGV4dFwiO1xuaW1wb3J0IHsgU2VsZWN0T3B0aW9uQ2hpcFNwZWMsIFNlbGVjdE9wdGlvbkNoaXBTcGVjVXRpbCB9IGZyb20gXCIuL3NlbGVjdC1vcHRpb24tY2hpcC1zcGVjXCI7XG5pbXBvcnQgeyBNYXRDaGlwTGlzdGJveCwgTWF0Q2hpcFNlbGVjdGlvbkNoYW5nZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGlwc1wiO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5pbXBvcnQgeyBFbGRlclNlbGVjdENoaXBPcHRpb25Db21wb25lbnQgfSBmcm9tIFwiLi4vZWxkZXItY2hpcC1zZWxlY3Qtb3B0aW9uL2VsZGVyLXNlbGVjdC1jaGlwLW9wdGlvbi5jb21wb25lbnRcIjtcbmltcG9ydCBDaGlwT3B0aW9uc1Byb3ZpZGVyLCB7IENoaXBPcHRpb25Nb2RlbCwgTXVsdGlTZWxlY3RDaGlwT3B0aW9uc0NvbnRleHQgfSBmcm9tIFwiLi9jaGlwLW9wdGlvbnMtcHJvdmlkZXJcIjtcblxuaW50ZXJmYWNlIFRlbXBsYXRlV3JhcHBlciB7XG4gIGNoaXA6IFRlbXBsYXRlUmVmPGFueT47XG4gIGF2YXRhcjogVGVtcGxhdGVSZWY8YW55Pjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImVsZGVyLW11bHRpLXNlbGVjdC1jaGlwLW9wdGlvbnNcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9lbGRlci1tdWx0aS1zZWxlY3QtY2hpcC1vcHRpb25zLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9lbGRlci1tdWx0aS1zZWxlY3QtY2hpcC1vcHRpb25zLmNvbXBvbmVudC5zY3NzXCJdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogRWxkZXJNdWx0aVNlbGVjdENoaXBPcHRpb25zQ29tcG9uZW50IH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogRUxERVJfU0VMRUNUX0JBU0UsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFbGRlck11bHRpU2VsZWN0Q2hpcE9wdGlvbnNDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyTXVsdGlTZWxlY3RDaGlwT3B0aW9uc0NvbXBvbmVudDxUSWQgPSBhbnksIFRFbnRpdHkgPSBhbnksIFRWYWx1ZSA9IGFueT5cbiAgZXh0ZW5kcyBFbGRlck11bHRpU2VsZWN0QmFzZTxUSWQsIFRFbnRpdHksIFRWYWx1ZT4ge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICByZWFkb25seSB0ZW1wbGF0ZXMkOiBPYnNlcnZhYmxlPFRlbXBsYXRlV3JhcHBlcj47XG4gIHByaXZhdGUgcmVhZG9ubHkgY29udGV4dCQ6IE9ic2VydmFibGU8TXVsdGlTZWxlY3RDaGlwT3B0aW9uc0NvbnRleHQ+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2hpcFRlbXBsYXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGVtcGxhdGVSZWY8YW55Pj4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hpcEF2YXRhclRlbXBsYXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGVtcGxhdGVSZWY8YW55Pj4obnVsbCk7XG5cbiAgcHJpdmF0ZSB0ZW1wbGF0ZVNlbGVjdENoaXBzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RWxkZXJTZWxlY3RDaGlwT3B0aW9uQ29tcG9uZW50PFRFbnRpdHk+W10+KFtdKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9uc1Byb3ZpZGVyJDogT2JzZXJ2YWJsZTxDaGlwT3B0aW9uc1Byb3ZpZGVyPFRJZCwgVEVudGl0eT4+O1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0Q2hpcHMkOiBPYnNlcnZhYmxlPENoaXBPcHRpb25Nb2RlbDxURW50aXR5PltdPjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGVmYXVsdENoaXBTcGVjOiBTZWxlY3RPcHRpb25DaGlwU3BlYyA9IFNlbGVjdE9wdGlvbkNoaXBTcGVjVXRpbC5EZWZhdWx0Q2hpcFNwZWM7XG5cbiAgcHVibGljIF9jaGlwU3BlY0ZuJCA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDwoZTogVEVudGl0eSkgPT4gU2VsZWN0T3B0aW9uQ2hpcFNwZWM+KGUgPT4gdGhpcy5kZWZhdWx0Q2hpcFNwZWMpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGFja2VkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKE1hdENoaXBMaXN0Ym94KSBfbGlzdEJveDogTWF0Q2hpcExpc3Rib3g7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgaG9zdFJlZjogRWxlbWVudFJlZixcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBkaWFsb2dTZXJ2aWNlOiBFbGRlckRpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2xcbiAgKSB7XG4gICAgc3VwZXIoem9uZSwgaG9zdFJlZiwgXCJtdWx0aS1zZWxlY3QtY2hpcC1vcHRpb25zXCIsIGZvY3VzTW9uaXRvciwgdHJhbnNsYXRlU2VydmljZSwgZGlhbG9nU2VydmljZSwgbmdDb250cm9sKTtcblxuICAgIHRoaXMuY29udGV4dCQgPSBjb21iaW5lTGF0ZXN0KFxuICAgICAgW1xuICAgICAgICB0aGlzLnN0YXRlJCxcbiAgICAgICAgdGhpcy5kaXNwbGF5UHJvcGVydHlSZXNvbHZlciQsXG4gICAgICAgIHRoaXMucmVhZG9ubHkkLFxuICAgICAgICB0aGlzLmRpc2FibGVkJFxuICAgICAgXVxuICAgICkucGlwZShcbiAgICAgIG1hcCgoW3N0YXRlLCBkUFIsIHJlYWRvbmx5LCBkaXNhYmxlZF0pID0+IHtcbiAgICAgICAgICByZXR1cm4gPE11bHRpU2VsZWN0Q2hpcE9wdGlvbnNDb250ZXh0PntcbiAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgIGRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyOiBkUFIsXG4gICAgICAgICAgICByZWFkb25seTogcmVhZG9ubHksXG4gICAgICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWRcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMub3B0aW9uc1Byb3ZpZGVyJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5kYXRhQ29udGV4dCQsXG4gICAgICB0aGlzLmRhdGFDb250ZXh0JC5waXBlKHN3aXRjaE1hcChkYyA9PiBkYy5kYXRhKSksXG4gICAgICB0aGlzLmNoaXBTcGVjRm4kLFxuICAgICAgdGhpcy50ZW1wbGF0ZVNlbGVjdENoaXBzJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtkYywgZGF0YSwgY2hpcFNwZWNGbiwgdGVtcGxhdGVDaGlwc10pID0+XG4gICAgICAgIG5ldyBDaGlwT3B0aW9uc1Byb3ZpZGVyPFRJZCwgVEVudGl0eT4oXG4gICAgICAgICAgZGMuZGF0YVNvdXJjZSxcbiAgICAgICAgICB0aGlzLmJ1aWxkQXZhaWxhYmxlRW50aXRpZXMoZGF0YSwgdGVtcGxhdGVDaGlwcyksXG4gICAgICAgICAgY2hpcFNwZWNGblxuICAgICAgICApKVxuICAgICk7XG5cbiAgICB0aGlzLnNlbGVjdENoaXBzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5vcHRpb25zUHJvdmlkZXIkLFxuICAgICAgdGhpcy5lbnRpdGllcyQsXG4gICAgICB0aGlzLmVudGl0eUlkcyQsXG4gICAgICB0aGlzLnRlbXBsYXRlU2VsZWN0Q2hpcHMkLFxuICAgICAgdGhpcy5jb250ZXh0JFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtcbiAgICAgICAgICAgICBvcHRpb25zUHJvdmlkZXIsXG4gICAgICAgICAgICAgZW50aXRpZXMsXG4gICAgICAgICAgICAgZW50aXRpeUlkcyxcbiAgICAgICAgICAgICB0ZW1wbGF0ZVNlbGVjdENoaXBzLFxuICAgICAgICAgICAgIGNvbnRleHRdKSA9PlxuICAgICAgICB0aGlzLmJ1aWxkQ2hpcE1vZGVscyhcbiAgICAgICAgICBvcHRpb25zUHJvdmlkZXIsXG4gICAgICAgICAgZW50aXRpZXMsXG4gICAgICAgICAgZW50aXRpeUlkcyxcbiAgICAgICAgICB0aGlzLmJ1aWxkRW50aXRpZXNMYWJlbE1hcCh0ZW1wbGF0ZVNlbGVjdENoaXBzKSxcbiAgICAgICAgICBjb250ZXh0XG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy50ZW1wbGF0ZXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNoaXBUZW1wbGF0ZSQsXG4gICAgICB0aGlzLmNoaXBBdmF0YXJUZW1wbGF0ZSRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbY2hpcCwgYXZhdGFyXSkgPT4ge1xuICAgICAgICByZXR1cm4gPFRlbXBsYXRlV3JhcHBlcj57XG4gICAgICAgICAgY2hpcCxcbiAgICAgICAgICBhdmF0YXJcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbXVsdGlwbGUodmFsOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWwpO1xuICAgIGlmICghdGhpcy5fbXVsdGlwbGUgJiYgdGhpcy5lbnRpdGllcy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLnNlbGVjdEVudGl0eShcbiAgICAgICAgdGhpcy5lbnRpdGllc1t0aGlzLmVudGl0aWVzLmxlbmd0aCAtIDFdXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gY3VzdG9taXplIGVhY2ggY2hpcCBpbmRpdmlkdWFsbHkgKENvbG9yLCBSZW1vdmFibGUsIEF2YXRhcikuXG4gICAqXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNoaXBTcGVjRm4oZm46IChlOiBURW50aXR5KSA9PiBTZWxlY3RPcHRpb25DaGlwU3BlYykge1xuICAgIHRoaXMuX2NoaXBTcGVjRm4kLm5leHQoZm4pO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGlwU3BlY0ZuJCgpOiBPYnNlcnZhYmxlPChlOiBURW50aXR5KSA9PiBTZWxlY3RPcHRpb25DaGlwU3BlYz4ge1xuICAgIHJldHVybiB0aGlzLl9jaGlwU3BlY0ZuJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlO1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZChFbGRlclNlbGVjdENoaXBEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIHNldCBjaGlwVGVtcGxhdGVRdWVyeSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIHRoaXMuY2hpcFRlbXBsYXRlID0gdGVtcGxhdGU7XG4gIH1cblxuICBAQ29udGVudENoaWxkcmVuKEVsZGVyU2VsZWN0Q2hpcE9wdGlvbkNvbXBvbmVudClcbiAgcHVibGljIHNldCBlbGRlck9wdGlvbnMoY29tcHM6IEVsZGVyU2VsZWN0Q2hpcE9wdGlvbkNvbXBvbmVudDxURW50aXR5PltdKSB7XG4gICAgdGhpcy50ZW1wbGF0ZVNlbGVjdENoaXBzJC5uZXh0KGNvbXBzKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY2hpcFRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5jaGlwVGVtcGxhdGUkLm5leHQodGVtcGxhdGUpO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGlwVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuY2hpcFRlbXBsYXRlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZChFbGRlclNlbGVjdENoaXBBdmF0YXJEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIHNldCBjaGlwQXZhdGFyVGVtcGxhdGVRdWVyeSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIHRoaXMuY2hpcEF2YXRhclRlbXBsYXRlID0gdGVtcGxhdGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNoaXBBdmF0YXJUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIHRoaXMuY2hpcEF2YXRhclRlbXBsYXRlJC5uZXh0KHRlbXBsYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hpcEF2YXRhclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNoaXBBdmF0YXJUZW1wbGF0ZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBzZWxlY3Rpb25DaGFuZ2VkKGNoYW5nZUV2ZW50OiBNYXRDaGlwU2VsZWN0aW9uQ2hhbmdlLCBlbnRpdHk6IFRFbnRpdHkpOiB2b2lkIHtcbiAgICAvKiovXG4gICAgdGhpcy5sb2cuZGVidWcoXCJzZWxlY3Rpb25DaGFuZ2VkXCIsIHtcbiAgICAgIGNoYW5nZUV2ZW50OiBjaGFuZ2VFdmVudCxcbiAgICAgIGVudGl0eTogZW50aXR5XG4gICAgfSk7XG5cbiAgICBpZiAoY2hhbmdlRXZlbnQuaXNVc2VySW5wdXQpIHtcbiAgICAgIGlmIChjaGFuZ2VFdmVudC5zZWxlY3RlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdEVudGl0eShlbnRpdHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVFbnRpdHkoZW50aXR5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZUNoaXBWYWx1ZShlMTogVEVudGl0eSk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RW50aXR5SWQoZTEpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKG9wdGlvbnM/OiBGb2N1c09wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbGlzdEJveCkge1xuICAgICAgdGhpcy5fbGlzdEJveC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMubG9nLndhcm4oXCJibHVyKCkgbm90IHlldCBzdXBwb3J0ZWQhXCIpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3RlY3RlZCBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgc3RhcnQgREMgaWYgbm90IHlldCBzdGFydGVkXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBvbkRhdGFDb250ZXh0Q2hhbmdlZChkYXRhOiBJRGF0YUNvbnRleHQ8VEVudGl0eT4pOiB2b2lkIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKCFkYXRhLmlzU3RhcnRlZCkge1xuICAgICAgICBkYXRhLnN0YXJ0KHRoaXMuc29ydHMsIHRoaXMuZmlsdGVycykuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICBzdXBlci5vbkRhdGFDb250ZXh0Q2hhbmdlZChkYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1cGVyLm9uRGF0YUNvbnRleHRDaGFuZ2VkKGRhdGEpO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBzZWxlY3RFbnRpdHkoZW50aXR5OiBURW50aXR5KTogdm9pZCB7XG4gICAgY29uc3QgaWRUb1NlbGVjdCA9IHRoaXMuZ2V0RW50aXR5SWQoZW50aXR5KTtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMucmVtb3ZlRW50aXRpZXMoXG4gICAgICAgIHRoaXMuZW50aXRpZXMuZmlsdGVyKGUgPT4gdGhpcy5nZXRFbnRpdHlJZChlKSAhPT0gaWRUb1NlbGVjdClcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc0VudGl0eUlkU2VsZWN0ZWQoaWRUb1NlbGVjdCkpIHtcbiAgICAgIHRoaXMuYXBwZW5kRW50aXR5KGVudGl0eSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0VudGl0eUlkU2VsZWN0ZWQoZW50aXR5SWQ6IFRJZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVudGl0aWVzLnNvbWUoZSA9PiB0aGlzLmdldEVudGl0eUlkKGUpID09IGVudGl0eUlkKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDaGlwTW9kZWxzKFxuICAgIG9wdGlvbnNQcm92aWRlcjogQ2hpcE9wdGlvbnNQcm92aWRlcjxUSWQsIFRFbnRpdHk+LFxuICAgIGVudGl0aWVzOiBURW50aXR5W10sXG4gICAgZW50aXR5SWRzOiBUSWRbXSxcbiAgICBlbnRpdGllc0xhYmVsczogTWFwPGFueSwgc3RyaW5nPixcbiAgICBjb250ZXh0OiBNdWx0aVNlbGVjdENoaXBPcHRpb25zQ29udGV4dFxuICApOiBDaGlwT3B0aW9uTW9kZWw8VEVudGl0eT5bXSB7XG4gICAgcmV0dXJuIG9wdGlvbnNQcm92aWRlci5idWlsZENoaXBNb2RlbHNPckZhbGxiYWNrKFxuICAgICAgZW50aXRpZXMsXG4gICAgICBlbnRpdHlJZHMsXG4gICAgICB7XG4gICAgICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgICAgIGlzTG9ja2VkOiB0aGlzLmlzTG9ja2VkLFxuICAgICAgICBlbnRpdHlMYWJlbE1hcDogZW50aXRpZXNMYWJlbHNcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEF2YWlsYWJsZUVudGl0aWVzKFxuICAgIGRhdGE6IFRFbnRpdHlbXSxcbiAgICB0ZW1wbGF0ZUNoaXBzOiBFbGRlclNlbGVjdENoaXBPcHRpb25Db21wb25lbnQ8VEVudGl0eT5bXVxuICApOiBURW50aXR5W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5leHRyYWN0RW50aXRpZXNGcm9tVGVtcGxhdGVDaGlwcyh0ZW1wbGF0ZUNoaXBzKSwgLi4uZGF0YV07XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RFbnRpdGllc0Zyb21UZW1wbGF0ZUNoaXBzKHRlbXBsYXRlQ2hpcHM6IEVsZGVyU2VsZWN0Q2hpcE9wdGlvbkNvbXBvbmVudDxURW50aXR5PltdKTogVEVudGl0eVtdIHtcbiAgICByZXR1cm4gdGVtcGxhdGVDaGlwcy5tYXAoY2hpcCA9PiBjaGlwLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRFbnRpdGllc0xhYmVsTWFwKHRlbXBsYXRlQ2hpcHM6IEVsZGVyU2VsZWN0Q2hpcE9wdGlvbkNvbXBvbmVudDxURW50aXR5PltdKTogTWFwPFRFbnRpdHksIHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgTWFwKFxuICAgICAgdGVtcGxhdGVDaGlwcy5maWx0ZXIoY2hpcCA9PiBjaGlwLmxhYmVsICE9IHVuZGVmaW5lZClcbiAgICAgICAgLm1hcChjaGlwID0+IFtjaGlwLnZhbHVlLCBjaGlwLmxhYmVsXSkpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiKHNlbGVjdENoaXBzJCB8IGFzeW5jKSBhcyBjaGlwVmFsdWVzXCJcbiAgICAgY2xhc3M9XCJlbGRlci1mbGV4LWNvbnRyb2xcIlxuICAgICBbbWF0VG9vbHRpcF09XCIoc3RhdGUkIHwgYXN5bmMpPy5lcnJvclwiXG4+XG4gIDxtYXQtY2hpcC1saXN0Ym94ICNjaGlwc1xuICAgICAgICAgICAgICAgICAgICBbY2xhc3MubWF0LW1kYy1jaGlwLXNldC1zdGFja2VkXT1cInN0YWNrZWRcIlxuICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICA+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKG1lcmdlZFN0YXRlJCB8IGFzeW5jKSBhcyBzdGF0ZVwiPlxuICAgICAgPGRpdiAqbmdJZj1cImljb25cIlxuICAgICAgICAgICBjbGFzcz1cImVsZGVyLWlucHV0LXByZWZpeC1pY29uLWNvbnRhaW5lciBmbGV4LW5vbmVcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uXCIgZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWxkZXItcHJlZml4LWljb24gZWxkZXItbWRjLWNvbnRyb2wtaWNvbiBlbGRlci1pY29uLXNtYWxsIG5vc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5sb2FkaW5nXT1cInN0YXRlLmxvYWRpbmdcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgaWNvbiB9fVxuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGVtcGxhdGVzJCB8IGFzeW5jIGFzIHRlbXBsYXRlc1wiPlxuXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICAgIDxtYXQtY2hpcC1vcHRpb24gKm5nRm9yPVwibGV0IGNoaXBNb2RlbCBvZiBjaGlwVmFsdWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJub3NlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyZXNvbHZlQ2hpcFZhbHVlKGNoaXBNb2RlbC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICBlbGRlckNoaXBMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICBbbGV2ZWxDb2xvcl09XCJjaGlwTW9kZWwuY29sb3JTcGVjPy5sZXZlbENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlQ29sb3JdPVwiY2hpcE1vZGVsLmNvbG9yU3BlYz8uc3RhdGVDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJjaGlwTW9kZWwuY29sb3JTcGVjPy50aGVtZUNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGFibGVdPVwiIWNoaXBNb2RlbC5sb2NrZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY2hpcE1vZGVsLmxvY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJjaGlwTW9kZWwuc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50LCBjaGlwTW9kZWwudmFsdWUpXCJcbiAgICAgID5cblxuICAgICAgICA8bWF0LWNoaXAtYXZhdGFyXG4gICAgICAgICAgKm5nSWY9XCJ0ZW1wbGF0ZXMuYXZhdGFyICYmICFjaGlwTW9kZWwuYXZhdGFyU3BlYz8uaGlkZVwiXG4gICAgICAgICAgW2NsYXNzLmNoaXAtYXZhdGFyLXhsXT1cImNoaXBNb2RlbC5hdmF0YXJTcGVjPy5sYXJnZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlcy5hdmF0YXI7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGNoaXBNb2RlbH1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtY2hpcC1hdmF0YXI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlcy5jaGlwIHx8IHNpbXBsZUNoaXBUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogY2hpcE1vZGVsfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bWF0LWljb24gbWF0Q2hpcFRyYWlsaW5nSWNvbiBjbGFzcz1cImVsZGVyLXRyYWlsaW5nLWljb25cIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlwTW9kZWwudHJhaWxpbmdTcGVjPy5pY29uXCJcbiAgICAgICAgICAgICAgICAgIFtmb250U2V0XT1cImNoaXBNb2RlbC50cmFpbGluZ1NwZWM/Lmljb25Gb250U2V0XCJcbiAgICAgICAgPnt7IGNoaXBNb2RlbC50cmFpbGluZ1NwZWM/Lmljb24gfX1cbiAgICAgICAgPC9tYXQtaWNvbj5cblxuXG4gICAgICA8L21hdC1jaGlwLW9wdGlvbj5cblxuICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2Utc3RhcnQtY2VudGVyIGVsZGVyLWNoaXAtaW5wdXRcIj5cblxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJlbGRlci1jb250cm9sLWljb24tYnV0dG9uIGVsZGVyLWJyb3dzZS1pY29uXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGlvblBvcHVwXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2NrZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuU2VsZWN0aW9uUG9wdXAoJGV2ZW50KVwiIGFyaWEtbGFiZWw9XCJTZWFyY2hcIlxuICAgICAgICAgICAgICAgIGVsZGVyU3RvcEV2ZW50UHJvcGFnYXRpb25cbiAgICAgICAgICAgICAgICB0YWJJbmRleD1cIi0xXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImVsZGVyLW1kYy1jb250cm9sLWljb25cIj5zZWFyY2g8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L21hdC1jaGlwLWxpc3Rib3g+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzaW1wbGVDaGlwVGVtcGxhdGUgbGV0LWNoaXBNb2RlbD5cbiAgPHNwYW4gY2xhc3M9XCJlbGRlci1jaGlwLXRleHRcIj57eyBjaGlwTW9kZWwuZGlzcGxheVRleHQgfCBlbGRlclRydW5jYXRlOjIwIH19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuIl19
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItbXVsdGktc2VsZWN0LWNoaXAtb3B0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9tdWx0aS9lbGRlci1tdWx0aS1zZWxlY3QtY2hpcC1vcHRpb25zL2VsZGVyLW11bHRpLXNlbGVjdC1jaGlwLW9wdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QvbXVsdGkvZWxkZXItbXVsdGktc2VsZWN0LWNoaXAtb3B0aW9ucy9lbGRlci1tdWx0aS1zZWxlY3QtY2hpcC1vcHRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFJWixVQUFVLEVBQ1YsS0FBSyxFQUVMLFFBQVEsRUFDUixJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFLckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVB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LEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQ0FBcUMsQ0FBQzt5QkFDdEU7cUJBQ0osY0FDVyxJQUFJLFdBQ1AsQ0FBQyxVQUFVLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxrQ0FBa0MsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUM7OzBCQStDNU4sUUFBUTs7MEJBQUksSUFBSTt5Q0F6QlosZUFBZTtzQkFEckIsS0FBSztnQkFPQyxPQUFPO3NCQURiLEtBQUs7Z0JBS3FCLFFBQVE7c0JBQWxDLFNBQVM7dUJBQUMsY0FBYztnQkErRmQsUUFBUTtzQkFEbEIsS0FBSztnQkFlSyxVQUFVO3NCQURwQixLQUFLO2dCQWNLLGlCQUFpQjtzQkFEM0IsWUFBWTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFNakUsWUFBWTtzQkFEdEIsS0FBSztnQkFVSyx1QkFBdUI7c0JBRGpDLFlBQVk7dUJBQUMsOEJBQThCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBTXZFLGtCQUFrQjtzQkFENUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEZXN0cm95UmVmLFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPcHRpb25hbCxcbiAgU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRWxkZXJNdWx0aVNlbGVjdEJhc2UgfSBmcm9tIFwiLi4vZWxkZXItbXVsdGktc2VsZWN0LWJhc2VcIjtcbmltcG9ydCB7IExvZ2dlckZhY3RvcnkgfSBmcm9tIFwiQGVsZGVyYnl0ZS90cy1sb2dnZXJcIjtcbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gXCJAYW5ndWxhci9jZGsvYTExeVwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBFbGRlckRpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vZGlhbG9ncy9lbGRlci1kaWFsb2cuc2VydmljZVwiO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IEVsZGVyU2VsZWN0Q2hpcEF2YXRhckRpcmVjdGl2ZSwgRWxkZXJTZWxlY3RDaGlwRGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2VsZGVyLXNlbGVjdC1jaGlwLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgRUxERVJfU0VMRUNUX0JBU0UgfSBmcm9tIFwiLi4vLi4vZWxkZXItc2VsZWN0LWJhc2VcIjtcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgSURhdGFDb250ZXh0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9kYXRhLWNvbnRleHRcIjtcbmltcG9ydCB7IFNlbGVjdE9wdGlvbkNoaXBTcGVjLCBTZWxlY3RPcHRpb25DaGlwU3BlY1V0aWwgfSBmcm9tIFwiLi9zZWxlY3Qtb3B0aW9uLWNoaXAtc3BlY1wiO1xuaW1wb3J0IHsgTWF0Q2hpcExpc3Rib3gsIE1hdENoaXBTZWxlY3Rpb25DaGFuZ2UsIE1hdENoaXBPcHRpb24sIE1hdENoaXBBdmF0YXIsIE1hdENoaXBUcmFpbGluZ0ljb24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHNcIjtcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2VyY2lvblwiO1xuaW1wb3J0IHsgRWxkZXJTZWxlY3RPcHRpb25Db21wb25lbnQgfSBmcm9tIFwiLi4vZWxkZXItY2hpcC1zZWxlY3Qtb3B0aW9uL2VsZGVyLXNlbGVjdC1vcHRpb24uY29tcG9uZW50XCI7XG5pbXBvcnQgQ2hpcE9wdGlvbnNQcm92aWRlciwgeyBDaGlwT3B0aW9uTW9kZWwsIE11bHRpU2VsZWN0Q2hpcE9wdGlvbnNDb250ZXh0IH0gZnJvbSBcIi4vY2hpcC1vcHRpb25zLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBFbGRlclRydW5jYXRlUGlwZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9waXBlcy9lbGRlci10cnVuY2F0ZS5waXBlXCI7XG5pbXBvcnQgeyBFbGRlclN0b3BFdmVudFByb3BhZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uLy4uL2Zvcm1zL2RpcmVjdGl2ZXMvZWxkZXItc3RvcC1ldmVudC1wcm9wYWdhdGlvbi5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IE1hdEljb25CdXR0b24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0LCBBc3luY1BpcGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBFbGRlckNoaXBMYWJlbERpcmVjdGl2ZSB9IGZyb20gXCIuLi8uLi8uLi9jaGlwcy9lbGRlci1jaGlwLWxhYmVsLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQgeyBNYXRUb29sdGlwIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcblxuaW50ZXJmYWNlIFRlbXBsYXRlV3JhcHBlciB7XG4gIGNoaXA6IFRlbXBsYXRlUmVmPGFueT47XG4gIGF2YXRhcjogVGVtcGxhdGVSZWY8YW55Pjtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwiZWxkZXItbXVsdGktc2VsZWN0LWNoaXAtb3B0aW9uc1wiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZWxkZXItbXVsdGktc2VsZWN0LWNoaXAtb3B0aW9ucy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi9lbGRlci1tdWx0aS1zZWxlY3QtY2hpcC1vcHRpb25zLmNvbXBvbmVudC5zY3NzXCJdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBFbGRlck11bHRpU2VsZWN0Q2hpcE9wdGlvbnNDb21wb25lbnQgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRUxERVJfU0VMRUNUX0JBU0UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFbGRlck11bHRpU2VsZWN0Q2hpcE9wdGlvbnNDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW01hdFRvb2x0aXAsIE1hdENoaXBMaXN0Ym94LCBNYXRJY29uLCBNYXRDaGlwT3B0aW9uLCBFbGRlckNoaXBMYWJlbERpcmVjdGl2ZSwgTWF0Q2hpcEF2YXRhciwgTmdUZW1wbGF0ZU91dGxldCwgTWF0Q2hpcFRyYWlsaW5nSWNvbiwgTWF0SWNvbkJ1dHRvbiwgRWxkZXJTdG9wRXZlbnRQcm9wYWdhdGlvbkRpcmVjdGl2ZSwgQXN5bmNQaXBlLCBFbGRlclRydW5jYXRlUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJNdWx0aVNlbGVjdENoaXBPcHRpb25zQ29tcG9uZW50PFRJZCA9IGFueSwgVEVudGl0eSA9IGFueSwgVFZhbHVlID0gYW55PlxuICBleHRlbmRzIEVsZGVyTXVsdGlTZWxlY3RCYXNlPFRJZCwgVEVudGl0eSwgVFZhbHVlPiB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHJlYWRvbmx5IHRlbXBsYXRlcyQ6IE9ic2VydmFibGU8VGVtcGxhdGVXcmFwcGVyPjtcbiAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0JDogT2JzZXJ2YWJsZTxNdWx0aVNlbGVjdENoaXBPcHRpb25zQ29udGV4dD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjaGlwVGVtcGxhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZjxhbnk+PihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjaGlwQXZhdGFyVGVtcGxhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZjxhbnk+PihudWxsKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9uc1Byb3ZpZGVyJDogT2JzZXJ2YWJsZTxDaGlwT3B0aW9uc1Byb3ZpZGVyPFRJZCwgVEVudGl0eT4+O1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0Q2hpcHMkOiBPYnNlcnZhYmxlPENoaXBPcHRpb25Nb2RlbDxURW50aXR5PltdPjtcbiAgQElucHV0KClcbiAgcHVibGljIGRlZmF1bHRDaGlwU3BlYzogU2VsZWN0T3B0aW9uQ2hpcFNwZWMgPSBTZWxlY3RPcHRpb25DaGlwU3BlY1V0aWwuRGVmYXVsdENoaXBTcGVjO1xuXG4gIHB1YmxpYyBfY2hpcFNwZWNGbiQgPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8KGU6IFRFbnRpdHkpID0+IFNlbGVjdE9wdGlvbkNoaXBTcGVjPihlID0+IHRoaXMuZGVmYXVsdENoaXBTcGVjKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc3RhY2tlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX211bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZChNYXRDaGlwTGlzdGJveCkgX2xpc3RCb3g6IE1hdENoaXBMaXN0Ym94O1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGhvc3RSZWY6IEVsZW1lbnRSZWYsXG4gICAgem9uZTogTmdab25lLFxuICAgIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgZGlhbG9nU2VydmljZTogRWxkZXJEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZixcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sXG4gICkge1xuICAgIHN1cGVyKHpvbmUsIGhvc3RSZWYsIFwibXVsdGktc2VsZWN0LWNoaXAtb3B0aW9uc1wiLCBmb2N1c01vbml0b3IsIHRyYW5zbGF0ZVNlcnZpY2UsIGRpYWxvZ1NlcnZpY2UsIG5nQ29udHJvbCk7XG5cbiAgICB0aGlzLmNvbnRleHQkID0gY29tYmluZUxhdGVzdChcbiAgICAgIFtcbiAgICAgICAgdGhpcy5zdGF0ZSQsXG4gICAgICAgIHRoaXMuZGlzcGxheVByb3BlcnR5UmVzb2x2ZXIkLFxuICAgICAgICB0aGlzLnJlYWRvbmx5JCxcbiAgICAgICAgdGhpcy5kaXNhYmxlZCRcbiAgICAgIF1cbiAgICApLnBpcGUoXG4gICAgICBtYXAoKFtzdGF0ZSwgZFBSLCByZWFkb25seSwgZGlzYWJsZWRdKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIDxNdWx0aVNlbGVjdENoaXBPcHRpb25zQ29udGV4dD57XG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBkaXNwbGF5UHJvcGVydHlSZXNvbHZlcjogZFBSLFxuICAgICAgICAgICAgcmVhZG9ubHk6IHJlYWRvbmx5LFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLm9wdGlvbnNQcm92aWRlciQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZGF0YUNvbnRleHQkLFxuICAgICAgdGhpcy5kYXRhQ29udGV4dCQucGlwZShzd2l0Y2hNYXAoZGMgPT4gZGMuZGF0YSkpLFxuICAgICAgdGhpcy5jaGlwU3BlY0ZuJCxcbiAgICAgIHRoaXMudGVtcGxhdGVPcHRpb25zJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtkYywgZGF0YSwgY2hpcFNwZWNGbiwgdGVtcGxhdGVDaGlwc10pID0+XG4gICAgICAgIG5ldyBDaGlwT3B0aW9uc1Byb3ZpZGVyPFRJZCwgVEVudGl0eT4oXG4gICAgICAgICAgZGMuZGF0YVNvdXJjZSxcbiAgICAgICAgICB0aGlzLmJ1aWxkQXZhaWxhYmxlRW50aXRpZXMoZGF0YSwgdGVtcGxhdGVDaGlwcyksXG4gICAgICAgICAgY2hpcFNwZWNGblxuICAgICAgICApKVxuICAgICk7XG5cbiAgICB0aGlzLnNlbGVjdENoaXBzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5vcHRpb25zUHJvdmlkZXIkLFxuICAgICAgdGhpcy5lbnRpdGllcyQsXG4gICAgICB0aGlzLmVudGl0eUlkcyQsXG4gICAgICB0aGlzLnRlbXBsYXRlT3B0aW9ucyQsXG4gICAgICB0aGlzLmNvbnRleHQkXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW1xuICAgICAgICAgICAgIG9wdGlvbnNQcm92aWRlcixcbiAgICAgICAgICAgICBlbnRpdGllcyxcbiAgICAgICAgICAgICBlbnRpdHlJZHMsXG4gICAgICAgICAgICAgdGVtcGxhdGVTZWxlY3RDaGlwcyxcbiAgICAgICAgICAgICBjb250ZXh0XSkgPT5cbiAgICAgICAgdGhpcy5idWlsZENoaXBNb2RlbHMoXG4gICAgICAgICAgb3B0aW9uc1Byb3ZpZGVyLFxuICAgICAgICAgIGVudGl0aWVzLFxuICAgICAgICAgIGVudGl0eUlkcyxcbiAgICAgICAgICB0aGlzLmJ1aWxkRW50aXRpZXNMYWJlbE1hcCh0ZW1wbGF0ZVNlbGVjdENoaXBzKSxcbiAgICAgICAgICBjb250ZXh0XG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy50ZW1wbGF0ZXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNoaXBUZW1wbGF0ZSQsXG4gICAgICB0aGlzLmNoaXBBdmF0YXJUZW1wbGF0ZSRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbY2hpcCwgYXZhdGFyXSkgPT4ge1xuICAgICAgICByZXR1cm4gPFRlbXBsYXRlV3JhcHBlcj57XG4gICAgICAgICAgY2hpcCxcbiAgICAgICAgICBhdmF0YXJcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbXVsdGlwbGUodmFsOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWwpO1xuICAgIGlmICghdGhpcy5fbXVsdGlwbGUgJiYgdGhpcy5lbnRpdGllcy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLnNlbGVjdEVudGl0eShcbiAgICAgICAgdGhpcy5lbnRpdGllc1t0aGlzLmVudGl0aWVzLmxlbmd0aCAtIDFdXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gY3VzdG9taXplIGVhY2ggY2hpcCBpbmRpdmlkdWFsbHkgKENvbG9yLCBSZW1vdmFibGUsIEF2YXRhcikuXG4gICAqXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNoaXBTcGVjRm4oZm46IChlOiBURW50aXR5KSA9PiBTZWxlY3RPcHRpb25DaGlwU3BlYykge1xuICAgIHRoaXMuX2NoaXBTcGVjRm4kLm5leHQoZm4pO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGlwU3BlY0ZuJCgpOiBPYnNlcnZhYmxlPChlOiBURW50aXR5KSA9PiBTZWxlY3RPcHRpb25DaGlwU3BlYz4ge1xuICAgIHJldHVybiB0aGlzLl9jaGlwU3BlY0ZuJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlO1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZChFbGRlclNlbGVjdENoaXBEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIHNldCBjaGlwVGVtcGxhdGVRdWVyeSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIHRoaXMuY2hpcFRlbXBsYXRlID0gdGVtcGxhdGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNoaXBUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIHRoaXMuY2hpcFRlbXBsYXRlJC5uZXh0KHRlbXBsYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hpcFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNoaXBUZW1wbGF0ZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIEBDb250ZW50Q2hpbGQoRWxkZXJTZWxlY3RDaGlwQXZhdGFyRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyBzZXQgY2hpcEF2YXRhclRlbXBsYXRlUXVlcnkodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLmNoaXBBdmF0YXJUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjaGlwQXZhdGFyVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLmNoaXBBdmF0YXJUZW1wbGF0ZSQubmV4dCh0ZW1wbGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoaXBBdmF0YXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jaGlwQXZhdGFyVGVtcGxhdGUkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHNob3VsZExhYmVsRmxvYXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlZChjaGFuZ2VFdmVudDogTWF0Q2hpcFNlbGVjdGlvbkNoYW5nZSwgZW50aXR5OiBURW50aXR5KTogdm9pZCB7XG4gICAgLyoqL1xuICAgIHRoaXMubG9nLmRlYnVnKFwic2VsZWN0aW9uQ2hhbmdlZFwiLCB7XG4gICAgICBjaGFuZ2VFdmVudDogY2hhbmdlRXZlbnQsXG4gICAgICBlbnRpdHk6IGVudGl0eVxuICAgIH0pO1xuXG4gICAgaWYgKGNoYW5nZUV2ZW50LmlzVXNlcklucHV0KSB7XG4gICAgICBpZiAoY2hhbmdlRXZlbnQuc2VsZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RFbnRpdHkoZW50aXR5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRW50aXR5KGVudGl0eSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlc29sdmVDaGlwVmFsdWUoZTE6IFRFbnRpdHkpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmdldEVudGl0eUlkKGUxKTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cyhvcHRpb25zPzogRm9jdXNPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2xpc3RCb3gpIHtcbiAgICAgIHRoaXMuX2xpc3RCb3guZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmxvZy53YXJuKFwiYmx1cigpIG5vdCB5ZXQgc3VwcG9ydGVkIVwiKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm90ZWN0ZWQgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IHN0YXJ0IERDIGlmIG5vdCB5ZXQgc3RhcnRlZFxuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgb25EYXRhQ29udGV4dENoYW5nZWQoZGF0YTogSURhdGFDb250ZXh0PFRFbnRpdHk+KTogdm9pZCB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmICghZGF0YS5pc1N0YXJ0ZWQpIHtcbiAgICAgICAgZGF0YS5zdGFydCh0aGlzLnNvcnRzLCB0aGlzLmZpbHRlcnMpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgc3VwZXIub25EYXRhQ29udGV4dENoYW5nZWQoZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdXBlci5vbkRhdGFDb250ZXh0Q2hhbmdlZChkYXRhKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgc2VsZWN0RW50aXR5KGVudGl0eTogVEVudGl0eSk6IHZvaWQge1xuICAgIGNvbnN0IGlkVG9TZWxlY3QgPSB0aGlzLmdldEVudGl0eUlkKGVudGl0eSk7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnJlbW92ZUVudGl0aWVzKFxuICAgICAgICB0aGlzLmVudGl0aWVzLmZpbHRlcihlID0+IHRoaXMuZ2V0RW50aXR5SWQoZSkgIT09IGlkVG9TZWxlY3QpXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNFbnRpdHlJZFNlbGVjdGVkKGlkVG9TZWxlY3QpKSB7XG4gICAgICB0aGlzLmFwcGVuZEVudGl0eShlbnRpdHkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNFbnRpdHlJZFNlbGVjdGVkKGVudGl0eUlkOiBUSWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdGllcy5zb21lKGUgPT4gdGhpcy5nZXRFbnRpdHlJZChlKSA9PSBlbnRpdHlJZCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ2hpcE1vZGVscyhcbiAgICBvcHRpb25zUHJvdmlkZXI6IENoaXBPcHRpb25zUHJvdmlkZXI8VElkLCBURW50aXR5PixcbiAgICBlbnRpdGllczogVEVudGl0eVtdLFxuICAgIGVudGl0eUlkczogVElkW10sXG4gICAgZW50aXRpZXNMYWJlbHM6IE1hcDxhbnksIHN0cmluZz4sXG4gICAgY29udGV4dDogTXVsdGlTZWxlY3RDaGlwT3B0aW9uc0NvbnRleHRcbiAgKTogQ2hpcE9wdGlvbk1vZGVsPFRFbnRpdHk+W10ge1xuICAgIHJldHVybiBvcHRpb25zUHJvdmlkZXIuYnVpbGRDaGlwTW9kZWxzT3JGYWxsYmFjayhcbiAgICAgIGVudGl0aWVzLFxuICAgICAgZW50aXR5SWRzLFxuICAgICAge1xuICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICBpc0xvY2tlZDogdGhpcy5pc0xvY2tlZCxcbiAgICAgICAgZW50aXR5TGFiZWxNYXA6IGVudGl0aWVzTGFiZWxzXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRBdmFpbGFibGVFbnRpdGllcyhcbiAgICBkYXRhOiBURW50aXR5W10sXG4gICAgdGVtcGxhdGVDaGlwczogRWxkZXJTZWxlY3RPcHRpb25Db21wb25lbnQ8VEVudGl0eT5bXVxuICApOiBURW50aXR5W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5leHRyYWN0RW50aXRpZXNGcm9tVGVtcGxhdGVDaGlwcyh0ZW1wbGF0ZUNoaXBzKSwgLi4uZGF0YV07XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RFbnRpdGllc0Zyb21UZW1wbGF0ZUNoaXBzKHRlbXBsYXRlQ2hpcHM6IEVsZGVyU2VsZWN0T3B0aW9uQ29tcG9uZW50PFRFbnRpdHk+W10pOiBURW50aXR5W10ge1xuICAgIHJldHVybiB0ZW1wbGF0ZUNoaXBzLm1hcChjaGlwID0+IGNoaXAudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEVudGl0aWVzTGFiZWxNYXAodGVtcGxhdGVDaGlwczogRWxkZXJTZWxlY3RPcHRpb25Db21wb25lbnQ8VEVudGl0eT5bXSk6IE1hcDxURW50aXR5LCBzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IE1hcChcbiAgICAgIHRlbXBsYXRlQ2hpcHMuZmlsdGVyKGNoaXAgPT4gY2hpcC5sYWJlbCAhPSB1bmRlZmluZWQpXG4gICAgICAgIC5tYXAoY2hpcCA9PiBbY2hpcC52YWx1ZSwgY2hpcC5sYWJlbF0pKTtcbiAgfVxufVxuIiwiQGlmIChzZWxlY3RDaGlwcyQgfCBhc3luYzthcyBzZWxlY3RDaGlwcykge1xuICA8ZGl2IGNsYXNzPVwiZWxkZXItZmxleC1jb250cm9sXCJcbiAgICAgICBbbWF0VG9vbHRpcF09XCIoc3RhdGUkIHwgYXN5bmMpPy5lcnJvclwiXG4gID5cbiAgICA8bWF0LWNoaXAtbGlzdGJveCAjY2hpcHNcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MubWF0LW1kYy1jaGlwLXNldC1zdGFja2VkXT1cInN0YWNrZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgPlxuXG4gICAgICBAaWYgKG1lcmdlZFN0YXRlJCB8IGFzeW5jO2FzIHN0YXRlKSB7XG4gICAgICAgIEBpZiAoaWNvbikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbGRlci1pbnB1dC1wcmVmaXgtaWNvbi1jb250YWluZXIgZmxleC1ub25lXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVsZGVyLXByZWZpeC1pY29uIGVsZGVyLW1kYy1jb250cm9sLWljb24gZWxkZXItaWNvbi1zbWFsbCBub3NlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmxvYWRpbmddPVwic3RhdGUubG9hZGluZ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGljb24gfX1cbiAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGlmICh0ZW1wbGF0ZXMkIHwgYXN5bmM7YXMgdGVtcGxhdGVzKSB7XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgICAgICBAZm9yIChjaGlwTW9kZWwgb2Ygc2VsZWN0Q2hpcHM7dHJhY2sgY2hpcE1vZGVsLnZhbHVlKSB7XG4gICAgICAgICAgPG1hdC1jaGlwLW9wdGlvbiBjbGFzcz1cIm5vc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyZXNvbHZlQ2hpcFZhbHVlKGNoaXBNb2RlbC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxkZXJDaGlwTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsZXZlbENvbG9yXT1cImNoaXBNb2RlbC5jb2xvclNwZWM/LmxldmVsQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlQ29sb3JdPVwiY2hpcE1vZGVsLmNvbG9yU3BlYz8uc3RhdGVDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiY2hpcE1vZGVsLmNvbG9yU3BlYz8udGhlbWVDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0YWJsZV09XCIhY2hpcE1vZGVsLmxvY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY2hpcE1vZGVsLmxvY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwiY2hpcE1vZGVsLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQsIGNoaXBNb2RlbC52YWx1ZSlcIlxuICAgICAgICAgID5cblxuICAgICAgICAgICAgQGlmICh0ZW1wbGF0ZXMuYXZhdGFyICYmICFjaGlwTW9kZWwuYXZhdGFyU3BlYz8uaGlkZSkge1xuICAgICAgICAgICAgICA8bWF0LWNoaXAtYXZhdGFyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmNoaXAtYXZhdGFyLXhsXT1cImNoaXBNb2RlbC5hdmF0YXJTcGVjPy5sYXJnZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlcy5hdmF0YXI7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGNoaXBNb2RlbH1cIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9tYXQtY2hpcC1hdmF0YXI+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZXMuY2hpcCB8fCBzaW1wbGVDaGlwVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGNoaXBNb2RlbH1cIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICBAaWYgKGNoaXBNb2RlbC50cmFpbGluZ1NwZWM/Lmljb24pIHtcbiAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdENoaXBUcmFpbGluZ0ljb24gY2xhc3M9XCJlbGRlci10cmFpbGluZy1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmb250U2V0XT1cImNoaXBNb2RlbC50cmFpbGluZ1NwZWM/Lmljb25Gb250U2V0XCJcbiAgICAgICAgICAgICAgPnt7IGNoaXBNb2RlbC50cmFpbGluZ1NwZWM/Lmljb24gfX1cbiAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIDwvbWF0LWNoaXAtb3B0aW9uPlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2Utc3RhcnQtY2VudGVyIGVsZGVyLWNoaXAtaW5wdXRcIj5cblxuICAgICAgICAgIEBpZiAoc2VsZWN0aW9uUG9wdXApIHtcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVsZGVyLWNvbnRyb2wtaWNvbi1idXR0b24gZWxkZXItYnJvd3NlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2NrZWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblNlbGVjdGlvblBvcHVwKCRldmVudClcIiBhcmlhLWxhYmVsPVwiU2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgZWxkZXJTdG9wRXZlbnRQcm9wYWdhdGlvblxuICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD1cIi0xXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZWxkZXItbWRjLWNvbnRyb2wtaWNvblwiPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgPC9tYXQtY2hpcC1saXN0Ym94PlxuICA8L2Rpdj5cbn1cblxuPG5nLXRlbXBsYXRlICNzaW1wbGVDaGlwVGVtcGxhdGUgbGV0LWNoaXBNb2RlbD5cbiAgPHNwYW4gY2xhc3M9XCJlbGRlci1jaGlwLXRleHRcIj57eyBjaGlwTW9kZWwuZGlzcGxheVRleHQgfCBlbGRlclRydW5jYXRlOjIwIH19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuIl19