@elderbyte/ngx-starter 13.3.1 → 13.5.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 (238) hide show
  1. package/esm2020/lib/common/enums/elder-enum-translation.service.mjs +3 -3
  2. package/esm2020/lib/common/forms/form-field-base.component.mjs +3 -3
  3. package/esm2020/lib/common/forms/multi-model-base.component.mjs +3 -3
  4. package/esm2020/lib/common/forms/template-composite-control.mjs +3 -3
  5. package/esm2020/lib/common/forms/value-accessor-base.mjs +3 -3
  6. package/esm2020/lib/common/http/http-client-builder.service.mjs +3 -3
  7. package/esm2020/lib/common/http/http-client-pristine.mjs +3 -3
  8. package/esm2020/lib/common/http/transfer/data-transfer-factory.mjs +3 -3
  9. package/esm2020/lib/common/url/elder-url-fragment-params.service.mjs +3 -3
  10. package/esm2020/lib/components/access-denied/elder-access-denied.component.mjs +3 -3
  11. package/esm2020/lib/components/access-denied/elder-access-denied.module.mjs +4 -4
  12. package/esm2020/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +3 -3
  13. package/esm2020/lib/components/auditing/elder-audit.module.mjs +4 -4
  14. package/esm2020/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +3 -3
  15. package/esm2020/lib/components/button-group/elder-button-group.module.mjs +4 -4
  16. package/esm2020/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +3 -3
  17. package/esm2020/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +3 -3
  18. package/esm2020/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +4 -4
  19. package/esm2020/lib/components/card-organizer/elder-card-organizer.module.mjs +4 -4
  20. package/esm2020/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +3 -3
  21. package/esm2020/lib/components/cards/elder-card/elder-card.component.mjs +18 -18
  22. package/esm2020/lib/components/cards/elder-card/elder-card.module.mjs +4 -4
  23. package/esm2020/lib/components/connectivity/elder-connectivity.module.mjs +4 -4
  24. package/esm2020/lib/components/connectivity/elder-connectivity.service.mjs +3 -3
  25. package/esm2020/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +3 -3
  26. package/esm2020/lib/components/containers/elder-containers.module.mjs +4 -4
  27. package/esm2020/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +3 -3
  28. package/esm2020/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +3 -3
  29. package/esm2020/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +3 -3
  30. package/esm2020/lib/components/csv/elder-csv.module.mjs +4 -4
  31. package/esm2020/lib/components/currency/elder-currency.module.mjs +4 -4
  32. package/esm2020/lib/components/currency/elder-currency.pipe.mjs +3 -3
  33. package/esm2020/lib/components/data-transfer/elder-data-transfer.module.mjs +4 -4
  34. package/esm2020/lib/components/data-transfer/elder-data-transfer.service.mjs +3 -3
  35. package/esm2020/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +3 -3
  36. package/esm2020/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +3 -3
  37. package/esm2020/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +4 -4
  38. package/esm2020/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +3 -3
  39. package/esm2020/lib/components/data-view/base/elder-data-view-base.mjs +3 -3
  40. package/esm2020/lib/components/data-view/base/elder-data-view-base.module.mjs +4 -4
  41. package/esm2020/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +3 -3
  42. package/esm2020/lib/components/data-view/common/elder-data-common.module.mjs +4 -4
  43. package/esm2020/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +6 -6
  44. package/esm2020/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +3 -3
  45. package/esm2020/lib/components/data-view/common/selection/data-context-selection.directive.mjs +3 -3
  46. package/esm2020/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +3 -3
  47. package/esm2020/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +11 -11
  48. package/esm2020/lib/components/data-view/grid/elder-grid.module.mjs +4 -4
  49. package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +3 -3
  50. package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +4 -4
  51. package/esm2020/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +3 -3
  52. package/esm2020/lib/components/data-view/table/elder-number-cell.directive.mjs +3 -3
  53. package/esm2020/lib/components/data-view/table/elder-paginator-intl.mjs +3 -3
  54. package/esm2020/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +3 -3
  55. package/esm2020/lib/components/data-view/table/elder-table/elder-table.component.mjs +5 -5
  56. package/esm2020/lib/components/data-view/table/elder-table-column.directive.mjs +3 -3
  57. package/esm2020/lib/components/data-view/table/elder-table-extension.directive.mjs +3 -3
  58. package/esm2020/lib/components/data-view/table/elder-table-root.directive.mjs +3 -3
  59. package/esm2020/lib/components/data-view/table/elder-table-row.directive.mjs +3 -3
  60. package/esm2020/lib/components/data-view/table/elder-table-sort.directive.mjs +3 -3
  61. package/esm2020/lib/components/data-view/table/elder-table.module.mjs +4 -4
  62. package/esm2020/lib/components/data-view/table/model/elder-table-model.mjs +3 -3
  63. package/esm2020/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +3 -3
  64. package/esm2020/lib/components/dialogs/elder-dialog.module.mjs +7 -7
  65. package/esm2020/lib/components/dialogs/elder-dialog.service.mjs +3 -3
  66. package/esm2020/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +3 -3
  67. package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +3 -3
  68. package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +3 -3
  69. package/esm2020/lib/components/errors/elder-error.module.mjs +6 -5
  70. package/esm2020/lib/components/errors/error-util.mjs +94 -0
  71. package/esm2020/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +3 -3
  72. package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +3 -3
  73. package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +4 -4
  74. package/esm2020/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +3 -3
  75. package/esm2020/lib/components/files/elder-file-drop-zone.directive.mjs +3 -3
  76. package/esm2020/lib/components/files/elder-file-select.directive.mjs +3 -3
  77. package/esm2020/lib/components/files/elder-file.module.mjs +4 -4
  78. package/esm2020/lib/components/files/file-select/file-select.component.mjs +3 -3
  79. package/esm2020/lib/components/files/file-upload/file-upload.component.mjs +3 -3
  80. package/esm2020/lib/components/forms/clipboard/elder-clipboard.service.mjs +3 -3
  81. package/esm2020/lib/components/forms/directives/elder-clipboard-put.directive.mjs +3 -3
  82. package/esm2020/lib/components/forms/directives/elder-delayed-focus.directive.mjs +3 -3
  83. package/esm2020/lib/components/forms/directives/elder-form-field-dense.directive.mjs +3 -3
  84. package/esm2020/lib/components/forms/directives/elder-form-field-label.directive.mjs +3 -3
  85. package/esm2020/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +3 -3
  86. package/esm2020/lib/components/forms/directives/elder-forms-directives.module.mjs +13 -13
  87. package/esm2020/lib/components/forms/directives/elder-key-event.directive.mjs +3 -3
  88. package/esm2020/lib/components/forms/directives/elder-max.directive.mjs +3 -3
  89. package/esm2020/lib/components/forms/directives/elder-min.directive.mjs +3 -3
  90. package/esm2020/lib/components/forms/directives/elder-next-focusable.directive.mjs +3 -3
  91. package/esm2020/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +3 -3
  92. package/esm2020/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +3 -3
  93. package/esm2020/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +3 -3
  94. package/esm2020/lib/components/forms/directives/elder-touched.directive.mjs +3 -3
  95. package/esm2020/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +3 -3
  96. package/esm2020/lib/components/forms/directives/validation/elder-multiple-of.validator.mjs +3 -3
  97. package/esm2020/lib/components/forms/directives/validation/elder-required-ignore-zero.validator.mjs +3 -3
  98. package/esm2020/lib/components/forms/elder-forms.module.mjs +4 -4
  99. package/esm2020/lib/components/forms/search/elder-search-context.directive.mjs +3 -3
  100. package/esm2020/lib/components/forms/search/elder-search-input.directive.mjs +3 -3
  101. package/esm2020/lib/components/forms/search/elder-search.module.mjs +4 -4
  102. package/esm2020/lib/components/forms/search/search-box/elder-search-box.component.mjs +3 -3
  103. package/esm2020/lib/components/forms/search/search-box/elder-search-panel.component.mjs +3 -3
  104. package/esm2020/lib/components/global-search/elder-global-search.component.mjs +3 -3
  105. package/esm2020/lib/components/global-search/elder-global-search.module.mjs +4 -4
  106. package/esm2020/lib/components/global-search/elder-global-search.service.mjs +3 -3
  107. package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +3 -3
  108. package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +4 -4
  109. package/esm2020/lib/components/headers/elder-header/elder-header.component.mjs +3 -3
  110. package/esm2020/lib/components/headers/elder-header.module.mjs +4 -4
  111. package/esm2020/lib/components/http-support/elder-http-client.service.mjs +3 -3
  112. package/esm2020/lib/components/i18n/entities/elder-i18n-entities.module.mjs +4 -4
  113. package/esm2020/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +3 -3
  114. package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +3 -3
  115. package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +3 -3
  116. package/esm2020/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +3 -3
  117. package/esm2020/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +3 -3
  118. package/esm2020/lib/components/i18n/entities/elder-localized-texts.directive.mjs +3 -3
  119. package/esm2020/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +3 -3
  120. package/esm2020/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +3 -3
  121. package/esm2020/lib/components/i18n/entities/picker/localisation-picker.service.mjs +3 -3
  122. package/esm2020/lib/components/i18n/language/elder-language-interceptor.mjs +3 -3
  123. package/esm2020/lib/components/i18n/language/elder-language.module.mjs +4 -4
  124. package/esm2020/lib/components/i18n/language/elder-language.service.mjs +3 -3
  125. package/esm2020/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +4 -4
  126. package/esm2020/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +4 -4
  127. package/esm2020/lib/components/iframes/elder-iframe.module.mjs +4 -4
  128. package/esm2020/lib/components/iframes/iframe-close.directive.mjs +3 -3
  129. package/esm2020/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +3 -3
  130. package/esm2020/lib/components/iframes/iframe-host/iframe-host.component.mjs +3 -3
  131. package/esm2020/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +3 -3
  132. package/esm2020/lib/components/iframes/iframe.service.mjs +3 -3
  133. package/esm2020/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +3 -3
  134. package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +3 -3
  135. package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +7 -7
  136. package/esm2020/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +3 -3
  137. package/esm2020/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +3 -3
  138. package/esm2020/lib/components/input/autocomplete/elder-autocomplete.module.mjs +4 -4
  139. package/esm2020/lib/components/labels/elder-labels.module.mjs +4 -4
  140. package/esm2020/lib/components/labels/labels-input/labels-input.component.mjs +3 -3
  141. package/esm2020/lib/components/measures/dimensions-input/elder-dimensions-input.component.mjs +3 -3
  142. package/esm2020/lib/components/measures/directives/elder-unit-select.directive.mjs +3 -3
  143. package/esm2020/lib/components/measures/elder-measures.module.mjs +8 -8
  144. package/esm2020/lib/components/measures/elder-quantity-transform.pipe.mjs +3 -3
  145. package/esm2020/lib/components/measures/elder-quantity.pipe.mjs +3 -3
  146. package/esm2020/lib/components/measures/elder-unit.service.mjs +3 -3
  147. package/esm2020/lib/components/measures/quantity-input/elder-quantity-input.component.mjs +4 -4
  148. package/esm2020/lib/components/measures/util/elder-quantity.service.mjs +3 -3
  149. package/esm2020/lib/components/multi-autocomplete/elder-multi-auto-complete.module.mjs +4 -4
  150. package/esm2020/lib/components/multi-autocomplete/elder-multi-autocomplete.component.mjs +3 -3
  151. package/esm2020/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +3 -3
  152. package/esm2020/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +4 -4
  153. package/esm2020/lib/components/navigation/nav/elder-nav.module.mjs +4 -4
  154. package/esm2020/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +3 -3
  155. package/esm2020/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +3 -3
  156. package/esm2020/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +3 -3
  157. package/esm2020/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +3 -3
  158. package/esm2020/lib/components/navigation/toolbar/elder-toolbar.module.mjs +4 -4
  159. package/esm2020/lib/components/navigation/toolbar/elder-toolbar.service.mjs +3 -3
  160. package/esm2020/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +3 -3
  161. package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +3 -3
  162. package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +3 -3
  163. package/esm2020/lib/components/overlays/elder-overlay-origin.directive.mjs +3 -3
  164. package/esm2020/lib/components/overlays/elder-overlay-trigger.directive.mjs +3 -3
  165. package/esm2020/lib/components/overlays/elder-overlay.component.mjs +3 -3
  166. package/esm2020/lib/components/overlays/elder-overlay.module.mjs +4 -4
  167. package/esm2020/lib/components/panels/card-panel/elder-card-panel.component.mjs +3 -3
  168. package/esm2020/lib/components/panels/elder-panel.module.mjs +4 -4
  169. package/esm2020/lib/components/panels/flat/elder-panel.component.mjs +3 -3
  170. package/esm2020/lib/components/select/elder-select/elder-select.component.mjs +4 -4
  171. package/esm2020/lib/components/select/elder-select-base.mjs +3 -3
  172. package/esm2020/lib/components/select/elder-select-chip.directive.mjs +3 -3
  173. package/esm2020/lib/components/select/elder-select-value.directive.mjs +3 -3
  174. package/esm2020/lib/components/select/elder-select.module.mjs +4 -4
  175. package/esm2020/lib/components/select/multi/elder-multi-select-base.mjs +3 -3
  176. package/esm2020/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +3 -3
  177. package/esm2020/lib/components/select/popup/selection-model-popup.directive.mjs +3 -3
  178. package/esm2020/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +3 -3
  179. package/esm2020/lib/components/select/select-on-tab.directive.mjs +3 -3
  180. package/esm2020/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +3 -3
  181. package/esm2020/lib/components/select-chip-list/elder-chip-list-select.module.mjs +4 -4
  182. package/esm2020/lib/components/select-list/elder-select-list.module.mjs +4 -4
  183. package/esm2020/lib/components/select-list/select-list/elder-select-list.component.mjs +3 -3
  184. package/esm2020/lib/components/select-list/select-list-item/elder-select-list-item.component.mjs +3 -3
  185. package/esm2020/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +3 -3
  186. package/esm2020/lib/components/shell/drawers/elder-router-outlet.service.mjs +3 -3
  187. package/esm2020/lib/components/shell/elder-shell-slot.directive.mjs +3 -3
  188. package/esm2020/lib/components/shell/elder-shell.module.mjs +4 -4
  189. package/esm2020/lib/components/shell/elder-shell.service.mjs +3 -3
  190. package/esm2020/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +3 -3
  191. package/esm2020/lib/components/shell/shell/elder-shell.component.mjs +12 -12
  192. package/esm2020/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +3 -3
  193. package/esm2020/lib/components/tabs/elder-tab/elder-tab.directive.mjs +3 -3
  194. package/esm2020/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +95 -36
  195. package/esm2020/lib/components/tabs/elder-tab.module.mjs +4 -4
  196. package/esm2020/lib/components/time/date-adapters/custom-date-adapter.mjs +3 -3
  197. package/esm2020/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +4 -4
  198. package/esm2020/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +3 -3
  199. package/esm2020/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +4 -4
  200. package/esm2020/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +3 -3
  201. package/esm2020/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +4 -4
  202. package/esm2020/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +4 -4
  203. package/esm2020/lib/components/time/elder-time.module.mjs +8 -8
  204. package/esm2020/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +4 -4
  205. package/esm2020/lib/components/toasts/elder-toast.module.mjs +4 -4
  206. package/esm2020/lib/components/toasts/elder-toast.service.mjs +27 -59
  207. package/esm2020/lib/components/toasts/standard-toast/standard-toast.component.mjs +3 -3
  208. package/esm2020/lib/components/url-fragment/elder-url-fragment.module.mjs +4 -4
  209. package/esm2020/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +3 -3
  210. package/esm2020/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +3 -3
  211. package/esm2020/lib/components/viewers/elder-viewers.module.mjs +4 -4
  212. package/esm2020/lib/features/event-source/elder-event-source.service.mjs +3 -3
  213. package/esm2020/lib/features/kafent/access-token-provider.mjs +3 -3
  214. package/esm2020/lib/features/kafent/kafent-config.mjs +3 -3
  215. package/esm2020/lib/features/kafent/kafent-event-stream.mjs +3 -3
  216. package/esm2020/lib/features/kafent/kafent-event.service.mjs +3 -3
  217. package/esm2020/lib/features/kafent/kafent.module.mjs +4 -4
  218. package/esm2020/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +3 -3
  219. package/esm2020/lib/pipes/bytes.pipe.mjs +3 -3
  220. package/esm2020/lib/pipes/elder-pipes.module.mjs +7 -7
  221. package/esm2020/lib/pipes/elder-repeat.pipe.mjs +3 -3
  222. package/esm2020/lib/pipes/elder-round.pipe.mjs +3 -3
  223. package/esm2020/lib/pipes/elder-safe-url.pipe.mjs +3 -3
  224. package/esm2020/lib/pipes/iso-duration.pipe.mjs +3 -3
  225. package/esm2020/lib/pipes/iso-interval-parse.pipe.mjs +3 -3
  226. package/esm2020/lib/pipes/iso-interval.pipe.mjs +3 -3
  227. package/esm2020/lib/pipes/time-ago.pipe.mjs +3 -3
  228. package/esm2020/lib/pipes/time-duration.pipe.mjs +3 -3
  229. package/esm2020/lib/pipes/weight.pipe.mjs +3 -3
  230. package/fesm2015/elderbyte-ngx-starter.mjs +1006 -887
  231. package/fesm2015/elderbyte-ngx-starter.mjs.map +1 -1
  232. package/fesm2020/elderbyte-ngx-starter.mjs +1005 -887
  233. package/fesm2020/elderbyte-ngx-starter.mjs.map +1 -1
  234. package/lib/components/errors/elder-error.module.d.ts +1 -0
  235. package/lib/components/errors/error-util.d.ts +23 -0
  236. package/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.d.ts +19 -3
  237. package/lib/components/toasts/elder-toast.service.d.ts +0 -2
  238. package/package.json +2 -2
@@ -18,9 +18,9 @@ export class ElderShellSideLeftDirective {
18
18
  this.viewContainer = viewContainer;
19
19
  }
20
20
  }
21
- ElderShellSideLeftDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderShellSideLeftDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
22
- ElderShellSideLeftDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: ElderShellSideLeftDirective, selector: "[elderShellSideLeft], [ebsShellSideLeft]", ngImport: i0 });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderShellSideLeftDirective, decorators: [{
21
+ ElderShellSideLeftDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderShellSideLeftDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
22
+ ElderShellSideLeftDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.2", type: ElderShellSideLeftDirective, selector: "[elderShellSideLeft], [ebsShellSideLeft]", ngImport: i0 });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderShellSideLeftDirective, decorators: [{
24
24
  type: Directive,
25
25
  args: [{ selector: '[elderShellSideLeft], [ebsShellSideLeft]' }]
26
26
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
@@ -30,9 +30,9 @@ export class ElderShellSideRightDirective {
30
30
  this.viewContainer = viewContainer;
31
31
  }
32
32
  }
33
- ElderShellSideRightDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderShellSideRightDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
34
- ElderShellSideRightDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: ElderShellSideRightDirective, selector: "[elderShellSideRight], [ebsShellSideRight]", ngImport: i0 });
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderShellSideRightDirective, decorators: [{
33
+ ElderShellSideRightDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderShellSideRightDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
34
+ ElderShellSideRightDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.2", type: ElderShellSideRightDirective, selector: "[elderShellSideRight], [ebsShellSideRight]", ngImport: i0 });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderShellSideRightDirective, decorators: [{
36
36
  type: Directive,
37
37
  args: [{ selector: '[elderShellSideRight], [ebsShellSideRight]' }]
38
38
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
@@ -42,9 +42,9 @@ export class ElderShellCenterDirective {
42
42
  this.viewContainer = viewContainer;
43
43
  }
44
44
  }
45
- ElderShellCenterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderShellCenterDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
46
- ElderShellCenterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: ElderShellCenterDirective, selector: "[elderShellCenter], [ebsShellCenter]", ngImport: i0 });
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderShellCenterDirective, decorators: [{
45
+ ElderShellCenterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderShellCenterDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
46
+ ElderShellCenterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.2", type: ElderShellCenterDirective, selector: "[elderShellCenter], [ebsShellCenter]", ngImport: i0 });
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderShellCenterDirective, decorators: [{
48
48
  type: Directive,
49
49
  args: [{ selector: '[elderShellCenter], [ebsShellCenter]' }]
50
50
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
@@ -141,9 +141,9 @@ export class ElderShellComponent {
141
141
  }, 5);
142
142
  }
143
143
  }
144
- ElderShellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderShellComponent, deps: [{ token: i1.ElderShellService }, { token: i2.ElderRouteOutletDrawerService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
145
- ElderShellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.0", type: ElderShellComponent, selector: "elder-shell, ebs-shell", inputs: { sideNavToggleEnabled: "sideNavToggleEnabled", color: "color", menuColor: "menuColor", leftSideAutoFocus: "leftSideAutoFocus", rightSideAutoFocus: "rightSideAutoFocus" }, queries: [{ propertyName: "sideContentLeft", first: true, predicate: ElderShellSideLeftDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "sideContentRight", first: true, predicate: ElderShellSideRightDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "centerContent", first: true, predicate: ElderShellCenterDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "rightSideDrawer", first: true, predicate: ["rightSideDetail"], descendants: true, static: true }], ngImport: i0, template: "\n<mat-sidenav-container style=\"height:100%; width: 100%\" (backdropClick)=\"onBackdropClick($event)\">\n\n <!-- Left Side Nav -->\n <mat-sidenav position=\"start\"\n mode=\"over\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"leftSideAutoFocus\"\n [opened]=\"leftSideContentOpen$ | async\"\n (closed)=\"closeLeftSideContent()\">\n <div fxFill fxLayout=\"column\">\n <ng-container *ngTemplateOutlet=\"sideContentLeft || fallbackSideContentLeft;\"></ng-container>\n </div>\n </mat-sidenav>\n\n <!-- Main Content -->\n <mat-sidenav-content>\n <div fxLayout=\"column\" fxFill>\n <ng-container *ngTemplateOutlet=\"centerContent || fallbackCenterContent;\"></ng-container>\n </div>\n </mat-sidenav-content>\n\n <!-- Right Side Detail -->\n <mat-sidenav mode=\"over\" #rightSideDetail id=\"elder-right-side-detail\"\n position=\"end\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"rightSideAutoFocus\"\n [disableClose]=\"true\" (keydown.escape)=\"onEscapeRightSide($event)\">\n <div fxFill fxLayout=\"column\">\n <ng-container *ngTemplateOutlet=\"sideContentRight || fallbackSideContentRight;\"></ng-container>\n </div>\n </mat-sidenav>\n\n</mat-sidenav-container>\n\n<ng-template #fallbackSideContentLeft>\n <div fxLayout=\"column\" fxFlex>\n <p class=\"noselect\">No Left Side Content Defined!</p>\n </div>\n</ng-template>\n\n<ng-template #fallbackSideContentRight>\n <router-outlet name=\"side\" class=\"router-flex\"></router-outlet>\n</ng-template>\n\n<ng-template #fallbackCenterContent>\n <div fxLayout=\"column\" fxFill>\n\n <!-- Header -->\n <ng-container *ngTemplateOutlet=\"(headerTemplate$ | async) || defaultHeaderTemplate\"></ng-container>\n\n <!-- Center -->\n <ng-container *ngTemplateOutlet=\"(centerTemplate$ | async) || defaultCenterTemplate\"></ng-container>\n\n <!-- Footer -->\n <ng-container *ngTemplateOutlet=\"(footerTemplate$ | async) || defaultFooterTemplate\"></ng-container>\n\n </div>\n</ng-template>\n\n\n<ng-template #defaultHeaderTemplate>\n\n <elder-toolbar [color]=\"color\">\n\n <!-- Toolbar Prefix: Sidenav Toggle -->\n <mat-toolbar *ngIf=\"sideNavToggleEnabled\" fxFlex=\"0\"\n fxLayout=\"row\" fxLayoutAlign=\"center center\"\n [color]=\"menuColor\">\n <button mat-icon-button type=\"button\" (click)=\"toggleSideNav()\">\n <mat-icon>menu</mat-icon>\n </button>\n </mat-toolbar>\n </elder-toolbar>\n\n</ng-template>\n\n<ng-template #defaultCenterTemplate>\n\n <!-- Primary Router Outlet -->\n <router-outlet class=\"router-flex\"></router-outlet>\n\n</ng-template>\n\n<ng-template #defaultFooterTemplate>\n <!-- Default Footer is empty -->\n</ng-template>\n", styles: ["mat-sidenav{margin:0;height:100%;overflow:hidden}mat-sidenav-container{margin:0;width:100%;height:100%;overflow:hidden}\n"], components: [{ type: i3.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { type: i3.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { type: i3.MatSidenavContent, selector: "mat-sidenav-content" }, { type: i4.ElderToolbarComponent, selector: "elder-toolbar, ebs-toolbar", inputs: ["color"] }, { type: i5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i8.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i10.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }], pipes: { "async": i9.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
146
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderShellComponent, decorators: [{
144
+ ElderShellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderShellComponent, deps: [{ token: i1.ElderShellService }, { token: i2.ElderRouteOutletDrawerService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
145
+ ElderShellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: ElderShellComponent, selector: "elder-shell, ebs-shell", inputs: { sideNavToggleEnabled: "sideNavToggleEnabled", color: "color", menuColor: "menuColor", leftSideAutoFocus: "leftSideAutoFocus", rightSideAutoFocus: "rightSideAutoFocus" }, queries: [{ propertyName: "sideContentLeft", first: true, predicate: ElderShellSideLeftDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "sideContentRight", first: true, predicate: ElderShellSideRightDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "centerContent", first: true, predicate: ElderShellCenterDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "rightSideDrawer", first: true, predicate: ["rightSideDetail"], descendants: true, static: true }], ngImport: i0, template: "\n<mat-sidenav-container style=\"height:100%; width: 100%\" (backdropClick)=\"onBackdropClick($event)\">\n\n <!-- Left Side Nav -->\n <mat-sidenav position=\"start\"\n mode=\"over\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"leftSideAutoFocus\"\n [opened]=\"leftSideContentOpen$ | async\"\n (closed)=\"closeLeftSideContent()\">\n <div fxFill fxLayout=\"column\">\n <ng-container *ngTemplateOutlet=\"sideContentLeft || fallbackSideContentLeft;\"></ng-container>\n </div>\n </mat-sidenav>\n\n <!-- Main Content -->\n <mat-sidenav-content>\n <div fxLayout=\"column\" fxFill>\n <ng-container *ngTemplateOutlet=\"centerContent || fallbackCenterContent;\"></ng-container>\n </div>\n </mat-sidenav-content>\n\n <!-- Right Side Detail -->\n <mat-sidenav mode=\"over\" #rightSideDetail id=\"elder-right-side-detail\"\n position=\"end\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"rightSideAutoFocus\"\n [disableClose]=\"true\" (keydown.escape)=\"onEscapeRightSide($event)\">\n <div fxFill fxLayout=\"column\">\n <ng-container *ngTemplateOutlet=\"sideContentRight || fallbackSideContentRight;\"></ng-container>\n </div>\n </mat-sidenav>\n\n</mat-sidenav-container>\n\n<ng-template #fallbackSideContentLeft>\n <div fxLayout=\"column\" fxFlex>\n <p class=\"noselect\">No Left Side Content Defined!</p>\n </div>\n</ng-template>\n\n<ng-template #fallbackSideContentRight>\n <router-outlet name=\"side\" class=\"router-flex\"></router-outlet>\n</ng-template>\n\n<ng-template #fallbackCenterContent>\n <div fxLayout=\"column\" fxFill>\n\n <!-- Header -->\n <ng-container *ngTemplateOutlet=\"(headerTemplate$ | async) || defaultHeaderTemplate\"></ng-container>\n\n <!-- Center -->\n <ng-container *ngTemplateOutlet=\"(centerTemplate$ | async) || defaultCenterTemplate\"></ng-container>\n\n <!-- Footer -->\n <ng-container *ngTemplateOutlet=\"(footerTemplate$ | async) || defaultFooterTemplate\"></ng-container>\n\n </div>\n</ng-template>\n\n\n<ng-template #defaultHeaderTemplate>\n\n <elder-toolbar [color]=\"color\">\n\n <!-- Toolbar Prefix: Sidenav Toggle -->\n <mat-toolbar *ngIf=\"sideNavToggleEnabled\" fxFlex=\"0\"\n fxLayout=\"row\" fxLayoutAlign=\"center center\"\n [color]=\"menuColor\">\n <button mat-icon-button type=\"button\" (click)=\"toggleSideNav()\">\n <mat-icon>menu</mat-icon>\n </button>\n </mat-toolbar>\n </elder-toolbar>\n\n</ng-template>\n\n<ng-template #defaultCenterTemplate>\n\n <!-- Primary Router Outlet -->\n <router-outlet class=\"router-flex\"></router-outlet>\n\n</ng-template>\n\n<ng-template #defaultFooterTemplate>\n <!-- Default Footer is empty -->\n</ng-template>\n", styles: ["mat-sidenav{margin:0;height:100%;overflow:hidden}mat-sidenav-container{margin:0;width:100%;height:100%;overflow:hidden}\n"], components: [{ type: i3.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { type: i3.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { type: i3.MatSidenavContent, selector: "mat-sidenav-content" }, { type: i4.ElderToolbarComponent, selector: "elder-toolbar, ebs-toolbar", inputs: ["color"] }, { type: i5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i8.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i10.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }], pipes: { "async": i9.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderShellComponent, decorators: [{
147
147
  type: Component,
148
148
  args: [{ selector: 'elder-shell, ebs-shell', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n<mat-sidenav-container style=\"height:100%; width: 100%\" (backdropClick)=\"onBackdropClick($event)\">\n\n <!-- Left Side Nav -->\n <mat-sidenav position=\"start\"\n mode=\"over\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"leftSideAutoFocus\"\n [opened]=\"leftSideContentOpen$ | async\"\n (closed)=\"closeLeftSideContent()\">\n <div fxFill fxLayout=\"column\">\n <ng-container *ngTemplateOutlet=\"sideContentLeft || fallbackSideContentLeft;\"></ng-container>\n </div>\n </mat-sidenav>\n\n <!-- Main Content -->\n <mat-sidenav-content>\n <div fxLayout=\"column\" fxFill>\n <ng-container *ngTemplateOutlet=\"centerContent || fallbackCenterContent;\"></ng-container>\n </div>\n </mat-sidenav-content>\n\n <!-- Right Side Detail -->\n <mat-sidenav mode=\"over\" #rightSideDetail id=\"elder-right-side-detail\"\n position=\"end\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"rightSideAutoFocus\"\n [disableClose]=\"true\" (keydown.escape)=\"onEscapeRightSide($event)\">\n <div fxFill fxLayout=\"column\">\n <ng-container *ngTemplateOutlet=\"sideContentRight || fallbackSideContentRight;\"></ng-container>\n </div>\n </mat-sidenav>\n\n</mat-sidenav-container>\n\n<ng-template #fallbackSideContentLeft>\n <div fxLayout=\"column\" fxFlex>\n <p class=\"noselect\">No Left Side Content Defined!</p>\n </div>\n</ng-template>\n\n<ng-template #fallbackSideContentRight>\n <router-outlet name=\"side\" class=\"router-flex\"></router-outlet>\n</ng-template>\n\n<ng-template #fallbackCenterContent>\n <div fxLayout=\"column\" fxFill>\n\n <!-- Header -->\n <ng-container *ngTemplateOutlet=\"(headerTemplate$ | async) || defaultHeaderTemplate\"></ng-container>\n\n <!-- Center -->\n <ng-container *ngTemplateOutlet=\"(centerTemplate$ | async) || defaultCenterTemplate\"></ng-container>\n\n <!-- Footer -->\n <ng-container *ngTemplateOutlet=\"(footerTemplate$ | async) || defaultFooterTemplate\"></ng-container>\n\n </div>\n</ng-template>\n\n\n<ng-template #defaultHeaderTemplate>\n\n <elder-toolbar [color]=\"color\">\n\n <!-- Toolbar Prefix: Sidenav Toggle -->\n <mat-toolbar *ngIf=\"sideNavToggleEnabled\" fxFlex=\"0\"\n fxLayout=\"row\" fxLayoutAlign=\"center center\"\n [color]=\"menuColor\">\n <button mat-icon-button type=\"button\" (click)=\"toggleSideNav()\">\n <mat-icon>menu</mat-icon>\n </button>\n </mat-toolbar>\n </elder-toolbar>\n\n</ng-template>\n\n<ng-template #defaultCenterTemplate>\n\n <!-- Primary Router Outlet -->\n <router-outlet class=\"router-flex\"></router-outlet>\n\n</ng-template>\n\n<ng-template #defaultFooterTemplate>\n <!-- Default Footer is empty -->\n</ng-template>\n", styles: ["mat-sidenav{margin:0;height:100%;overflow:hidden}mat-sidenav-container{margin:0;width:100%;height:100%;overflow:hidden}\n"] }]
149
149
  }], ctorParameters: function () { return [{ type: i1.ElderShellService }, { type: i2.ElderRouteOutletDrawerService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { sideNavToggleEnabled: [{
@@ -124,9 +124,9 @@ export class ElderShellNavigationToggleComponent {
124
124
  return parts.join('/');
125
125
  }
126
126
  }
127
- ElderShellNavigationToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderShellNavigationToggleComponent, deps: [{ token: i1.Router }, { token: i2.ElderShellService }], target: i0.ɵɵFactoryTarget.Component });
128
- ElderShellNavigationToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.0", type: ElderShellNavigationToggleComponent, selector: "elder-shell-nav-toggle", inputs: { roots: "roots", hide: "hide" }, ngImport: i0, template: "\n<button mat-icon-button type=\"button\" (click)=\"onClick()\" *ngIf=\"showComponent()\">\n <mat-icon>{{icon | async}}</mat-icon>\n</button>\n", styles: [""], components: [{ type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i5.AsyncPipe } });
129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderShellNavigationToggleComponent, decorators: [{
127
+ ElderShellNavigationToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderShellNavigationToggleComponent, deps: [{ token: i1.Router }, { token: i2.ElderShellService }], target: i0.ɵɵFactoryTarget.Component });
128
+ ElderShellNavigationToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: ElderShellNavigationToggleComponent, selector: "elder-shell-nav-toggle", inputs: { roots: "roots", hide: "hide" }, ngImport: i0, template: "\n<button mat-icon-button type=\"button\" (click)=\"onClick()\" *ngIf=\"showComponent()\">\n <mat-icon>{{icon | async}}</mat-icon>\n</button>\n", styles: [""], components: [{ type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i5.AsyncPipe } });
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderShellNavigationToggleComponent, decorators: [{
130
130
  type: Component,
131
131
  args: [{ selector: 'elder-shell-nav-toggle', template: "\n<button mat-icon-button type=\"button\" (click)=\"onClick()\" *ngIf=\"showComponent()\">\n <mat-icon>{{icon | async}}</mat-icon>\n</button>\n", styles: [""] }]
132
132
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.ElderShellService }]; }, propDecorators: { roots: [{
@@ -11,9 +11,9 @@ export class ElderTabDirective {
11
11
  this.tab = tab;
12
12
  }
13
13
  }
14
- ElderTabDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderTabDirective, deps: [{ token: i1.MatTab }], target: i0.ɵɵFactoryTarget.Directive });
15
- ElderTabDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: ElderTabDirective, selector: "[elderTab]", inputs: { id: ["elderTab", "id"] }, ngImport: i0 });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderTabDirective, decorators: [{
14
+ ElderTabDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderTabDirective, deps: [{ token: i1.MatTab }], target: i0.ɵɵFactoryTarget.Directive });
15
+ ElderTabDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.2", type: ElderTabDirective, selector: "[elderTab]", inputs: { id: ["elderTab", "id"] }, ngImport: i0 });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderTabDirective, decorators: [{
17
17
  type: Directive,
18
18
  args: [{
19
19
  selector: '[elderTab]'
@@ -1,8 +1,10 @@
1
1
  import { ContentChildren, Directive, Input } from '@angular/core';
2
- import { first, takeUntil } from 'rxjs/operators';
2
+ import { takeUntil } from 'rxjs/operators';
3
3
  import { Subject } from 'rxjs';
4
+ import { MatTab } from '@angular/material/tabs';
4
5
  import { LoggerFactory } from '@elderbyte/ts-logger';
5
6
  import { ElderTabDirective } from '../elder-tab/elder-tab.directive';
7
+ import { QueryListBinding } from '../../../common/utils/query-list-binding';
6
8
  import * as i0 from "@angular/core";
7
9
  import * as i1 from "../../../common/url/elder-url-fragment-params.service";
8
10
  import * as i2 from "@angular/material/tabs";
@@ -29,7 +31,9 @@ export class ElderTabGroupRoutingDirective {
29
31
  **************************************************************************/
30
32
  this._log = LoggerFactory.getLogger(this.constructor.name);
31
33
  this._destroy$ = new Subject();
32
- this.tabGroup.selectedTabChange.pipe(takeUntil(this._destroy$)).subscribe(tabChangeEvent => this.handleTabChangeEvent(tabChangeEvent));
34
+ this.tabGroup.selectedTabChange
35
+ .pipe(takeUntil(this._destroy$))
36
+ .subscribe(event => this.handleTabChangeEvent(event));
33
37
  }
34
38
  /***************************************************************************
35
39
  * *
@@ -37,7 +41,17 @@ export class ElderTabGroupRoutingDirective {
37
41
  * *
38
42
  **************************************************************************/
39
43
  ngAfterViewInit() {
40
- this.subscribeFragmentParamsChange();
44
+ this.fragmentParamsService.params$
45
+ .pipe(takeUntil(this._destroy$))
46
+ .subscribe(params => this.handleFragmentParamsChange(params));
47
+ QueryListBinding
48
+ .of(this.tabs)
49
+ .updated(() => this.retryLastFailedActivation())
50
+ .bindUntil(this._destroy$);
51
+ QueryListBinding
52
+ .of(this.elderTabs)
53
+ .updated(() => this.retryLastFailedActivation())
54
+ .bindUntil(this._destroy$);
41
55
  }
42
56
  ngOnDestroy() {
43
57
  this.removeFragmentParam();
@@ -60,26 +74,24 @@ export class ElderTabGroupRoutingDirective {
60
74
  * Private Methods *
61
75
  * *
62
76
  **************************************************************************/
63
- subscribeFragmentParamsChange() {
64
- this.fragmentParamsService.params$
65
- .pipe(first(), takeUntil(this._destroy$))
66
- .subscribe(params => {
67
- const tabMarker = this.getTabMarker(params);
68
- if (tabMarker) {
69
- this._log.trace('Registered tab marker to activate: ', tabMarker);
70
- this.activateTabByMarker(tabMarker);
71
- }
72
- });
77
+ handleFragmentParamsChange(params) {
78
+ const tabMarker = this.getTabMarker(params);
79
+ if (tabMarker) {
80
+ this.activateTabByMarker(tabMarker);
81
+ }
73
82
  }
74
83
  activateTabByMarker(tabMarker) {
84
+ let success;
75
85
  if (this.isIndexMarker(tabMarker)) {
76
86
  const index = this.parseIndexMarker(tabMarker);
77
- this.activateTabByIndex(index);
87
+ success = this.activateTabByIndex(index);
78
88
  }
79
89
  else {
80
90
  // if no index is given we assume the marker is the id of the tab.
81
- this.activateTabById(tabMarker);
91
+ success = this.activateTabById(tabMarker);
82
92
  }
93
+ // remember tab marker in case of failure to retry later.
94
+ this.lastFailedTabMarker = success ? null : tabMarker;
83
95
  }
84
96
  activateTabByIndex(indexToActivate) {
85
97
  if (indexToActivate !== this.activeTabIndex) {
@@ -87,62 +99,106 @@ export class ElderTabGroupRoutingDirective {
87
99
  // First try to identify corresponding elder tab, so that we may work with its ID instead of index.
88
100
  const elderTab = this.findElderTabByIndex(indexToActivate);
89
101
  if (elderTab) {
90
- this.activateElderTab(elderTab);
102
+ return this.activateElderTab(elderTab);
91
103
  }
92
104
  else {
93
105
  // If no elder tab found, clear active elder tab to ensure consistent state.
94
106
  this.activeElderTab = null;
95
- this.setSelectedIndex(indexToActivate);
107
+ return this.setSelectedIndex(indexToActivate);
96
108
  }
97
109
  }
110
+ else {
111
+ return true;
112
+ }
98
113
  }
99
114
  activateTabById(tabId) {
100
115
  const elderTab = this.findElderTabById(tabId);
101
116
  if (elderTab) {
102
- this.activateElderTab(elderTab);
117
+ return this.activateElderTab(elderTab);
103
118
  }
104
119
  else {
105
120
  // If no elder tab found, clear active elder tab to ensure consistent state.
106
121
  this.activeElderTab = null;
107
- this._log.warn('Could not identify any tab with id "' + tabId + '". Ensure elderTab directive is added to corresponding tab.');
122
+ this._log.warn('Could not find tab with ID "' + tabId + '". Ensure elderTab directive is added to corresponding tab.');
123
+ return false;
108
124
  }
109
125
  }
110
126
  activateElderTab(elderTab) {
111
- this.activeElderTab = elderTab;
112
- const indexToActivate = elderTab.tab.position;
113
- if (indexToActivate !== this.activeTabIndex) {
114
- this._log.trace('Activating tab index ', indexToActivate);
115
- this.setSelectedIndex(indexToActivate);
127
+ if (this.activeElderTab !== elderTab) {
128
+ this.activeElderTab = elderTab;
129
+ const indexToActivate = this.getIndexOfTab(elderTab.tab);
130
+ return this.setSelectedIndex(indexToActivate);
131
+ }
132
+ else {
133
+ return true;
116
134
  }
117
135
  }
118
136
  handleTabChangeEvent(tabChangeEvent) {
119
137
  this._log.trace('Handling tabChangeEvent: ', tabChangeEvent);
120
- this.activeElderTab = this.findElderTabByIndex(tabChangeEvent.index);
138
+ this.lastFailedTabMarker = null;
139
+ this.activeElderTab = this.findElderTabByTab(tabChangeEvent.tab);
121
140
  this.updateFragmentParam();
122
141
  }
142
+ retryLastFailedActivation() {
143
+ if (this.lastFailedTabMarker) {
144
+ this._log.trace('Retrying to activate tab by marker:', this.lastFailedTabMarker);
145
+ this.activateTabByMarker(this.lastFailedTabMarker);
146
+ }
147
+ }
123
148
  setSelectedIndex(index) {
124
- if (this.activeTabIndex !== index) {
125
- this.tabGroup.selectedIndex = index;
126
- this.updateFragmentParam();
149
+ if (index !== this.activeTabIndex) {
150
+ if (this.isValidIndex(index)) {
151
+ this._log.trace('Activating tab by index ', index);
152
+ this.tabGroup.selectedIndex = index;
153
+ return true;
154
+ }
155
+ else {
156
+ this._log.warn('Could not find tab with index "' + index + '".');
157
+ return false;
158
+ }
159
+ }
160
+ else {
161
+ return true;
127
162
  }
128
163
  }
164
+ isValidIndex(index) {
165
+ return this.tabs.length > index;
166
+ }
129
167
  findElderTabById(tabId) {
130
168
  return this.elderTabs.find(t => t.id === tabId);
131
169
  }
132
170
  findElderTabByIndex(tabIndex) {
133
- if (this.elderTabs.length >= tabIndex) {
134
- return this.elderTabs.get(tabIndex);
171
+ const tab = this.findTabByIndex(tabIndex);
172
+ if (tab) {
173
+ return this.findElderTabByTab(tab);
135
174
  }
136
175
  else {
137
176
  return null;
138
177
  }
139
178
  }
179
+ findElderTabByTab(tab) {
180
+ return this.elderTabs.find(elderTab => elderTab.tab === tab);
181
+ }
182
+ findTabByIndex(tabIndex) {
183
+ if (this.tabs.length > tabIndex) {
184
+ return this.tabs.get(tabIndex);
185
+ }
186
+ else {
187
+ return null;
188
+ }
189
+ }
190
+ getIndexOfTab(tab) {
191
+ return this.tabs.toArray().indexOf(tab);
192
+ }
140
193
  updateFragmentParam() {
194
+ const currentTabMarker = this.getTabMarker(this.fragmentParamsService.params);
141
195
  // If possible, use tab ID as marker. If not, use tab index as fallback.
142
- const tabMarker = this.activeTabId
196
+ const newTabMarker = this.activeTabId
143
197
  ? this.activeTabId
144
198
  : this.serializeIndexMarker(this.activeTabIndex);
145
- this.setFragmentParam(tabMarker);
199
+ if (newTabMarker !== currentTabMarker) {
200
+ this.setFragmentParam(newTabMarker);
201
+ }
146
202
  }
147
203
  setFragmentParam(value) {
148
204
  const params = this.fragmentParamsService.params;
@@ -179,9 +235,9 @@ export class ElderTabGroupRoutingDirective {
179
235
  * Prefix used to indicate and index-based tab marker.
180
236
  */
181
237
  ElderTabGroupRoutingDirective.TAB_INDEX_PREFIX = 'idx:';
182
- ElderTabGroupRoutingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderTabGroupRoutingDirective, deps: [{ token: i1.ElderUrlFragmentParamsService }, { token: i2.MatTabGroup }], target: i0.ɵɵFactoryTarget.Directive });
183
- ElderTabGroupRoutingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: ElderTabGroupRoutingDirective, selector: "[elderTabGroupRouting]", inputs: { tabGroupQueryParamKey: ["elderTabGroupRouting", "tabGroupQueryParamKey"] }, queries: [{ propertyName: "elderTabs", predicate: ElderTabDirective }], exportAs: ["elderTabGroupRouting"], ngImport: i0 });
184
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderTabGroupRoutingDirective, decorators: [{
238
+ ElderTabGroupRoutingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderTabGroupRoutingDirective, deps: [{ token: i1.ElderUrlFragmentParamsService }, { token: i2.MatTabGroup }], target: i0.ɵɵFactoryTarget.Directive });
239
+ ElderTabGroupRoutingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.2", type: ElderTabGroupRoutingDirective, selector: "[elderTabGroupRouting]", inputs: { tabGroupQueryParamKey: ["elderTabGroupRouting", "tabGroupQueryParamKey"] }, queries: [{ propertyName: "tabs", predicate: MatTab }, { propertyName: "elderTabs", predicate: ElderTabDirective }], exportAs: ["elderTabGroupRouting"], ngImport: i0 });
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderTabGroupRoutingDirective, decorators: [{
185
241
  type: Directive,
186
242
  args: [{
187
243
  selector: '[elderTabGroupRouting]',
@@ -190,8 +246,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImpor
190
246
  }], ctorParameters: function () { return [{ type: i1.ElderUrlFragmentParamsService }, { type: i2.MatTabGroup }]; }, propDecorators: { tabGroupQueryParamKey: [{
191
247
  type: Input,
192
248
  args: ['elderTabGroupRouting']
249
+ }], tabs: [{
250
+ type: ContentChildren,
251
+ args: [MatTab]
193
252
  }], elderTabs: [{
194
253
  type: ContentChildren,
195
254
  args: [ElderTabDirective]
196
255
  }] } });
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItdGFiLWdyb3VwLXJvdXRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy90YWJzL2VsZGVyLXRhYi1ncm91cC1yb3V0aW5nL2VsZGVyLXRhYi1ncm91cC1yb3V0aW5nLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQyxNQUFNLGVBQWUsQ0FBQztBQUVuSCxPQUFPLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDOzs7O0FBSW5FOzs7Ozs7R0FNRztBQUtILE1BQU0sT0FBTyw2QkFBNkI7SUFtQ3hDOzs7O2dGQUk0RTtJQUU1RSxZQUNVLHFCQUFvRCxFQUNwRCxRQUFxQjtRQURyQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQStCO1FBQ3BELGFBQVEsR0FBUixRQUFRLENBQWE7UUFwQy9COzs7O29GQUk0RTtRQUUzRCxTQUFJLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBK0J6QyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FDbEMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUIsQ0FBQyxTQUFTLENBQ1QsY0FBYyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JB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QUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BGLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3pCO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxHQUFHLE1BQU0sR0FBRyxvQ0FBb0MsQ0FBQyxDQUFDO1NBQ3RHO0lBQ0gsQ0FBQztJQUVPLG9CQUFvQixDQUFDLEtBQWE7UUFDeEMsT0FBTyw2QkFBNkIsQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEUsQ0FBQzs7QUF6T0Q7O0dBRUc7QUFDcUIsOENBQWdCLEdBQUcsTUFBTyxDQUFBOzBIQUx2Qyw2QkFBNkI7OEdBQTdCLDZCQUE2Qiw4S0F5QnZCLGlCQUFpQjsyRkF6QnZCLDZCQUE2QjtrQkFKekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxRQUFRLEVBQUUsc0JBQXNCO2lCQUNqQzs4SUFxQlEscUJBQXFCO3NCQUQzQixLQUFLO3VCQUFDLHNCQUFzQjtnQkFPdEIsU0FBUztzQkFEZixlQUFlO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIElucHV0LCBPbkRlc3Ryb3ksIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFBhcmFtcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtmaXJzdCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtNYXRUYWJDaGFuZ2VFdmVudCwgTWF0VGFiR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0VsZGVyVGFiRGlyZWN0aXZlfSBmcm9tICcuLi9lbGRlci10YWIvZWxkZXItdGFiLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0VsZGVyVXJsRnJhZ21lbnRQYXJhbXNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXJsL2VsZGVyLXVybC1mcmFnbWVudC1wYXJhbXMuc2VydmljZSc7XG5pbXBvcnQge1VybFF1ZXJ5UGFyYW1zfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXJsL3VybC1xdWVyeS1wYXJhbXMnO1xuXG4vKipcbiAqIEFkZHMgb3V0LW9mLXRoZS1ib3ggdXJsLWZyYWdtZW50IGJhc2VkIHRhYiBuYXZpZ2F0aW9uXG4gKiB3aXRoaW4gdGhlIG1hdC10YWItZ3JvdXAgaXQgaXMgcGxhY2VkIHVwb24uXG4gKlxuICogQWRkIGVsZGVyVGFiIGRpcmVjdGl2ZSB0byBlYWNoIHRhYiBvZiB0aGUgZ3JvdXAgdG9cbiAqIHN1cHBvcnQgaWQtYmFzZWQgdGFiIG5hdmlnYXRpb24uXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tlbGRlclRhYkdyb3VwUm91dGluZ10nLFxuICBleHBvcnRBczogJ2VsZGVyVGFiR3JvdXBSb3V0aW5nJ1xufSlcbmV4cG9ydCBjbGFzcyBFbGRlclRhYkdyb3VwUm91dGluZ0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqXG4gICAqIFByZWZpeCB1c2VkIHRvIGluZGljYXRlIGFuZCBpbmRleC1iYXNlZCB0YWIgbWFya2VyLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVEFCX0lOREVYX1BSRUZJWCA9ICdpZHg6JztcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyoqXG4gICAqIFN0cmluZyB0byB1c2UgYXMgcXVlcnkgcGFyYW0ga2V5LlxuICAgKi9cbiAgQElucHV0KCdlbGRlclRhYkdyb3VwUm91dGluZycpXG4gIHB1YmxpYyB0YWJHcm91cFF1ZXJ5UGFyYW1LZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNoaWxkIHRhYnMgd2l0aGluIHRoaXMgbmF2aWdhdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihFbGRlclRhYkRpcmVjdGl2ZSlcbiAgcHVibGljIGVsZGVyVGFiczogUXVlcnlMaXN0PEVsZGVyVGFiRGlyZWN0aXZlPjtcblxuICAvKipcbiAgICogVGhlIHRhYiBtYXJrZWQgd2l0aCBlbGRlclRhYiBkaXJlY3RpdmUgd2hpY2hcbiAgICogaXMgY3VycmVudGx5IGFjdGl2ZS4gTWF5IGJlIG51bGwgaWZcbiAgICogZWxkZXJUYWIgbWFya2VycyBhcmUgbm90IHVzZWQuXG4gICAqL1xuICBwdWJsaWMgYWN0aXZlRWxkZXJUYWI6IEVsZGVyVGFiRGlyZWN0aXZlO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZnJhZ21lbnRQYXJhbXNTZXJ2aWNlOiBFbGRlclVybEZyYWdtZW50UGFyYW1zU2VydmljZSxcbiAgICBwcml2YXRlIHRhYkdyb3VwOiBNYXRUYWJHcm91cFxuICApIHtcbiAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkVGFiQ2hhbmdlLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgKS5zdWJzY3JpYmUoXG4gICAgICB0YWJDaGFuZ2VFdmVudCA9PiB0aGlzLmhhbmRsZVRhYkNoYW5nZUV2ZW50KHRhYkNoYW5nZUV2ZW50KVxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaWJlRnJhZ21lbnRQYXJhbXNDaGFuZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZUZyYWdtZW50UGFyYW0oKTtcblxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGdldCBhY3RpdmVUYWJJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUVsZGVyVGFiPy5pZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlVGFiSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4O1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVGcmFnbWVudFBhcmFtc0NoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZyYWdtZW50UGFyYW1zU2VydmljZS5wYXJhbXMkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgcGFyYW1zID0+IHtcblxuICAgICAgICAgIGNvbnN0IHRhYk1hcmtlciA9IHRoaXMuZ2V0VGFiTWFya2VyKHBhcmFtcyk7XG5cbiAgICAgICAgICBpZiAodGFiTWFya2VyKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cudHJhY2UoJ1JlZ2lzdGVyZWQgdGFiIG1hcmtlciB0byBhY3RpdmF0ZTogJywgdGFiTWFya2VyKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVUYWJCeU1hcmtlcih0YWJNYXJrZXIpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmF0ZVRhYkJ5TWFya2VyKHRhYk1hcmtlcjogc3RyaW5nKTogdm9pZCB7XG5cbiAgICBpZiAodGhpcy5pc0luZGV4TWFya2VyKHRhYk1hcmtlcikpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wYXJzZUluZGV4TWFya2VyKHRhYk1hcmtlcik7XG4gICAgICB0aGlzLmFjdGl2YXRlVGFiQnlJbmRleChpbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGlmIG5vIGluZGV4IGlzIGdpdmVuIHdlIGFzc3VtZSB0aGUgbWFya2VyIGlzIHRoZSBpZCBvZiB0aGUgdGFiLlxuICAgICAgdGhpcy5hY3RpdmF0ZVRhYkJ5SWQodGFiTWFya2VyKTtcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZhdGVUYWJCeUluZGV4KGluZGV4VG9BY3RpdmF0ZTogbnVtYmVyKTogdm9pZCB7XG5cbiAgICBpZiAoaW5kZXhUb0FjdGl2YXRlICE9PSB0aGlzLmFjdGl2ZVRhYkluZGV4KSB7XG4gICAgICB0aGlzLl9sb2cudHJhY2UoJ0FjdGl2YXRpbmcgdGFiIGJ5IGluZGV4ICcsIGluZGV4VG9BY3RpdmF0ZSk7XG5cbiAgICAgIC8vIEZpcnN0IHRyeSB0byBpZGVudGlmeSBjb3JyZXNwb25kaW5nIGVsZGVyIHRhYiwgc28gdGhhdCB3ZSBtYXkgd29yayB3aXRoIGl0cyBJRCBpbnN0ZWFkIG9mIGluZGV4LlxuICAgICAgY29uc3QgZWxkZXJUYWIgPSB0aGlzLmZpbmRFbGRlclRhYkJ5SW5kZXgoaW5kZXhUb0FjdGl2YXRlKTtcblxuICAgICAgaWYgKGVsZGVyVGFiKSB7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVFbGRlclRhYihlbGRlclRhYik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiBubyBlbGRlciB0YWIgZm91bmQsIGNsZWFyIGFjdGl2ZSBlbGRlciB0YWIgdG8gZW5zdXJlIGNvbnNpc3RlbnQgc3RhdGUuXG4gICAgICAgIHRoaXMuYWN0aXZlRWxkZXJUYWIgPSBudWxsO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkSW5kZXgoaW5kZXhUb0FjdGl2YXRlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZhdGVUYWJCeUlkKHRhYklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBlbGRlclRhYiA9IHRoaXMuZmluZEVsZGVyVGFiQnlJZCh0YWJJZCk7XG5cbiAgICBpZiAoZWxkZXJUYWIpIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVFbGRlclRhYihlbGRlclRhYik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIG5vIGVsZGVyIHRhYiBmb3VuZCwgY2xlYXIgYWN0aXZlIGVsZGVyIHRhYiB0byBlbnN1cmUgY29uc2lzdGVudCBzdGF0ZS5cbiAgICAgIHRoaXMuYWN0aXZlRWxkZXJUYWIgPSBudWxsO1xuICAgICAgdGhpcy5fbG9nLndhcm4oJ0NvdWxkIG5vdCBpZGVudGlmeSBhbnkgdGFiIHdpdGggaWQgXCInICsgdGFiSWQgKyAnXCIuIEVuc3VyZSBlbGRlclRhYiBkaXJlY3RpdmUgaXMgYWRkZWQgdG8gY29ycmVzcG9uZGluZyB0YWIuJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmF0ZUVsZGVyVGFiKGVsZGVyVGFiOiBFbGRlclRhYkRpcmVjdGl2ZSk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlRWxkZXJUYWIgPSBlbGRlclRhYjtcbiAgICBjb25zdCBpbmRleFRvQWN0aXZhdGUgPSBlbGRlclRhYi50YWIucG9zaXRpb247XG5cbiAgICBpZiAoaW5kZXhUb0FjdGl2YXRlICE9PSB0aGlzLmFjdGl2ZVRhYkluZGV4KSB7XG4gICAgICB0aGlzLl9sb2cudHJhY2UoJ0FjdGl2YXRpbmcgdGFiIGluZGV4ICcsIGluZGV4VG9BY3RpdmF0ZSk7XG4gICAgICB0aGlzLnNldFNlbGVjdGVkSW5kZXgoaW5kZXhUb0FjdGl2YXRlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVRhYkNoYW5nZUV2ZW50KHRhYkNoYW5nZUV2ZW50OiBNYXRUYWJDaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX2xvZy50cmFjZSgnSGFuZGxpbmcgdGFiQ2hhbmdlRXZlbnQ6ICcsIHRhYkNoYW5nZUV2ZW50KTtcbiAgICB0aGlzLmFjdGl2ZUVsZGVyVGFiID0gdGhpcy5maW5kRWxkZXJUYWJCeUluZGV4KHRhYkNoYW5nZUV2ZW50LmluZGV4KTtcbiAgICB0aGlzLnVwZGF0ZUZyYWdtZW50UGFyYW0oKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U2VsZWN0ZWRJbmRleChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWN0aXZlVGFiSW5kZXggIT09IGluZGV4KSB7XG4gICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBpbmRleDtcbiAgICAgIHRoaXMudXBkYXRlRnJhZ21lbnRQYXJhbSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmluZEVsZGVyVGFiQnlJZCh0YWJJZDogc3RyaW5nKTogRWxkZXJUYWJEaXJlY3RpdmUge1xuICAgIHJldHVybiB0aGlzLmVsZGVyVGFicy5maW5kKHQgPT4gdC5pZCA9PT0gdGFiSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kRWxkZXJUYWJCeUluZGV4KHRhYkluZGV4OiBudW1iZXIpOiBFbGRlclRhYkRpcmVjdGl2ZSB7XG4gICAgaWYgKHRoaXMuZWxkZXJUYWJzLmxlbmd0aCA+PSB0YWJJbmRleCkge1xuICAgICAgcmV0dXJuIHRoaXMuZWxkZXJUYWJzLmdldCh0YWJJbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRnJhZ21lbnRQYXJhbSgpOiB2b2lkIHtcblxuICAgIC8vIElmIHBvc3NpYmxlLCB1c2UgdGFiIElEIGFzIG1hcmtlci4gSWYgbm90LCB1c2UgdGFiIGluZGV4IGFzIGZhbGxiYWNrLlxuICAgIGNvbnN0IHRhYk1hcmtlciA9IHRoaXMuYWN0aXZlVGFiSWRcbiAgICAgID8gdGhpcy5hY3RpdmVUYWJJZFxuICAgICAgOiB0aGlzLnNlcmlhbGl6ZUluZGV4TWFya2VyKHRoaXMuYWN0aXZlVGFiSW5kZXgpO1xuXG4gICAgdGhpcy5zZXRGcmFnbWVudFBhcmFtKHRhYk1hcmtlcik7XG4gIH1cblxuICBwcml2YXRlIHNldEZyYWdtZW50UGFyYW0odmFsdWU6IHN0cmluZyk6IHZvaWQge1xuXG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5mcmFnbWVudFBhcmFtc1NlcnZpY2UucGFyYW1zO1xuICAgIHBhcmFtcy5zZXQodGhpcy50YWJHcm91cFF1ZXJ5UGFyYW1LZXksIHZhbHVlKTtcblxuICAgIHRoaXMuZnJhZ21lbnRQYXJhbXNTZXJ2aWNlLnNldFBhcmFtcyhwYXJhbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVGcmFnbWVudFBhcmFtKCk6IHZvaWQge1xuXG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5mcmFnbWVudFBhcmFtc1NlcnZpY2UucGFyYW1zO1xuICAgIHBhcmFtcy5yZW1vdmUodGhpcy50YWJHcm91cFF1ZXJ5UGFyYW1LZXkpO1xuXG4gICAgdGhpcy5mcmFnbWVudFBhcmFtc1NlcnZpY2Uuc2V0UGFyYW1zKHBhcmFtcyk7XG4gIH1cblxuICBwcml2YXRlIGdldFRhYk1hcmtlcihxdWVyeVBhcmFtczogVXJsUXVlcnlQYXJhbXMpOiBzdHJpbmcge1xuICAgIHJldHVybiBxdWVyeVBhcmFtcy5oYXModGhpcy50YWJHcm91cFF1ZXJ5UGFyYW1LZXkpXG4gICAgICA/IHF1ZXJ5UGFyYW1zLmdldCh0aGlzLnRhYkdyb3VwUXVlcnlQYXJhbUtleSlcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaXNJbmRleE1hcmtlcihtYXJrZXI6IHN0cmluZykge1xuICAgIHJldHVybiBtYXJrZXIgJiYgbWFya2VyLnN0YXJ0c1dpdGgoRWxkZXJUYWJHcm91cFJvdXRpbmdEaXJlY3RpdmUuVEFCX0lOREVYX1BSRUZJWCk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlSW5kZXhNYXJrZXIobWFya2VyOiBzdHJpbmcpOiBudW1iZXIge1xuXG4gICAgaWYgKHRoaXMuaXNJbmRleE1hcmtlcihtYXJrZXIpKSB7XG4gICAgICBjb25zdCBpbmRleFN0ciA9IG1hcmtlci5yZXBsYWNlKEVsZGVyVGFiR3JvdXBSb3V0aW5nRGlyZWN0aXZlLlRBQl9JTkRFWF9QUkVGSVgsICcnKTtcbiAgICAgIHJldHVybiBOdW1iZXIoaW5kZXhTdHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBwYXJzZSBpbmRleCBmcm9tIG1hcmtlciAgXCInICsgbWFya2VyICsgJ1wiLiBDaGVjayB3aXRoIGlzSW5kZXhNYXJrZXIgZmlyc3QhJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemVJbmRleE1hcmtlcihpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRWxkZXJUYWJHcm91cFJvdXRpbmdEaXJlY3RpdmUuVEFCX0lOREVYX1BSRUZJWCArIFN0cmluZyhpbmRleCk7XG4gIH1cbn1cbiJdfQ==
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItdGFiLWdyb3VwLXJvdXRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy90YWJzL2VsZGVyLXRhYi1ncm91cC1yb3V0aW5nL2VsZGVyLXRhYi1ncm91cC1yb3V0aW5nLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQVEsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUMsTUFBTSxFQUFpQyxNQUFNLHdCQUF3QixDQUFDO0FBQzlFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUduRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQzs7OztBQUUxRTs7Ozs7O0dBTUc7QUFLSCxNQUFNLE9BQU8sNkJBQTZCO0lBaUR4Qzs7OztnRkFJNEU7SUFFNUUsWUFDVSxxQkFBb0QsRUFDcEQsUUFBcUI7UUFEckIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUErQjtRQUNwRCxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBbEQvQjs7OztvRkFJNEU7UUFFM0QsU0FBSSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQTZDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUI7YUFDNUIsSUFBSSxDQUFDLFNBQVMs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QUFnQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RSxDQUFDOztBQXZTRDs7R0FFRztBQUNxQiw4Q0FBZ0IsR0FBRyxNQUFPLENBQUE7MEhBTHZDLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLHlLQWdDdkIsTUFBTSw0Q0FPTixpQkFBaUI7MkZBdkN2Qiw2QkFBNkI7a0JBSnpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsUUFBUSxFQUFFLHNCQUFzQjtpQkFDakM7OElBNEJRLHFCQUFxQjtzQkFEM0IsS0FBSzt1QkFBQyxzQkFBc0I7Z0JBT3RCLElBQUk7c0JBRFYsZUFBZTt1QkFBQyxNQUFNO2dCQVFoQixTQUFTO3NCQURmLGVBQWU7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb250ZW50Q2hpbGRyZW4sIERpcmVjdGl2ZSwgSW5wdXQsIE9uRGVzdHJveSwgUXVlcnlMaXN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Zmlyc3QsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7TWF0VGFiLCBNYXRUYWJDaGFuZ2VFdmVudCwgTWF0VGFiR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0VsZGVyVGFiRGlyZWN0aXZlfSBmcm9tICcuLi9lbGRlci10YWIvZWxkZXItdGFiLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0VsZGVyVXJsRnJhZ21lbnRQYXJhbXNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXJsL2VsZGVyLXVybC1mcmFnbWVudC1wYXJhbXMuc2VydmljZSc7XG5pbXBvcnQge1VybFF1ZXJ5UGFyYW1zfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXJsL3VybC1xdWVyeS1wYXJhbXMnO1xuaW1wb3J0IHtRdWVyeUxpc3RCaW5kaW5nfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbHMvcXVlcnktbGlzdC1iaW5kaW5nJztcblxuLyoqXG4gKiBBZGRzIG91dC1vZi10aGUtYm94IHVybC1mcmFnbWVudCBiYXNlZCB0YWIgbmF2aWdhdGlvblxuICogd2l0aGluIHRoZSBtYXQtdGFiLWdyb3VwIGl0IGlzIHBsYWNlZCB1cG9uLlxuICpcbiAqIEFkZCBlbGRlclRhYiBkaXJlY3RpdmUgdG8gZWFjaCB0YWIgb2YgdGhlIGdyb3VwIHRvXG4gKiBzdXBwb3J0IGlkLWJhc2VkIHRhYiBuYXZpZ2F0aW9uLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZWxkZXJUYWJHcm91cFJvdXRpbmddJyxcbiAgZXhwb3J0QXM6ICdlbGRlclRhYkdyb3VwUm91dGluZydcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJUYWJHcm91cFJvdXRpbmdEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBQcmVmaXggdXNlZCB0byBpbmRpY2F0ZSBhbmQgaW5kZXgtYmFzZWQgdGFiIG1hcmtlci5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBQl9JTkRFWF9QUkVGSVggPSAnaWR4Oic7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIC8qKlxuICAgKiBTdG9yZXMgdGhlIGxhc3QgdGFiIG1hcmtlciAoZWl0aGVyIElEIG9yIGluZGV4KVxuICAgKiB3aGljaCBjb3VsZCBub3QgYmUgYWN0aXZhdGVkLiBUaGlzIGlzIHVzZWQgdG8gcmV0cnlcbiAgICogYWN0aXZhdGlvbiBvbmNlIGNoYW5nZXMgb24gdGFiIHN0cnVjdHVyZSBvY2N1ci5cbiAgICovXG4gIHByaXZhdGUgbGFzdEZhaWxlZFRhYk1hcmtlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdHJpbmcgdG8gdXNlIGFzIHF1ZXJ5IHBhcmFtIGtleS5cbiAgICovXG4gIEBJbnB1dCgnZWxkZXJUYWJHcm91cFJvdXRpbmcnKVxuICBwdWJsaWMgdGFiR3JvdXBRdWVyeVBhcmFtS2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjaGlsZCB0YWJzIHdpdGhpbiB0aGlzIG5hdmlnYXRpb24gY29udGV4dC5cbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0VGFiKVxuICBwdWJsaWMgdGFiczogUXVlcnlMaXN0PE1hdFRhYj47XG5cbiAgLyoqXG4gICAqIFRoZSBjaGlsZCB0YWJzIHdpdGhpbiB0aGlzIG5hdmlnYXRpb24gY29udGV4dFxuICAgKiBtYXJrZWQgd2l0aCB0aGUgZWxkZXJUYWJzIGRpcmVjdGl2ZS5cbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oRWxkZXJUYWJEaXJlY3RpdmUpXG4gIHB1YmxpYyBlbGRlclRhYnM6IFF1ZXJ5TGlzdDxFbGRlclRhYkRpcmVjdGl2ZT47XG5cbiAgLyoqXG4gICAqIFRoZSB0YWIgbWFya2VkIHdpdGggZWxkZXJUYWIgZGlyZWN0aXZlIHdoaWNoXG4gICAqIGlzIGN1cnJlbnRseSBhY3RpdmUuIE1heSBiZSBudWxsIGlmXG4gICAqIGVsZGVyVGFiIG1hcmtlcnMgYXJlIG5vdCB1c2VkLlxuICAgKi9cbiAgcHVibGljIGFjdGl2ZUVsZGVyVGFiOiBFbGRlclRhYkRpcmVjdGl2ZTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZyYWdtZW50UGFyYW1zU2VydmljZTogRWxkZXJVcmxGcmFnbWVudFBhcmFtc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0YWJHcm91cDogTWF0VGFiR3JvdXBcbiAgKSB7XG4gICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZFRhYkNoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy5oYW5kbGVUYWJDaGFuZ2VFdmVudChldmVudCkpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZyYWdtZW50UGFyYW1zU2VydmljZS5wYXJhbXMkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShwYXJhbXMgPT4gdGhpcy5oYW5kbGVGcmFnbWVudFBhcmFtc0NoYW5nZShwYXJhbXMpKTtcblxuICAgIFF1ZXJ5TGlzdEJpbmRpbmdcbiAgICAgIC5vZih0aGlzLnRhYnMpXG4gICAgICAudXBkYXRlZCgoKSA9PiB0aGlzLnJldHJ5TGFzdEZhaWxlZEFjdGl2YXRpb24oKSlcbiAgICAgIC5iaW5kVW50aWwodGhpcy5fZGVzdHJveSQpO1xuXG4gICAgUXVlcnlMaXN0QmluZGluZ1xuICAgICAgLm9mKHRoaXMuZWxkZXJUYWJzKVxuICAgICAgLnVwZGF0ZWQoKCkgPT4gdGhpcy5yZXRyeUxhc3RGYWlsZWRBY3RpdmF0aW9uKCkpXG4gICAgICAuYmluZFVudGlsKHRoaXMuX2Rlc3Ryb3kkKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZUZyYWdtZW50UGFyYW0oKTtcblxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGdldCBhY3RpdmVUYWJJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUVsZGVyVGFiPy5pZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlVGFiSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4O1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBoYW5kbGVGcmFnbWVudFBhcmFtc0NoYW5nZShwYXJhbXM6IFVybFF1ZXJ5UGFyYW1zKTogdm9pZCB7XG4gICAgY29uc3QgdGFiTWFya2VyID0gdGhpcy5nZXRUYWJNYXJrZXIocGFyYW1zKTtcblxuICAgIGlmICh0YWJNYXJrZXIpIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVUYWJCeU1hcmtlcih0YWJNYXJrZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZhdGVUYWJCeU1hcmtlcih0YWJNYXJrZXI6IHN0cmluZyk6IHZvaWQge1xuXG4gICAgbGV0IHN1Y2Nlc3M6IGJvb2xlYW47XG4gICAgaWYgKHRoaXMuaXNJbmRleE1hcmtlcih0YWJNYXJrZXIpKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMucGFyc2VJbmRleE1hcmtlcih0YWJNYXJrZXIpO1xuICAgICAgc3VjY2VzcyA9IHRoaXMuYWN0aXZhdGVUYWJCeUluZGV4KGluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaWYgbm8gaW5kZXggaXMgZ2l2ZW4gd2UgYXNzdW1lIHRoZSBtYXJrZXIgaXMgdGhlIGlkIG9mIHRoZSB0YWIuXG4gICAgICBzdWNjZXNzID0gdGhpcy5hY3RpdmF0ZVRhYkJ5SWQodGFiTWFya2VyKTtcbiAgICB9XG5cbiAgICAvLyByZW1lbWJlciB0YWIgbWFya2VyIGluIGNhc2Ugb2YgZmFpbHVyZSB0byByZXRyeSBsYXRlci5cbiAgICB0aGlzLmxhc3RGYWlsZWRUYWJNYXJrZXIgPSBzdWNjZXNzID8gbnVsbCA6IHRhYk1hcmtlcjtcbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZhdGVUYWJCeUluZGV4KGluZGV4VG9BY3RpdmF0ZTogbnVtYmVyKTogYm9vbGVhbiB7XG5cbiAgICBpZiAoaW5kZXhUb0FjdGl2YXRlICE9PSB0aGlzLmFjdGl2ZVRhYkluZGV4KSB7XG4gICAgICB0aGlzLl9sb2cudHJhY2UoJ0FjdGl2YXRpbmcgdGFiIGJ5IGluZGV4ICcsIGluZGV4VG9BY3RpdmF0ZSk7XG5cbiAgICAgIC8vIEZpcnN0IHRyeSB0byBpZGVudGlmeSBjb3JyZXNwb25kaW5nIGVsZGVyIHRhYiwgc28gdGhhdCB3ZSBtYXkgd29yayB3aXRoIGl0cyBJRCBpbnN0ZWFkIG9mIGluZGV4LlxuICAgICAgY29uc3QgZWxkZXJUYWIgPSB0aGlzLmZpbmRFbGRlclRhYkJ5SW5kZXgoaW5kZXhUb0FjdGl2YXRlKTtcblxuICAgICAgaWYgKGVsZGVyVGFiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2YXRlRWxkZXJUYWIoZWxkZXJUYWIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgbm8gZWxkZXIgdGFiIGZvdW5kLCBjbGVhciBhY3RpdmUgZWxkZXIgdGFiIHRvIGVuc3VyZSBjb25zaXN0ZW50IHN0YXRlLlxuICAgICAgICB0aGlzLmFjdGl2ZUVsZGVyVGFiID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0U2VsZWN0ZWRJbmRleChpbmRleFRvQWN0aXZhdGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZhdGVUYWJCeUlkKHRhYklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbGRlclRhYiA9IHRoaXMuZmluZEVsZGVyVGFiQnlJZCh0YWJJZCk7XG5cbiAgICBpZiAoZWxkZXJUYWIpIHtcbiAgICAgIHJldHVybiB0aGlzLmFjdGl2YXRlRWxkZXJUYWIoZWxkZXJUYWIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiBubyBlbGRlciB0YWIgZm91bmQsIGNsZWFyIGFjdGl2ZSBlbGRlciB0YWIgdG8gZW5zdXJlIGNvbnNpc3RlbnQgc3RhdGUuXG4gICAgICB0aGlzLmFjdGl2ZUVsZGVyVGFiID0gbnVsbDtcbiAgICAgIHRoaXMuX2xvZy53YXJuKCdDb3VsZCBub3QgZmluZCB0YWIgd2l0aCBJRCBcIicgKyB0YWJJZCArICdcIi4gRW5zdXJlIGVsZGVyVGFiIGRpcmVjdGl2ZSBpcyBhZGRlZCB0byBjb3JyZXNwb25kaW5nIHRhYi4nKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFjdGl2YXRlRWxkZXJUYWIoZWxkZXJUYWI6IEVsZGVyVGFiRGlyZWN0aXZlKTogYm9vbGVhbiB7XG5cbiAgICBpZiAodGhpcy5hY3RpdmVFbGRlclRhYiAhPT0gZWxkZXJUYWIpIHtcbiAgICAgIHRoaXMuYWN0aXZlRWxkZXJUYWIgPSBlbGRlclRhYjtcbiAgICAgIGNvbnN0IGluZGV4VG9BY3RpdmF0ZSA9IHRoaXMuZ2V0SW5kZXhPZlRhYihlbGRlclRhYi50YWIpO1xuICAgICAgcmV0dXJuIHRoaXMuc2V0U2VsZWN0ZWRJbmRleChpbmRleFRvQWN0aXZhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVGFiQ2hhbmdlRXZlbnQodGFiQ2hhbmdlRXZlbnQ6IE1hdFRhYkNoYW5nZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5fbG9nLnRyYWNlKCdIYW5kbGluZyB0YWJDaGFuZ2VFdmVudDogJywgdGFiQ2hhbmdlRXZlbnQpO1xuICAgIHRoaXMubGFzdEZhaWxlZFRhYk1hcmtlciA9IG51bGw7XG4gICAgdGhpcy5hY3RpdmVFbGRlclRhYiA9IHRoaXMuZmluZEVsZGVyVGFiQnlUYWIodGFiQ2hhbmdlRXZlbnQudGFiKTtcbiAgICB0aGlzLnVwZGF0ZUZyYWdtZW50UGFyYW0oKTtcbiAgfVxuXG4gIHByaXZhdGUgcmV0cnlMYXN0RmFpbGVkQWN0aXZhdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sYXN0RmFpbGVkVGFiTWFya2VyKSB7XG4gICAgICB0aGlzLl9sb2cudHJhY2UoJ1JldHJ5aW5nIHRvIGFjdGl2YXRlIHRhYiBieSBtYXJrZXI6JywgdGhpcy5sYXN0RmFpbGVkVGFiTWFya2VyKTtcbiAgICAgIHRoaXMuYWN0aXZhdGVUYWJCeU1hcmtlcih0aGlzLmxhc3RGYWlsZWRUYWJNYXJrZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0U2VsZWN0ZWRJbmRleChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKGluZGV4ICE9PSB0aGlzLmFjdGl2ZVRhYkluZGV4KSB7XG5cbiAgICAgIGlmICh0aGlzLmlzVmFsaWRJbmRleChpbmRleCkpIHtcbiAgICAgICAgdGhpcy5fbG9nLnRyYWNlKCdBY3RpdmF0aW5nIHRhYiBieSBpbmRleCAnLCBpbmRleCk7XG4gICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IGluZGV4O1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2xvZy53YXJuKCdDb3VsZCBub3QgZmluZCB0YWIgd2l0aCBpbmRleCBcIicgKyBpbmRleCArICdcIi4nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWRJbmRleChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFicy5sZW5ndGggPiBpbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEVsZGVyVGFiQnlJZCh0YWJJZDogc3RyaW5nKTogRWxkZXJUYWJEaXJlY3RpdmUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5lbGRlclRhYnMuZmluZCh0ID0+IHQuaWQgPT09IHRhYklkKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEVsZGVyVGFiQnlJbmRleCh0YWJJbmRleDogbnVtYmVyKTogRWxkZXJUYWJEaXJlY3RpdmUgfCBudWxsIHtcbiAgICBjb25zdCB0YWIgPSB0aGlzLmZpbmRUYWJCeUluZGV4KHRhYkluZGV4KTtcbiAgICBpZiAodGFiKSB7XG4gICAgICByZXR1cm4gdGhpcy5maW5kRWxkZXJUYWJCeVRhYih0YWIpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbmRFbGRlclRhYkJ5VGFiKHRhYjogTWF0VGFiKTogRWxkZXJUYWJEaXJlY3RpdmUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5lbGRlclRhYnMuZmluZChlbGRlclRhYiA9PiBlbGRlclRhYi50YWIgPT09IHRhYik7XG4gIH1cblxuICBwcml2YXRlIGZpbmRUYWJCeUluZGV4KHRhYkluZGV4OiBudW1iZXIpOiBNYXRUYWIgfCBudWxsIHtcbiAgICBpZiAodGhpcy50YWJzLmxlbmd0aCA+IHRhYkluZGV4KSB7XG4gICAgICByZXR1cm4gdGhpcy50YWJzLmdldCh0YWJJbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5kZXhPZlRhYih0YWI6IE1hdFRhYik6IG51bWJlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnRhYnMudG9BcnJheSgpLmluZGV4T2YodGFiKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRnJhZ21lbnRQYXJhbSgpOiB2b2lkIHtcblxuICAgIGNvbnN0IGN1cnJlbnRUYWJNYXJrZXIgPSB0aGlzLmdldFRhYk1hcmtlcih0aGlzLmZyYWdtZW50UGFyYW1zU2VydmljZS5wYXJhbXMpO1xuXG4gICAgLy8gSWYgcG9zc2libGUsIHVzZSB0YWIgSUQgYXMgbWFya2VyLiBJZiBub3QsIHVzZSB0YWIgaW5kZXggYXMgZmFsbGJhY2suXG4gICAgY29uc3QgbmV3VGFiTWFya2VyID0gdGhpcy5hY3RpdmVUYWJJZFxuICAgICAgPyB0aGlzLmFjdGl2ZVRhYklkXG4gICAgICA6IHRoaXMuc2VyaWFsaXplSW5kZXhNYXJrZXIodGhpcy5hY3RpdmVUYWJJbmRleCk7XG5cbiAgICBpZiAobmV3VGFiTWFya2VyICE9PSBjdXJyZW50VGFiTWFya2VyKSB7XG4gICAgICB0aGlzLnNldEZyYWdtZW50UGFyYW0obmV3VGFiTWFya2VyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEZyYWdtZW50UGFyYW0odmFsdWU6IHN0cmluZyk6IHZvaWQge1xuXG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5mcmFnbWVudFBhcmFtc1NlcnZpY2UucGFyYW1zO1xuICAgIHBhcmFtcy5zZXQodGhpcy50YWJHcm91cFF1ZXJ5UGFyYW1LZXksIHZhbHVlKTtcblxuICAgIHRoaXMuZnJhZ21lbnRQYXJhbXNTZXJ2aWNlLnNldFBhcmFtcyhwYXJhbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVGcmFnbWVudFBhcmFtKCk6IHZvaWQge1xuXG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5mcmFnbWVudFBhcmFtc1NlcnZpY2UucGFyYW1zO1xuICAgIHBhcmFtcy5yZW1vdmUodGhpcy50YWJHcm91cFF1ZXJ5UGFyYW1LZXkpO1xuXG4gICAgdGhpcy5mcmFnbWVudFBhcmFtc1NlcnZpY2Uuc2V0UGFyYW1zKHBhcmFtcyk7XG4gIH1cblxuICBwcml2YXRlIGdldFRhYk1hcmtlcihxdWVyeVBhcmFtczogVXJsUXVlcnlQYXJhbXMpOiBzdHJpbmcge1xuICAgIHJldHVybiBxdWVyeVBhcmFtcy5oYXModGhpcy50YWJHcm91cFF1ZXJ5UGFyYW1LZXkpXG4gICAgICA/IHF1ZXJ5UGFyYW1zLmdldCh0aGlzLnRhYkdyb3VwUXVlcnlQYXJhbUtleSlcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaXNJbmRleE1hcmtlcihtYXJrZXI6IHN0cmluZykge1xuICAgIHJldHVybiBtYXJrZXIgJiYgbWFya2VyLnN0YXJ0c1dpdGgoRWxkZXJUYWJHcm91cFJvdXRpbmdEaXJlY3RpdmUuVEFCX0lOREVYX1BSRUZJWCk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlSW5kZXhNYXJrZXIobWFya2VyOiBzdHJpbmcpOiBudW1iZXIge1xuXG4gICAgaWYgKHRoaXMuaXNJbmRleE1hcmtlcihtYXJrZXIpKSB7XG4gICAgICBjb25zdCBpbmRleFN0ciA9IG1hcmtlci5yZXBsYWNlKEVsZGVyVGFiR3JvdXBSb3V0aW5nRGlyZWN0aXZlLlRBQl9JTkRFWF9QUkVGSVgsICcnKTtcbiAgICAgIHJldHVybiBOdW1iZXIoaW5kZXhTdHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBwYXJzZSBpbmRleCBmcm9tIG1hcmtlciAgXCInICsgbWFya2VyICsgJ1wiLiBDaGVjayB3aXRoIGlzSW5kZXhNYXJrZXIgZmlyc3QhJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemVJbmRleE1hcmtlcihpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRWxkZXJUYWJHcm91cFJvdXRpbmdEaXJlY3RpdmUuVEFCX0lOREVYX1BSRUZJWCArIFN0cmluZyhpbmRleCk7XG4gIH1cbn1cbiJdfQ==
@@ -9,16 +9,16 @@ export * from './elder-tab/elder-tab.directive';
9
9
  export * from './elder-tab-group-routing/elder-tab-group-routing.directive';
10
10
  export class ElderTabModule {
11
11
  }
12
- ElderTabModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderTabModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
- ElderTabModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderTabModule, declarations: [ElderTabDirective,
12
+ ElderTabModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderTabModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
+ ElderTabModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderTabModule, declarations: [ElderTabDirective,
14
14
  ElderTabGroupRoutingDirective], imports: [CommonModule, MatCommonModule,
15
15
  FlexLayoutModule], exports: [ElderTabDirective,
16
16
  ElderTabGroupRoutingDirective] });
17
- ElderTabModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderTabModule, imports: [[
17
+ ElderTabModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderTabModule, imports: [[
18
18
  CommonModule, MatCommonModule,
19
19
  FlexLayoutModule
20
20
  ]] });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ElderTabModule, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ElderTabModule, decorators: [{
22
22
  type: NgModule,
23
23
  args: [{
24
24
  imports: [
@@ -15,9 +15,9 @@ export class CustomDateAdapter extends NativeDateAdapter {
15
15
  return 1;
16
16
  }
17
17
  }
18
- CustomDateAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: CustomDateAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
19
- CustomDateAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: CustomDateAdapter });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: CustomDateAdapter, decorators: [{
18
+ CustomDateAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: CustomDateAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
19
+ CustomDateAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: CustomDateAdapter });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: CustomDateAdapter, decorators: [{
21
21
  type: Injectable
22
22
  }] });
23
23
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRhdGUtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9kYXRlLWFkYXB0ZXJzL2N1c3RvbS1kYXRlLWFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0ZBQXdGO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDOztBQUVuRDs7R0FFRztBQUVILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxpQkFBaUI7SUFEeEQ7O1FBR21CLFdBQU0sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7S0FzQjFFO0lBcEJDLGlCQUFpQjtRQUNmLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7OEdBTlUsaUJBQWlCO2tIQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBBZGFwdHMgdGhlIG5hdGl2ZSBKUyBEYXRlIGZvciB1c2Ugd2l0aCBjZGstYmFzZWQgY29tcG9uZW50cyB0aGF0IHdvcmsgd2l0aCBkYXRlcy4gKi9cbmltcG9ydCB7IE5hdGl2ZURhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcblxuLyoqXG4gKiBNYWtlcyB3ZWVrIHN0YXJ0aW5nIGF0IG1vbmRheS4gRm9yIGV4YW1wbGUgTWF0RGF0ZVBpY2tlci5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEN1c3RvbURhdGVBZGFwdGVyIGV4dGVuZHMgTmF0aXZlRGF0ZUFkYXB0ZXIge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBnZXRGaXJzdERheU9mV2VlaygpOiBudW1iZXIge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgLypcbiAgcGFyc2UodmFsdWU6IGFueSk6IERhdGUgfCBudWxsIHtcblxuICAgIGlmICh2YWx1ZSkge1xuXG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIGRhdGUgJyArIHZhbHVlLCBlcnIpO1xuICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSovXG5cbn1cbiJdfQ==