@elderbyte/ngx-starter 18.11.0 → 18.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (621) hide show
  1. package/_index.scss +38 -33
  2. package/esm2022/lib/common/arrays.mjs +1 -1
  3. package/esm2022/lib/common/async/public_api.mjs +1 -1
  4. package/esm2022/lib/common/async/refreshing-entity.mjs +5 -3
  5. package/esm2022/lib/common/csv/csv-serializer.mjs +5 -5
  6. package/esm2022/lib/common/csv/csv-spec.mjs +2 -2
  7. package/esm2022/lib/common/csv/public_api.mjs +1 -1
  8. package/esm2022/lib/common/data/continuable-listing.mjs +1 -1
  9. package/esm2022/lib/common/data/data-context/data-context-active-page.mjs +5 -4
  10. package/esm2022/lib/common/data/data-context/data-context-auto-starter.mjs +7 -5
  11. package/esm2022/lib/common/data/data-context/data-context-base.mjs +19 -12
  12. package/esm2022/lib/common/data/data-context/data-context-builder.mjs +5 -7
  13. package/esm2022/lib/common/data/data-context/data-context-continuable-base.mjs +5 -7
  14. package/esm2022/lib/common/data/data-context/data-context-continuable-paged.mjs +2 -2
  15. package/esm2022/lib/common/data/data-context/data-context-continuable-token.mjs +17 -7
  16. package/esm2022/lib/common/data/data-context/data-context-life-cycle-binding.mjs +2 -2
  17. package/esm2022/lib/common/data/data-context/data-context-simple.mjs +5 -4
  18. package/esm2022/lib/common/data/data-context/data-context-source-event-binding.mjs +2 -2
  19. package/esm2022/lib/common/data/data-context/data-context-status.mjs +1 -1
  20. package/esm2022/lib/common/data/data-context/data-context.mjs +5 -5
  21. package/esm2022/lib/common/data/data-context/indexed-entities.mjs +2 -2
  22. package/esm2022/lib/common/data/data-context/mat-table-data-context-binding.mjs +14 -8
  23. package/esm2022/lib/common/data/data-context/public_api.mjs +1 -1
  24. package/esm2022/lib/common/data/datasource/data-source-adapter.mjs +9 -5
  25. package/esm2022/lib/common/data/datasource/data-source-base.mjs +1 -1
  26. package/esm2022/lib/common/data/datasource/data-source-change-event.mjs +1 -1
  27. package/esm2022/lib/common/data/datasource/data-source-processor.mjs +14 -15
  28. package/esm2022/lib/common/data/datasource/data-source.mjs +4 -4
  29. package/esm2022/lib/common/data/datasource/entity-id-util.mjs +2 -2
  30. package/esm2022/lib/common/data/datasource/fetcher/delegate-data-source.mjs +2 -2
  31. package/esm2022/lib/common/data/datasource/local/local-list-data-source.mjs +9 -11
  32. package/esm2022/lib/common/data/datasource/local/local-paged-data-source.mjs +4 -2
  33. package/esm2022/lib/common/data/datasource/public_api.mjs +1 -1
  34. package/esm2022/lib/common/data/datasource/rest/public_api.mjs +1 -1
  35. package/esm2022/lib/common/data/datasource/rest/rest-client.mjs +44 -39
  36. package/esm2022/lib/common/data/entity-set-patch.mjs +6 -9
  37. package/esm2022/lib/common/data/field-comparator.mjs +2 -2
  38. package/esm2022/lib/common/data/filters/filter-commons.mjs +1 -1
  39. package/esm2022/lib/common/data/filters/filter-context.mjs +9 -9
  40. package/esm2022/lib/common/data/filters/filter-value.mjs +1 -1
  41. package/esm2022/lib/common/data/filters/filter.mjs +2 -2
  42. package/esm2022/lib/common/data/http-params-builder.mjs +5 -7
  43. package/esm2022/lib/common/data/page.mjs +1 -1
  44. package/esm2022/lib/common/data/public_api.mjs +1 -1
  45. package/esm2022/lib/common/data/required-filter-evaluator.mjs +7 -10
  46. package/esm2022/lib/common/data/sort-context.mjs +4 -6
  47. package/esm2022/lib/common/data/sort.mjs +1 -1
  48. package/esm2022/lib/common/data/token-chunk-request.mjs +1 -1
  49. package/esm2022/lib/common/enums/elder-enum-translation.service.mjs +9 -9
  50. package/esm2022/lib/common/enums/public_api.mjs +1 -1
  51. package/esm2022/lib/common/errors/exception-detail.mjs +1 -1
  52. package/esm2022/lib/common/errors/public_api.mjs +1 -1
  53. package/esm2022/lib/common/errors/standard-error-detail.mjs +1 -1
  54. package/esm2022/lib/common/format/bytes-format.mjs +2 -9
  55. package/esm2022/lib/common/format/bytes-per-second-format.mjs +1 -1
  56. package/esm2022/lib/common/format/curency-format-util.mjs +1 -1
  57. package/esm2022/lib/common/format/duration-format-util.mjs +1 -1
  58. package/esm2022/lib/common/format/iso-interval-format-util.mjs +6 -4
  59. package/esm2022/lib/common/format/public_api.mjs +1 -1
  60. package/esm2022/lib/common/forms/elder-entity-value-accessor.mjs +7 -7
  61. package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +7 -7
  62. package/esm2022/lib/common/forms/elder-from-field-base.mjs +3 -3
  63. package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +1 -1
  64. package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +5 -5
  65. package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +7 -7
  66. package/esm2022/lib/common/forms/elder-multi-entity-value-accessor.mjs +7 -7
  67. package/esm2022/lib/common/forms/form-field-base.component.mjs +3 -4
  68. package/esm2022/lib/common/forms/multi-model-base.component.mjs +2 -2
  69. package/esm2022/lib/common/forms/public_api.mjs +1 -1
  70. package/esm2022/lib/common/forms/template-composite-control.mjs +17 -13
  71. package/esm2022/lib/common/forms/value-accessor-base.mjs +3 -3
  72. package/esm2022/lib/common/forms/view-providers.mjs +1 -1
  73. package/esm2022/lib/common/http/http-client-builder.service.mjs +2 -2
  74. package/esm2022/lib/common/http/http-client-pristine.mjs +2 -2
  75. package/esm2022/lib/common/http/public_api.mjs +1 -1
  76. package/esm2022/lib/common/http/transfer/data-transfer-base.mjs +2 -2
  77. package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +4 -4
  78. package/esm2022/lib/common/http/transfer/data-transfer-progress-aggregate.mjs +6 -5
  79. package/esm2022/lib/common/http/transfer/data-transfer-progress.mjs +1 -1
  80. package/esm2022/lib/common/http/transfer/data-transfer-state.mjs +1 -1
  81. package/esm2022/lib/common/http/transfer/data-transfer-status.mjs +1 -1
  82. package/esm2022/lib/common/http/transfer/data-transfer.mjs +1 -1
  83. package/esm2022/lib/common/http/transfer/http-data-transfer.mjs +9 -9
  84. package/esm2022/lib/common/http/transfer/public_api.mjs +1 -1
  85. package/esm2022/lib/common/http/upload/file-upload-client.mjs +2 -2
  86. package/esm2022/lib/common/i18n/entity/impl/i18n-base.mjs +1 -1
  87. package/esm2022/lib/common/i18n/entity/impl/i18n-text.mjs +1 -1
  88. package/esm2022/lib/common/i18n/entity/impl/translated.mjs +1 -1
  89. package/esm2022/lib/common/i18n/entity/language-tag.mjs +1 -1
  90. package/esm2022/lib/common/i18n/entity/locale.mjs +1 -1
  91. package/esm2022/lib/common/i18n/entity/localisation-picker.mjs +4 -4
  92. package/esm2022/lib/common/i18n/entity/localized.mjs +1 -1
  93. package/esm2022/lib/common/i18n/entity/public_api.mjs +1 -1
  94. package/esm2022/lib/common/i18n/entity/translated-converter.mjs +4 -4
  95. package/esm2022/lib/common/i18n/entity/translated.mjs +1 -1
  96. package/esm2022/lib/common/i18n/public_api.mjs +1 -1
  97. package/esm2022/lib/common/json-map.mjs +3 -4
  98. package/esm2022/lib/common/objects.mjs +1 -1
  99. package/esm2022/lib/common/public_api.mjs +1 -1
  100. package/esm2022/lib/common/reactive-map.mjs +5 -5
  101. package/esm2022/lib/common/rxjs/operators/lazy-sample.mjs +2 -2
  102. package/esm2022/lib/common/rxjs/public_api.mjs +1 -1
  103. package/esm2022/lib/common/selection/public_api.mjs +1 -1
  104. package/esm2022/lib/common/selection/selection-model.mjs +8 -8
  105. package/esm2022/lib/common/sets.mjs +3 -2
  106. package/esm2022/lib/common/suggestion-provider.mjs +1 -1
  107. package/esm2022/lib/common/templates/template-slot-manager.mjs +2 -2
  108. package/esm2022/lib/common/theme-sizes.mjs +1 -1
  109. package/esm2022/lib/common/time/date-util.mjs +8 -10
  110. package/esm2022/lib/common/time/interval-coerce.mjs +3 -3
  111. package/esm2022/lib/common/time/interval.mjs +19 -16
  112. package/esm2022/lib/common/time/period-duration.mjs +1 -1
  113. package/esm2022/lib/common/time/public_api.mjs +1 -1
  114. package/esm2022/lib/common/time/temporal-plain-date-interval.mjs +1 -1
  115. package/esm2022/lib/common/time/temporal-util.mjs +1 -1
  116. package/esm2022/lib/common/time/time-util.mjs +3 -6
  117. package/esm2022/lib/common/url/elder-router.service.mjs +2 -2
  118. package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +4 -6
  119. package/esm2022/lib/common/url/public_api.mjs +1 -1
  120. package/esm2022/lib/common/url/url-query-params.mjs +2 -2
  121. package/esm2022/lib/common/utils/batcher.mjs +2 -2
  122. package/esm2022/lib/common/utils/collection-util.mjs +7 -5
  123. package/esm2022/lib/common/utils/filter-util.mjs +10 -8
  124. package/esm2022/lib/common/utils/focus-util.mjs +1 -1
  125. package/esm2022/lib/common/utils/input-utils.mjs +1 -1
  126. package/esm2022/lib/common/utils/next-number-util.mjs +4 -3
  127. package/esm2022/lib/common/utils/ng-zone-utils.mjs +2 -2
  128. package/esm2022/lib/common/utils/parse-util.mjs +1 -1
  129. package/esm2022/lib/common/utils/property-path-util.mjs +2 -2
  130. package/esm2022/lib/common/utils/public_api.mjs +1 -1
  131. package/esm2022/lib/common/utils/query-list-binding.mjs +5 -4
  132. package/esm2022/lib/common/utils/sort-util.mjs +2 -2
  133. package/esm2022/lib/common/utils/url-builder.mjs +1 -1
  134. package/esm2022/lib/common/utils/uuid-util.mjs +3 -4
  135. package/esm2022/lib/common/utils/value-wrapper.mjs +1 -1
  136. package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +4 -5
  137. package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +5 -15
  138. package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +16 -6
  139. package/esm2022/lib/components/auditing/elder-audit.module.mjs +4 -6
  140. package/esm2022/lib/components/auditing/i-audited-entity.mjs +1 -1
  141. package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +18 -12
  142. package/esm2022/lib/components/badge/elder-badge.directive.mjs +7 -7
  143. package/esm2022/lib/components/badge/elder-badge.module.mjs +4 -4
  144. package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +3 -5
  145. package/esm2022/lib/components/button-group/elder-button-group.module.mjs +5 -20
  146. package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +4 -5
  147. package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +2 -2
  148. package/esm2022/lib/components/card-organizer/card-organizer-data.mjs +7 -7
  149. package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +24 -12
  150. package/esm2022/lib/components/card-organizer/card-stack.mjs +3 -3
  151. package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +18 -7
  152. package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +3 -3
  153. package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +9 -9
  154. package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +16 -10
  155. package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +3 -3
  156. package/esm2022/lib/components/chips/elder-chips.module.mjs +3 -5
  157. package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +9 -8
  158. package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +10 -12
  159. package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +3 -3
  160. package/esm2022/lib/components/connectivity/public_api.mjs +1 -1
  161. package/esm2022/lib/components/containers/elder-containers.module.mjs +4 -10
  162. package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +4 -4
  163. package/esm2022/lib/components/containers/public_api.mjs +1 -1
  164. package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +6 -6
  165. package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.mjs +2 -4
  166. package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +2 -2
  167. package/esm2022/lib/components/csv/elder-csv-stream-exporter.mjs +12 -12
  168. package/esm2022/lib/components/csv/elder-csv.module.mjs +6 -19
  169. package/esm2022/lib/components/currency/elder-currency.module.mjs +6 -18
  170. package/esm2022/lib/components/currency/elder-currency.pipe.mjs +2 -2
  171. package/esm2022/lib/components/currency/model/currency-code.mjs +1 -1
  172. package/esm2022/lib/components/currency/model/currency-unit-registry.mjs +1 -1
  173. package/esm2022/lib/components/currency/model/currency-unit.mjs +1 -1
  174. package/esm2022/lib/components/currency/model/currency.mjs +1 -1
  175. package/esm2022/lib/components/currency/public_api.mjs +1 -1
  176. package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +28 -16
  177. package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +12 -10
  178. package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +23 -12
  179. package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +3 -3
  180. package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +13 -3
  181. package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +11 -3
  182. package/esm2022/lib/components/data-view/base/data-view-options-provider-binding.mjs +4 -2
  183. package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +4 -5
  184. package/esm2022/lib/components/data-view/base/elder-data-view-options-provider.mjs +1 -1
  185. package/esm2022/lib/components/data-view/base/elder-data-view-options.mjs +1 -1
  186. package/esm2022/lib/components/data-view/base/elder-data-view.mjs +1 -1
  187. package/esm2022/lib/components/data-view/base/public_api.mjs +1 -1
  188. package/esm2022/lib/components/data-view/common/composite-sort/composite-sort-context.mjs +2 -2
  189. package/esm2022/lib/components/data-view/common/composite-sort/composite-sort-dc.directive.mjs +5 -7
  190. package/esm2022/lib/components/data-view/common/composite-sort/composite-sort.mjs +4 -5
  191. package/esm2022/lib/components/data-view/common/composite-sort/elder-composite-sort/elder-composite-sort.component.mjs +6 -6
  192. package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +4 -5
  193. package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +38 -20
  194. package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +5 -13
  195. package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +16 -6
  196. package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +6 -4
  197. package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +4 -5
  198. package/esm2022/lib/components/data-view/common/selection/master-selection-state.mjs +1 -1
  199. package/esm2022/lib/components/data-view/elder-data-view-interaction-mode.mjs +1 -1
  200. package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +46 -26
  201. package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +30 -21
  202. package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +15 -9
  203. package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +5 -7
  204. package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +8 -6
  205. package/esm2022/lib/components/data-view/master-detail/elder-master-detail-provider.mjs +2 -2
  206. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +19 -25
  207. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +4 -4
  208. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +5 -4
  209. package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +2 -2
  210. package/esm2022/lib/components/data-view/master-detail/master-detail-activation-event.mjs +1 -1
  211. package/esm2022/lib/components/data-view/public_api.mjs +1 -1
  212. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +4 -5
  213. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +41 -16
  214. package/esm2022/lib/components/data-view/table/activation/activation-event-source.mjs +1 -1
  215. package/esm2022/lib/components/data-view/table/activation/elder-activation-context.mjs +1 -1
  216. package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +6 -6
  217. package/esm2022/lib/components/data-view/table/activation/elder-table-activation-options.mjs +1 -1
  218. package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +23 -15
  219. package/esm2022/lib/components/data-view/table/activation/item-activation-event.mjs +1 -1
  220. package/esm2022/lib/components/data-view/table/activation/item-activation-options.mjs +1 -1
  221. package/esm2022/lib/components/data-view/table/activation/public_api.mjs +1 -1
  222. package/esm2022/lib/components/data-view/table/elder-center-cell.directive.mjs +4 -5
  223. package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +3 -3
  224. package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +8 -7
  225. package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +2 -2
  226. package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +54 -38
  227. package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +2 -2
  228. package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +6 -11
  229. package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +4 -8
  230. package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +8 -6
  231. package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +2 -2
  232. package/esm2022/lib/components/data-view/table/elder-table.module.mjs +57 -25
  233. package/esm2022/lib/components/data-view/table/model/elder-column-layout.mjs +7 -7
  234. package/esm2022/lib/components/data-view/table/model/elder-table-model-cdk-table-binding.mjs +15 -11
  235. package/esm2022/lib/components/data-view/table/model/elder-table-model-provider.mjs +4 -4
  236. package/esm2022/lib/components/data-view/table/model/elder-table-model-query-group.mjs +11 -9
  237. package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +7 -5
  238. package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +13 -3
  239. package/esm2022/lib/components/dialogs/elder-dialog-config.mjs +1 -1
  240. package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +34 -13
  241. package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +19 -22
  242. package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +17 -5
  243. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +4 -5
  244. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +5 -5
  245. package/esm2022/lib/components/errors/elder-error.module.mjs +4 -6
  246. package/esm2022/lib/components/errors/error-util.mjs +4 -4
  247. package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +17 -6
  248. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +3 -3
  249. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +15 -8
  250. package/esm2022/lib/components/files/blob-url.mjs +1 -1
  251. package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +16 -11
  252. package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +3 -3
  253. package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +4 -4
  254. package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +7 -7
  255. package/esm2022/lib/components/files/elder-file-select-input.mjs +3 -3
  256. package/esm2022/lib/components/files/elder-file-select.directive.mjs +14 -16
  257. package/esm2022/lib/components/files/elder-file.module.mjs +16 -10
  258. package/esm2022/lib/components/files/file-select/file-select.component.mjs +5 -6
  259. package/esm2022/lib/components/files/file-system-api.mjs +2 -2
  260. package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +16 -3
  261. package/esm2022/lib/components/files/listing/file-entry.mjs +3 -3
  262. package/esm2022/lib/components/files/listing/file-listing-rx.mjs +5 -5
  263. package/esm2022/lib/components/files/listing/file-listing-system-handle.mjs +3 -3
  264. package/esm2022/lib/components/files/listing/file-listing-webkit.mjs +10 -11
  265. package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +2 -2
  266. package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +1 -1
  267. package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +5 -3
  268. package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +2 -2
  269. package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +1 -1
  270. package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +2 -2
  271. package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +2 -2
  272. package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +2 -2
  273. package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +13 -6
  274. package/esm2022/lib/components/forms/directives/elder-initial-value.directive.mjs +5 -5
  275. package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +2 -2
  276. package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +2 -2
  277. package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +3 -3
  278. package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +6 -6
  279. package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +2 -2
  280. package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +13 -10
  281. package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +2 -2
  282. package/esm2022/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +4 -4
  283. package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +5 -3
  284. package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +2 -2
  285. package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +2 -2
  286. package/esm2022/lib/components/forms/directives/validation/strategies/fallback-validation-message-strategy.mjs +1 -1
  287. package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +4 -6
  288. package/esm2022/lib/components/forms/directives/validation/validation-message-strategy.mjs +1 -1
  289. package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +4 -9
  290. package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +4 -9
  291. package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +12 -11
  292. package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +4 -4
  293. package/esm2022/lib/components/forms/elder-forms.module.mjs +1 -1
  294. package/esm2022/lib/components/forms/public_api.mjs +1 -1
  295. package/esm2022/lib/components/forms/search/domain/context/search-context.mjs +7 -3
  296. package/esm2022/lib/components/forms/search/domain/context/search-context.service.mjs +2 -2
  297. package/esm2022/lib/components/forms/search/domain/input/input-value.mjs +1 -1
  298. package/esm2022/lib/components/forms/search/domain/input/search-input-state.mjs +2 -2
  299. package/esm2022/lib/components/forms/search/domain/input/search-input.mjs +1 -1
  300. package/esm2022/lib/components/forms/search/domain/input/simple-search-input.mjs +1 -1
  301. package/esm2022/lib/components/forms/search/domain/url/elder-search-url.directive.mjs +14 -8
  302. package/esm2022/lib/components/forms/search/domain/url/elder-search-url.service.mjs +15 -12
  303. package/esm2022/lib/components/forms/search/domain/url/search-query-params-parser.mjs +3 -3
  304. package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +30 -25
  305. package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +14 -19
  306. package/esm2022/lib/components/forms/search/elder-search.module.mjs +24 -13
  307. package/esm2022/lib/components/forms/search/filter/default-input-filter-converter.mjs +2 -4
  308. package/esm2022/lib/components/forms/search/filter/input-filter-converter.mjs +1 -1
  309. package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +27 -8
  310. package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +4 -4
  311. package/esm2022/lib/components/global-search/elder-global-search.component.mjs +19 -10
  312. package/esm2022/lib/components/global-search/elder-global-search.module.mjs +24 -6
  313. package/esm2022/lib/components/global-search/elder-global-search.service.mjs +8 -6
  314. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +6 -6
  315. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +4 -10
  316. package/esm2022/lib/components/graph/elder-progress-bar/sub-bar.mjs +1 -1
  317. package/esm2022/lib/components/graph/public_api.mjs +1 -1
  318. package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +3 -3
  319. package/esm2022/lib/components/headers/elder-header.module.mjs +12 -14
  320. package/esm2022/lib/components/http-support/elder-http-client.service.mjs +4 -9
  321. package/esm2022/lib/components/http-support/public_api.mjs +1 -1
  322. package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +3 -3
  323. package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +31 -20
  324. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +14 -5
  325. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +4 -4
  326. package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +42 -19
  327. package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +2 -2
  328. package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +4 -5
  329. package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +3 -3
  330. package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +2 -2
  331. package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +6 -6
  332. package/esm2022/lib/components/i18n/language/elder-language-config.mjs +1 -1
  333. package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +8 -7
  334. package/esm2022/lib/components/i18n/language/elder-language.module.mjs +11 -10
  335. package/esm2022/lib/components/i18n/language/elder-language.service.mjs +3 -4
  336. package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +17 -5
  337. package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +7 -7
  338. package/esm2022/lib/components/i18n/public_api.mjs +1 -1
  339. package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +13 -13
  340. package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +13 -11
  341. package/esm2022/lib/components/iframes/elder-iframe.module.mjs +4 -4
  342. package/esm2022/lib/components/iframes/iframe-close.directive.mjs +2 -3
  343. package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +3 -3
  344. package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +12 -4
  345. package/esm2022/lib/components/iframes/iframe-messages.mjs +1 -1
  346. package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +11 -9
  347. package/esm2022/lib/components/iframes/iframe.service.mjs +7 -5
  348. package/esm2022/lib/components/iframes/typed-event-message.mjs +1 -1
  349. package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +10 -6
  350. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +12 -7
  351. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +4 -10
  352. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.mjs +1 -1
  353. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-suggestion-panel.component.mjs +26 -17
  354. package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +11 -7
  355. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +8 -6
  356. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +9 -6
  357. package/esm2022/lib/components/input/autocomplete/many/word-position-finder.mjs +1 -1
  358. package/esm2022/lib/components/input/public_api.mjs +1 -1
  359. package/esm2022/lib/components/labels/elder-labels.module.mjs +26 -8
  360. package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +28 -11
  361. package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +22 -21
  362. package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +4 -4
  363. package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +2 -2
  364. package/esm2022/lib/components/measures/elder-measures.module.mjs +7 -19
  365. package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +2 -2
  366. package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +2 -2
  367. package/esm2022/lib/components/measures/elder-unit.service.mjs +4 -6
  368. package/esm2022/lib/components/measures/model/dimensions.mjs +1 -1
  369. package/esm2022/lib/components/measures/model/quantity.mjs +1 -1
  370. package/esm2022/lib/components/measures/model/unit-dimension.mjs +1 -1
  371. package/esm2022/lib/components/measures/model/unit-registry.mjs +1 -1
  372. package/esm2022/lib/components/measures/model/unit.mjs +1 -1
  373. package/esm2022/lib/components/measures/public_api.mjs +1 -1
  374. package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +13 -3
  375. package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +18 -16
  376. package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +4 -8
  377. package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +4 -8
  378. package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +15 -10
  379. package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +26 -6
  380. package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +12 -8
  381. package/esm2022/lib/components/navigation/bread-crumbs/path/path.mjs +1 -1
  382. package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +26 -20
  383. package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +15 -21
  384. package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +20 -7
  385. package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +3 -3
  386. package/esm2022/lib/components/navigation/public_api.mjs +1 -1
  387. package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +2 -2
  388. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +26 -20
  389. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +2 -2
  390. package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +12 -7
  391. package/esm2022/lib/components/navigation/toolbar/toolbar-column-position.mjs +1 -1
  392. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +4 -5
  393. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +5 -4
  394. package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +2 -2
  395. package/esm2022/lib/components/overlays/elder-overlay-ref.mjs +1 -1
  396. package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +3 -3
  397. package/esm2022/lib/components/overlays/elder-overlay.component.mjs +23 -14
  398. package/esm2022/lib/components/overlays/elder-overlay.module.mjs +4 -10
  399. package/esm2022/lib/components/page/exit-guard/page-exit-guard.module.mjs +5 -12
  400. package/esm2022/lib/components/page/exit-guard/page-exit-guard.service.mjs +6 -6
  401. package/esm2022/lib/components/page/exit-guard/page-exit-lock/page-exit-lock.component.mjs +3 -5
  402. package/esm2022/lib/components/page/exit-guard/page-exit-lock-indicator/page-exit-lock-indicator.component.mjs +3 -8
  403. package/esm2022/lib/components/page/exit-guard/page-exit-lock-overview/page-exit-lock-overview.component.mjs +3 -7
  404. package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +3 -3
  405. package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +3 -3
  406. package/esm2022/lib/components/panels/elder-panel.module.mjs +10 -7
  407. package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +4 -4
  408. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +2 -2
  409. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +6 -6
  410. package/esm2022/lib/components/public_api.mjs +1 -1
  411. package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +2 -2
  412. package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +2 -2
  413. package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +5 -8
  414. package/esm2022/lib/components/select/auto/elder-auto-select-first.service.mjs +1 -1
  415. package/esm2022/lib/components/select/auto/elder-auto-select-suggest-first.directive.mjs +7 -9
  416. package/esm2022/lib/components/select/auto/elder-select-first-util.mjs +7 -4
  417. package/esm2022/lib/components/select/elder-select-base.mjs +12 -13
  418. package/esm2022/lib/components/select/elder-select-chip.directive.mjs +4 -4
  419. package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +10 -5
  420. package/esm2022/lib/components/select/elder-select-value.directive.mjs +2 -2
  421. package/esm2022/lib/components/select/elder-select.module.mjs +65 -29
  422. package/esm2022/lib/components/select/filter/elder-chip-filter-style-resolver.mjs +9 -9
  423. package/esm2022/lib/components/select/filter/elder-chips-include-exclude.directive.mjs +19 -15
  424. package/esm2022/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.mjs +3 -3
  425. package/esm2022/lib/components/select/filter/include-exclude-model-filter-adapter.mjs +6 -8
  426. package/esm2022/lib/components/select/filter/include-exclude-selection-model.mjs +7 -11
  427. package/esm2022/lib/components/select/multi/elder-chip-select-option/elder-select-option.component.mjs +2 -3
  428. package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +29 -27
  429. package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/chip-options-provider.mjs +12 -10
  430. package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.mjs +40 -29
  431. package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/select-option-chip-spec.mjs +4 -4
  432. package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +41 -21
  433. package/esm2022/lib/components/select/multi/elder-multi-select-chips/select-chip-spec.mjs +4 -4
  434. package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +2 -2
  435. package/esm2022/lib/components/select/multi/elder-mutli-select-all-directive.mjs +7 -8
  436. package/esm2022/lib/components/select/multi/elder-search-include-exclude.directive.mjs +8 -10
  437. package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +7 -5
  438. package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +13 -13
  439. package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +15 -5
  440. package/esm2022/lib/components/select/public_api.mjs +1 -1
  441. package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +5 -3
  442. package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +39 -29
  443. package/esm2022/lib/components/select/single/elder-select-form-field.mjs +1 -1
  444. package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +11 -12
  445. package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +3 -5
  446. package/esm2022/lib/components/shell/drawers/drawer-outlet-binding.mjs +8 -4
  447. package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +6 -4
  448. package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +7 -7
  449. package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +2 -2
  450. package/esm2022/lib/components/shell/elder-shell.module.mjs +10 -7
  451. package/esm2022/lib/components/shell/elder-shell.service.mjs +6 -9
  452. package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +6 -6
  453. package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +34 -14
  454. package/esm2022/lib/components/shell/shell-content-slot.mjs +1 -1
  455. package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +5 -5
  456. package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +2 -2
  457. package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +12 -12
  458. package/esm2022/lib/components/tabs/elder-tab.module.mjs +4 -14
  459. package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +5 -6
  460. package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +3 -4
  461. package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +6 -7
  462. package/esm2022/lib/components/theme/elder-theme.directive.mjs +5 -3
  463. package/esm2022/lib/components/theme/elder-theme.module.mjs +9 -15
  464. package/esm2022/lib/components/theme/elder-theme.service.mjs +7 -9
  465. package/esm2022/lib/components/theme/known-elder-themes.mjs +1 -1
  466. package/esm2022/lib/components/theme/public_api.mjs +1 -1
  467. package/esm2022/lib/components/theme/theme-spec.mjs +3 -7
  468. package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +1 -1
  469. package/esm2022/lib/components/time/date-formats/locale-date-formats.mjs +2 -2
  470. package/esm2022/lib/components/time/duration/duration-bucket.mjs +3 -2
  471. package/esm2022/lib/components/time/duration/duration-format.mjs +1 -1
  472. package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +6 -12
  473. package/esm2022/lib/components/time/duration/iso-duration-str.mjs +1 -1
  474. package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +13 -7
  475. package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +7 -13
  476. package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +27 -27
  477. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-binding.directive.mjs +1 -1
  478. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.mjs +7 -14
  479. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +5 -11
  480. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.service.mjs +4 -9
  481. package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +22 -13
  482. package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +7 -13
  483. package/esm2022/lib/components/time/elder-time.module.mjs +29 -21
  484. package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +6 -12
  485. package/esm2022/lib/components/time/period/period-bucket.mjs +1 -1
  486. package/esm2022/lib/components/time/period/period-format.mjs +1 -1
  487. package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +2 -2
  488. package/esm2022/lib/components/time/public_api.mjs +1 -1
  489. package/esm2022/lib/components/toasts/elder-toast.module.mjs +18 -4
  490. package/esm2022/lib/components/toasts/elder-toast.service.mjs +9 -10
  491. package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +21 -14
  492. package/esm2022/lib/components/toasts/toast-type.mjs +1 -1
  493. package/esm2022/lib/components/toasts/toast.mjs +1 -1
  494. package/esm2022/lib/components/url-fragment/elder-url-fragment.mjs +1 -1
  495. package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +3 -5
  496. package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +16 -5
  497. package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +3 -4
  498. package/esm2022/lib/components/viewers/elder-viewers.module.mjs +4 -10
  499. package/esm2022/lib/features/event-source/fetch/public_api.mjs +1 -1
  500. package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.mjs +14 -14
  501. package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.service.mjs +2 -2
  502. package/esm2022/lib/features/event-source/public_api.mjs +1 -1
  503. package/esm2022/lib/features/event-source/standard/elder-event-source.service.mjs +2 -2
  504. package/esm2022/lib/features/event-source/standard/public_api.mjs +1 -1
  505. package/esm2022/lib/features/event-source/standard/reactive-event-source.mjs +8 -7
  506. package/esm2022/lib/features/kafent/access-token-provider.mjs +1 -1
  507. package/esm2022/lib/features/kafent/kafent-config.mjs +1 -1
  508. package/esm2022/lib/features/kafent/kafent-event-stream.mjs +1 -1
  509. package/esm2022/lib/features/kafent/kafent-event.mjs +1 -1
  510. package/esm2022/lib/features/kafent/kafent-event.service.mjs +16 -8
  511. package/esm2022/lib/features/kafent/kafent-live-event-request.mjs +1 -1
  512. package/esm2022/lib/features/kafent/kafent.module.mjs +10 -13
  513. package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +12 -9
  514. package/esm2022/lib/features/kafent/sse/kafent-topic-sse.mjs +2 -3
  515. package/esm2022/lib/features/public_api.mjs +1 -1
  516. package/esm2022/lib/pipes/bytes.pipe.mjs +2 -2
  517. package/esm2022/lib/pipes/elder-pipes.module.mjs +52 -8
  518. package/esm2022/lib/pipes/elder-repeat.pipe.mjs +2 -2
  519. package/esm2022/lib/pipes/elder-round.pipe.mjs +2 -2
  520. package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +2 -2
  521. package/esm2022/lib/pipes/elder-truncate.pipe.mjs +3 -3
  522. package/esm2022/lib/pipes/iso-duration.pipe.mjs +2 -2
  523. package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +4 -5
  524. package/esm2022/lib/pipes/iso-interval.pipe.mjs +2 -2
  525. package/esm2022/lib/pipes/public_api.mjs +1 -1
  526. package/esm2022/lib/pipes/time-ago.pipe.mjs +12 -7
  527. package/esm2022/lib/pipes/time-duration.pipe.mjs +6 -4
  528. package/esm2022/lib/pipes/weight.pipe.mjs +4 -3
  529. package/esm2022/public_api.mjs +1 -1
  530. package/fesm2022/elderbyte-ngx-starter.mjs +2928 -2310
  531. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  532. package/lib/common/arrays.d.ts +1 -1
  533. package/lib/common/data/data-context/data-context-active-page.d.ts +1 -1
  534. package/lib/common/data/data-context/data-context-base.d.ts +1 -1
  535. package/lib/common/data/data-context/data-context-builder.d.ts +2 -2
  536. package/lib/common/data/data-context/data-context-continuable-base.d.ts +1 -1
  537. package/lib/common/data/data-context/data-context-continuable-paged.d.ts +1 -1
  538. package/lib/common/data/data-context/data-context-continuable-token.d.ts +1 -1
  539. package/lib/common/data/data-context/data-context-simple.d.ts +1 -1
  540. package/lib/common/data/datasource/local/local-list-data-source.d.ts +3 -3
  541. package/lib/common/data/datasource/local/local-paged-data-source.d.ts +1 -1
  542. package/lib/common/json-map.d.ts +1 -1
  543. package/lib/common/selection/selection-model.d.ts +2 -2
  544. package/lib/common/time/interval.d.ts +4 -4
  545. package/lib/common/utils/collection-util.d.ts +1 -1
  546. package/lib/components/card-organizer/card-organizer-data.d.ts +3 -3
  547. package/lib/components/card-organizer/card-stack.d.ts +2 -2
  548. package/lib/components/data-view/base/elder-data-view-options-provider.d.ts +1 -1
  549. package/lib/components/data-view/common/elder-data-common.module.d.ts +1 -1
  550. package/lib/components/data-view/elder-data-view-interaction-mode.d.ts +2 -2
  551. package/lib/components/data-view/grid/elder-grid.module.d.ts +1 -1
  552. package/lib/components/forms/search/elder-search-input.directive.d.ts +1 -1
  553. package/lib/components/navigation/toolbar/elder-toolbar.module.d.ts +1 -1
  554. package/lib/components/navigation/toolbar/toolbar-column-position.d.ts +3 -3
  555. package/lib/components/select/elder-select.module.d.ts +1 -1
  556. package/lib/components/time/elder-interval-input/elder-interval-input.component.d.ts +4 -4
  557. package/package.json +1 -1
  558. package/src/assets/i18n/de.json +0 -1
  559. package/src/assets/i18n/en.json +0 -1
  560. package/src/lib/components/access-denied/elder-access-denied.component.scss +1 -5
  561. package/src/lib/components/auditing/audited-entity/elder-audited-entity.component.scss +0 -1
  562. package/src/lib/components/badge/elder-badge/elder-badge.component.scss +2 -7
  563. package/src/lib/components/card-organizer/card-organizer/elder-card-organizer.component.scss +0 -1
  564. package/src/lib/components/card-organizer/card-stack/elder-card-stack.component.scss +4 -14
  565. package/src/lib/components/cards/elder-card/elder-card.component.scss +3 -9
  566. package/src/lib/components/chips/_elder-chip-theme.scss +5 -9
  567. package/src/lib/components/containers/elder-scroll-container/elder-scroll-container.component.scss +0 -1
  568. package/src/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.scss +0 -1
  569. package/src/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.scss +0 -1
  570. package/src/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.scss +4 -5
  571. package/src/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.scss +1 -1
  572. package/src/lib/components/data-view/grid/elder-grid/elder-grid.component.scss +21 -13
  573. package/src/lib/components/data-view/table/elder-table/elder-table.component.scss +12 -21
  574. package/src/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.scss +2 -3
  575. package/src/lib/components/errors/exception-detail/elder-exception-detail.component.scss +2 -4
  576. package/src/lib/components/expand-toggle-button/elder-expand-toggle-button.component.scss +0 -4
  577. package/src/lib/components/files/blob-viewer/elder-blob-viewer.component.scss +2 -4
  578. package/src/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.scss +2 -7
  579. package/src/lib/components/forms/search/search-box/elder-search-box.component.scss +0 -2
  580. package/src/lib/components/global-search/elder-global-search.component.scss +1 -2
  581. package/src/lib/components/graph/elder-progress-bar/elder-progress-bar.component.scss +0 -1
  582. package/src/lib/components/iframes/iframe-host/iframe-host.component.scss +0 -1
  583. package/src/lib/components/labels/labels-input/labels-input.component.scss +0 -2
  584. package/src/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.scss +0 -2
  585. package/src/lib/components/navigation/nav/_elder-nav-theme.scss +4 -8
  586. package/src/lib/components/navigation/nav/nav-group/elder-nav-group.component.scss +6 -6
  587. package/src/lib/components/navigation/nav/nav-list/elder-nav-list.component.scss +0 -1
  588. package/src/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.scss +1 -2
  589. package/src/lib/components/panels/card-panel/elder-card-panel.component.scss +0 -3
  590. package/src/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.scss +0 -1
  591. package/src/lib/components/panels/flat/_elder-panel-theme.scss +0 -2
  592. package/src/lib/components/panels/flat/elder-panel.component.scss +1 -2
  593. package/src/lib/components/select/_elder-select-base.scss +0 -1
  594. package/src/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.scss +7 -7
  595. package/src/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.scss +3 -4
  596. package/src/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.scss +7 -7
  597. package/src/lib/components/select/single/elder-select/elder-select.component.scss +1 -1
  598. package/src/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.scss +2 -3
  599. package/src/lib/components/shell/header/elder-app-header/elder-app-header.component.scss +1 -2
  600. package/src/lib/components/shell/shell/elder-shell.component.scss +0 -1
  601. package/src/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.scss +1 -2
  602. package/src/lib/components/time/_elder-time-input.theme.scss +2 -2
  603. package/src/lib/components/time/duration/elder-duration-input/elder-duration-input.component.scss +0 -4
  604. package/src/lib/components/time/elder-date-time-input/elder-date-time-input.component.scss +1 -3
  605. package/src/lib/components/time/elder-interval-input/elder-interval-input.component.scss +0 -1
  606. package/src/lib/components/time/elder-local-date-input/elder-local-date-input.component.scss +2 -5
  607. package/src/lib/components/time/period/elder-period-input/elder-period-input.component.scss +0 -4
  608. package/src/lib/components/toasts/standard-toast/standard-toast.component.scss +0 -1
  609. package/src/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.scss +0 -5
  610. package/src/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.scss +0 -1
  611. package/theming/_elder-common.scss +10 -11
  612. package/theming/_elder-defaults.scss +2 -4
  613. package/theming/_elder-flex-layout.scss +7 -8
  614. package/theming/_elder-mdc-support.scss +22 -19
  615. package/theming/_elder-palettes.scss +28 -25
  616. package/theming/_elder-scrollbar-theme.scss +0 -2
  617. package/theming/_elder-style-fixes.scss +10 -7
  618. package/theming/_elder-theme.scss +6 -1
  619. package/theming/_elder-toast-theme.scss +0 -2
  620. package/theming/_mat-icon-button-size.scss +3 -2
  621. package/theming/_mixins.scss +11 -9
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, Input, Optional, Output, Self, ViewChild, ViewEncapsulation } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, Input, Optional, Output, Self, ViewChild, ViewEncapsulation, } from '@angular/core';
2
2
  import { ElderFormFieldControlBase } from '../../../../common/forms/elder-form-field-control-base.directive';
3
3
  import { Quantity } from '../../model/quantity';
4
4
  import { LoggerFactory } from '@elderbyte/ts-logger';
@@ -40,7 +40,7 @@ export class ElderQuantityInputControlComponent extends ElderFormFieldControlBas
40
40
  this.displayFormat = null;
41
41
  this.afterInit = false;
42
42
  this._hideUnit = false;
43
- this.unitSymbol$ = this.value$.pipe(map(v => v?.unit), map(unit => {
43
+ this.unitSymbol$ = this.value$.pipe(map((v) => v?.unit), map((unit) => {
44
44
  if (unit) {
45
45
  return this.unitService.getUnitSymbol(unit);
46
46
  }
@@ -49,13 +49,13 @@ export class ElderQuantityInputControlComponent extends ElderFormFieldControlBas
49
49
  }
50
50
  }));
51
51
  this.formattedValue$ = combineLatest([
52
- this.quantityInput$.pipe(filter(input => !!input)),
53
- this.value$
52
+ this.quantityInput$.pipe(filter((input) => !!input)),
53
+ this.value$,
54
54
  ]).pipe(map(([input, quantity]) => {
55
55
  const qtyValue = quantity?.value;
56
56
  if (!input?.focused && this.displayFormat && qtyValue) {
57
57
  return formatNumber(qtyValue, 'en', this.displayFormat)
58
- .replace('\'', '')
58
+ .replace("'", '')
59
59
  .replace('’', '')
60
60
  .replace(',', '');
61
61
  }
@@ -82,7 +82,7 @@ export class ElderQuantityInputControlComponent extends ElderFormFieldControlBas
82
82
  this.quantityInput$.next(input);
83
83
  }
84
84
  get quantityValueChange() {
85
- return this.valueChange.pipe(map(q => q?.value));
85
+ return this.valueChange.pipe(map((q) => q?.value));
86
86
  }
87
87
  get quantityValue() {
88
88
  return this.value?.value;
@@ -104,7 +104,7 @@ export class ElderQuantityInputControlComponent extends ElderFormFieldControlBas
104
104
  }
105
105
  }
106
106
  get unitChange() {
107
- return this.valueChange.pipe(map(q => q?.unit));
107
+ return this.valueChange.pipe(map((q) => q?.unit));
108
108
  }
109
109
  get unit() {
110
110
  return this.value?.unit;
@@ -138,19 +138,21 @@ export class ElderQuantityInputControlComponent extends ElderFormFieldControlBas
138
138
  if (a === b) {
139
139
  return true;
140
140
  }
141
- return a?.value === b?.value
142
- && a?.unit === b?.unit;
141
+ return a?.value === b?.value && a?.unit === b?.unit;
143
142
  }
144
143
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderQuantityInputControlComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.FocusMonitor }, { token: i2.TranslateService }, { token: i3.NgControl, optional: true, self: true }, { token: i4.ElderUnitService }], target: i0.ɵɵFactoryTarget.Component }); }
145
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: ElderQuantityInputControlComponent, isStandalone: true, selector: "elder-quantity-input", inputs: { displayFormat: "displayFormat", quantityValue: "quantityValue", unit: "unit", hideUnit: "hideUnit" }, outputs: { quantityValueChange: "quantityValueChange", unitChange: "unitChange" }, providers: [
146
- { provide: MatFormFieldControl, useExisting: ElderQuantityInputControlComponent },
147
- ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }, { propertyName: "quantityInput", first: true, predicate: ["quantityMatInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"layout-row place-start-baseline elder-flex-control\"\n>\n <input #input\n matInput type=\"number\" elderNoSpinner\n #quantityMatInput=\"matInput\"\n class=\"flex-grow elder-quantity-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [readonly]=\"readonly\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholder | translate\"\n [ngModel]=\"formattedValue$ | async\" [ngModelOptions]=\"{standalone: true, updateOn: 'change'}\"\n (ngModelChange)=\"onQuantityValueChanged($event)\"\n >\n <span *ngIf=\"!hideUnit\" class=\"mat-small elder-quantity-unit\">{{unitSymbol$ | async}}</span>\n</div>\n", styles: [".elder-quantity-input{text-align:right}.elder-quantity-unit{margin-left:4px}\n"], dependencies: [{ kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
144
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: ElderQuantityInputControlComponent, isStandalone: true, selector: "elder-quantity-input", inputs: { displayFormat: "displayFormat", quantityValue: "quantityValue", unit: "unit", hideUnit: "hideUnit" }, outputs: { quantityValueChange: "quantityValueChange", unitChange: "unitChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderQuantityInputControlComponent }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }, { propertyName: "quantityInput", first: true, predicate: ["quantityMatInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-row place-start-baseline elder-flex-control\">\n <input\n #input\n matInput\n type=\"number\"\n elderNoSpinner\n #quantityMatInput=\"matInput\"\n class=\"flex-grow elder-quantity-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [readonly]=\"readonly\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholder | translate\"\n [ngModel]=\"formattedValue$ | async\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'change' }\"\n (ngModelChange)=\"onQuantityValueChanged($event)\"\n />\n <span *ngIf=\"!hideUnit\" class=\"mat-small elder-quantity-unit\">{{ unitSymbol$ | async }}</span>\n</div>\n", styles: [".elder-quantity-input{text-align:right}.elder-quantity-unit{margin-left:4px}\n"], dependencies: [{ kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
148
145
  }
149
146
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderQuantityInputControlComponent, decorators: [{
150
147
  type: Component,
151
- args: [{ selector: 'elder-quantity-input', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
152
- { provide: MatFormFieldControl, useExisting: ElderQuantityInputControlComponent },
153
- ], standalone: true, imports: [MatInput, FormsModule, ElderFormFieldNoSpinnerDirective, NgIf, AsyncPipe, TranslateModule], template: "<div\n class=\"layout-row place-start-baseline elder-flex-control\"\n>\n <input #input\n matInput type=\"number\" elderNoSpinner\n #quantityMatInput=\"matInput\"\n class=\"flex-grow elder-quantity-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [readonly]=\"readonly\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholder | translate\"\n [ngModel]=\"formattedValue$ | async\" [ngModelOptions]=\"{standalone: true, updateOn: 'change'}\"\n (ngModelChange)=\"onQuantityValueChanged($event)\"\n >\n <span *ngIf=\"!hideUnit\" class=\"mat-small elder-quantity-unit\">{{unitSymbol$ | async}}</span>\n</div>\n", styles: [".elder-quantity-input{text-align:right}.elder-quantity-unit{margin-left:4px}\n"] }]
148
+ args: [{ selector: 'elder-quantity-input', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MatFormFieldControl, useExisting: ElderQuantityInputControlComponent }], standalone: true, imports: [
149
+ MatInput,
150
+ FormsModule,
151
+ ElderFormFieldNoSpinnerDirective,
152
+ NgIf,
153
+ AsyncPipe,
154
+ TranslateModule,
155
+ ], template: "<div class=\"layout-row place-start-baseline elder-flex-control\">\n <input\n #input\n matInput\n type=\"number\"\n elderNoSpinner\n #quantityMatInput=\"matInput\"\n class=\"flex-grow elder-quantity-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [readonly]=\"readonly\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholder | translate\"\n [ngModel]=\"formattedValue$ | async\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'change' }\"\n (ngModelChange)=\"onQuantityValueChanged($event)\"\n />\n <span *ngIf=\"!hideUnit\" class=\"mat-small elder-quantity-unit\">{{ unitSymbol$ | async }}</span>\n</div>\n", styles: [".elder-quantity-input{text-align:right}.elder-quantity-unit{margin-left:4px}\n"] }]
154
156
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.FocusMonitor }, { type: i2.TranslateService }, { type: i3.NgControl, decorators: [{
155
157
  type: Optional
156
158
  }, {
@@ -174,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
174
176
  }], hideUnit: [{
175
177
  type: Input
176
178
  }] } });
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHktaW5wdXQtY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL21lYXN1cmVzL3F1YW50aXR5LWlucHV0L3F1YW50aXR5LWlucHV0LWNvbnRyb2wvZWxkZXItcXVhbnRpdHktaW5wdXQtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL21lYXN1cmVzL3F1YW50aXR5LWlucHV0L3F1YW50aXR5LWlucHV0LWNvbnRyb2wvZWxkZXItcXVhbnRpdHktaW5wdXQtY29udHJvbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxrRUFBa0UsQ0FBQztBQUMzRyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFDLFdBQVcsRUFBWSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxN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O2tCQVo5QyxTQUFTOytCQUNJLHNCQUFzQixpQkFHakIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUCxFQUFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLG9DQUFvQyxFQUFDO3FCQUNsRixjQUNXLElBQUksV0FDUCxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsZ0NBQWdDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUM7OzBCQTRDbkcsUUFBUTs7MEJBQUksSUFBSTt3RUEvQlosUUFBUTtzQkFEZCxTQUFTO3VCQUFDLE9BQU87Z0JBU1gsYUFBYTtzQkFEbkIsS0FBSztnQkFvRkssYUFBYTtzQkFEdkIsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBTWxCLG1CQUFtQjtzQkFEN0IsTUFBTTtnQkFZSSxhQUFhO3NCQUR2QixLQUFLO2dCQVVLLElBQUk7c0JBRGQsS0FBSztnQkFVSyxVQUFVO3NCQURwQixNQUFNO2dCQVlJLFFBQVE7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VsZGVyRm9ybUZpZWxkQ29udHJvbEJhc2V9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9mb3Jtcy9lbGRlci1mb3JtLWZpZWxkLWNvbnRyb2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtRdWFudGl0eX0gZnJvbSAnLi4vLi4vbW9kZWwvcXVhbnRpdHknO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0ZvY3VzTW9uaXRvcn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZSwgTmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01hdEZvcm1GaWVsZENvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtFbGRlclVuaXRTZXJ2aWNlfSBmcm9tICcuLi8uLi9lbGRlci11bml0LnNlcnZpY2UnO1xuaW1wb3J0IHtBc3luY1BpcGUsIGZvcm1hdE51bWJlciwgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TWF0SW5wdXR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7VW5pdH0gZnJvbSAnLi4vLi4vbW9kZWwvdW5pdCc7XG5pbXBvcnQge0Jvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtFbGRlckZvcm1GaWVsZE5vU3Bpbm5lckRpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vLi4vZm9ybXMvZGlyZWN0aXZlcy9lbGRlci1mb3JtLWZpZWxkLW5vLXNwaW5uZXIuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlbGRlci1xdWFudGl0eS1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLXF1YW50aXR5LWlucHV0LWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2VsZGVyLXF1YW50aXR5LWlucHV0LWNvbnRyb2wuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7cHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IEVsZGVyUXVhbnRpdHlJbnB1dENvbnRyb2xDb21wb25lbnR9LFxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTWF0SW5wdXQsIEZvcm1zTW9kdWxlLCBFbGRlckZvcm1GaWVsZE5vU3Bpbm5lckRpcmVjdGl2ZSwgTmdJZiwgQXN5bmNQaXBlLCBUcmFuc2xhdGVNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyUXVhbnRpdHlJbnB1dENvbnRyb2xDb21wb25lbnQgZXh0ZW5kcyBFbGRlckZvcm1GaWVsZENvbnRyb2xCYXNlPFF1YW50aXR5PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JylcbiAgcHVibGljIGlucHV0UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IHF1YW50aXR5SW5wdXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXRJbnB1dD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIERpc3BsYXkgZm9ybWF0IGZvciB0aGUgcXVhbnRpdHkgdmFsdWU6XG4gICAqIHttaW5JbnRlZ2VyRGlnaXRzfS57bWluRnJhY3Rpb25EaWdpdHN9LXttYXhGcmFjdGlvbkRpZ2l0c31cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNwbGF5Rm9ybWF0OiBzdHJpbmcgPSBudWxsO1xuXG4gIHB1YmxpYyByZWFkb25seSBmb3JtYXR0ZWRWYWx1ZSQ6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVtYmVyPjtcblxuICBwdWJsaWMgcmVhZG9ubHkgdW5pdFN5bWJvbCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBwcml2YXRlIGFmdGVySW5pdCA9IGZhbHNlO1xuICBwcml2YXRlIGluaXRpYWxVbml0OiBVbml0O1xuICBwcml2YXRlIGluaXRpYWxRdHlWYWx1ZTogbnVtYmVyO1xuXG4gIHByaXZhdGUgX2hpZGVVbml0ID0gZmFsc2U7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgaG9zdFJlZjogRWxlbWVudFJlZixcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVuaXRTZXJ2aWNlOiBFbGRlclVuaXRTZXJ2aWNlLFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGhvc3RSZWYsXG4gICAgICAncXVhbnRpdHktaW5wdXQnLFxuICAgICAgZm9jdXNNb25pdG9yLFxuICAgICAgdHJhbnNsYXRlU2VydmljZSxcbiAgICAgIG5nQ29udHJvbFxuICAgICk7XG5cbiAgICB0aGlzLnVuaXRTeW1ib2wkID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICAgIG1hcCh2ID0+IHY/LnVuaXQpLFxuICAgICAgbWFwKHVuaXQgPT4ge1xuICAgICAgICBpZiAodW5pdCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnVuaXRTZXJ2aWNlLmdldFVuaXRTeW1ib2wodW5pdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmZvcm1hdHRlZFZhbHVlJCA9IGNvbWJpbmVMYXRlc3QoXG4gICAgICBbXG4gICAgICAgIHRoaXMucXVhbnRpdHlJbnB1dCQucGlwZShmaWx0ZXIoaW5wdXQgPT4gISFpbnB1dCkpLFxuICAgICAgICB0aGlzLnZhbHVlJFxuICAgICAgXVxuICAgICkucGlwZShcbiAgICAgIG1hcCgoW2lucHV0LCBxdWFudGl0eV0pID0+IHtcbiAgICAgICAgY29uc3QgcXR5VmFsdWUgPSBxdWFudGl0eT8udmFsdWU7XG4gICAgICAgIGlmICghaW5wdXQ/LmZvY3VzZWQgJiYgdGhpcy5kaXNwbGF5Rm9ybWF0ICYmIHF0eVZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJlcihxdHlWYWx1ZSwgJ2VuJywgdGhpcy5kaXNwbGF5Rm9ybWF0KVxuICAgICAgICAgICAgLnJlcGxhY2UoJ1xcJycsICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UoJ+KAmScsICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UoJywnLCAnJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHF0eVZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IFF1YW50aXR5LmZyb20odGhpcy5pbml0aWFsVW5pdCwgdGhpcy5pbml0aWFsUXR5VmFsdWUpO1xuICAgIHRoaXMuYWZ0ZXJJbml0ID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBWaWV3Q2hpbGQoJ3F1YW50aXR5TWF0SW5wdXQnKVxuICBwdWJsaWMgc2V0IHF1YW50aXR5SW5wdXQoaW5wdXQ6IE1hdElucHV0KSB7XG4gICAgdGhpcy5xdWFudGl0eUlucHV0JC5uZXh0KGlucHV0KTtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IHF1YW50aXR5VmFsdWVDaGFuZ2UoKTogT2JzZXJ2YWJsZTxudW1iZXIgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVDaGFuZ2UucGlwZShcbiAgICAgIG1hcChxID0+IHE/LnZhbHVlKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHF1YW50aXR5VmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZT8udmFsdWU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHF1YW50aXR5VmFsdWUocXVhbnRpdHlWYWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuYWZ0ZXJJbml0KSB7XG4gICAgICB0aGlzLnZhbHVlID0gUXVhbnRpdHkuZnJvbSh0aGlzLnZhbHVlPy51bml0LCBxdWFudGl0eVZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsUXR5VmFsdWUgPSBxdWFudGl0eVZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdW5pdCh1bml0OiBVbml0KSB7XG4gICAgaWYgKHRoaXMuYWZ0ZXJJbml0KSB7XG4gICAgICB0aGlzLnZhbHVlID0gUXVhbnRpdHkuZnJvbSh1bml0LCB0aGlzLnZhbHVlPy52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdGlhbFVuaXQgPSB1bml0O1xuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IHVuaXRDaGFuZ2UoKTogT2JzZXJ2YWJsZTxVbml0IHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlQ2hhbmdlLnBpcGUoXG4gICAgICBtYXAocSA9PiBxPy51bml0KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHVuaXQoKTogVW5pdCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU/LnVuaXQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGhpZGVVbml0KGhpZGU6IEJvb2xlYW5JbnB1dCl7XG4gICAgdGhpcy5faGlkZVVuaXQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoaGlkZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhpZGVVbml0KCl7XG4gICAgcmV0dXJuIHRoaXMuX2hpZGVVbml0O1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG9uUXVhbnRpdHlWYWx1ZUNoYW5nZWQodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlVmFsdWUoUXVhbnRpdHkuZnJvbSh0aGlzLnZhbHVlPy51bml0LCB2YWx1ZSkpO1xuICB9XG5cbiAgcHVibGljIGJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFJlZj8ubmF0aXZlRWxlbWVudD8uYmx1cigpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKG9wdGlvbnM6IEZvY3VzT3B0aW9ucyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEludGVybmFsIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJvdGVjdGVkIHZhbHVlc0VxdWFscyhhOiBRdWFudGl0eSwgYjogUXVhbnRpdHkpOiBib29sZWFuIHtcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBhPy52YWx1ZSA9PT0gYj8udmFsdWVcbiAgICAgICYmIGE/LnVuaXQgPT09IGI/LnVuaXQ7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJsYXlvdXQtcm93IHBsYWNlLXN0YXJ0LWJhc2VsaW5lIGVsZGVyLWZsZXgtY29udHJvbFwiXG4+XG4gIDxpbnB1dCAjaW5wdXRcbiAgICAgICAgIG1hdElucHV0IHR5cGU9XCJudW1iZXJcIiBlbGRlck5vU3Bpbm5lclxuICAgICAgICAgI3F1YW50aXR5TWF0SW5wdXQ9XCJtYXRJbnB1dFwiXG4gICAgICAgICBjbGFzcz1cImZsZXgtZ3JvdyBlbGRlci1xdWFudGl0eS1pbnB1dCBtZGMtdGV4dC1maWVsZF9faW5wdXRcIlxuICAgICAgICAgW2Rpc2FibGVkXT1cIiEhZGlzYWJsZWRcIlxuICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgIFtuYW1lXT1cIm5nQ29udHJvbD8ubmFtZSArICctaW5uZXItaW5wdXQnXCJcbiAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICBbbmdNb2RlbF09XCJmb3JtYXR0ZWRWYWx1ZSQgfCBhc3luY1wiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZSwgdXBkYXRlT246ICdjaGFuZ2UnfVwiXG4gICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblF1YW50aXR5VmFsdWVDaGFuZ2VkKCRldmVudClcIlxuICA+XG4gIDxzcGFuICpuZ0lmPVwiIWhpZGVVbml0XCIgY2xhc3M9XCJtYXQtc21hbGwgZWxkZXItcXVhbnRpdHktdW5pdFwiPnt7dW5pdFN5bWJvbCQgfCBhc3luY319PC9zcGFuPlxuPC9kaXY+XG4iXX0=
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHktaW5wdXQtY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL21lYXN1cmVzL3F1YW50aXR5LWlucHV0L3F1YW50aXR5LWlucHV0LWNvbnRyb2wvZWxkZXItcXVhbnRpdHktaW5wdXQtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL21lYXN1cmVzL3F1YW50aXR5LWlucHV0L3F1YW50aXR5LWlucHV0LWNvbnRyb2wvZWxkZXItcXVhbnRpdHktaW5wdXQtY29udHJvbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQTtBQUM1RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRXBELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0scUJBQXFCLENBQUE7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFBO0FBQ2pFLE9BQU8sRUFBRSxN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Q1QsZUFBZTs7MkZBR04sa0NBQWtDO2tCQWpCOUMsU0FBUzsrQkFDRSxzQkFBc0IsaUJBR2pCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLG9DQUFvQyxFQUFFLENBQUMsY0FDbEYsSUFBSSxXQUNQO3dCQUNQLFFBQVE7d0JBQ1IsV0FBVzt3QkFDWCxnQ0FBZ0M7d0JBQ2hDLElBQUk7d0JBQ0osU0FBUzt3QkFDVCxlQUFlO3FCQUNoQjs7MEJBOENFLFFBQVE7OzBCQUFJLElBQUk7d0VBL0JaLFFBQVE7c0JBRGQsU0FBUzt1QkFBQyxPQUFPO2dCQVNYLGFBQWE7c0JBRG5CLEtBQUs7Z0JBNEVLLGFBQWE7c0JBRHZCLFNBQVM7dUJBQUMsa0JBQWtCO2dCQU1sQixtQkFBbUI7c0JBRDdCLE1BQU07Z0JBVUksYUFBYTtzQkFEdkIsS0FBSztnQkFVSyxJQUFJO3NCQURkLEtBQUs7Z0JBVUssVUFBVTtzQkFEcEIsTUFBTTtnQkFVSSxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRWxkZXJGb3JtRmllbGRDb250cm9sQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9mb3Jtcy9lbGRlci1mb3JtLWZpZWxkLWNvbnRyb2wtYmFzZS5kaXJlY3RpdmUnXG5pbXBvcnQgeyBRdWFudGl0eSB9IGZyb20gJy4uLy4uL21vZGVsL3F1YW50aXR5J1xuaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJ1xuaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IEVsZGVyVW5pdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbGRlci11bml0LnNlcnZpY2UnXG5pbXBvcnQgeyBBc3luY1BpcGUsIGZvcm1hdE51bWJlciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnXG5pbXBvcnQgeyBVbml0IH0gZnJvbSAnLi4vLi4vbW9kZWwvdW5pdCdcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHsgRWxkZXJGb3JtRmllbGROb1NwaW5uZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9mb3Jtcy9kaXJlY3RpdmVzL2VsZGVyLWZvcm0tZmllbGQtbm8tc3Bpbm5lci5kaXJlY3RpdmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLXF1YW50aXR5LWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLXF1YW50aXR5LWlucHV0LWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbGRlci1xdWFudGl0eS1pbnB1dC1jb250cm9sLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBFbGRlclF1YW50aXR5SW5wdXRDb250cm9sQ29tcG9uZW50IH1dLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0SW5wdXQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRWxkZXJGb3JtRmllbGROb1NwaW5uZXJEaXJlY3RpdmUsXG4gICAgTmdJZixcbiAgICBBc3luY1BpcGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFbGRlclF1YW50aXR5SW5wdXRDb250cm9sQ29tcG9uZW50XG4gIGV4dGVuZHMgRWxkZXJGb3JtRmllbGRDb250cm9sQmFzZTxRdWFudGl0eT5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKVxuICBwdWJsaWMgaW5wdXRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD5cbiAgcHJpdmF0ZSByZWFkb25seSBxdWFudGl0eUlucHV0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF0SW5wdXQ+KG51bGwpXG5cbiAgLyoqXG4gICAqIERpc3BsYXkgZm9ybWF0IGZvciB0aGUgcXVhbnRpdHkgdmFsdWU6XG4gICAqIHttaW5JbnRlZ2VyRGlnaXRzfS57bWluRnJhY3Rpb25EaWdpdHN9LXttYXhGcmFjdGlvbkRpZ2l0c31cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNwbGF5Rm9ybWF0OiBzdHJpbmcgPSBudWxsXG5cbiAgcHVibGljIHJlYWRvbmx5IGZvcm1hdHRlZFZhbHVlJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudW1iZXI+XG5cbiAgcHVibGljIHJlYWRvbmx5IHVuaXRTeW1ib2wkOiBPYnNlcnZhYmxlPHN0cmluZz5cblxuICBwcml2YXRlIGFmdGVySW5pdCA9IGZhbHNlXG4gIHByaXZhdGUgaW5pdGlhbFVuaXQ6IFVuaXRcbiAgcHJpdmF0ZSBpbml0aWFsUXR5VmFsdWU6IG51bWJlclxuXG4gIHByaXZhdGUgX2hpZGVVbml0ID0gZmFsc2VcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBob3N0UmVmOiBFbGVtZW50UmVmLFxuICAgIHpvbmU6IE5nWm9uZSxcbiAgICBmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdW5pdFNlcnZpY2U6IEVsZGVyVW5pdFNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoaG9zdFJlZiwgJ3F1YW50aXR5LWlucHV0JywgZm9jdXNNb25pdG9yLCB0cmFuc2xhdGVTZXJ2aWNlLCBuZ0NvbnRyb2wpXG5cbiAgICB0aGlzLnVuaXRTeW1ib2wkID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICAgIG1hcCgodikgPT4gdj8udW5pdCksXG4gICAgICBtYXAoKHVuaXQpID0+IHtcbiAgICAgICAgaWYgKHVuaXQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy51bml0U2VydmljZS5nZXRVbml0U3ltYm9sKHVuaXQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICcnXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuXG4gICAgdGhpcy5mb3JtYXR0ZWRWYWx1ZSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMucXVhbnRpdHlJbnB1dCQucGlwZShmaWx0ZXIoKGlucHV0KSA9PiAhIWlucHV0KSksXG4gICAgICB0aGlzLnZhbHVlJCxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbaW5wdXQsIHF1YW50aXR5XSkgPT4ge1xuICAgICAgICBjb25zdCBxdHlWYWx1ZSA9IHF1YW50aXR5Py52YWx1ZVxuICAgICAgICBpZiAoIWlucHV0Py5mb2N1c2VkICYmIHRoaXMuZGlzcGxheUZvcm1hdCAmJiBxdHlWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXIocXR5VmFsdWUsICdlbicsIHRoaXMuZGlzcGxheUZvcm1hdClcbiAgICAgICAgICAgIC5yZXBsYWNlKFwiJ1wiLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKCfigJknLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKCcsJywgJycpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHF0eVZhbHVlXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBRdWFudGl0eS5mcm9tKHRoaXMuaW5pdGlhbFVuaXQsIHRoaXMuaW5pdGlhbFF0eVZhbHVlKVxuICAgIHRoaXMuYWZ0ZXJJbml0ID0gdHJ1ZVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQFZpZXdDaGlsZCgncXVhbnRpdHlNYXRJbnB1dCcpXG4gIHB1YmxpYyBzZXQgcXVhbnRpdHlJbnB1dChpbnB1dDogTWF0SW5wdXQpIHtcbiAgICB0aGlzLnF1YW50aXR5SW5wdXQkLm5leHQoaW5wdXQpXG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCBxdWFudGl0eVZhbHVlQ2hhbmdlKCk6IE9ic2VydmFibGU8bnVtYmVyIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlQ2hhbmdlLnBpcGUobWFwKChxKSA9PiBxPy52YWx1ZSkpXG4gIH1cblxuICBwdWJsaWMgZ2V0IHF1YW50aXR5VmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZT8udmFsdWVcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcXVhbnRpdHlWYWx1ZShxdWFudGl0eVZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5hZnRlckluaXQpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBRdWFudGl0eS5mcm9tKHRoaXMudmFsdWU/LnVuaXQsIHF1YW50aXR5VmFsdWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdGlhbFF0eVZhbHVlID0gcXVhbnRpdHlWYWx1ZVxuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdW5pdCh1bml0OiBVbml0KSB7XG4gICAgaWYgKHRoaXMuYWZ0ZXJJbml0KSB7XG4gICAgICB0aGlzLnZhbHVlID0gUXVhbnRpdHkuZnJvbSh1bml0LCB0aGlzLnZhbHVlPy52YWx1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsVW5pdCA9IHVuaXRcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCB1bml0Q2hhbmdlKCk6IE9ic2VydmFibGU8VW5pdCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZUNoYW5nZS5waXBlKG1hcCgocSkgPT4gcT8udW5pdCkpXG4gIH1cblxuICBwdWJsaWMgZ2V0IHVuaXQoKTogVW5pdCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU/LnVuaXRcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaGlkZVVuaXQoaGlkZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5faGlkZVVuaXQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoaGlkZSlcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGlkZVVuaXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZGVVbml0XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgb25RdWFudGl0eVZhbHVlQ2hhbmdlZCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZShRdWFudGl0eS5mcm9tKHRoaXMudmFsdWU/LnVuaXQsIHZhbHVlKSlcbiAgfVxuXG4gIHB1YmxpYyBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmJsdXIoKVxuICB9XG5cbiAgcHVibGljIGZvY3VzKG9wdGlvbnM6IEZvY3VzT3B0aW9ucyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKG9wdGlvbnMpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogSW50ZXJuYWwgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcm90ZWN0ZWQgdmFsdWVzRXF1YWxzKGE6IFF1YW50aXR5LCBiOiBRdWFudGl0eSk6IGJvb2xlYW4ge1xuICAgIGlmIChhID09PSBiKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gYT8udmFsdWUgPT09IGI/LnZhbHVlICYmIGE/LnVuaXQgPT09IGI/LnVuaXRcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2Utc3RhcnQtYmFzZWxpbmUgZWxkZXItZmxleC1jb250cm9sXCI+XG4gIDxpbnB1dFxuICAgICNpbnB1dFxuICAgIG1hdElucHV0XG4gICAgdHlwZT1cIm51bWJlclwiXG4gICAgZWxkZXJOb1NwaW5uZXJcbiAgICAjcXVhbnRpdHlNYXRJbnB1dD1cIm1hdElucHV0XCJcbiAgICBjbGFzcz1cImZsZXgtZ3JvdyBlbGRlci1xdWFudGl0eS1pbnB1dCBtZGMtdGV4dC1maWVsZF9faW5wdXRcIlxuICAgIFtkaXNhYmxlZF09XCIhIWRpc2FibGVkXCJcbiAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgIFtuYW1lXT1cIm5nQ29udHJvbD8ubmFtZSArICctaW5uZXItaW5wdXQnXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxuICAgIFtuZ01vZGVsXT1cImZvcm1hdHRlZFZhbHVlJCB8IGFzeW5jXCJcbiAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlLCB1cGRhdGVPbjogJ2NoYW5nZScgfVwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwib25RdWFudGl0eVZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgLz5cbiAgPHNwYW4gKm5nSWY9XCIhaGlkZVVuaXRcIiBjbGFzcz1cIm1hdC1zbWFsbCBlbGRlci1xdWFudGl0eS11bml0XCI+e3sgdW5pdFN5bWJvbCQgfCBhc3luYyB9fTwvc3Bhbj5cbjwvZGl2PlxuIl19
@@ -65,9 +65,7 @@ export class ElderQuantityRangeValidator {
65
65
  return quantity?.value <= maxValue;
66
66
  }
67
67
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderQuantityRangeValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
68
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: ElderQuantityRangeValidator, isStandalone: true, selector: "elder-quantity-input[min][formControl],elder-quantity-input[min][formControlName],elder-quantity-input[min][ngModel],elder-quantity-input[max][formControl],elder-quantity-input[max][formControlName],elder-quantity-input[max][ngModel]", inputs: { min: "min", max: "max" }, providers: [
69
- { provide: NG_VALIDATORS, useExisting: ElderQuantityRangeValidator, multi: true }
70
- ], ngImport: i0 }); }
68
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: ElderQuantityRangeValidator, isStandalone: true, selector: "elder-quantity-input[min][formControl],elder-quantity-input[min][formControlName],elder-quantity-input[min][ngModel],elder-quantity-input[max][formControl],elder-quantity-input[max][formControlName],elder-quantity-input[max][ngModel]", inputs: { min: "min", max: "max" }, providers: [{ provide: NG_VALIDATORS, useExisting: ElderQuantityRangeValidator, multi: true }], ngImport: i0 }); }
71
69
  }
72
70
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderQuantityRangeValidator, decorators: [{
73
71
  type: Directive,
@@ -75,14 +73,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
75
73
  // eslint-disable-next-line @angular-eslint/directive-selector
76
74
  selector: 'elder-quantity-input[min][formControl],elder-quantity-input[min][formControlName],elder-quantity-input[min][ngModel],' +
77
75
  'elder-quantity-input[max][formControl],elder-quantity-input[max][formControlName],elder-quantity-input[max][ngModel]',
78
- providers: [
79
- { provide: NG_VALIDATORS, useExisting: ElderQuantityRangeValidator, multi: true }
80
- ],
81
- standalone: true
76
+ providers: [{ provide: NG_VALIDATORS, useExisting: ElderQuantityRangeValidator, multi: true }],
77
+ standalone: true,
82
78
  }]
83
79
  }], propDecorators: { min: [{
84
80
  type: Input
85
81
  }], max: [{
86
82
  type: Input
87
83
  }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHktcmFuZ2UudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9tZWFzdXJlcy9xdWFudGl0eS1pbnB1dC92YWxpZGF0aW9uL2VsZGVyLXF1YW50aXR5LXJhbmdlLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFrQixhQUFhLEVBQThCLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0YsT0FBTyxFQUFDLG9CQUFvQixFQUFjLE1BQU0sdUJBQXVCLENBQUM7O0FBV3hFLGtFQUFrRTtBQUNsRSxNQUFNLE9BQU8sMkJBQTJCO0lBVnhDO1FBV0U7Ozs7b0ZBSTRFO1FBRTNELFFBQUcsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7S0F1RXZFO0lBbEVDOzs7O2dGQUk0RTtJQUU1RSwrQ0FBK0M7SUFFL0M7O09BRUc7SUFDSCxJQUNXLEdBQUcsQ0FBQyxLQUFrQjtRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDVyxHQUFHLENBQUMsS0FBa0I7UUFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsUUFBUSxDQUFDLENBQWtCO1FBRWhDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBaUIsQ0FBQztRQUVoQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDekQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUMsRUFBQyxDQUFDLENBQUM7UUFDOUUsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4RCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBQyxFQUFDLENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVwRSxTQUFTLENBQUMsUUFBa0IsRUFBRSxRQUFnQjtRQUNwRCxPQUFPLFFBQVEsRUFBRSxLQUFLLElBQUksUUFBUSxDQUFDO0lBQ3JDLENBQUM7SUFFTyxRQUFRLENBQUMsUUFBa0IsRUFBRSxRQUFnQjtRQUNuRCxPQUFPLFFBQVEsRUFBRSxLQUFLLElBQUksUUFBUSxDQUFDO0lBQ3JDLENBQUM7OEdBN0VVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDRUQU56QjtZQUNQLEVBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztTQUNsRjs7MkZBSVEsMkJBQTJCO2tCQVZ2QyxTQUFTO21CQUFDO29CQUNQLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLHVIQUF1SDt3QkFDN0gsc0hBQXNIO29CQUMxSCxTQUFTLEVBQUU7d0JBQ1AsRUFBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsNkJBQTZCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztxQkFDbEY7b0JBQ0QsVUFBVSxFQUFFLElBQUk7aUJBQ25COzhCQTBCWSxHQUFHO3NCQURiLEtBQUs7Z0JBYUssR0FBRztzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtRdWFudGl0eX0gZnJvbSAnLi4vLi4vbW9kZWwvcXVhbnRpdHknO1xuaW1wb3J0IHtjb2VyY2VOdW1iZXJQcm9wZXJ0eSwgTnVtYmVySW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdlbGRlci1xdWFudGl0eS1pbnB1dFttaW5dW2Zvcm1Db250cm9sXSxlbGRlci1xdWFudGl0eS1pbnB1dFttaW5dW2Zvcm1Db250cm9sTmFtZV0sZWxkZXItcXVhbnRpdHktaW5wdXRbbWluXVtuZ01vZGVsXSwnICtcbiAgICAgICAgJ2VsZGVyLXF1YW50aXR5LWlucHV0W21heF1bZm9ybUNvbnRyb2xdLGVsZGVyLXF1YW50aXR5LWlucHV0W21heF1bZm9ybUNvbnRyb2xOYW1lXSxlbGRlci1xdWFudGl0eS1pbnB1dFttYXhdW25nTW9kZWxdJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge3Byb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBFbGRlclF1YW50aXR5UmFuZ2VWYWxpZGF0b3IsIG11bHRpOiB0cnVlfVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIEVsZGVyUXVhbnRpdHlSYW5nZVZhbGlkYXRvciBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIF9taW46IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWF4OiBudW1iZXI7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLy8gVE9ETyBNYXliZSBzdXBwb3J0IG1pblF1YW50aXR5IC8gbWF4UXVhbnRpdHlcblxuICAvKipcbiAgICogTWluaW11bSBudW1iZXIgYWxsb3dlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWluKHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgIHRoaXMuX21pbiA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWluKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXhpbXVtIG51bWJlciBhbGxvd2VkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtYXgodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5fbWF4ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBtYXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4O1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBhbnkge1xuXG4gICAgbGV0IHJlc3VsdCA9IHt9O1xuICAgIGNvbnN0IHF0eSA9IGMudmFsdWUgYXMgUXVhbnRpdHk7XG5cbiAgICBpZiAodGhpcy5fbWluICE9IG51bGwgJiYgIXRoaXMuaXNBdExlYXN0KHF0eSwgdGhpcy5fbWluKSkge1xuICAgICAgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbihyZXN1bHQsIHttaW46IHttaW46IHRoaXMuX21pbiwgYWN0dWFsOiBxdHk/LnZhbHVlfX0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbWF4ICE9IG51bGwgJiYgIXRoaXMuaXNBdE1vc3QocXR5LCB0aGlzLl9tYXgpKSB7XG4gICAgICByZXN1bHQgPSBPYmplY3QuYXNzaWduKHJlc3VsdCwge21heDoge21heDogdGhpcy5fbWF4LCBhY3R1YWw6IHF0eT8udmFsdWV9fSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgaXNBdExlYXN0KHF1YW50aXR5OiBRdWFudGl0eSwgbWluVmFsdWU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBxdWFudGl0eT8udmFsdWUgPj0gbWluVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGlzQXRNb3N0KHF1YW50aXR5OiBRdWFudGl0eSwgbWF4VmFsdWU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBxdWFudGl0eT8udmFsdWUgPD0gbWF4VmFsdWU7XG4gIH1cbn1cbiJdfQ==
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHktcmFuZ2UudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9tZWFzdXJlcy9xdWFudGl0eS1pbnB1dC92YWxpZGF0aW9uL2VsZGVyLXF1YW50aXR5LXJhbmdlLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDcEQsT0FBTyxFQUFtQixhQUFhLEVBQStCLE1BQU0sZ0JBQWdCLENBQUE7QUFFNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFlLE1BQU0sdUJBQXVCLENBQUE7O0FBVXpFLGtFQUFrRTtBQUNsRSxNQUFNLE9BQU8sMkJBQTJCO0lBVHhDO1FBVUU7Ozs7b0ZBSTRFO1FBRTNELFFBQUcsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7S0FzRXRFO0lBakVDOzs7O2dGQUk0RTtJQUU1RSwrQ0FBK0M7SUFFL0M7O09BRUc7SUFDSCxJQUNXLEdBQUcsQ0FBQyxLQUFrQjtRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUE7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDVyxHQUFHLENBQUMsS0FBa0I7UUFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBRUQsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBO0lBQ2xCLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsUUFBUSxDQUFDLENBQWtCO1FBQ2hDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUNmLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFpQixDQUFBO1FBRS9CLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN6RCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNqRixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hELE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ2pGLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFcEUsU0FBUyxDQUFDLFFBQWtCLEVBQUUsUUFBZ0I7UUFDcEQsT0FBTyxRQUFRLEVBQUUsS0FBSyxJQUFJLFFBQVEsQ0FBQTtJQUNwQyxDQUFDO0lBRU8sUUFBUSxDQUFDLFFBQWtCLEVBQUUsUUFBZ0I7UUFDbkQsT0FBTyxRQUFRLEVBQUUsS0FBSyxJQUFJLFFBQVEsQ0FBQTtJQUNwQyxDQUFDOzhHQTVFVSwyQkFBMkI7a0dBQTNCLDJCQUEyQiw0VEFKM0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzs7MkZBSW5GLDJCQUEyQjtrQkFUdkMsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFDTix1SEFBdUg7d0JBQ3ZILHNIQUFzSDtvQkFDeEgsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsNkJBQTZCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO29CQUM5RixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBMEJZLEdBQUc7c0JBRGIsS0FBSztnQkFhSyxHQUFHO3NCQURiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IExvZ2dlckZhY3RvcnkgfSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcidcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTkdfVkFMSURBVE9SUywgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBRdWFudGl0eSB9IGZyb20gJy4uLy4uL21vZGVsL3F1YW50aXR5J1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHksIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6XG4gICAgJ2VsZGVyLXF1YW50aXR5LWlucHV0W21pbl1bZm9ybUNvbnRyb2xdLGVsZGVyLXF1YW50aXR5LWlucHV0W21pbl1bZm9ybUNvbnRyb2xOYW1lXSxlbGRlci1xdWFudGl0eS1pbnB1dFttaW5dW25nTW9kZWxdLCcgK1xuICAgICdlbGRlci1xdWFudGl0eS1pbnB1dFttYXhdW2Zvcm1Db250cm9sXSxlbGRlci1xdWFudGl0eS1pbnB1dFttYXhdW2Zvcm1Db250cm9sTmFtZV0sZWxkZXItcXVhbnRpdHktaW5wdXRbbWF4XVtuZ01vZGVsXScsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IEVsZGVyUXVhbnRpdHlSYW5nZVZhbGlkYXRvciwgbXVsdGk6IHRydWUgfV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgRWxkZXJRdWFudGl0eVJhbmdlVmFsaWRhdG9yIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG5cbiAgcHJpdmF0ZSBfbWluOiBudW1iZXJcbiAgcHJpdmF0ZSBfbWF4OiBudW1iZXJcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvLyBUT0RPIE1heWJlIHN1cHBvcnQgbWluUXVhbnRpdHkgLyBtYXhRdWFudGl0eVxuXG4gIC8qKlxuICAgKiBNaW5pbXVtIG51bWJlciBhbGxvd2VkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtaW4odmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5fbWluID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpXG4gIH1cblxuICBwdWJsaWMgZ2V0IG1pbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9taW5cbiAgfVxuXG4gIC8qKlxuICAgKiBNYXhpbXVtIG51bWJlciBhbGxvd2VkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtYXgodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5fbWF4ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpXG4gIH1cblxuICBwdWJsaWMgZ2V0IG1heCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXhcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgYW55IHtcbiAgICBsZXQgcmVzdWx0ID0ge31cbiAgICBjb25zdCBxdHkgPSBjLnZhbHVlIGFzIFF1YW50aXR5XG5cbiAgICBpZiAodGhpcy5fbWluICE9IG51bGwgJiYgIXRoaXMuaXNBdExlYXN0KHF0eSwgdGhpcy5fbWluKSkge1xuICAgICAgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbihyZXN1bHQsIHsgbWluOiB7IG1pbjogdGhpcy5fbWluLCBhY3R1YWw6IHF0eT8udmFsdWUgfSB9KVxuICAgIH1cbiAgICBpZiAodGhpcy5fbWF4ICE9IG51bGwgJiYgIXRoaXMuaXNBdE1vc3QocXR5LCB0aGlzLl9tYXgpKSB7XG4gICAgICByZXN1bHQgPSBPYmplY3QuYXNzaWduKHJlc3VsdCwgeyBtYXg6IHsgbWF4OiB0aGlzLl9tYXgsIGFjdHVhbDogcXR5Py52YWx1ZSB9IH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBpc0F0TGVhc3QocXVhbnRpdHk6IFF1YW50aXR5LCBtaW5WYWx1ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHF1YW50aXR5Py52YWx1ZSA+PSBtaW5WYWx1ZVxuICB9XG5cbiAgcHJpdmF0ZSBpc0F0TW9zdChxdWFudGl0eTogUXVhbnRpdHksIG1heFZhbHVlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcXVhbnRpdHk/LnZhbHVlIDw9IG1heFZhbHVlXG4gIH1cbn1cbiJdfQ==
@@ -55,23 +55,19 @@ export class ElderRequiredQuantityValidator {
55
55
  return false;
56
56
  }
57
57
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderRequiredQuantityValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
58
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: ElderRequiredQuantityValidator, isStandalone: true, selector: "elder-quantity-input[required][formControl],elder-quantity-input[required][formControlName],elder-quantity-input[required][ngModel]", inputs: { requiredIgnoreZero: "requiredIgnoreZero", required: "required" }, providers: [
59
- { provide: NG_VALIDATORS, useExisting: ElderRequiredQuantityValidator, multi: true }
60
- ], ngImport: i0 }); }
58
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: ElderRequiredQuantityValidator, isStandalone: true, selector: "elder-quantity-input[required][formControl],elder-quantity-input[required][formControlName],elder-quantity-input[required][ngModel]", inputs: { requiredIgnoreZero: "requiredIgnoreZero", required: "required" }, providers: [{ provide: NG_VALIDATORS, useExisting: ElderRequiredQuantityValidator, multi: true }], ngImport: i0 }); }
61
59
  }
62
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderRequiredQuantityValidator, decorators: [{
63
61
  type: Directive,
64
62
  args: [{
65
63
  // eslint-disable-next-line @angular-eslint/directive-selector
66
64
  selector: 'elder-quantity-input[required][formControl],elder-quantity-input[required][formControlName],elder-quantity-input[required][ngModel]',
67
- providers: [
68
- { provide: NG_VALIDATORS, useExisting: ElderRequiredQuantityValidator, multi: true }
69
- ],
70
- standalone: true
65
+ providers: [{ provide: NG_VALIDATORS, useExisting: ElderRequiredQuantityValidator, multi: true }],
66
+ standalone: true,
71
67
  }]
72
68
  }], propDecorators: { requiredIgnoreZero: [{
73
69
  type: Input
74
70
  }], required: [{
75
71
  type: Input
76
72
  }] } });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcmVxdWlyZWQtcXVhbnRpdHkudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9tZWFzdXJlcy9xdWFudGl0eS1pbnB1dC92YWxpZGF0aW9uL2VsZGVyLXJlcXVpcmVkLXF1YW50aXR5LnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQWtCLGFBQWEsRUFBOEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFlLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7O0FBVzFFLE1BQU0sT0FBTyw4QkFBOEI7SUFSM0M7UUFVRTs7OztvRkFJNEU7UUFFM0QsUUFBRyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUc5RCx3QkFBbUIsR0FBWSxLQUFLLENBQUM7S0F3RDlDO0lBdERDOzs7O2dGQUk0RTtJQUU1RSxJQUNXLGtCQUFrQixDQUFDLEtBQW1CO1FBQy9DLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQ1csUUFBUSxDQUFDLEtBQW1CO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVyRSxRQUFRLENBQUMsQ0FBa0I7UUFFaEMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWhCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBQyxRQUFRLEVBQUUsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCx3RkFBd0Y7UUFDeEYsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVwRSxpQkFBaUIsQ0FBQyxHQUFhO1FBQ3JDLElBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUMsQ0FBQztZQUMxQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzhHQWpFVSw4QkFBOEI7a0dBQTlCLDhCQUE4Qiw4UEFMNUI7WUFDUCxFQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLDhCQUE4QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7U0FDckY7OzJGQUdRLDhCQUE4QjtrQkFSMUMsU0FBUzttQkFBQztvQkFDUCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxxSUFBcUk7b0JBQy9JLFNBQVMsRUFBRTt3QkFDUCxFQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxnQ0FBZ0MsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO3FCQUNyRjtvQkFDRCxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBcUJZLGtCQUFrQjtzQkFENUIsS0FBSztnQkFVSyxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBOR19WQUxJREFUT1JTLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7UXVhbnRpdHl9IGZyb20gJy4uLy4uL21vZGVsL3F1YW50aXR5JztcblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2VsZGVyLXF1YW50aXR5LWlucHV0W3JlcXVpcmVkXVtmb3JtQ29udHJvbF0sZWxkZXItcXVhbnRpdHktaW5wdXRbcmVxdWlyZWRdW2Zvcm1Db250cm9sTmFtZV0sZWxkZXItcXVhbnRpdHktaW5wdXRbcmVxdWlyZWRdW25nTW9kZWxdJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge3Byb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBFbGRlclJlcXVpcmVkUXVhbnRpdHlWYWxpZGF0b3IsIG11bHRpOiB0cnVlfVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBFbGRlclJlcXVpcmVkUXVhbnRpdHlWYWxpZGF0b3IgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfcmVxdWlyZWRJZ25vcmVaZXJvOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCByZXF1aXJlZElnbm9yZVplcm8odmFsdWU6IEJvb2xlYW5JbnB1dCl7XG4gICAgdGhpcy5fcmVxdWlyZWRJZ25vcmVaZXJvID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVxdWlyZWRJZ25vcmVaZXJvKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZElnbm9yZVplcm87XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHJlcXVpcmVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgYW55IHtcblxuICAgIGxldCByZXN1bHQgPSB7fTtcblxuICAgIGlmICh0aGlzLnJlcXVpcmVkICYmICF0aGlzLmlzUXVhbnRpdHlEZWZpbmVkKGMudmFsdWUpKSB7XG4gICAgICByZXN1bHQgPSBPYmplY3QuYXNzaWduKHJlc3VsdCwge3JlcXVpcmVkOiB7dmFsaWQ6IGZhbHNlfX0pO1xuICAgIH1cbiAgICAvLyB0aGlzLmxvZy5pbmZvKCdcIicgKyBjLnZhbHVlICsgJ1wiIC0tPiB2YWxpZGF0ZSByZXN1bHQ6ICcgKyBKU09OLnN0cmluZ2lmeShyZXN1bHQpLCBjKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBpc1F1YW50aXR5RGVmaW5lZChxdHk6IFF1YW50aXR5KTogYm9vbGVhbiB7XG4gICAgaWYocXR5Py52YWx1ZSAhPSBudWxsICYmIHF0eT8udW5pdCAhPSBudWxsKXtcbiAgICAgIHJldHVybiAhKHRoaXMuX3JlcXVpcmVkSWdub3JlWmVybyAmJiBxdHkudmFsdWUgPT09IDApO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxufVxuIl19
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcmVxdWlyZWQtcXVhbnRpdHkudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9tZWFzdXJlcy9xdWFudGl0eS1pbnB1dC92YWxpZGF0aW9uL2VsZGVyLXJlcXVpcmVkLXF1YW50aXR5LnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNoRCxPQUFPLEVBQW1CLGFBQWEsRUFBK0IsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDcEQsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFBOztBQVUzRSxNQUFNLE9BQU8sOEJBQThCO0lBUDNDO1FBUUU7Ozs7b0ZBSTRFO1FBRTNELFFBQUcsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7UUFHN0Qsd0JBQW1CLEdBQVksS0FBSyxDQUFBO0tBc0Q3QztJQXBEQzs7OztnRkFJNEU7SUFFNUUsSUFDVyxrQkFBa0IsQ0FBQyxLQUFtQjtRQUMvQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDekQsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFBO0lBQ2pDLENBQUM7SUFFRCxJQUNXLFFBQVEsQ0FBQyxLQUFtQjtRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9DLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFBO0lBQ3ZCLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsUUFBUSxDQUFDLENBQWtCO1FBQ2hDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUVmLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ2hFLENBQUM7UUFDRCx3RkFBd0Y7UUFDeEYsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXBFLGlCQUFpQixDQUFDLEdBQWE7UUFDckMsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzVDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQ3ZELENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7OEdBL0RVLDhCQUE4QjtrR0FBOUIsOEJBQThCLDhQQUg5QixDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsOEJBQThCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDOzsyRkFHdEYsOEJBQThCO2tCQVAxQyxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUNOLHFJQUFxSTtvQkFDdkksU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsZ0NBQWdDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO29CQUNqRyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBb0JZLGtCQUFrQjtzQkFENUIsS0FBSztnQkFVSyxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJ1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBRdWFudGl0eSB9IGZyb20gJy4uLy4uL21vZGVsL3F1YW50aXR5J1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6XG4gICAgJ2VsZGVyLXF1YW50aXR5LWlucHV0W3JlcXVpcmVkXVtmb3JtQ29udHJvbF0sZWxkZXItcXVhbnRpdHktaW5wdXRbcmVxdWlyZWRdW2Zvcm1Db250cm9sTmFtZV0sZWxkZXItcXVhbnRpdHktaW5wdXRbcmVxdWlyZWRdW25nTW9kZWxdJyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogRWxkZXJSZXF1aXJlZFF1YW50aXR5VmFsaWRhdG9yLCBtdWx0aTogdHJ1ZSB9XSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJSZXF1aXJlZFF1YW50aXR5VmFsaWRhdG9yIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG5cbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW5cbiAgcHJpdmF0ZSBfcmVxdWlyZWRJZ25vcmVaZXJvOiBib29sZWFuID0gZmFsc2VcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHJlcXVpcmVkSWdub3JlWmVybyh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fcmVxdWlyZWRJZ25vcmVaZXJvID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKVxuICB9XG5cbiAgcHVibGljIGdldCByZXF1aXJlZElnbm9yZVplcm8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkSWdub3JlWmVyb1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCByZXF1aXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpXG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZFxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBhbnkge1xuICAgIGxldCByZXN1bHQgPSB7fVxuXG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMuaXNRdWFudGl0eURlZmluZWQoYy52YWx1ZSkpIHtcbiAgICAgIHJlc3VsdCA9IE9iamVjdC5hc3NpZ24ocmVzdWx0LCB7IHJlcXVpcmVkOiB7IHZhbGlkOiBmYWxzZSB9IH0pXG4gICAgfVxuICAgIC8vIHRoaXMubG9nLmluZm8oJ1wiJyArIGMudmFsdWUgKyAnXCIgLS0+IHZhbGlkYXRlIHJlc3VsdDogJyArIEpTT04uc3RyaW5naWZ5KHJlc3VsdCksIGMpO1xuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgaXNRdWFudGl0eURlZmluZWQocXR5OiBRdWFudGl0eSk6IGJvb2xlYW4ge1xuICAgIGlmIChxdHk/LnZhbHVlICE9IG51bGwgJiYgcXR5Py51bml0ICE9IG51bGwpIHtcbiAgICAgIHJldHVybiAhKHRoaXMuX3JlcXVpcmVkSWdub3JlWmVybyAmJiBxdHkudmFsdWUgPT09IDApXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG4iXX0=
@@ -161,10 +161,9 @@ export class ElderQuantityService {
161
161
  if (!quantities || quantities.length == 0) {
162
162
  return null;
163
163
  }
164
- const helpers = quantities
165
- .map(quantity => ({
164
+ const helpers = quantities.map((quantity) => ({
166
165
  original: quantity,
167
- baseValue: this.toBaseUnitValue(quantity)
166
+ baseValue: this.toBaseUnitValue(quantity),
168
167
  }));
169
168
  helpers.sort((a, b) => b.baseValue - a.baseValue);
170
169
  return helpers[0].original;
@@ -261,7 +260,7 @@ export class ElderQuantityService {
261
260
  if (dimensionUnits) {
262
261
  const factorSortedUnits = dimensionUnits.sort((a, b) => b.toBaseFactor - a.toBaseFactor);
263
262
  for (const unitInfo of factorSortedUnits) {
264
- const signedBaseValue = ((baseValue < 0) ? baseValue * -1 : baseValue);
263
+ const signedBaseValue = baseValue < 0 ? baseValue * -1 : baseValue;
265
264
  if (unitInfo.toBaseFactor <= signedBaseValue) {
266
265
  suitableUnit = unitInfo;
267
266
  break;
@@ -269,7 +268,13 @@ export class ElderQuantityService {
269
268
  }
270
269
  }
271
270
  else {
272
- this.logger.debug('Could not find Dimension info for ' + dimension + '. (' + quantity.unit + ' --> ' + dimension + ')');
271
+ this.logger.debug('Could not find Dimension info for ' +
272
+ dimension +
273
+ '. (' +
274
+ quantity.unit +
275
+ ' --> ' +
276
+ dimension +
277
+ ')');
273
278
  }
274
279
  if (!suitableUnit) {
275
280
  return quantity;
@@ -301,11 +306,11 @@ export class ElderQuantityService {
301
306
  return value;
302
307
  }
303
308
  static determineUserOptions(normalize, targetUnit, digitsInfo) {
304
- const userOptions = (normalize === undefined || typeof normalize === 'boolean')
309
+ const userOptions = normalize === undefined || typeof normalize === 'boolean'
305
310
  ? {
306
311
  normalize: normalize,
307
312
  targetUnit: targetUnit,
308
- digitsInfo: digitsInfo
313
+ digitsInfo: digitsInfo,
309
314
  }
310
315
  : normalize;
311
316
  if (userOptions.normalize === undefined && !userOptions.targetUnit) {
@@ -318,7 +323,7 @@ export class ElderQuantityService {
318
323
  }
319
324
  determineSuffix(userOptions, quantityToDisplay) {
320
325
  if (!userOptions.hideUnit) {
321
- return ElderQuantityService.SPACE_STRING + this.unitService.getUnitSymbol(quantityToDisplay.unit);
326
+ return (ElderQuantityService.SPACE_STRING + this.unitService.getUnitSymbol(quantityToDisplay.unit));
322
327
  }
323
328
  else {
324
329
  return '';
@@ -330,7 +335,7 @@ export class ElderQuantityService {
330
335
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderQuantityService, decorators: [{
331
336
  type: Injectable,
332
337
  args: [{
333
- providedIn: 'root'
338
+ providedIn: 'root',
334
339
  }]
335
340
  }], ctorParameters: () => [{ type: i1.ElderUnitService }] });
336
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbWVhc3VyZXMvdXRpbC9lbGRlci1xdWFudGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7QUFXN0MsTUFBTSxPQUFPLG9CQUFvQjthQVVQLGlCQUFZLEdBQVcsRUFBRSxBQUFiLENBQWM7YUFDMUIsaUJBQVksR0FBVyxHQUFHLEFBQWQsQ0FBZTthQUUzQixtQkFBYyxHQUFXLE9BQU8sQUFBbEIsQ0FBbUI7SUFLekQ7Ozs7Z0ZBSTRFO0lBRXJFLFVBQVUsQ0FBQyxNQUFnQixFQUFFLEtBQWU7UUFDakQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQzFCLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQzNCLENBQUM7SUFDSixDQUFDO0lBRU0sZ0JBQWdCLENBQ3JCLE1BQWdCLEVBQ2hCLEtBQWUsRUFDZixNQUFnQjtRQUVoQixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQ3BCLE1BQU0sQ0FBQyxJQUFJLEVBQ1gsTUFBTSxDQUFDLEtBQUssRUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUM1QyxJQUFJ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LENBQUMsY0FBYyxDQUFDO1FBQy9ELENBQUM7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRU8sZUFBZSxDQUFDLFdBQWdDLEVBQUUsaUJBQTJCO1FBQ25GLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUIsT0FBTyxvQkFBb0IsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEcsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDOzhHQW5iVSxvQkFBb0I7a0hBQXBCLG9CQUFvQixjQUZuQixNQUFNOzsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtVbml0fSBmcm9tICcuLi9tb2RlbC91bml0JztcbmltcG9ydCB7UXVhbnRpdHl9IGZyb20gJy4uL21vZGVsL3F1YW50aXR5JztcbmltcG9ydCB7VW5pdEluZm99IGZyb20gJy4uL21vZGVsL3VuaXQtcmVnaXN0cnknO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RWxkZXJVbml0U2VydmljZX0gZnJvbSAnLi4vZWxkZXItdW5pdC5zZXJ2aWNlJztcbmltcG9ydCB7RGltZW5zaW9uc30gZnJvbSAnLi4vbW9kZWwvZGltZW5zaW9ucyc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7Zm9ybWF0TnVtYmVyfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtRdWFudGl0eVBpcGVPcHRpb25zfSBmcm9tICcuLi9lbGRlci1xdWFudGl0eS5waXBlJztcblxuaW50ZXJmYWNlIFF1YW50aXR5V2l0aEJhc2VWYWx1ZSB7XG4gIG9yaWdpbmFsOiBRdWFudGl0eTtcbiAgYmFzZVZhbHVlOiBudW1iZXI7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyUXVhbnRpdHlTZXJ2aWNlIHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRU1QVFlfU1RSSU5HOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgU1BBQ0VfU1RSSU5HOiBzdHJpbmcgPSAnICc7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9ESUdJVFM6IHN0cmluZyA9ICcxLjAtMSc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBRVUFOVElUWV9DQUNIRV9TSVpFID0gNTAwO1xuICBwcml2YXRlIHJlYWRvbmx5IFFVQU5USVRZX0NBQ0hFID0gbmV3IE1hcDxzdHJpbmcsIFF1YW50aXR5PigpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBCdWlsZGVyIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBjcmVhdGVBcmVhKGxlbmd0aDogUXVhbnRpdHksIHdpZHRoOiBRdWFudGl0eSk6IERpbWVuc2lvbnMge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZURpbWVuc2lvbnMoXG4gICAgICBsZW5ndGgsXG4gICAgICB3aWR0aCxcbiAgICAgIFF1YW50aXR5Lnplcm8obGVuZ3RoLnVuaXQpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVEaW1lbnNpb25zKFxuICAgIGxlbmd0aDogUXVhbnRpdHksXG4gICAgd2lkdGg6IFF1YW50aXR5LFxuICAgIGhlaWdodDogUXVhbnRpdHlcbiAgKTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbShcbiAgICAgIGxlbmd0aC51bml0LFxuICAgICAgbGVuZ3RoLnZhbHVlLFxuICAgICAgdGhpcy5jb252ZXJ0VG9Vbml0KHdpZHRoLCBsZW5ndGgudW5pdCkudmFsdWUsXG4gICAgICB0aGlzLmNvbnZlcnRUb1VuaXQoaGVpZ2h0LCBsZW5ndGgudW5pdCkudmFsdWVcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBjb3B5IG9mIHRoZSBtYXhpbXVtIChsb25nZXN0KSBlZGdlIG9mIHRoZSBkaW1lbnNpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gZGltZW5zaW9uc1xuICAgKi9cbiAgcHVibGljIGdldE1heEVkZ2UoZGltZW5zaW9uczogRGltZW5zaW9ucyk6IFF1YW50aXR5IHtcbiAgICBpZiAoIWRpbWVuc2lvbnMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgICAgZGltZW5zaW9ucy51bml0LFxuICAgICAgICBNYXRoLm1heChkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNpb25zLmxlbmd0aCwgZGltZW5zaW9ucy5oZWlnaHQpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdW5pdFNlcnZpY2U6IEVsZGVyVW5pdFNlcnZpY2VcbiAgKSB7XG4gIH1cblxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyB3aXRoVW5pdChxdWFudGl0eTogUXVhbnRpdHksIHVuaXQ6IFVuaXQpIHtcbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbSh1bml0LCBxdWFudGl0eS52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgd2l0aFZhbHVlKHF1YW50aXR5OiBRdWFudGl0eSwgdmFsdWU6IG51bWJlcikge1xuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKHF1YW50aXR5LnVuaXQsIHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWNoZUxvb2t1cChsb29rdXA6IFF1YW50aXR5KTogUXVhbnRpdHkge1xuICAgIHJldHVybiB0aGlzLlFVQU5USVRZX0NBQ0hFLmdldCh0aGlzLmdldFF1YW50aXR5SWRlbnRpZmllcihsb29rdXApKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWNoZVVwZGF0ZShrZXk6IFF1YW50aXR5LCB2YWx1ZTogUXVhbnRpdHkpIHtcbiAgICBpZiAodGhpcy5RVUFOVElUWV9DQUNIRS5zaXplID49IHRoaXMuUVVBTlRJVFlfQ0FDSEVfU0laRSkge1xuICAgICAgdGhpcy5RVUFOVElUWV9DQUNIRS5jbGVhcigpO1xuICAgIH1cbiAgICB0aGlzLlFVQU5USVRZX0NBQ0hFLnNldCh0aGlzLmdldFF1YW50aXR5SWRlbnRpZmllcihrZXkpLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogTXVsdGlwbGllcyBhIHF1YW50aXR5IHdpdGggYSBtdWx0aXBsaWVyIGFuZCByZXR1cm5zIGEgcXVhbnRpdHkuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpICogMyA9IFF1YW50aXR5KDMwMDAwLCdnJylcbiAgICpcbiAgICogQHBhcmFtIHF1YW50aXR5XG4gICAqIEBwYXJhbSBtdWx0aXBsaWVyXG4gICAqL1xuXG4gIHB1YmxpYyBtdWx0aXBseShxdWFudGl0eTogUXVhbnRpdHksIG11bHRpcGxpZXI6IG51bWJlcik6IFF1YW50aXR5IHtcblxuICAgIGlmICghcXVhbnRpdHkgfHwgIW11bHRpcGxpZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgIHF1YW50aXR5LnVuaXQsXG4gICAgICBxdWFudGl0eS52YWx1ZSAqIG11bHRpcGxpZXJcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIERpdmlkZXMgYSBxdWFudGl0eSBieSBhbm90aGVyIHF1YW50aXR5IGFuZCByZXR1cm5zIGEgc2NhbGFyLlxuICAgKlxuICAgKiBFeGFtcGxlczpcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgLyBRdWFudGl0eSg1LCdrZycpID0gMlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSAvIFF1YW50aXR5KDUsJ2cnKSA9IDIwMDBcbiAgICpcbiAgICogQHBhcmFtIGRpdmlkZW5kXG4gICAqIEBwYXJhbSBkaXZpc29yXG4gICAqL1xuICBwdWJsaWMgZGl2aWRlQnlRdWFudGl0eShkaXZpZGVuZDogUXVhbnRpdHksIGRpdmlzb3I6IFF1YW50aXR5KTogbnVtYmVyIHtcblxuICAgIGlmICghZGl2aWRlbmQgfHwgIWRpdmlzb3IpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBkaXZpZGVuZE5vcm1hbCA9ICB0aGlzLnRvQmFzZVVuaXRWYWx1ZShkaXZpZGVuZCk7XG4gICAgY29uc3QgZGl2aXNvck5vcm1hbCA9ICB0aGlzLnRvQmFzZVVuaXRWYWx1ZShkaXZpc29yKTtcbiAgICByZXR1cm4gZGl2aWRlbmROb3JtYWwgLyBkaXZpc29yTm9ybWFsO1xuICB9XG5cblxuICAvKipcbiAgICogU3VtcyB1cCBRdWFudGl0aWVzIGFuZCByZXR1cm5zIGEgUXVhbnRpdHkuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpICsgUXVhbnRpdHkoNSwna2cnKSArIFF1YW50aXR5KDUsJ2cnKSA9IFF1YW50aXR5KDE1MDA1LCAnZycpXG4gICAqXG4gICAqIEBwYXJhbSBxdWFudGl0aWVzXG4gICAqL1xuICBwdWJsaWMgc3VtKHF1YW50aXRpZXM6IFF1YW50aXR5W10pOiBRdWFudGl0eSB7XG4gICAgaWYgKCFxdWFudGl0aWVzIHx8IHF1YW50aXRpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRVbml0ID0gcXVhbnRpdGllc1swXS51bml0O1xuXG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20oXG4gICAgICB0YXJnZXRVbml0LFxuICAgICAgcXVhbnRpdGllcy5yZWR1Y2UoXG4gICAgICAgICh0b3RhbCwgYWRkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRvdGFsICsgdGhpcy5jb252ZXJ0VG9Vbml0KGFkZCwgdGFyZ2V0VW5pdCkudmFsdWU7XG4gICAgICAgIH0sIDBcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnRyYWN0cyBhIHF1YW50aXR5IGZyb20gYW5vdGhlciBxdWFudGl0eSBhbmQgcmV0dXJucyBhIHF1YW50aXR5LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSAtIFF1YW50aXR5KDUsJ2cnKSA9IFF1YW50aXR5KDk5OTUsICdnJylcbiAgICpcbiAgICogQHBhcmFtIG1pbnVlbmRcbiAgICogQHBhcmFtIHN1YnRyYWhlbmRcbiAgICovXG4gIHB1YmxpYyBzdWJ0cmFjdChtaW51ZW5kOiBRdWFudGl0eSwgc3VidHJhaGVuZDogUXVhbnRpdHkpOiBRdWFudGl0eSB7XG4gICAgaWYgKCFtaW51ZW5kIHx8ICFzdWJ0cmFoZW5kKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20oXG4gICAgICBtaW51ZW5kLnVuaXQsXG4gICAgICBtaW51ZW5kLnZhbHVlIC0gdGhpcy5jb252ZXJ0VG9Vbml0KHN1YnRyYWhlbmQsIG1pbnVlbmQudW5pdCkudmFsdWVcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnRyYWN0cyBhIHF1YW50aXR5IGZyb20gYW5vdGhlciBxdWFudGl0eSBhbmQgcmV0dXJucyBhIHF1YW50aXR5LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSArIFF1YW50aXR5KDUwMCwnZycpID0gUXVhbnRpdHkoMTAuNSwgJ2tnJylcbiAgICpcbiAgICogQHBhcmFtIGxlZnRcbiAgICogQHBhcmFtIHJpZ2h0XG4gICAqL1xuICBwdWJsaWMgYWRkKGxlZnQ6IFF1YW50aXR5LCByaWdodDogUXVhbnRpdHkpOiBRdWFudGl0eSB7XG4gICAgaWYgKCFsZWZ0IHx8ICFyaWdodCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgbGVmdC51bml0LFxuICAgICAgbGVmdC52YWx1ZSAtIHRoaXMuY29udmVydFRvVW5pdChyaWdodCwgbGVmdC51bml0KS52YWx1ZVxuICAgICk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBtYXggcXVhbnRpdHkgb2YgYW4gYXJyYXkgb2YgcXVhbnRpdGllcy5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogUXVhbnRpdHkoMTAsICdtJyksIFF1YW50aXR5KDI1MDAsICdjbScpLCBRdWFudGl0eSgwLjAwMywgJ2ttJykgPSBRdWFudGl0eSgyNTAwLCAnY20nKVxuICAgKlxuICAgKiBAcGFyYW0gcXVhbnRpdGllc1xuICAgKi9cblxuICBwdWJsaWMgbWF4KHF1YW50aXRpZXM6IFF1YW50aXR5W10pOiBRdWFudGl0eSB7XG5cbiAgICBpZiAoIXF1YW50aXRpZXMgfHwgcXVhbnRpdGllcy5sZW5ndGggPT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgaGVscGVycyA9IHF1YW50aXRpZXNcbiAgICAgIC5tYXAocXVhbnRpdHkgPT4gPFF1YW50aXR5V2l0aEJhc2VWYWx1ZT57XG4gICAgICAgIG9yaWdpbmFsOiBxdWFudGl0eSxcbiAgICAgICAgYmFzZVZhbHVlOiB0aGlzLnRvQmFzZVVuaXRWYWx1ZShxdWFudGl0eSlcbiAgICAgIH0pO1xuXG4gICAgaGVscGVycy5zb3J0KChhLCBiKSA9PiBiLmJhc2VWYWx1ZSAtIGEuYmFzZVZhbHVlKTtcblxuICAgIHJldHVybiBoZWxwZXJzWzBdLm9yaWdpbmFsO1xuICB9XG5cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhIHF1YW50aXR5IHRvIGFub3RoZXIgcXVhbnRpdHkgb2YgdGhlIHNhbWUgZGltZW5zaW9uIGJ5IHRhcmdldC1TSVxuICAgKlxuICAgKiBAcGFyYW0gcXVhbnRpdHlcbiAgICogQHBhcmFtIHRhcmdldFVuaXRcbiAgICovXG4gIHB1YmxpYyBjb252ZXJ0VG9Vbml0KHF1YW50aXR5OiBRdWFudGl0eSwgdGFyZ2V0VW5pdDogVW5pdCk6IFF1YW50aXR5IHtcbiAgICBpZiAoIXF1YW50aXR5IHx8ICF0YXJnZXRVbml0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAocXVhbnRpdHkudW5pdCA9PT0gdGFyZ2V0VW5pdCkge1xuICAgICAgcmV0dXJuIFF1YW50aXR5LmZyb20ocXVhbnRpdHkudW5pdCwgcXVhbnRpdHkudmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldEJhc2VGYWN0b3IgPSB0aGlzLnVuaXRTZXJ2aWNlLmdldFRvQmFzZUZhY3Rvcih0YXJnZXRVbml0KTtcblxuICAgIGlmICh0YXJnZXRCYXNlRmFjdG9yID4gMCkge1xuICAgICAgcmV0dXJuIFF1YW50aXR5LmZyb20oXG4gICAgICAgIHRhcmdldFVuaXQsXG4gICAgICAgIHRoaXMudG9CYXNlVW5pdFZhbHVlKHF1YW50aXR5KSAvIHRhcmdldEJhc2VGYWN0b3JcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBjb252ZXJ0IHF1YW50aXR5IHRvIHRhcmdldCB1bml0OicgKyB0YXJnZXRVbml0ICsgJy4gUXVhbnRpdHk6ICcsIHF1YW50aXR5KTtcbiAgICAgIHJldHVybiBxdWFudGl0eTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9CYXNlVW5pdFZhbHVlKHF1YW50aXR5OiBRdWFudGl0eSk6IG51bWJlciB7XG4gICAgY29uc3QgdGFyZ2V0QmFzZUZhY3RvciA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VG9CYXNlRmFjdG9yKHF1YW50aXR5LnVuaXQpO1xuICAgIHJldHVybiBxdWFudGl0eS52YWx1ZSAqIHRhcmdldEJhc2VGYWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHF1YW50aXR5IGluIGEgbm9ybWFsaXplZCBmb3JtLlxuICAgKiBBIGNhY2hlIGlzIHVzZWQgdG8gcmVkdWNlIGNhbGN1bGF0aW9ucy5cbiAgICpcbiAgICogODUwMCBrZyAtPiA4LjUgdFxuICAgKiA5MDAwMDAwIG1tIC0+IDkga21cbiAgICogMTIxNSBtIC0+IDEuMiBrbVxuICAgKlxuICAgKiBAcGFyYW0gcXVhbnRpdHlcbiAgICovXG4gIHB1YmxpYyBub3JtYWxpemUocXVhbnRpdHk6IFF1YW50aXR5KTogUXVhbnRpdHkge1xuXG4gICAgLy8gQ2hlY2sgY2FjaGVcbiAgICBjb25zdCBjYWNoZWRJdGVtID0gdGhpcy5jYWNoZUxvb2t1cChxdWFudGl0eSk7XG5cbiAgICAvLyBWYWx1ZSBpcyBpbiBjYWNoZVxuICAgIGlmIChjYWNoZWRJdGVtKSB7XG4gICAgICByZXR1cm4gY2FjaGVkSXRlbTtcbiAgICB9IGVsc2Uge1xuXG4gICAgICBjb25zdCB0YXJnZXRRdWFudGl0eSA9IHRoaXMubm9ybWFsaXplSW50ZXJuYWwocXVhbnRpdHkpO1xuXG4gICAgICAvLyBVcGRhdGUgY2FjaGVcbiAgICAgIHRoaXMuY2FjaGVVcGRhdGUocXVhbnRpdHksIHRhcmdldFF1YW50aXR5KTtcblxuICAgICAgcmV0dXJuIHRhcmdldFF1YW50aXR5O1xuXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRyYW5zZm9ybVF1YW50aXR5KFxuICAgIHF1YW50aXR5OiBRdWFudGl0eSxcbiAgICBub3JtYWxpemU6IGJvb2xlYW4gPSB0cnVlLFxuICAgIHRhcmdldFVuaXQ/OiBVbml0IHwgc3RyaW5nXG4gICk6IFF1YW50aXR5IHtcblxuICAgIGlmICghcXVhbnRpdHkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemUpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vcm1hbGl6ZShxdWFudGl0eSk7XG4gICAgfSBlbHNlIGlmICh0YXJnZXRVbml0KSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9Vbml0KHF1YW50aXR5LCA8VW5pdD50YXJnZXRVbml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHF1YW50aXR5O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRRdWFudGl0eShcbiAgICBxdWFudGl0eTogUXVhbnRpdHkgfCB1bmRlZmluZWQsXG4gICAgbG9jYWxlOiBzdHJpbmcsXG4gICAgbm9ybWFsaXplPzogYm9vbGVhbiB8IFF1YW50aXR5UGlwZU9wdGlvbnMsXG4gICAgdGFyZ2V0VW5pdD86IFVuaXQgfCBzdHJpbmcsXG4gICAgZGlnaXRzSW5mbz86IHN0cmluZ1xuICApOiBzdHJpbmcge1xuICAgIGRpZ2l0c0luZm8gfHw9IEVsZGVyUXVhbnRpdHlTZXJ2aWNlLkRFRkFVTFRfRElHSVRTO1xuXG4gICAgaWYgKCFxdWFudGl0eSkge1xuICAgICAgcmV0dXJuIEVsZGVyUXVhbnRpdHlTZXJ2aWNlLkVNUFRZX1NUUklORztcbiAgICB9XG4gICAgY29uc3QgdXNlck9wdGlvbnMgPSBFbGRlclF1YW50aXR5U2VydmljZS5kZXRlcm1pbmVVc2VyT3B0aW9ucyhub3JtYWxpemUsIHRhcmdldFVuaXQsIGRpZ2l0c0luZm8pO1xuXG4gICAgY29uc3QgcXVhbnRpdHlUb0Rpc3BsYXk6IFF1YW50aXR5ID0gdGhpcy50cmFuc2Zvcm1RdWFudGl0eShcbiAgICAgIHF1YW50aXR5LFxuICAgICAgdXNlck9wdGlvbnMubm9ybWFsaXplLFxuICAgICAgdXNlck9wdGlvbnMudGFyZ2V0VW5pdFxuICAgICk7XG4gICAgY29uc3QgbnVtYmVyID0gdGhpcy5zdHJUb051bWJlcihxdWFudGl0eVRvRGlzcGxheS52YWx1ZSk7XG4gICAgY29uc3Qgc3VmZml4ID0gdGhpcy5kZXRlcm1pbmVTdWZmaXgodXNlck9wdGlvbnMsIHF1YW50aXR5VG9EaXNwbGF5KTtcbiAgICByZXR1cm4gZm9ybWF0TnVtYmVyKG51bWJlciwgbG9jYWxlLCB1c2VyT3B0aW9ucy5kaWdpdHNJbmZvKSArIHN1ZmZpeDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgbm9ybWFsaXplSW50ZXJuYWwocXVhbnRpdHk6IFF1YW50aXR5KTogUXVhbnRpdHkge1xuXG4gICAgLy8gR2l2ZW4gcXVhbnRpdHkgdmFsdWUgaW4gYmFzZSB1bml0XG5cbiAgICBjb25zdCBkaW1lbnNpb24gPSB0aGlzLnVuaXRTZXJ2aWNlLmdldFVuaXREaW1lbnNpb24ocXVhbnRpdHkudW5pdCk7XG5cbiAgICBpZiAoIWRpbWVuc2lvbikgeyByZXR1cm4gcXVhbnRpdHk7IH1cblxuICAgIGNvbnN0IGJhc2VWYWx1ZSA9IHRoaXMudG9CYXNlVW5pdFZhbHVlKHF1YW50aXR5KTtcblxuICAgIGxldCBzdWl0YWJsZVVuaXQ6IFVuaXRJbmZvO1xuXG4gICAgY29uc3QgZGltZW5zaW9uVW5pdHMgPSB0aGlzLnVuaXRTZXJ2aWNlLmdldFVuaXRJbmZvc0J5RGltZW5zaW9uKGRpbWVuc2lvbik7XG5cbiAgICBpZiAoZGltZW5zaW9uVW5pdHMpIHtcblxuICAgICAgY29uc3QgZmFjdG9yU29ydGVkVW5pdHMgPSBkaW1lbnNpb25Vbml0cy5zb3J0KChhLCBiKSA9PiBiLnRvQmFzZUZhY3RvciAtIGEudG9CYXNlRmFjdG9yKTtcblxuICAgICAgZm9yIChjb25zdCB1bml0SW5mbyBvZiBmYWN0b3JTb3J0ZWRVbml0cykge1xuICAgICAgICBjb25zdCBzaWduZWRCYXNlVmFsdWUgPSAoKGJhc2VWYWx1ZSA8IDApID8gYmFzZVZhbHVlICogLTEgOiBiYXNlVmFsdWUpO1xuICAgICAgICBpZiAodW5pdEluZm8udG9CYXNlRmFjdG9yIDw9IHNpZ25lZEJhc2VWYWx1ZSkge1xuICAgICAgICAgIHN1aXRhYmxlVW5pdCA9IHVuaXRJbmZvO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdDb3VsZCBub3QgZmluZCBEaW1lbnNpb24gaW5mbyBmb3IgJyArIGRpbWVuc2lvbiArICcuICgnICsgcXVhbnRpdHkudW5pdCArICcgLS0+ICcgKyBkaW1lbnNpb24gKyAnKScpO1xuICAgIH1cblxuICAgIGlmICghc3VpdGFibGVVbml0KSB7XG4gICAgICByZXR1cm4gcXVhbnRpdHk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFRvQmFzZSA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VG9CYXNlRmFjdG9yKHF1YW50aXR5LnVuaXQpO1xuXG4gICAgLy8gRW5zdXJlIHdlIHByZWZlciB0aGUgaW5pdGlhbCB1bml0IGlmIHRoZSBhY3R1YWwgdmFsdWUgaXMgbm90IGFmZmVjdGVkLlxuICAgIC8vIFRoaXMgaGVscHMgdG8gYmUgY29uc2lzdGVudCBhbmQgZGlzcGxheSB0aGUgYWN0dWFsIHVuaXQgaW4gcmFyZSBjYXNlcyB3aGVuIG11bHRpcGxlIHVuaXQgYWx0ZXJuYXRpdmVzIGV4aXN0IChzYW1lIGZhY3RvcilcbiAgICBpZiAoc3VpdGFibGVVbml0LnRvQmFzZUZhY3RvciA9PT0gY3VycmVudFRvQmFzZSkge1xuICAgICAgcmV0dXJuIHF1YW50aXR5O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9Vbml0KHF1YW50aXR5LCBzdWl0YWJsZVVuaXQudW5pdCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRRdWFudGl0eUlkZW50aWZpZXIocXVhbnRpdHk6IFF1YW50aXR5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gcXVhbnRpdHkudmFsdWUgKyAnLScgKyBxdWFudGl0eS51bml0O1xuICB9XG5cblxuICAvKipcbiAgICogQWRhcHRlZCBmcm9tIEBhbmd1bGFyL2NvbW1vbiBudW1iZXJfcGlwZS50c1xuICAgKi9cbiAgcHJpdmF0ZSBzdHJUb051bWJlcih2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogbnVtYmVyIHtcbiAgICAvLyBDb252ZXJ0IHN0cmluZ3MgdG8gbnVtYmVyc1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFpc05hTihOdW1iZXIodmFsdWUpIC0gcGFyc2VGbG9hdCh2YWx1ZSkpKSB7XG4gICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt2YWx1ZX0gaXMgbm90IGEgbnVtYmVyYCk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGRldGVybWluZVVzZXJPcHRpb25zKFxuICAgIG5vcm1hbGl6ZTogYm9vbGVhbiB8IFF1YW50aXR5UGlwZU9wdGlvbnMsXG4gICAgdGFyZ2V0VW5pdDogVW5pdCB8IHN0cmluZyxcbiAgICBkaWdpdHNJbmZvOiBzdHJpbmdcbiAgKTogUXVhbnRpdHlQaXBlT3B0aW9ucyB7XG4gICAgY29uc3QgdXNlck9wdGlvbnMgPSAobm9ybWFsaXplID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIG5vcm1hbGl6ZSA9PT0gJ2Jvb2xlYW4nKVxuICAgICAgPyA8UXVhbnRpdHlQaXBlT3B0aW9ucz57XG4gICAgICAgIG5vcm1hbGl6ZTogbm9ybWFsaXplLFxuICAgICAgICB0YXJnZXRVbml0OiB0YXJnZXRVbml0LFxuICAgICAgICBkaWdpdHNJbmZvOiBkaWdpdHNJbmZvXG4gICAgICB9XG4gICAgICA6IG5vcm1hbGl6ZTtcblxuICAgIGlmICh1c2VyT3B0aW9ucy5ub3JtYWxpemUgPT09IHVuZGVmaW5lZCAmJiAhdXNlck9wdGlvbnMudGFyZ2V0VW5pdCkge1xuICAgICAgdXNlck9wdGlvbnMubm9ybWFsaXplID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodXNlck9wdGlvbnMuZGlnaXRzSW5mbyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1c2VyT3B0aW9ucy5kaWdpdHNJbmZvID0gRWxkZXJRdWFudGl0eVNlcnZpY2UuREVGQVVMVF9ESUdJVFM7XG4gICAgfVxuICAgIHJldHVybiB1c2VyT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lU3VmZml4KHVzZXJPcHRpb25zOiBRdWFudGl0eVBpcGVPcHRpb25zLCBxdWFudGl0eVRvRGlzcGxheTogUXVhbnRpdHkpIHtcbiAgICBpZiAoIXVzZXJPcHRpb25zLmhpZGVVbml0KSB7XG4gICAgICByZXR1cm4gRWxkZXJRdWFudGl0eVNlcnZpY2UuU1BBQ0VfU1RSSU5HICsgdGhpcy51bml0U2VydmljZS5nZXRVbml0U3ltYm9sKHF1YW50aXR5VG9EaXNwbGF5LnVuaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbWVhc3VyZXMvdXRpbC9lbGRlci1xdWFudGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUU1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBOzs7QUFXOUMsTUFBTSxPQUFPLG9CQUFvQjthQVNQLGlCQUFZLEdBQVcsRUFBRSxBQUFiLENBQWE7YUFDekIsaUJBQVksR0FBVyxHQUFHLEFBQWQsQ0FBYzthQUUxQixtQkFBYyxHQUFXLE9BQU8sQUFBbEIsQ0FBa0I7SUFLeEQ7Ozs7Z0ZBSTRFO0lBRXJFLFVBQVUsQ0FBQyxNQUFnQixFQUFFLEtBQWU7UUFDakQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3pFLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxNQUFnQixFQUFFLEtBQWUsRUFBRSxNQUFnQjtRQUN6RSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQ3BCLE1BQU0sQ0FBQyxJQUFJLEVBQ1gsTUFBTSxDQUFDLEtBQUssRUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUM1QyxJQUFJLENB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QUM7UUFDRCxPQUFPLFdBQVcsQ0FBQTtJQUNwQixDQUFDO0lBRU8sZUFBZSxDQUFDLFdBQWdDLEVBQUUsaUJBQTJCO1FBQ25GLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUIsT0FBTyxDQUNMLG9CQUFvQixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FDM0YsQ0FBQTtRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxFQUFFLENBQUE7UUFDWCxDQUFDO0lBQ0gsQ0FBQzs4R0FoYVUsb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7MkZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVuaXQgfSBmcm9tICcuLi9tb2RlbC91bml0J1xuaW1wb3J0IHsgUXVhbnRpdHkgfSBmcm9tICcuLi9tb2RlbC9xdWFudGl0eSdcbmltcG9ydCB7IFVuaXRJbmZvIH0gZnJvbSAnLi4vbW9kZWwvdW5pdC1yZWdpc3RyeSdcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRWxkZXJVbml0U2VydmljZSB9IGZyb20gJy4uL2VsZGVyLXVuaXQuc2VydmljZSdcbmltcG9ydCB7IERpbWVuc2lvbnMgfSBmcm9tICcuLi9tb2RlbC9kaW1lbnNpb25zJ1xuaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJ1xuaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgUXVhbnRpdHlQaXBlT3B0aW9ucyB9IGZyb20gJy4uL2VsZGVyLXF1YW50aXR5LnBpcGUnXG5cbmludGVyZmFjZSBRdWFudGl0eVdpdGhCYXNlVmFsdWUge1xuICBvcmlnaW5hbDogUXVhbnRpdHlcbiAgYmFzZVZhbHVlOiBudW1iZXJcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyUXVhbnRpdHlTZXJ2aWNlIHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRU1QVFlfU1RSSU5HOiBzdHJpbmcgPSAnJ1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBTUEFDRV9TVFJJTkc6IHN0cmluZyA9ICcgJ1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfRElHSVRTOiBzdHJpbmcgPSAnMS4wLTEnXG5cbiAgcHJpdmF0ZSByZWFkb25seSBRVUFOVElUWV9DQUNIRV9TSVpFID0gNTAwXG4gIHByaXZhdGUgcmVhZG9ubHkgUVVBTlRJVFlfQ0FDSEUgPSBuZXcgTWFwPHN0cmluZywgUXVhbnRpdHk+KClcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQnVpbGRlciBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgY3JlYXRlQXJlYShsZW5ndGg6IFF1YW50aXR5LCB3aWR0aDogUXVhbnRpdHkpOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVEaW1lbnNpb25zKGxlbmd0aCwgd2lkdGgsIFF1YW50aXR5Lnplcm8obGVuZ3RoLnVuaXQpKVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZURpbWVuc2lvbnMobGVuZ3RoOiBRdWFudGl0eSwgd2lkdGg6IFF1YW50aXR5LCBoZWlnaHQ6IFF1YW50aXR5KTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbShcbiAgICAgIGxlbmd0aC51bml0LFxuICAgICAgbGVuZ3RoLnZhbHVlLFxuICAgICAgdGhpcy5jb252ZXJ0VG9Vbml0KHdpZHRoLCBsZW5ndGgudW5pdCkudmFsdWUsXG4gICAgICB0aGlzLmNvbnZlcnRUb1VuaXQoaGVpZ2h0LCBsZW5ndGgudW5pdCkudmFsdWVcbiAgICApXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGNvcHkgb2YgdGhlIG1heGltdW0gKGxvbmdlc3QpIGVkZ2Ugb2YgdGhlIGRpbWVuc2lvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBkaW1lbnNpb25zXG4gICAqL1xuICBwdWJsaWMgZ2V0TWF4RWRnZShkaW1lbnNpb25zOiBEaW1lbnNpb25zKTogUXVhbnRpdHkge1xuICAgIGlmICghZGltZW5zaW9ucykge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFF1YW50aXR5LmZyb20oXG4gICAgICAgIGRpbWVuc2lvbnMudW5pdCxcbiAgICAgICAgTWF0aC5tYXgoZGltZW5zaW9ucy53aWR0aCwgZGltZW5zaW9ucy5sZW5ndGgsIGRpbWVuc2lvbnMuaGVpZ2h0KVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdW5pdFNlcnZpY2U6IEVsZGVyVW5pdFNlcnZpY2UpIHt9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHdpdGhVbml0KHF1YW50aXR5OiBRdWFudGl0eSwgdW5pdDogVW5pdCkge1xuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKHVuaXQsIHF1YW50aXR5LnZhbHVlKVxuICB9XG5cbiAgcHVibGljIHdpdGhWYWx1ZShxdWFudGl0eTogUXVhbnRpdHksIHZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShxdWFudGl0eS51bml0LCB2YWx1ZSlcbiAgfVxuXG4gIHB1YmxpYyBjYWNoZUxvb2t1cChsb29rdXA6IFF1YW50aXR5KTogUXVhbnRpdHkge1xuICAgIHJldHVybiB0aGlzLlFVQU5USVRZX0NBQ0hFLmdldCh0aGlzLmdldFF1YW50aXR5SWRlbnRpZmllcihsb29rdXApKVxuICB9XG5cbiAgcHVibGljIGNhY2hlVXBkYXRlKGtleTogUXVhbnRpdHksIHZhbHVlOiBRdWFudGl0eSkge1xuICAgIGlmICh0aGlzLlFVQU5USVRZX0NBQ0hFLnNpemUgPj0gdGhpcy5RVUFOVElUWV9DQUNIRV9TSVpFKSB7XG4gICAgICB0aGlzLlFVQU5USVRZX0NBQ0hFLmNsZWFyKClcbiAgICB9XG4gICAgdGhpcy5RVUFOVElUWV9DQUNIRS5zZXQodGhpcy5nZXRRdWFudGl0eUlkZW50aWZpZXIoa2V5KSwgdmFsdWUpXG4gIH1cblxuICAvKipcbiAgICogTXVsdGlwbGllcyBhIHF1YW50aXR5IHdpdGggYSBtdWx0aXBsaWVyIGFuZCByZXR1cm5zIGEgcXVhbnRpdHkuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpICogMyA9IFF1YW50aXR5KDMwMDAwLCdnJylcbiAgICpcbiAgICogQHBhcmFtIHF1YW50aXR5XG4gICAqIEBwYXJhbSBtdWx0aXBsaWVyXG4gICAqL1xuXG4gIHB1YmxpYyBtdWx0aXBseShxdWFudGl0eTogUXVhbnRpdHksIG11bHRpcGxpZXI6IG51bWJlcik6IFF1YW50aXR5IHtcbiAgICBpZiAoIXF1YW50aXR5IHx8ICFtdWx0aXBsaWVyKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShxdWFudGl0eS51bml0LCBxdWFudGl0eS52YWx1ZSAqIG11bHRpcGxpZXIpXG4gIH1cblxuICAvKipcbiAgICogRGl2aWRlcyBhIHF1YW50aXR5IGJ5IGFub3RoZXIgcXVhbnRpdHkgYW5kIHJldHVybnMgYSBzY2FsYXIuXG4gICAqXG4gICAqIEV4YW1wbGVzOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSAvIFF1YW50aXR5KDUsJ2tnJykgPSAyXG4gICAqIFF1YW50aXR5KDEwLCdrZycpIC8gUXVhbnRpdHkoNSwnZycpID0gMjAwMFxuICAgKlxuICAgKiBAcGFyYW0gZGl2aWRlbmRcbiAgICogQHBhcmFtIGRpdmlzb3JcbiAgICovXG4gIHB1YmxpYyBkaXZpZGVCeVF1YW50aXR5KGRpdmlkZW5kOiBRdWFudGl0eSwgZGl2aXNvcjogUXVhbnRpdHkpOiBudW1iZXIge1xuICAgIGlmICghZGl2aWRlbmQgfHwgIWRpdmlzb3IpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IGRpdmlkZW5kTm9ybWFsID0gdGhpcy50b0Jhc2VVbml0VmFsdWUoZGl2aWRlbmQpXG4gICAgY29uc3QgZGl2aXNvck5vcm1hbCA9IHRoaXMudG9CYXNlVW5pdFZhbHVlKGRpdmlzb3IpXG4gICAgcmV0dXJuIGRpdmlkZW5kTm9ybWFsIC8gZGl2aXNvck5vcm1hbFxuICB9XG5cbiAgLyoqXG4gICAqIFN1bXMgdXAgUXVhbnRpdGllcyBhbmQgcmV0dXJucyBhIFF1YW50aXR5LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSArIFF1YW50aXR5KDUsJ2tnJykgKyBRdWFudGl0eSg1LCdnJykgPSBRdWFudGl0eSgxNTAwNSwgJ2cnKVxuICAgKlxuICAgKiBAcGFyYW0gcXVhbnRpdGllc1xuICAgKi9cbiAgcHVibGljIHN1bShxdWFudGl0aWVzOiBRdWFudGl0eVtdKTogUXVhbnRpdHkge1xuICAgIGlmICghcXVhbnRpdGllcyB8fCBxdWFudGl0aWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRVbml0ID0gcXVhbnRpdGllc1swXS51bml0XG5cbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgIHRhcmdldFVuaXQsXG4gICAgICBxdWFudGl0aWVzLnJlZHVjZSgodG90YWwsIGFkZCkgPT4ge1xuICAgICAgICByZXR1cm4gdG90YWwgKyB0aGlzLmNvbnZlcnRUb1VuaXQoYWRkLCB0YXJnZXRVbml0KS52YWx1ZVxuICAgICAgfSwgMClcbiAgICApXG4gIH1cblxuICAvKipcbiAgICogU3VidHJhY3RzIGEgcXVhbnRpdHkgZnJvbSBhbm90aGVyIHF1YW50aXR5IGFuZCByZXR1cm5zIGEgcXVhbnRpdHkuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpIC0gUXVhbnRpdHkoNSwnZycpID0gUXVhbnRpdHkoOTk5NSwgJ2cnKVxuICAgKlxuICAgKiBAcGFyYW0gbWludWVuZFxuICAgKiBAcGFyYW0gc3VidHJhaGVuZFxuICAgKi9cbiAgcHVibGljIHN1YnRyYWN0KG1pbnVlbmQ6IFF1YW50aXR5LCBzdWJ0cmFoZW5kOiBRdWFudGl0eSk6IFF1YW50aXR5IHtcbiAgICBpZiAoIW1pbnVlbmQgfHwgIXN1YnRyYWhlbmQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgbWludWVuZC51bml0LFxuICAgICAgbWludWVuZC52YWx1ZSAtIHRoaXMuY29udmVydFRvVW5pdChzdWJ0cmFoZW5kLCBtaW51ZW5kLnVuaXQpLnZhbHVlXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFN1YnRyYWN0cyBhIHF1YW50aXR5IGZyb20gYW5vdGhlciBxdWFudGl0eSBhbmQgcmV0dXJucyBhIHF1YW50aXR5LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSArIFF1YW50aXR5KDUwMCwnZycpID0gUXVhbnRpdHkoMTAuNSwgJ2tnJylcbiAgICpcbiAgICogQHBhcmFtIGxlZnRcbiAgICogQHBhcmFtIHJpZ2h0XG4gICAqL1xuICBwdWJsaWMgYWRkKGxlZnQ6IFF1YW50aXR5LCByaWdodDogUXVhbnRpdHkpOiBRdWFudGl0eSB7XG4gICAgaWYgKCFsZWZ0IHx8ICFyaWdodCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20obGVmdC51bml0LCBsZWZ0LnZhbHVlIC0gdGhpcy5jb252ZXJ0VG9Vbml0KHJpZ2h0LCBsZWZ0LnVuaXQpLnZhbHVlKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1heCBxdWFudGl0eSBvZiBhbiBhcnJheSBvZiBxdWFudGl0aWVzLlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwgJ20nKSwgUXVhbnRpdHkoMjUwMCwgJ2NtJyksIFF1YW50aXR5KDAuMDAzLCAna20nKSA9IFF1YW50aXR5KDI1MDAsICdjbScpXG4gICAqXG4gICAqIEBwYXJhbSBxdWFudGl0aWVzXG4gICAqL1xuXG4gIHB1YmxpYyBtYXgocXVhbnRpdGllczogUXVhbnRpdHlbXSk6IFF1YW50aXR5IHtcbiAgICBpZiAoIXF1YW50aXRpZXMgfHwgcXVhbnRpdGllcy5sZW5ndGggPT0gMCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBoZWxwZXJzID0gcXVhbnRpdGllcy5tYXAoXG4gICAgICAocXVhbnRpdHkpID0+XG4gICAgICAgIDxRdWFudGl0eVdpdGhCYXNlVmFsdWU+e1xuICAgICAgICAgIG9yaWdpbmFsOiBxdWFudGl0eSxcbiAgICAgICAgICBiYXNlVmFsdWU6IHRoaXMudG9CYXNlVW5pdFZhbHVlKHF1YW50aXR5KSxcbiAgICAgICAgfVxuICAgIClcblxuICAgIGhlbHBlcnMuc29ydCgoYSwgYikgPT4gYi5iYXNlVmFsdWUgLSBhLmJhc2VWYWx1ZSlcblxuICAgIHJldHVybiBoZWxwZXJzWzBdLm9yaWdpbmFsXG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhIHF1YW50aXR5IHRvIGFub3RoZXIgcXVhbnRpdHkgb2YgdGhlIHNhbWUgZGltZW5zaW9uIGJ5IHRhcmdldC1TSVxuICAgKlxuICAgKiBAcGFyYW0gcXVhbnRpdHlcbiAgICogQHBhcmFtIHRhcmdldFVuaXRcbiAgICovXG4gIHB1YmxpYyBjb252ZXJ0VG9Vbml0KHF1YW50aXR5OiBRdWFudGl0eSwgdGFyZ2V0VW5pdDogVW5pdCk6IFF1YW50aXR5IHtcbiAgICBpZiAoIXF1YW50aXR5IHx8ICF0YXJnZXRVbml0KSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGlmIChxdWFudGl0eS51bml0ID09PSB0YXJnZXRVbml0KSB7XG4gICAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShxdWFudGl0eS51bml0LCBxdWFudGl0eS52YWx1ZSlcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRCYXNlRmFjdG9yID0gdGhpcy51bml0U2VydmljZS5nZXRUb0Jhc2VGYWN0b3IodGFyZ2V0VW5pdClcblxuICAgIGlmICh0YXJnZXRCYXNlRmFjdG9yID4gMCkge1xuICAgICAgcmV0dXJuIFF1YW50aXR5LmZyb20odGFyZ2V0VW5pdCwgdGhpcy50b0Jhc2VVbml0VmFsdWUocXVhbnRpdHkpIC8gdGFyZ2V0QmFzZUZhY3RvcilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgJ0ZhaWxlZCB0byBjb252ZXJ0IHF1YW50aXR5IHRvIHRhcmdldCB1bml0OicgKyB0YXJnZXRVbml0ICsgJy4gUXVhbnRpdHk6ICcsXG4gICAgICAgIHF1YW50aXR5XG4gICAgICApXG4gICAgICByZXR1cm4gcXVhbnRpdHlcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9CYXNlVW5pdFZhbHVlKHF1YW50aXR5OiBRdWFudGl0eSk6IG51bWJlciB7XG4gICAgY29uc3QgdGFyZ2V0QmFzZUZhY3RvciA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VG9CYXNlRmFjdG9yKHF1YW50aXR5LnVuaXQpXG4gICAgcmV0dXJuIHF1YW50aXR5LnZhbHVlICogdGFyZ2V0QmFzZUZhY3RvclxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBxdWFudGl0eSBpbiBhIG5vcm1hbGl6ZWQgZm9ybS5cbiAgICogQSBjYWNoZSBpcyB1c2VkIHRvIHJlZHVjZSBjYWxjdWxhdGlvbnMuXG4gICAqXG4gICAqIDg1MDAga2cgLT4gOC41IHRcbiAgICogOTAwMDAwMCBtbSAtPiA5IGttXG4gICAqIDEyMTUgbSAtPiAxLjIga21cbiAgICpcbiAgICogQHBhcmFtIHF1YW50aXR5XG4gICAqL1xuICBwdWJsaWMgbm9ybWFsaXplKHF1YW50aXR5OiBRdWFudGl0eSk6IFF1YW50aXR5IHtcbiAgICAvLyBDaGVjayBjYWNoZVxuICAgIGNvbnN0IGNhY2hlZEl0ZW0gPSB0aGlzLmNhY2hlTG9va3VwKHF1YW50aXR5KVxuXG4gICAgLy8gVmFsdWUgaXMgaW4gY2FjaGVcbiAgICBpZiAoY2FjaGVkSXRlbSkge1xuICAgICAgcmV0dXJuIGNhY2hlZEl0ZW1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdGFyZ2V0UXVhbnRpdHkgPSB0aGlzLm5vcm1hbGl6ZUludGVybmFsKHF1YW50aXR5KVxuXG4gICAgICAvLyBVcGRhdGUgY2FjaGVcbiAgICAgIHRoaXMuY2FjaGVVcGRhdGUocXVhbnRpdHksIHRhcmdldFF1YW50aXR5KVxuXG4gICAgICByZXR1cm4gdGFyZ2V0UXVhbnRpdHlcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdHJhbnNmb3JtUXVhbnRpdHkoXG4gICAgcXVhbnRpdHk6IFF1YW50aXR5LFxuICAgIG5vcm1hbGl6ZTogYm9vbGVhbiA9IHRydWUsXG4gICAgdGFyZ2V0VW5pdD86IFVuaXQgfCBzdHJpbmdcbiAgKTogUXVhbnRpdHkge1xuICAgIGlmICghcXVhbnRpdHkpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZSkge1xuICAgICAgcmV0dXJuIHRoaXMubm9ybWFsaXplKHF1YW50aXR5KVxuICAgIH0gZWxzZSBpZiAodGFyZ2V0VW5pdCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvVW5pdChxdWFudGl0eSwgPFVuaXQ+dGFyZ2V0VW5pdClcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHF1YW50aXR5XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvcm1hdFF1YW50aXR5KFxuICAgIHF1YW50aXR5OiBRdWFudGl0eSB8IHVuZGVmaW5lZCxcbiAgICBsb2NhbGU6IHN0cmluZyxcbiAgICBub3JtYWxpemU/OiBib29sZWFuIHwgUXVhbnRpdHlQaXBlT3B0aW9ucyxcbiAgICB0YXJnZXRVbml0PzogVW5pdCB8IHN0cmluZyxcbiAgICBkaWdpdHNJbmZvPzogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgZGlnaXRzSW5mbyB8fD0gRWxkZXJRdWFudGl0eVNlcnZpY2UuREVGQVVMVF9ESUdJVFNcblxuICAgIGlmICghcXVhbnRpdHkpIHtcbiAgICAgIHJldHVybiBFbGRlclF1YW50aXR5U2VydmljZS5FTVBUWV9TVFJJTkdcbiAgICB9XG4gICAgY29uc3QgdXNlck9wdGlvbnMgPSBFbGRlclF1YW50aXR5U2VydmljZS5kZXRlcm1pbmVVc2VyT3B0aW9ucyhub3JtYWxpemUsIHRhcmdldFVuaXQsIGRpZ2l0c0luZm8pXG5cbiAgICBjb25zdCBxdWFudGl0eVRvRGlzcGxheTogUXVhbnRpdHkgPSB0aGlzLnRyYW5zZm9ybVF1YW50aXR5KFxuICAgICAgcXVhbnRpdHksXG4gICAgICB1c2VyT3B0aW9ucy5ub3JtYWxpemUsXG4gICAgICB1c2VyT3B0aW9ucy50YXJnZXRVbml0XG4gICAgKVxuICAgIGNvbnN0IG51bWJlciA9IHRoaXMuc3RyVG9OdW1iZXIocXVhbnRpdHlUb0Rpc3BsYXkudmFsdWUpXG4gICAgY29uc3Qgc3VmZml4ID0gdGhpcy5kZXRlcm1pbmVTdWZmaXgodXNlck9wdGlvbnMsIHF1YW50aXR5VG9EaXNwbGF5KVxuICAgIHJldHVybiBmb3JtYXROdW1iZXIobnVtYmVyLCBsb2NhbGUsIHVzZXJPcHRpb25zLmRpZ2l0c0luZm8pICsgc3VmZml4XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIG5vcm1hbGl6ZUludGVybmFsKHF1YW50aXR5OiBRdWFudGl0eSk6IFF1YW50aXR5IHtcbiAgICAvLyBHaXZlbiBxdWFudGl0eSB2YWx1ZSBpbiBiYXNlIHVuaXRcblxuICAgIGNvbnN0IGRpbWVuc2lvbiA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VW5pdERpbWVuc2lvbihxdWFudGl0eS51bml0KVxuXG4gICAgaWYgKCFkaW1lbnNpb24pIHtcbiAgICAgIHJldHVybiBxdWFudGl0eVxuICAgIH1cblxuICAgIGNvbnN0IGJhc2VWYWx1ZSA9IHRoaXMudG9CYXNlVW5pdFZhbHVlKHF1YW50aXR5KVxuXG4gICAgbGV0IHN1aXRhYmxlVW5pdDogVW5pdEluZm9cblxuICAgIGNvbnN0IGRpbWVuc2lvblVuaXRzID0gdGhpcy51bml0U2VydmljZS5nZXRVbml0SW5mb3NCeURpbWVuc2lvbihkaW1lbnNpb24pXG5cbiAgICBpZiAoZGltZW5zaW9uVW5pdHMpIHtcbiAgICAgIGNvbnN0IGZhY3RvclNvcnRlZFVuaXRzID0gZGltZW5zaW9uVW5pdHMuc29ydCgoYSwgYikgPT4gYi50b0Jhc2VGYWN0b3IgLSBhLnRvQmFzZUZhY3RvcilcblxuICAgICAgZm9yIChjb25zdCB1bml0SW5mbyBvZiBmYWN0b3JTb3J0ZWRVbml0cykge1xuICAgICAgICBjb25zdCBzaWduZWRCYXNlVmFsdWUgPSBiYXNlVmFsdWUgPCAwID8gYmFzZVZhbHVlICogLTEgOiBiYXNlVmFsdWVcbiAgICAgICAgaWYgKHVuaXRJbmZvLnRvQmFzZUZhY3RvciA8PSBzaWduZWRCYXNlVmFsdWUpIHtcbiAgICAgICAgICBzdWl0YWJsZVVuaXQgPSB1bml0SW5mb1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICdDb3VsZCBub3QgZmluZCBEaW1lbnNpb24gaW5mbyBmb3IgJyArXG4gICAgICAgICAgZGltZW5zaW9uICtcbiAgICAgICAgICAnLiAoJyArXG4gICAgICAgICAgcXVhbnRpdHkudW5pdCArXG4gICAgICAgICAgJyAtLT4gJyArXG4gICAgICAgICAgZGltZW5zaW9uICtcbiAgICAgICAgICAnKSdcbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoIXN1aXRhYmxlVW5pdCkge1xuICAgICAgcmV0dXJuIHF1YW50aXR5XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFRvQmFzZSA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VG9CYXNlRmFjdG9yKHF1YW50aXR5LnVuaXQpXG5cbiAgICAvLyBFbnN1cmUgd2UgcHJlZmVyIHRoZSBpbml0aWFsIHVuaXQgaWYgdGhlIGFjdHVhbCB2YWx1ZSBpcyBub3QgYWZmZWN0ZWQuXG4gICAgLy8gVGhpcyBoZWxwcyB0byBiZSBjb25zaXN0ZW50IGFuZCBkaXNwbGF5IHRoZSBhY3R1YWwgdW5pdCBpbiByYXJlIGNhc2VzIHdoZW4gbXVsdGlwbGUgdW5pdCBhbHRlcm5hdGl2ZXMgZXhpc3QgKHNhbWUgZmFjdG9yKVxuICAgIGlmIChzdWl0YWJsZVVuaXQudG9CYXNlRmFjdG9yID09PSBjdXJyZW50VG9CYXNlKSB7XG4gICAgICByZXR1cm4gcXVhbnRpdHlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvVW5pdChxdWFudGl0eSwgc3VpdGFibGVVbml0LnVuaXQpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRRdWFudGl0eUlkZW50aWZpZXIocXVhbnRpdHk6IFF1YW50aXR5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gcXVhbnRpdHkudmFsdWUgKyAnLScgKyBxdWFudGl0eS51bml0XG4gIH1cblxuICAvKipcbiAgICogQWRhcHRlZCBmcm9tIEBhbmd1bGFyL2NvbW1vbiBudW1iZXJfcGlwZS50c1xuICAgKi9cbiAgcHJpdmF0ZSBzdHJUb051bWJlcih2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogbnVtYmVyIHtcbiAgICAvLyBDb252ZXJ0IHN0cmluZ3MgdG8gbnVtYmVyc1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFpc05hTihOdW1iZXIodmFsdWUpIC0gcGFyc2VGbG9hdCh2YWx1ZSkpKSB7XG4gICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKVxuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3ZhbHVlfSBpcyBub3QgYSBudW1iZXJgKVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGRldGVybWluZVVzZXJPcHRpb25zKFxuICAgIG5vcm1hbGl6ZTogYm9vbGVhbiB8IFF1YW50aXR5UGlwZU9wdGlvbnMsXG4gICAgdGFyZ2V0VW5pdDogVW5pdCB8IHN0cmluZyxcbiAgICBkaWdpdHNJbmZvOiBzdHJpbmdcbiAgKTogUXVhbnRpdHlQaXBlT3B0aW9ucyB7XG4gICAgY29uc3QgdXNlck9wdGlvbnMgPVxuICAgICAgbm9ybWFsaXplID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIG5vcm1hbGl6ZSA9PT0gJ2Jvb2xlYW4nXG4gICAgICAgID8gPFF1YW50aXR5UGlwZU9wdGlvbnM+e1xuICAgICAgICAgICAgbm9ybWFsaXplOiBub3JtYWxpemUsXG4gICAgICAgICAgICB0YXJnZXRVbml0OiB0YXJnZXRVbml0LFxuICAgICAgICAgICAgZGlnaXRzSW5mbzogZGlnaXRzSW5mbyxcbiAgICAgICAgICB9XG4gICAgICAgIDogbm9ybWFsaXplXG5cbiAgICBpZiAodXNlck9wdGlvbnMubm9ybWFsaXplID09PSB1bmRlZmluZWQgJiYgIXVzZXJPcHRpb25zLnRhcmdldFVuaXQpIHtcbiAgICAgIHVzZXJPcHRpb25zLm5vcm1hbGl6ZSA9IHRydWVcbiAgICB9XG5cbiAgICBpZiAodXNlck9wdGlvbnMuZGlnaXRzSW5mbyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1c2VyT3B0aW9ucy5kaWdpdHNJbmZvID0gRWxkZXJRdWFudGl0eVNlcnZpY2UuREVGQVVMVF9ESUdJVFNcbiAgICB9XG4gICAgcmV0dXJuIHVzZXJPcHRpb25zXG4gIH1cblxuICBwcml2YXRlIGRldGVybWluZVN1ZmZpeCh1c2VyT3B0aW9uczogUXVhbnRpdHlQaXBlT3B0aW9ucywgcXVhbnRpdHlUb0Rpc3BsYXk6IFF1YW50aXR5KSB7XG4gICAgaWYgKCF1c2VyT3B0aW9ucy5oaWRlVW5pdCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgRWxkZXJRdWFudGl0eVNlcnZpY2UuU1BBQ0VfU1RSSU5HICsgdGhpcy51bml0U2VydmljZS5nZXRVbml0U3ltYm9sKHF1YW50aXR5VG9EaXNwbGF5LnVuaXQpXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cbiAgfVxufVxuIl19