@kirbydesign/designsystem 5.3.1 → 6.0.0-rc.2

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 (695) hide show
  1. package/bundles/kirbydesign-designsystem-testing-base.umd.js +1988 -1260
  2. package/bundles/kirbydesign-designsystem-testing-base.umd.js.map +1 -1
  3. package/bundles/kirbydesign-designsystem-testing-jasmine.umd.js +34 -16
  4. package/bundles/kirbydesign-designsystem-testing-jasmine.umd.js.map +1 -1
  5. package/bundles/kirbydesign-designsystem-testing-jest.umd.js +34 -16
  6. package/bundles/kirbydesign-designsystem-testing-jest.umd.js.map +1 -1
  7. package/bundles/kirbydesign-designsystem.umd.js +9965 -9186
  8. package/bundles/kirbydesign-designsystem.umd.js.map +1 -1
  9. package/esm2015/kirbydesign-designsystem.js +1 -115
  10. package/esm2015/lib/components/accordion/accordion-item.component.js +31 -20
  11. package/esm2015/lib/components/accordion/accordion.directive.js +11 -7
  12. package/esm2015/lib/components/app/app.component.js +23 -18
  13. package/esm2015/lib/components/app/app.module.js +13 -8
  14. package/esm2015/lib/components/avatar/avatar.component.js +31 -19
  15. package/esm2015/lib/components/button/button.component.js +63 -34
  16. package/esm2015/lib/components/calendar/calendar.component.js +58 -34
  17. package/esm2015/lib/components/calendar/helpers/calendar.helper.js +8 -8
  18. package/esm2015/lib/components/card/card-footer/card-footer.component.js +14 -11
  19. package/esm2015/lib/components/card/card-header/card-header.component.js +26 -15
  20. package/esm2015/lib/components/card/card.component.js +34 -25
  21. package/esm2015/lib/components/chart/chart-js/chart-js.service.js +11 -9
  22. package/esm2015/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.js +1 -3
  23. package/esm2015/lib/components/chart/chart.component.js +36 -39
  24. package/esm2015/lib/components/chart/chart.module.js +13 -8
  25. package/esm2015/lib/components/chart/configs/chart-config.service.js +7 -4
  26. package/esm2015/lib/components/chart/configs/interaction-functions-extensions.config.js +8 -10
  27. package/esm2015/lib/components/chart/configs/shared.utils.js +1 -1
  28. package/esm2015/lib/components/chart/configs/type.config.js +1 -3
  29. package/esm2015/lib/components/chart/index.js +2 -1
  30. package/esm2015/lib/components/chart-deprecated/chart-deprecated-helper.js +7 -4
  31. package/esm2015/lib/components/chart-deprecated/chart-deprecated.component.js +54 -36
  32. package/esm2015/lib/components/chart-deprecated/options/areaspline.js +7 -9
  33. package/esm2015/lib/components/chart-deprecated/options/donut.js +5 -7
  34. package/esm2015/lib/components/chart-deprecated/options/timeseries.js +8 -10
  35. package/esm2015/lib/components/checkbox/checkbox.component.js +47 -21
  36. package/esm2015/lib/components/chip/chip.component.js +24 -13
  37. package/esm2015/lib/components/divider/divider.component.js +16 -12
  38. package/esm2015/lib/components/dropdown/dropdown.component.js +154 -61
  39. package/esm2015/lib/components/dropdown/keyboard-handler.service.js +9 -7
  40. package/esm2015/lib/components/empty-state/empty-state.component.js +27 -16
  41. package/esm2015/lib/components/fab-sheet/fab-sheet.component.js +35 -22
  42. package/esm2015/lib/components/flag/flag.component.js +20 -14
  43. package/esm2015/lib/components/form-field/directives/date/date-input.directive.js +16 -15
  44. package/esm2015/lib/components/form-field/directives/decimal-mask/decimal-mask.directive.js +41 -28
  45. package/esm2015/lib/components/form-field/form-field-message/form-field-message.component.js +17 -13
  46. package/esm2015/lib/components/form-field/form-field.component.js +39 -26
  47. package/esm2015/lib/components/form-field/input/input.component.js +65 -23
  48. package/esm2015/lib/components/form-field/input-counter/input-counter.component.js +14 -10
  49. package/esm2015/lib/components/form-field/textarea/textarea.component.js +51 -20
  50. package/esm2015/lib/components/grid/breakpoint-helper.service.js +9 -9
  51. package/esm2015/lib/components/grid/grid.component.js +21 -18
  52. package/esm2015/lib/components/icon/icon-registry.service.js +11 -19
  53. package/esm2015/lib/components/icon/icon-settings.js +2 -3
  54. package/esm2015/lib/components/icon/icon.component.js +27 -20
  55. package/esm2015/lib/components/icon/icon.module.js +13 -8
  56. package/esm2015/lib/components/icon/index.js +1 -2
  57. package/esm2015/lib/components/icon/kirby-icon-settings.js +2 -4
  58. package/esm2015/lib/components/index.js +11 -10
  59. package/esm2015/lib/components/item/item.component.js +33 -16
  60. package/esm2015/lib/components/item/item.module.js +13 -8
  61. package/esm2015/lib/components/item/label/label.component.js +18 -12
  62. package/esm2015/lib/components/item-group/item-group.component.js +15 -11
  63. package/esm2015/lib/components/item-sliding/item-sliding.component.js +19 -12
  64. package/esm2015/lib/components/list/directives/infinite-scroll.directive.js +18 -17
  65. package/esm2015/lib/components/list/directives/list-item-color.directive.js +17 -11
  66. package/esm2015/lib/components/list/helpers/list-helper.js +7 -4
  67. package/esm2015/lib/components/list/index.js +2 -3
  68. package/esm2015/lib/components/list/list-experimental/list-experimental.component.js +20 -13
  69. package/esm2015/lib/components/list/list-header/list-header.component.js +14 -11
  70. package/esm2015/lib/components/list/list-item/list-item.component.js +38 -24
  71. package/esm2015/lib/components/list/list-section-header/list-section-header.component.js +15 -13
  72. package/esm2015/lib/components/list/list.component.js +81 -40
  73. package/esm2015/lib/components/list/list.directive.js +34 -45
  74. package/esm2015/lib/components/list/list.module.js +33 -12
  75. package/esm2015/lib/components/list/pipes/group-by.pipe.js +10 -6
  76. package/esm2015/lib/components/loading-overlay/loading-overlay.component.js +20 -13
  77. package/esm2015/lib/components/loading-overlay/loading-overlay.service.js +9 -13
  78. package/esm2015/lib/components/modal/action-sheet/action-sheet.component.js +32 -18
  79. package/esm2015/lib/components/modal/alert/alert.component.js +38 -26
  80. package/esm2015/lib/components/modal/alert/config/alert-config.js +1 -1
  81. package/esm2015/lib/components/modal/footer/modal-footer.component.js +25 -13
  82. package/esm2015/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.js +25 -21
  83. package/esm2015/lib/components/modal/modal-wrapper/config/modal-config.js +1 -1
  84. package/esm2015/lib/components/modal/modal-wrapper/modal-wrapper.component.js +124 -56
  85. package/esm2015/lib/components/modal/services/action-sheet.helper.js +8 -8
  86. package/esm2015/lib/components/modal/services/alert.helper.js +10 -20
  87. package/esm2015/lib/components/modal/services/modal-animation-builder.service.js +7 -10
  88. package/esm2015/lib/components/modal/services/modal-navigation.service.js +7 -10
  89. package/esm2015/lib/components/modal/services/modal.controller.js +17 -16
  90. package/esm2015/lib/components/modal/services/modal.helper.js +10 -10
  91. package/esm2015/lib/components/page/index.js +2 -1
  92. package/esm2015/lib/components/page/page-footer/page-footer.component.js +21 -18
  93. package/esm2015/lib/components/page/page.component.js +187 -110
  94. package/esm2015/lib/components/page/page.module.js +60 -32
  95. package/esm2015/lib/components/popover/popover.component.js +38 -34
  96. package/esm2015/lib/components/progress-circle/progress-circle-ring.component.js +29 -17
  97. package/esm2015/lib/components/progress-circle/progress-circle.component.js +30 -21
  98. package/esm2015/lib/components/radio/radio-group/radio-group.component.js +60 -34
  99. package/esm2015/lib/components/radio/radio.component.js +36 -17
  100. package/esm2015/lib/components/range/range.component.js +51 -29
  101. package/esm2015/lib/components/reorder-list/reorder-list.component.js +32 -21
  102. package/esm2015/lib/components/router-outlet/router-outlet.component.js +18 -12
  103. package/esm2015/lib/components/router-outlet/router-outlet.module.js +13 -8
  104. package/esm2015/lib/components/section-header/section-header.component.js +15 -9
  105. package/esm2015/lib/components/segmented-control/segment-item.js +1 -1
  106. package/esm2015/lib/components/segmented-control/segmented-control.component.js +38 -29
  107. package/esm2015/lib/components/shared/component-loader.directive.js +15 -16
  108. package/esm2015/lib/components/shared/resize-observer/resize-observer.factory.js +7 -5
  109. package/esm2015/lib/components/shared/resize-observer/resize-observer.service.js +7 -10
  110. package/esm2015/lib/components/slide-button/slide-button.component.js +22 -19
  111. package/esm2015/lib/components/slides/slides.component.js +42 -20
  112. package/esm2015/lib/components/spinner/index.js +3 -0
  113. package/esm2015/lib/components/spinner/spinner.component.js +14 -11
  114. package/esm2015/lib/components/spinner/spinner.module.js +14 -9
  115. package/esm2015/lib/components/stock-chart-deprecated/options/stock-chart-deprecated-options.js +9 -3
  116. package/esm2015/lib/components/stock-chart-deprecated/stock-chart-deprecated.component.js +25 -20
  117. package/esm2015/lib/components/tabs/tab-button/tab-button.component.js +21 -18
  118. package/esm2015/lib/components/tabs/tabs.component.js +20 -16
  119. package/esm2015/lib/components/tabs/tabs.module.js +14 -9
  120. package/esm2015/lib/components/tabs/tabs.service.js +9 -7
  121. package/esm2015/lib/components/toast/config/toast-config.js +1 -1
  122. package/esm2015/lib/components/toast/services/toast.controller.js +8 -8
  123. package/esm2015/lib/components/toast/services/toast.helper.js +8 -12
  124. package/esm2015/lib/components/toggle/toggle.component.js +21 -14
  125. package/esm2015/lib/components/toggle-button/index.js +3 -0
  126. package/esm2015/lib/components/toggle-button/toggle-button.component.js +20 -13
  127. package/esm2015/lib/components/toggle-button/toggle-button.module.js +13 -8
  128. package/esm2015/lib/components/web-component-proxies.component.js +13 -15
  129. package/esm2015/lib/directives/element-as-button/element-as-button.directive.js +26 -17
  130. package/esm2015/lib/directives/fit-heading/fit-heading.directive.js +16 -17
  131. package/esm2015/lib/directives/fit-heading/fit-heading.module.js +12 -7
  132. package/esm2015/lib/directives/index.js +3 -1
  133. package/esm2015/lib/directives/key-handler/key-handler.directive.js +14 -14
  134. package/esm2015/lib/directives/modal-router-link/modal-router-link.directive.js +20 -15
  135. package/esm2015/lib/directives/theme-color/theme-color.directive.js +55 -24
  136. package/esm2015/lib/helpers/element-has-ancestor.js +1 -1
  137. package/esm2015/lib/helpers/line-clamp-helper.js +7 -8
  138. package/esm2015/lib/helpers/platform.service.js +9 -11
  139. package/esm2015/lib/index.js +1 -5
  140. package/esm2015/lib/kirby.module.js +166 -25
  141. package/esm2015/lib/types/window-ref.js +9 -7
  142. package/esm2015/testing-base/kirbydesign-designsystem-testing-base.js +1 -59
  143. package/esm2015/testing-base/lib/components/index.js +56 -0
  144. package/esm2015/testing-base/lib/components/mock.accordion-item.component.js +26 -18
  145. package/esm2015/testing-base/lib/components/mock.action-sheet.component.js +38 -24
  146. package/esm2015/testing-base/lib/components/mock.app.component.js +22 -14
  147. package/esm2015/testing-base/lib/components/mock.avatar.component.js +36 -23
  148. package/esm2015/testing-base/lib/components/mock.button.component.js +35 -23
  149. package/esm2015/testing-base/lib/components/mock.calendar.component.js +54 -32
  150. package/esm2015/testing-base/lib/components/mock.card-footer.component.js +22 -14
  151. package/esm2015/testing-base/lib/components/mock.card-header.component.js +30 -20
  152. package/esm2015/testing-base/lib/components/mock.card.component.js +34 -22
  153. package/esm2015/testing-base/lib/components/mock.chart-deprecated.component.js +38 -24
  154. package/esm2015/testing-base/lib/components/mock.chart.component.js +38 -25
  155. package/esm2015/testing-base/lib/components/mock.checkbox.component.js +36 -23
  156. package/esm2015/testing-base/lib/components/mock.chip.component.js +26 -18
  157. package/esm2015/testing-base/lib/components/mock.divider.component.js +24 -17
  158. package/esm2015/testing-base/lib/components/mock.dropdown.component.js +48 -29
  159. package/esm2015/testing-base/lib/components/mock.empty-state.component.js +30 -20
  160. package/esm2015/testing-base/lib/components/mock.fab-sheet.component.js +26 -18
  161. package/esm2015/testing-base/lib/components/mock.flag.component.js +26 -18
  162. package/esm2015/testing-base/lib/components/mock.form-field-message.component.js +26 -18
  163. package/esm2015/testing-base/lib/components/mock.form-field.component.js +26 -18
  164. package/esm2015/testing-base/lib/components/mock.grid.component.js +26 -18
  165. package/esm2015/testing-base/lib/components/mock.icon.component.js +28 -19
  166. package/esm2015/testing-base/lib/components/mock.input-counter.component.js +24 -17
  167. package/esm2015/testing-base/lib/components/mock.input.component.js +41 -26
  168. package/esm2015/testing-base/lib/components/mock.item-group.component.js +22 -14
  169. package/esm2015/testing-base/lib/components/mock.item-sliding.component.js +26 -18
  170. package/esm2015/testing-base/lib/components/mock.item.component.js +32 -21
  171. package/esm2015/testing-base/lib/components/mock.label.component.js +24 -17
  172. package/esm2015/testing-base/lib/components/mock.list-experimental.component.js +22 -14
  173. package/esm2015/testing-base/lib/components/mock.list-header.component.js +22 -14
  174. package/esm2015/testing-base/lib/components/mock.list-item.component.js +40 -25
  175. package/esm2015/testing-base/lib/components/mock.list-section-header.component.js +24 -17
  176. package/esm2015/testing-base/lib/components/mock.list.component.js +50 -30
  177. package/esm2015/testing-base/lib/components/mock.loading-overlay.component.js +26 -18
  178. package/esm2015/testing-base/lib/components/mock.modal-footer.component.js +26 -18
  179. package/esm2015/testing-base/lib/components/mock.page-footer.component.js +24 -17
  180. package/esm2015/testing-base/lib/components/mock.page.component.js +228 -125
  181. package/esm2015/testing-base/lib/components/mock.popover.component.js +28 -19
  182. package/esm2015/testing-base/lib/components/mock.progress-circle.component.js +28 -19
  183. package/esm2015/testing-base/lib/components/mock.radio-group.component.js +38 -24
  184. package/esm2015/testing-base/lib/components/mock.radio.component.js +30 -20
  185. package/esm2015/testing-base/lib/components/mock.range.component.js +44 -27
  186. package/esm2015/testing-base/lib/components/mock.reorder-list.component.js +32 -21
  187. package/esm2015/testing-base/lib/components/mock.router-outlet.component.js +24 -17
  188. package/esm2015/testing-base/lib/components/mock.section-header.component.js +22 -14
  189. package/esm2015/testing-base/lib/components/mock.segmented-control.component.js +34 -22
  190. package/esm2015/testing-base/lib/components/mock.slide-button.component.js +30 -20
  191. package/esm2015/testing-base/lib/components/mock.slides.component.js +51 -0
  192. package/esm2015/testing-base/lib/components/mock.spinner.component.js +22 -14
  193. package/esm2015/testing-base/lib/components/mock.tab-button.component.js +26 -18
  194. package/esm2015/testing-base/lib/components/mock.tabs.component.js +22 -14
  195. package/esm2015/testing-base/lib/components/mock.textarea.component.js +35 -23
  196. package/esm2015/testing-base/lib/components/mock.toggle-button.component.js +26 -18
  197. package/esm2015/testing-base/lib/components/mock.toggle.component.js +28 -19
  198. package/esm2015/testing-base/lib/components/mock.web-component-proxies.component.js +33 -0
  199. package/esm2015/testing-base/lib/directives/index.js +4 -0
  200. package/esm2015/testing-base/lib/directives/mock.accordion.directive.js +22 -13
  201. package/esm2015/testing-base/lib/directives/mock.fit-heading.directive.js +24 -15
  202. package/esm2015/testing-base/lib/directives/mock.theme-color.directive.js +24 -16
  203. package/esm2015/testing-base/lib/index.js +4 -0
  204. package/esm2015/testing-base/lib/kirby-testing-base.module.js +69 -7
  205. package/esm2015/testing-base/lib/mock-components.js +5 -2
  206. package/esm2015/testing-base/public_api.js +2 -2
  207. package/esm2015/testing-jasmine/kirbydesign-designsystem-testing-jasmine.js +1 -2
  208. package/esm2015/testing-jasmine/lib/kirby-testing.module.js +14 -8
  209. package/esm2015/testing-jest/kirbydesign-designsystem-testing-jest.js +1 -2
  210. package/esm2015/testing-jest/lib/kirby-testing.module.js +14 -8
  211. package/fesm2015/kirbydesign-designsystem-testing-base.js +1859 -1164
  212. package/fesm2015/kirbydesign-designsystem-testing-base.js.map +1 -1
  213. package/fesm2015/kirbydesign-designsystem-testing-jasmine.js +13 -8
  214. package/fesm2015/kirbydesign-designsystem-testing-jasmine.js.map +1 -1
  215. package/fesm2015/kirbydesign-designsystem-testing-jest.js +13 -8
  216. package/fesm2015/kirbydesign-designsystem-testing-jest.js.map +1 -1
  217. package/fesm2015/kirbydesign-designsystem.js +5374 -4465
  218. package/fesm2015/kirbydesign-designsystem.js.map +1 -1
  219. package/kirbydesign-designsystem.d.ts +1 -114
  220. package/lib/components/accordion/accordion-item.component.d.ts +3 -0
  221. package/lib/components/accordion/accordion.directive.d.ts +3 -0
  222. package/lib/components/app/app.component.d.ts +3 -0
  223. package/lib/components/app/app.module.d.ts +7 -0
  224. package/lib/components/avatar/avatar.component.d.ts +4 -1
  225. package/lib/components/button/button.component.d.ts +4 -1
  226. package/lib/components/calendar/calendar.component.d.ts +3 -0
  227. package/lib/components/calendar/helpers/calendar.helper.d.ts +3 -0
  228. package/lib/components/card/card-footer/card-footer.component.d.ts +3 -0
  229. package/lib/components/card/card-header/card-header.component.d.ts +3 -0
  230. package/lib/components/card/card.component.d.ts +3 -0
  231. package/lib/components/chart/chart-js/chart-js.service.d.ts +3 -0
  232. package/lib/components/chart/chart.component.d.ts +4 -4
  233. package/lib/components/chart/chart.module.d.ts +5 -0
  234. package/lib/components/chart/configs/chart-config.service.d.ts +4 -1
  235. package/lib/components/chart/index.d.ts +1 -0
  236. package/lib/components/chart-deprecated/chart-deprecated-helper.d.ts +3 -0
  237. package/lib/components/chart-deprecated/chart-deprecated.component.d.ts +3 -0
  238. package/lib/components/checkbox/checkbox.component.d.ts +3 -0
  239. package/lib/components/chip/chip.component.d.ts +3 -0
  240. package/lib/components/divider/divider.component.d.ts +3 -0
  241. package/lib/components/dropdown/dropdown.component.d.ts +3 -0
  242. package/lib/components/dropdown/keyboard-handler.service.d.ts +3 -0
  243. package/lib/components/empty-state/empty-state.component.d.ts +3 -0
  244. package/lib/components/fab-sheet/fab-sheet.component.d.ts +3 -0
  245. package/lib/components/flag/flag.component.d.ts +3 -0
  246. package/lib/components/form-field/directives/date/date-input.directive.d.ts +3 -0
  247. package/lib/components/form-field/directives/decimal-mask/decimal-mask.directive.d.ts +3 -0
  248. package/lib/components/form-field/form-field-message/form-field-message.component.d.ts +3 -0
  249. package/lib/components/form-field/form-field.component.d.ts +3 -0
  250. package/lib/components/form-field/input/input.component.d.ts +3 -0
  251. package/lib/components/form-field/input-counter/input-counter.component.d.ts +3 -0
  252. package/lib/components/form-field/textarea/textarea.component.d.ts +3 -0
  253. package/lib/components/grid/breakpoint-helper.service.d.ts +3 -0
  254. package/lib/components/grid/grid.component.d.ts +3 -0
  255. package/lib/components/icon/icon-registry.service.d.ts +4 -2
  256. package/lib/components/icon/icon-settings.d.ts +0 -2
  257. package/lib/components/icon/icon.component.d.ts +3 -0
  258. package/lib/components/icon/icon.module.d.ts +6 -0
  259. package/lib/components/icon/index.d.ts +1 -1
  260. package/lib/components/index.d.ts +10 -9
  261. package/lib/components/item/item.component.d.ts +3 -0
  262. package/lib/components/item/item.module.d.ts +9 -0
  263. package/lib/components/item/label/label.component.d.ts +3 -0
  264. package/lib/components/item-group/item-group.component.d.ts +3 -0
  265. package/lib/components/item-sliding/item-sliding.component.d.ts +3 -0
  266. package/lib/components/list/directives/infinite-scroll.directive.d.ts +3 -0
  267. package/lib/components/list/directives/list-item-color.directive.d.ts +3 -0
  268. package/lib/components/list/helpers/list-helper.d.ts +3 -0
  269. package/lib/components/list/index.d.ts +1 -2
  270. package/lib/components/list/list-experimental/list-experimental.component.d.ts +3 -0
  271. package/lib/components/list/list-header/list-header.component.d.ts +3 -0
  272. package/lib/components/list/list-item/list-item.component.d.ts +3 -0
  273. package/lib/components/list/list-section-header/list-section-header.component.d.ts +3 -0
  274. package/lib/components/list/list.component.d.ts +3 -0
  275. package/lib/components/list/list.directive.d.ts +9 -6
  276. package/lib/components/list/list.module.d.ts +16 -0
  277. package/lib/components/list/pipes/group-by.pipe.d.ts +3 -0
  278. package/lib/components/loading-overlay/loading-overlay.component.d.ts +3 -0
  279. package/lib/components/loading-overlay/loading-overlay.service.d.ts +3 -0
  280. package/lib/components/modal/action-sheet/action-sheet.component.d.ts +3 -0
  281. package/lib/components/modal/alert/alert.component.d.ts +5 -2
  282. package/lib/components/modal/alert/config/alert-config.d.ts +0 -8
  283. package/lib/components/modal/footer/modal-footer.component.d.ts +3 -0
  284. package/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.d.ts +3 -0
  285. package/lib/components/modal/modal-wrapper/config/modal-config.d.ts +1 -8
  286. package/lib/components/modal/modal-wrapper/modal-wrapper.component.d.ts +5 -0
  287. package/lib/components/modal/services/action-sheet.helper.d.ts +3 -0
  288. package/lib/components/modal/services/alert.helper.d.ts +4 -2
  289. package/lib/components/modal/services/modal-animation-builder.service.d.ts +3 -0
  290. package/lib/components/modal/services/modal-navigation.service.d.ts +3 -0
  291. package/lib/components/modal/services/modal.controller.d.ts +3 -0
  292. package/lib/components/modal/services/modal.helper.d.ts +3 -0
  293. package/lib/components/page/index.d.ts +1 -0
  294. package/lib/components/page/page-footer/page-footer.component.d.ts +3 -0
  295. package/lib/components/page/page.component.d.ts +26 -0
  296. package/lib/components/page/page.module.d.ts +10 -0
  297. package/lib/components/popover/popover.component.d.ts +4 -2
  298. package/lib/components/progress-circle/progress-circle-ring.component.d.ts +3 -0
  299. package/lib/components/progress-circle/progress-circle.component.d.ts +3 -0
  300. package/lib/components/radio/radio-group/radio-group.component.d.ts +3 -0
  301. package/lib/components/radio/radio.component.d.ts +3 -0
  302. package/lib/components/range/range.component.d.ts +3 -0
  303. package/lib/components/reorder-list/reorder-list.component.d.ts +3 -0
  304. package/lib/components/router-outlet/router-outlet.component.d.ts +3 -0
  305. package/lib/components/router-outlet/router-outlet.module.d.ts +7 -0
  306. package/lib/components/section-header/section-header.component.d.ts +3 -0
  307. package/lib/components/segmented-control/segment-item.d.ts +0 -4
  308. package/lib/components/segmented-control/segmented-control.component.d.ts +3 -0
  309. package/lib/components/shared/component-loader.directive.d.ts +3 -0
  310. package/lib/components/shared/resize-observer/resize-observer.factory.d.ts +3 -0
  311. package/lib/components/shared/resize-observer/resize-observer.service.d.ts +3 -0
  312. package/lib/components/slide-button/slide-button.component.d.ts +3 -0
  313. package/lib/components/slides/slides.component.d.ts +5 -0
  314. package/lib/components/spinner/index.d.ts +2 -0
  315. package/lib/components/spinner/spinner.component.d.ts +3 -0
  316. package/lib/components/spinner/spinner.module.d.ts +6 -0
  317. package/lib/components/stock-chart-deprecated/stock-chart-deprecated.component.d.ts +3 -0
  318. package/lib/components/tabs/tab-button/tab-button.component.d.ts +3 -0
  319. package/lib/components/tabs/tabs.component.d.ts +3 -0
  320. package/lib/components/tabs/tabs.module.d.ts +9 -0
  321. package/lib/components/tabs/tabs.service.d.ts +3 -0
  322. package/lib/components/toast/config/toast-config.d.ts +1 -4
  323. package/lib/components/toast/services/toast.controller.d.ts +3 -0
  324. package/lib/components/toast/services/toast.helper.d.ts +3 -0
  325. package/lib/components/toggle/toggle.component.d.ts +3 -0
  326. package/lib/components/toggle-button/index.d.ts +2 -0
  327. package/lib/components/toggle-button/toggle-button.component.d.ts +3 -0
  328. package/lib/components/toggle-button/toggle-button.module.d.ts +6 -0
  329. package/lib/components/web-component-proxies.component.d.ts +3 -0
  330. package/lib/custom-elements-initializer.d.ts +1 -1
  331. package/lib/directives/element-as-button/element-as-button.directive.d.ts +3 -0
  332. package/lib/directives/fit-heading/fit-heading.directive.d.ts +3 -0
  333. package/lib/directives/fit-heading/fit-heading.module.d.ts +5 -0
  334. package/lib/directives/index.d.ts +2 -0
  335. package/lib/directives/key-handler/key-handler.directive.d.ts +3 -0
  336. package/lib/directives/modal-router-link/modal-router-link.directive.d.ts +3 -0
  337. package/lib/directives/theme-color/theme-color.directive.d.ts +3 -0
  338. package/lib/helpers/line-clamp-helper.d.ts +3 -0
  339. package/lib/helpers/platform.service.d.ts +3 -0
  340. package/lib/index.d.ts +0 -1
  341. package/lib/kirby.module.d.ts +69 -0
  342. package/lib/types/window-ref.d.ts +3 -0
  343. package/package.json +3 -4
  344. package/readme.md +6 -79
  345. package/scss/base/_link.scss +1 -0
  346. package/scss/interaction-state/_active.scss +1 -0
  347. package/scss/interaction-state/_focus.scss +1 -0
  348. package/scss/interaction-state/_hover.scss +1 -0
  349. package/scss/interaction-state/_index.scss +1 -0
  350. package/scss/interaction-state/_interaction-state.utilities.scss +1 -0
  351. package/scss/interaction-state/_layer.scss +1 -0
  352. package/scss/opt-out/_index.scss +1 -0
  353. package/scss/opt-out/_link.scss +1 -0
  354. package/testing-base/kirbydesign-designsystem-testing-base.d.ts +1 -58
  355. package/testing-base/lib/components/index.d.ts +55 -0
  356. package/testing-base/lib/components/mock.accordion-item.component.d.ts +3 -0
  357. package/testing-base/lib/components/mock.action-sheet.component.d.ts +3 -0
  358. package/testing-base/lib/components/mock.app.component.d.ts +3 -0
  359. package/testing-base/lib/components/mock.avatar.component.d.ts +3 -0
  360. package/testing-base/lib/components/mock.button.component.d.ts +3 -0
  361. package/testing-base/lib/components/mock.calendar.component.d.ts +3 -0
  362. package/testing-base/lib/components/mock.card-footer.component.d.ts +3 -0
  363. package/testing-base/lib/components/mock.card-header.component.d.ts +3 -0
  364. package/testing-base/lib/components/mock.card.component.d.ts +3 -0
  365. package/testing-base/lib/components/mock.chart-deprecated.component.d.ts +3 -0
  366. package/testing-base/lib/components/mock.chart.component.d.ts +3 -1
  367. package/testing-base/lib/components/mock.checkbox.component.d.ts +3 -0
  368. package/testing-base/lib/components/mock.chip.component.d.ts +3 -0
  369. package/testing-base/lib/components/mock.divider.component.d.ts +3 -0
  370. package/testing-base/lib/components/mock.dropdown.component.d.ts +3 -0
  371. package/testing-base/lib/components/mock.empty-state.component.d.ts +3 -0
  372. package/testing-base/lib/components/mock.fab-sheet.component.d.ts +3 -0
  373. package/testing-base/lib/components/mock.flag.component.d.ts +3 -0
  374. package/testing-base/lib/components/mock.form-field-message.component.d.ts +3 -0
  375. package/testing-base/lib/components/mock.form-field.component.d.ts +3 -0
  376. package/testing-base/lib/components/mock.grid.component.d.ts +3 -0
  377. package/testing-base/lib/components/mock.icon.component.d.ts +3 -0
  378. package/testing-base/lib/components/mock.input-counter.component.d.ts +3 -0
  379. package/testing-base/lib/components/mock.input.component.d.ts +3 -0
  380. package/testing-base/lib/components/mock.item-group.component.d.ts +3 -0
  381. package/testing-base/lib/components/mock.item-sliding.component.d.ts +3 -0
  382. package/testing-base/lib/components/mock.item.component.d.ts +3 -0
  383. package/testing-base/lib/components/mock.label.component.d.ts +3 -0
  384. package/testing-base/lib/components/mock.list-experimental.component.d.ts +3 -0
  385. package/testing-base/lib/components/mock.list-header.component.d.ts +3 -0
  386. package/testing-base/lib/components/mock.list-item.component.d.ts +3 -0
  387. package/testing-base/lib/components/mock.list-section-header.component.d.ts +3 -0
  388. package/testing-base/lib/components/mock.list.component.d.ts +3 -0
  389. package/testing-base/lib/components/mock.loading-overlay.component.d.ts +3 -0
  390. package/testing-base/lib/components/mock.modal-footer.component.d.ts +3 -0
  391. package/testing-base/lib/components/mock.page-footer.component.d.ts +3 -0
  392. package/testing-base/lib/components/mock.page.component.d.ts +24 -0
  393. package/testing-base/lib/components/mock.popover.component.d.ts +3 -0
  394. package/testing-base/lib/components/mock.progress-circle.component.d.ts +3 -0
  395. package/testing-base/lib/components/mock.radio-group.component.d.ts +3 -0
  396. package/testing-base/lib/components/mock.radio.component.d.ts +3 -0
  397. package/testing-base/lib/components/mock.range.component.d.ts +3 -0
  398. package/testing-base/lib/components/mock.reorder-list.component.d.ts +3 -0
  399. package/testing-base/lib/components/mock.router-outlet.component.d.ts +3 -0
  400. package/testing-base/lib/components/mock.section-header.component.d.ts +3 -0
  401. package/testing-base/lib/components/mock.segmented-control.component.d.ts +3 -0
  402. package/testing-base/lib/components/mock.slide-button.component.d.ts +3 -0
  403. package/testing-base/lib/components/mock.slides.component.d.ts +11 -0
  404. package/testing-base/lib/components/mock.spinner.component.d.ts +3 -0
  405. package/testing-base/lib/components/mock.tab-button.component.d.ts +3 -0
  406. package/testing-base/lib/components/mock.tabs.component.d.ts +3 -0
  407. package/testing-base/lib/components/mock.textarea.component.d.ts +3 -0
  408. package/testing-base/lib/components/mock.toggle-button.component.d.ts +3 -0
  409. package/testing-base/lib/components/mock.toggle.component.d.ts +3 -0
  410. package/testing-base/lib/components/mock.web-component-proxies.component.d.ts +8 -0
  411. package/testing-base/lib/directives/index.d.ts +3 -0
  412. package/testing-base/lib/directives/mock.accordion.directive.d.ts +3 -0
  413. package/testing-base/lib/directives/mock.fit-heading.directive.d.ts +3 -0
  414. package/testing-base/lib/directives/mock.theme-color.directive.d.ts +3 -0
  415. package/testing-base/lib/index.d.ts +3 -0
  416. package/testing-base/lib/kirby-testing-base.module.d.ts +61 -0
  417. package/testing-base/package.json +0 -1
  418. package/testing-base/public_api.d.ts +1 -1
  419. package/testing-jasmine/kirbydesign-designsystem-testing-jasmine.d.ts +1 -1
  420. package/testing-jasmine/lib/kirby-testing.module.d.ts +5 -0
  421. package/testing-jasmine/package.json +0 -1
  422. package/testing-jest/kirbydesign-designsystem-testing-jest.d.ts +1 -1
  423. package/testing-jest/lib/kirby-testing.module.d.ts +5 -0
  424. package/testing-jest/package.json +0 -1
  425. package/README.md +0 -7
  426. package/bundles/kirbydesign-designsystem-testing-base.umd.min.js +0 -2
  427. package/bundles/kirbydesign-designsystem-testing-base.umd.min.js.map +0 -1
  428. package/bundles/kirbydesign-designsystem-testing-jasmine.umd.min.js +0 -16
  429. package/bundles/kirbydesign-designsystem-testing-jasmine.umd.min.js.map +0 -1
  430. package/bundles/kirbydesign-designsystem-testing-jest.umd.min.js +0 -16
  431. package/bundles/kirbydesign-designsystem-testing-jest.umd.min.js.map +0 -1
  432. package/bundles/kirbydesign-designsystem.umd.min.js +0 -2
  433. package/bundles/kirbydesign-designsystem.umd.min.js.map +0 -1
  434. package/esm2015/index.metadata.json +0 -1
  435. package/esm2015/kirbydesign-designsystem.metadata.json +0 -1
  436. package/esm2015/lib/components/accordion/accordion-item.component.metadata.json +0 -1
  437. package/esm2015/lib/components/accordion/accordion.directive.metadata.json +0 -1
  438. package/esm2015/lib/components/accordion/index.metadata.json +0 -1
  439. package/esm2015/lib/components/angular-component-lib/utils.metadata.json +0 -1
  440. package/esm2015/lib/components/app/app.component.metadata.json +0 -1
  441. package/esm2015/lib/components/app/app.module.metadata.json +0 -1
  442. package/esm2015/lib/components/app/index.metadata.json +0 -1
  443. package/esm2015/lib/components/avatar/avatar.component.metadata.json +0 -1
  444. package/esm2015/lib/components/button/button.component.metadata.json +0 -1
  445. package/esm2015/lib/components/calendar/calendar.component.metadata.json +0 -1
  446. package/esm2015/lib/components/calendar/helpers/calendar-cell.model.metadata.json +0 -1
  447. package/esm2015/lib/components/calendar/helpers/calendar-options.model.metadata.json +0 -1
  448. package/esm2015/lib/components/calendar/helpers/calendar.helper.metadata.json +0 -1
  449. package/esm2015/lib/components/calendar/index.metadata.json +0 -1
  450. package/esm2015/lib/components/calendar/options/calendar-year-navigator-config.metadata.json +0 -1
  451. package/esm2015/lib/components/card/card-footer/card-footer.component.metadata.json +0 -1
  452. package/esm2015/lib/components/card/card-header/card-header.component.metadata.json +0 -1
  453. package/esm2015/lib/components/card/card.component.metadata.json +0 -1
  454. package/esm2015/lib/components/card/index.metadata.json +0 -1
  455. package/esm2015/lib/components/chart/chart-js/chart-js.service.metadata.json +0 -1
  456. package/esm2015/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.metadata.json +0 -1
  457. package/esm2015/lib/components/chart/chart-js/configured-chart-js.metadata.json +0 -1
  458. package/esm2015/lib/components/chart/chart.component.metadata.json +0 -1
  459. package/esm2015/lib/components/chart/chart.module.metadata.json +0 -1
  460. package/esm2015/lib/components/chart/chart.types.metadata.json +0 -1
  461. package/esm2015/lib/components/chart/configs/annotations.config.metadata.json +0 -1
  462. package/esm2015/lib/components/chart/configs/chart-config.service.metadata.json +0 -1
  463. package/esm2015/lib/components/chart/configs/global-defaults.config.metadata.json +0 -1
  464. package/esm2015/lib/components/chart/configs/interaction-functions-extensions.config.metadata.json +0 -1
  465. package/esm2015/lib/components/chart/configs/shared.utils.metadata.json +0 -1
  466. package/esm2015/lib/components/chart/configs/type.config.metadata.json +0 -1
  467. package/esm2015/lib/components/chart/index.metadata.json +0 -1
  468. package/esm2015/lib/components/chart-deprecated/chart-deprecated-helper.metadata.json +0 -1
  469. package/esm2015/lib/components/chart-deprecated/chart-deprecated-type.metadata.json +0 -1
  470. package/esm2015/lib/components/chart-deprecated/chart-deprecated.component.metadata.json +0 -1
  471. package/esm2015/lib/components/chart-deprecated/index.metadata.json +0 -1
  472. package/esm2015/lib/components/chart-deprecated/options/activitygauge.metadata.json +0 -1
  473. package/esm2015/lib/components/chart-deprecated/options/areaspline.metadata.json +0 -1
  474. package/esm2015/lib/components/chart-deprecated/options/bar.metadata.json +0 -1
  475. package/esm2015/lib/components/chart-deprecated/options/column.metadata.json +0 -1
  476. package/esm2015/lib/components/chart-deprecated/options/donut.metadata.json +0 -1
  477. package/esm2015/lib/components/chart-deprecated/options/timeseries.metadata.json +0 -1
  478. package/esm2015/lib/components/checkbox/checkbox.component.metadata.json +0 -1
  479. package/esm2015/lib/components/chip/chip.component.metadata.json +0 -1
  480. package/esm2015/lib/components/divider/divider.component.metadata.json +0 -1
  481. package/esm2015/lib/components/dropdown/dropdown.component.metadata.json +0 -1
  482. package/esm2015/lib/components/dropdown/dropdown.types.metadata.json +0 -1
  483. package/esm2015/lib/components/dropdown/keyboard-handler.service.metadata.json +0 -1
  484. package/esm2015/lib/components/empty-state/empty-state.component.metadata.json +0 -1
  485. package/esm2015/lib/components/fab-sheet/fab-sheet.component.metadata.json +0 -1
  486. package/esm2015/lib/components/flag/flag.component.metadata.json +0 -1
  487. package/esm2015/lib/components/form-field/directives/date/date-input.directive.metadata.json +0 -1
  488. package/esm2015/lib/components/form-field/directives/decimal-mask/decimal-mask.directive.metadata.json +0 -1
  489. package/esm2015/lib/components/form-field/form-field-message/form-field-message.component.metadata.json +0 -1
  490. package/esm2015/lib/components/form-field/form-field.component.metadata.json +0 -1
  491. package/esm2015/lib/components/form-field/index.metadata.json +0 -1
  492. package/esm2015/lib/components/form-field/input/input.component.metadata.json +0 -1
  493. package/esm2015/lib/components/form-field/input-counter/input-counter.component.metadata.json +0 -1
  494. package/esm2015/lib/components/form-field/textarea/textarea.component.metadata.json +0 -1
  495. package/esm2015/lib/components/grid/breakpoint-helper.service.metadata.json +0 -1
  496. package/esm2015/lib/components/grid/grid-card-configuration.metadata.json +0 -1
  497. package/esm2015/lib/components/grid/grid.component.metadata.json +0 -1
  498. package/esm2015/lib/components/icon/icon-registry.service.metadata.json +0 -1
  499. package/esm2015/lib/components/icon/icon-settings.metadata.json +0 -1
  500. package/esm2015/lib/components/icon/icon.component.metadata.json +0 -1
  501. package/esm2015/lib/components/icon/icon.module.metadata.json +0 -1
  502. package/esm2015/lib/components/icon/index.metadata.json +0 -1
  503. package/esm2015/lib/components/icon/kirby-icon-settings.metadata.json +0 -1
  504. package/esm2015/lib/components/index.metadata.json +0 -1
  505. package/esm2015/lib/components/item/index.metadata.json +0 -1
  506. package/esm2015/lib/components/item/item.component.metadata.json +0 -1
  507. package/esm2015/lib/components/item/item.module.metadata.json +0 -1
  508. package/esm2015/lib/components/item/label/label.component.metadata.json +0 -1
  509. package/esm2015/lib/components/item-group/item-group.component.metadata.json +0 -1
  510. package/esm2015/lib/components/item-sliding/index.metadata.json +0 -1
  511. package/esm2015/lib/components/item-sliding/item-sliding.component.metadata.json +0 -1
  512. package/esm2015/lib/components/item-sliding/item-sliding.types.metadata.json +0 -1
  513. package/esm2015/lib/components/list/directives/infinite-scroll.directive.metadata.json +0 -1
  514. package/esm2015/lib/components/list/directives/list-item-color.directive.metadata.json +0 -1
  515. package/esm2015/lib/components/list/directives/scroll.model.metadata.json +0 -1
  516. package/esm2015/lib/components/list/helpers/list-helper.metadata.json +0 -1
  517. package/esm2015/lib/components/list/index.metadata.json +0 -1
  518. package/esm2015/lib/components/list/list-experimental/list-experimental.component.metadata.json +0 -1
  519. package/esm2015/lib/components/list/list-header/list-header.component.metadata.json +0 -1
  520. package/esm2015/lib/components/list/list-item/list-item.component.metadata.json +0 -1
  521. package/esm2015/lib/components/list/list-section-header/list-section-header.component.metadata.json +0 -1
  522. package/esm2015/lib/components/list/list-swipe-action.type.metadata.json +0 -1
  523. package/esm2015/lib/components/list/list.component.metadata.json +0 -1
  524. package/esm2015/lib/components/list/list.directive.metadata.json +0 -1
  525. package/esm2015/lib/components/list/list.event.metadata.json +0 -1
  526. package/esm2015/lib/components/list/list.module.metadata.json +0 -1
  527. package/esm2015/lib/components/list/pipes/group-by.pipe.metadata.json +0 -1
  528. package/esm2015/lib/components/loading-overlay/index.metadata.json +0 -1
  529. package/esm2015/lib/components/loading-overlay/loading-overlay.component.metadata.json +0 -1
  530. package/esm2015/lib/components/loading-overlay/loading-overlay.service.metadata.json +0 -1
  531. package/esm2015/lib/components/modal/action-sheet/action-sheet.component.metadata.json +0 -1
  532. package/esm2015/lib/components/modal/action-sheet/config/action-sheet-config.metadata.json +0 -1
  533. package/esm2015/lib/components/modal/action-sheet/config/action-sheet-item.metadata.json +0 -1
  534. package/esm2015/lib/components/modal/alert/alert.component.metadata.json +0 -1
  535. package/esm2015/lib/components/modal/alert/config/alert-config.metadata.json +0 -1
  536. package/esm2015/lib/components/modal/footer/modal-footer.component.metadata.json +0 -1
  537. package/esm2015/lib/components/modal/index.metadata.json +0 -1
  538. package/esm2015/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.metadata.json +0 -1
  539. package/esm2015/lib/components/modal/modal-wrapper/config/drawer-supplementary-action.metadata.json +0 -1
  540. package/esm2015/lib/components/modal/modal-wrapper/config/modal-config.helper.metadata.json +0 -1
  541. package/esm2015/lib/components/modal/modal-wrapper/config/modal-config.metadata.json +0 -1
  542. package/esm2015/lib/components/modal/modal-wrapper/modal-wrapper.component.metadata.json +0 -1
  543. package/esm2015/lib/components/modal/services/action-sheet.helper.metadata.json +0 -1
  544. package/esm2015/lib/components/modal/services/alert.helper.metadata.json +0 -1
  545. package/esm2015/lib/components/modal/services/modal-animation-builder.service.metadata.json +0 -1
  546. package/esm2015/lib/components/modal/services/modal-navigation.service.metadata.json +0 -1
  547. package/esm2015/lib/components/modal/services/modal.controller.metadata.json +0 -1
  548. package/esm2015/lib/components/modal/services/modal.helper.metadata.json +0 -1
  549. package/esm2015/lib/components/modal/services/modal.interfaces.metadata.json +0 -1
  550. package/esm2015/lib/components/page/index.metadata.json +0 -1
  551. package/esm2015/lib/components/page/page-footer/page-footer.component.metadata.json +0 -1
  552. package/esm2015/lib/components/page/page.component.metadata.json +0 -1
  553. package/esm2015/lib/components/page/page.module.metadata.json +0 -1
  554. package/esm2015/lib/components/popover/popover.component.metadata.json +0 -1
  555. package/esm2015/lib/components/progress-circle/progress-circle-ring.component.metadata.json +0 -1
  556. package/esm2015/lib/components/progress-circle/progress-circle.component.metadata.json +0 -1
  557. package/esm2015/lib/components/radio/index.metadata.json +0 -1
  558. package/esm2015/lib/components/radio/radio-group/radio-group.component.metadata.json +0 -1
  559. package/esm2015/lib/components/radio/radio.component.metadata.json +0 -1
  560. package/esm2015/lib/components/range/range.component.metadata.json +0 -1
  561. package/esm2015/lib/components/reorder-list/index.metadata.json +0 -1
  562. package/esm2015/lib/components/reorder-list/reorder-event.metadata.json +0 -1
  563. package/esm2015/lib/components/reorder-list/reorder-list.component.metadata.json +0 -1
  564. package/esm2015/lib/components/router-outlet/index.metadata.json +0 -1
  565. package/esm2015/lib/components/router-outlet/router-outlet.component.metadata.json +0 -1
  566. package/esm2015/lib/components/router-outlet/router-outlet.module.metadata.json +0 -1
  567. package/esm2015/lib/components/section-header/section-header.component.metadata.json +0 -1
  568. package/esm2015/lib/components/segmented-control/segment-item.metadata.json +0 -1
  569. package/esm2015/lib/components/segmented-control/segmented-control.component.metadata.json +0 -1
  570. package/esm2015/lib/components/shared/component-configuration.metadata.json +0 -1
  571. package/esm2015/lib/components/shared/component-loader.directive.metadata.json +0 -1
  572. package/esm2015/lib/components/shared/dynamic-component.metadata.json +0 -1
  573. package/esm2015/lib/components/shared/index.metadata.json +0 -1
  574. package/esm2015/lib/components/shared/resize-observer/resize-observer.factory.metadata.json +0 -1
  575. package/esm2015/lib/components/shared/resize-observer/resize-observer.service.metadata.json +0 -1
  576. package/esm2015/lib/components/shared/resize-observer/types/resize-observer-callback.metadata.json +0 -1
  577. package/esm2015/lib/components/shared/resize-observer/types/resize-observer-entry.metadata.json +0 -1
  578. package/esm2015/lib/components/shared/resize-observer/types/resize-observer.metadata.json +0 -1
  579. package/esm2015/lib/components/slide-button/slide-button.component.metadata.json +0 -1
  580. package/esm2015/lib/components/slides/slides.component.metadata.json +0 -1
  581. package/esm2015/lib/components/spinner/spinner.component.metadata.json +0 -1
  582. package/esm2015/lib/components/spinner/spinner.module.metadata.json +0 -1
  583. package/esm2015/lib/components/stock-chart-deprecated/index.metadata.json +0 -1
  584. package/esm2015/lib/components/stock-chart-deprecated/options/stock-chart-deprecated-options.metadata.json +0 -1
  585. package/esm2015/lib/components/stock-chart-deprecated/stock-chart-deprecated.component.metadata.json +0 -1
  586. package/esm2015/lib/components/tabs/index.metadata.json +0 -1
  587. package/esm2015/lib/components/tabs/tab-button/tab-button.component.metadata.json +0 -1
  588. package/esm2015/lib/components/tabs/tab-button/tab-button.events.metadata.json +0 -1
  589. package/esm2015/lib/components/tabs/tabs.component.metadata.json +0 -1
  590. package/esm2015/lib/components/tabs/tabs.module.metadata.json +0 -1
  591. package/esm2015/lib/components/tabs/tabs.service.metadata.json +0 -1
  592. package/esm2015/lib/components/toast/config/toast-config.metadata.json +0 -1
  593. package/esm2015/lib/components/toast/index.metadata.json +0 -1
  594. package/esm2015/lib/components/toast/services/toast.controller.metadata.json +0 -1
  595. package/esm2015/lib/components/toast/services/toast.helper.metadata.json +0 -1
  596. package/esm2015/lib/components/toggle/toggle.component.metadata.json +0 -1
  597. package/esm2015/lib/components/toggle-button/toggle-button.component.metadata.json +0 -1
  598. package/esm2015/lib/components/toggle-button/toggle-button.module.metadata.json +0 -1
  599. package/esm2015/lib/components/web-component-proxies.component.metadata.json +0 -1
  600. package/esm2015/lib/custom-elements-initializer.metadata.json +0 -1
  601. package/esm2015/lib/directives/element-as-button/element-as-button.directive.metadata.json +0 -1
  602. package/esm2015/lib/directives/fit-heading/fit-heading.directive.metadata.json +0 -1
  603. package/esm2015/lib/directives/fit-heading/fit-heading.module.metadata.json +0 -1
  604. package/esm2015/lib/directives/index.metadata.json +0 -1
  605. package/esm2015/lib/directives/key-handler/key-handler.directive.metadata.json +0 -1
  606. package/esm2015/lib/directives/modal-router-link/modal-router-link.directive.metadata.json +0 -1
  607. package/esm2015/lib/directives/theme-color/theme-color.directive.metadata.json +0 -1
  608. package/esm2015/lib/helpers/color-helper.metadata.json +0 -1
  609. package/esm2015/lib/helpers/deep-copy.metadata.json +0 -1
  610. package/esm2015/lib/helpers/design-token-helper.metadata.json +0 -1
  611. package/esm2015/lib/helpers/element-has-ancestor.metadata.json +0 -1
  612. package/esm2015/lib/helpers/index.metadata.json +0 -1
  613. package/esm2015/lib/helpers/line-clamp-helper.metadata.json +0 -1
  614. package/esm2015/lib/helpers/merge-deep.metadata.json +0 -1
  615. package/esm2015/lib/helpers/platform.service.metadata.json +0 -1
  616. package/esm2015/lib/helpers/string-helper.metadata.json +0 -1
  617. package/esm2015/lib/helpers/theme-color.type.metadata.json +0 -1
  618. package/esm2015/lib/helpers/unique-id-generator.helper.metadata.json +0 -1
  619. package/esm2015/lib/index.metadata.json +0 -1
  620. package/esm2015/lib/kirby.module.metadata.json +0 -1
  621. package/esm2015/lib/scss/scss-helper.metadata.json +0 -1
  622. package/esm2015/lib/types/window-ref.metadata.json +0 -1
  623. package/esm2015/testing-base/kirbydesign-designsystem-testing-base.metadata.json +0 -1
  624. package/esm2015/testing-base/lib/components/mock.accordion-item.component.metadata.json +0 -1
  625. package/esm2015/testing-base/lib/components/mock.action-sheet.component.metadata.json +0 -1
  626. package/esm2015/testing-base/lib/components/mock.app.component.metadata.json +0 -1
  627. package/esm2015/testing-base/lib/components/mock.avatar.component.metadata.json +0 -1
  628. package/esm2015/testing-base/lib/components/mock.button.component.metadata.json +0 -1
  629. package/esm2015/testing-base/lib/components/mock.calendar.component.metadata.json +0 -1
  630. package/esm2015/testing-base/lib/components/mock.card-footer.component.metadata.json +0 -1
  631. package/esm2015/testing-base/lib/components/mock.card-header.component.metadata.json +0 -1
  632. package/esm2015/testing-base/lib/components/mock.card.component.metadata.json +0 -1
  633. package/esm2015/testing-base/lib/components/mock.chart-deprecated.component.metadata.json +0 -1
  634. package/esm2015/testing-base/lib/components/mock.chart.component.metadata.json +0 -1
  635. package/esm2015/testing-base/lib/components/mock.checkbox.component.metadata.json +0 -1
  636. package/esm2015/testing-base/lib/components/mock.chip.component.metadata.json +0 -1
  637. package/esm2015/testing-base/lib/components/mock.divider.component.metadata.json +0 -1
  638. package/esm2015/testing-base/lib/components/mock.dropdown.component.metadata.json +0 -1
  639. package/esm2015/testing-base/lib/components/mock.empty-state.component.metadata.json +0 -1
  640. package/esm2015/testing-base/lib/components/mock.fab-sheet.component.metadata.json +0 -1
  641. package/esm2015/testing-base/lib/components/mock.flag.component.metadata.json +0 -1
  642. package/esm2015/testing-base/lib/components/mock.form-field-message.component.metadata.json +0 -1
  643. package/esm2015/testing-base/lib/components/mock.form-field.component.metadata.json +0 -1
  644. package/esm2015/testing-base/lib/components/mock.grid.component.metadata.json +0 -1
  645. package/esm2015/testing-base/lib/components/mock.icon.component.metadata.json +0 -1
  646. package/esm2015/testing-base/lib/components/mock.input-counter.component.metadata.json +0 -1
  647. package/esm2015/testing-base/lib/components/mock.input.component.metadata.json +0 -1
  648. package/esm2015/testing-base/lib/components/mock.item-group.component.metadata.json +0 -1
  649. package/esm2015/testing-base/lib/components/mock.item-sliding.component.metadata.json +0 -1
  650. package/esm2015/testing-base/lib/components/mock.item.component.metadata.json +0 -1
  651. package/esm2015/testing-base/lib/components/mock.label.component.metadata.json +0 -1
  652. package/esm2015/testing-base/lib/components/mock.list-experimental.component.metadata.json +0 -1
  653. package/esm2015/testing-base/lib/components/mock.list-header.component.metadata.json +0 -1
  654. package/esm2015/testing-base/lib/components/mock.list-item.component.metadata.json +0 -1
  655. package/esm2015/testing-base/lib/components/mock.list-section-header.component.metadata.json +0 -1
  656. package/esm2015/testing-base/lib/components/mock.list.component.metadata.json +0 -1
  657. package/esm2015/testing-base/lib/components/mock.loading-overlay.component.metadata.json +0 -1
  658. package/esm2015/testing-base/lib/components/mock.modal-footer.component.metadata.json +0 -1
  659. package/esm2015/testing-base/lib/components/mock.page-footer.component.metadata.json +0 -1
  660. package/esm2015/testing-base/lib/components/mock.page.component.metadata.json +0 -1
  661. package/esm2015/testing-base/lib/components/mock.popover.component.metadata.json +0 -1
  662. package/esm2015/testing-base/lib/components/mock.progress-circle.component.metadata.json +0 -1
  663. package/esm2015/testing-base/lib/components/mock.radio-group.component.metadata.json +0 -1
  664. package/esm2015/testing-base/lib/components/mock.radio.component.metadata.json +0 -1
  665. package/esm2015/testing-base/lib/components/mock.range.component.metadata.json +0 -1
  666. package/esm2015/testing-base/lib/components/mock.reorder-list.component.metadata.json +0 -1
  667. package/esm2015/testing-base/lib/components/mock.router-outlet.component.metadata.json +0 -1
  668. package/esm2015/testing-base/lib/components/mock.section-header.component.metadata.json +0 -1
  669. package/esm2015/testing-base/lib/components/mock.segmented-control.component.metadata.json +0 -1
  670. package/esm2015/testing-base/lib/components/mock.slide-button.component.metadata.json +0 -1
  671. package/esm2015/testing-base/lib/components/mock.spinner.component.metadata.json +0 -1
  672. package/esm2015/testing-base/lib/components/mock.tab-button.component.metadata.json +0 -1
  673. package/esm2015/testing-base/lib/components/mock.tabs.component.metadata.json +0 -1
  674. package/esm2015/testing-base/lib/components/mock.textarea.component.metadata.json +0 -1
  675. package/esm2015/testing-base/lib/components/mock.toggle-button.component.metadata.json +0 -1
  676. package/esm2015/testing-base/lib/components/mock.toggle.component.metadata.json +0 -1
  677. package/esm2015/testing-base/lib/directives/mock.accordion.directive.metadata.json +0 -1
  678. package/esm2015/testing-base/lib/directives/mock.fit-heading.directive.metadata.json +0 -1
  679. package/esm2015/testing-base/lib/directives/mock.theme-color.directive.metadata.json +0 -1
  680. package/esm2015/testing-base/lib/kirby-testing-base.module.metadata.json +0 -1
  681. package/esm2015/testing-base/lib/mock-components.metadata.json +0 -1
  682. package/esm2015/testing-base/lib/mock-directives.metadata.json +0 -1
  683. package/esm2015/testing-base/public_api.metadata.json +0 -1
  684. package/esm2015/testing-jasmine/kirbydesign-designsystem-testing-jasmine.metadata.json +0 -1
  685. package/esm2015/testing-jasmine/lib/kirby-testing.module.metadata.json +0 -1
  686. package/esm2015/testing-jasmine/lib/mock-providers.metadata.json +0 -1
  687. package/esm2015/testing-jasmine/public_api.metadata.json +0 -1
  688. package/esm2015/testing-jest/kirbydesign-designsystem-testing-jest.metadata.json +0 -1
  689. package/esm2015/testing-jest/lib/kirby-testing.module.metadata.json +0 -1
  690. package/esm2015/testing-jest/lib/mock-providers.metadata.json +0 -1
  691. package/esm2015/testing-jest/public_api.metadata.json +0 -1
  692. package/kirbydesign-designsystem.metadata.json +0 -1
  693. package/testing-base/kirbydesign-designsystem-testing-base.metadata.json +0 -1
  694. package/testing-jasmine/kirbydesign-designsystem-testing-jasmine.metadata.json +0 -1
  695. package/testing-jest/kirbydesign-designsystem-testing-jest.metadata.json +0 -1
@@ -1,20 +1,31 @@
1
- import { Component, HostBinding, Input } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
2
4
  export class CardHeaderComponent {
3
5
  constructor() {
4
6
  this.flagged = null;
5
7
  }
6
8
  }
7
- CardHeaderComponent.decorators = [
8
- { type: Component, args: [{
9
- selector: 'kirby-card-header',
10
- template: "<header>\n <h2 *ngIf=\"title\" [class.bold]=\"isTitleBold\">{{ title }}</h2>\n <h4 *ngIf=\"subtitle\">{{ subtitle }}</h4>\n <ng-content></ng-content>\n</header>\n",
11
- styles: [":host{display:block;border-top-left-radius:16px;border-top-right-radius:16px;text-align:center;padding:var(--kirby-internal-card-header-padding,16px);color:var(--kirby-card-header-color);background-color:var(--kirby-card-header-background-color)}h2{font-size:16px;font-weight:400;margin:0 0 var(--kirby-internal-card-header-margin-bottom,8px);line-height:var(--kirby-internal-card-header-line-height,28px)}h2.bold{font-weight:700}h4{font-size:14px;margin:0;font-weight:400}:host(.danger){--kirby-card-header-background-color:var(--kirby-danger);--kirby-card-header-color:var(--kirby-danger-contrast)}:host(.warning){--kirby-card-header-background-color:var(--kirby-warning);--kirby-card-header-color:var(--kirby-warning-contrast)}:host(.success){--kirby-card-header-background-color:var(--kirby-success);--kirby-card-header-color:var(--kirby-success-contrast)}:host(.info){--kirby-card-header-background-color:var(--kirby-semi-light);--kirby-card-header-color:var(--kirby-semi-light-contrast)}:host(.danger,.warning,.success,.info){--kirby-internal-card-header-padding:2px 8px}:host(.danger,.warning,.success,.info) h2{--kirby-internal-card-header-line-height:24px;--kirby-internal-card-header-margin-bottom:0px}"]
12
- },] }
13
- ];
14
- CardHeaderComponent.propDecorators = {
15
- title: [{ type: Input }],
16
- subtitle: [{ type: Input }],
17
- isTitleBold: [{ type: Input }],
18
- flagged: [{ type: HostBinding, args: ['class',] }, { type: Input }]
19
- };
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2NhcmQvY2FyZC1oZWFkZXIvY2FyZC1oZWFkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVc5RCxNQUFNLE9BQU8sbUJBQW1CO0lBTGhDO1FBV0UsWUFBTyxHQUFrQixJQUFJLENBQUM7SUFDaEMsQ0FBQzs7O1lBWkEsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLGlMQUEyQzs7YUFFNUM7OztvQkFFRSxLQUFLO3VCQUNMLEtBQUs7MEJBQ0wsS0FBSztzQkFDTCxXQUFXLFNBQUMsT0FBTyxjQUNuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTm90aWZpY2F0aW9uQ29sb3IgfSBmcm9tICdAa2lyYnlkZXNpZ24vY29yZSc7XG5cbmV4cG9ydCB0eXBlIENhcmRGbGFnTGV2ZWwgPSBOb3RpZmljYXRpb25Db2xvciB8ICdpbmZvJyB8IG51bGw7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LWNhcmQtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhcmQtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FyZC1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyZEhlYWRlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN1YnRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzVGl0bGVCb2xkOiBib29sZWFuO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgQElucHV0KClcbiAgZmxhZ2dlZDogQ2FyZEZsYWdMZXZlbCA9IG51bGw7XG59XG4iXX0=
9
+ /** @nocollapse */ CardHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ /** @nocollapse */ CardHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CardHeaderComponent, selector: "kirby-card-header", inputs: { title: "title", subtitle: "subtitle", isTitleBold: "isTitleBold", flagged: "flagged" }, host: { properties: { "class": "this.flagged" } }, ngImport: i0, template: "<header>\n <h2 *ngIf=\"title\" [class.bold]=\"isTitleBold\">{{ title }}</h2>\n <h4 *ngIf=\"subtitle\">{{ subtitle }}</h4>\n <ng-content></ng-content>\n</header>\n", styles: [":host{display:block;border-top-left-radius:16px;border-top-right-radius:16px;text-align:center;padding:var(--kirby-internal-card-header-padding, 16px);color:var(--kirby-card-header-color);background-color:var(--kirby-card-header-background-color)}h2{font-size:16px;font-weight:400;margin:0 0 var(--kirby-internal-card-header-margin-bottom, 8px);line-height:var(--kirby-internal-card-header-line-height, 28px)}h2.bold{font-weight:700}h4{font-size:14px;margin:0;font-weight:400}:host(.danger){--kirby-card-header-background-color: var(--kirby-danger);--kirby-card-header-color: var(--kirby-danger-contrast)}:host(.warning){--kirby-card-header-background-color: var(--kirby-warning);--kirby-card-header-color: var(--kirby-warning-contrast)}:host(.success){--kirby-card-header-background-color: var(--kirby-success);--kirby-card-header-color: var(--kirby-success-contrast)}:host(.info){--kirby-card-header-background-color: var(--kirby-semi-light);--kirby-card-header-color: var(--kirby-semi-light-contrast)}:host(.danger,.warning,.success,.info){--kirby-internal-card-header-padding: 2px 8px}:host(.danger,.warning,.success,.info) h2{--kirby-internal-card-header-line-height: 24px;--kirby-internal-card-header-margin-bottom: 0px}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CardHeaderComponent, decorators: [{
12
+ type: Component,
13
+ args: [{
14
+ selector: 'kirby-card-header',
15
+ templateUrl: './card-header.component.html',
16
+ styleUrls: ['./card-header.component.scss'],
17
+ changeDetection: ChangeDetectionStrategy.OnPush,
18
+ }]
19
+ }], propDecorators: { title: [{
20
+ type: Input
21
+ }], subtitle: [{
22
+ type: Input
23
+ }], isTitleBold: [{
24
+ type: Input
25
+ }], flagged: [{
26
+ type: HostBinding,
27
+ args: ['class']
28
+ }, {
29
+ type: Input
30
+ }] } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2NhcmQvY2FyZC1oZWFkZXIvY2FyZC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2NhcmQvY2FyZC1oZWFkZXIvY2FyZC1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFZdkYsTUFBTSxPQUFPLG1CQUFtQjtJQU5oQztRQVlFLFlBQU8sR0FBa0IsSUFBSSxDQUFDO0tBQy9COztvSUFQWSxtQkFBbUI7d0hBQW5CLG1CQUFtQiw4TUNaaEMsdUtBS0E7NEZET2EsbUJBQW1CO2tCQU4vQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFdBQVcsRUFBRSw4QkFBOEI7b0JBQzNDLFNBQVMsRUFBRSxDQUFDLDhCQUE4QixDQUFDO29CQUMzQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OEJBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFHTixPQUFPO3NCQUZOLFdBQVc7dUJBQUMsT0FBTzs7c0JBQ25CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTm90aWZpY2F0aW9uQ29sb3IgfSBmcm9tICdAa2lyYnlkZXNpZ24vY29yZSc7XG5cbmV4cG9ydCB0eXBlIENhcmRGbGFnTGV2ZWwgPSBOb3RpZmljYXRpb25Db2xvciB8ICdpbmZvJyB8IG51bGw7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LWNhcmQtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhcmQtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FyZC1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENhcmRIZWFkZXJDb21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBpc1RpdGxlQm9sZDogYm9vbGVhbjtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIEBJbnB1dCgpXG4gIGZsYWdnZWQ6IENhcmRGbGFnTGV2ZWwgPSBudWxsO1xufVxuIiwiPGhlYWRlcj5cbiAgPGgyICpuZ0lmPVwidGl0bGVcIiBbY2xhc3MuYm9sZF09XCJpc1RpdGxlQm9sZFwiPnt7IHRpdGxlIH19PC9oMj5cbiAgPGg0ICpuZ0lmPVwic3VidGl0bGVcIj57eyBzdWJ0aXRsZSB9fTwvaDQ+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvaGVhZGVyPlxuIl19
@@ -1,5 +1,7 @@
1
1
  import { Component, ElementRef, HostBinding, Input, Renderer2, } from '@angular/core';
2
2
  import { ResizeObserverService } from '../shared/resize-observer/resize-observer.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../shared/resize-observer/resize-observer.service";
3
5
  export class CardComponent {
4
6
  constructor(elementRef, resizeObserverService, renderer) {
5
7
  this.elementRef = elementRef;
@@ -54,28 +56,35 @@ export class CardComponent {
54
56
  }
55
57
  }
56
58
  }
57
- CardComponent.decorators = [
58
- { type: Component, args: [{
59
- selector: 'kirby-card',
60
- template: "<ng-content select=\"kirby-card-header\"></ng-content>\n<div class=\"content-wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n</div>\n<ng-content select=\"kirby-card-footer\"></ng-content>\n",
61
- styles: [":host{--kirby-card-main-background-color:var(--kirby-white);--kirby-card-main-color:var(--kirby-white-contrast);--kirby-card-footer-background-color:var(--kirby-white);--kirby-card-footer-color:var(--kirby-white-contrast);border-radius:16px;box-shadow:0 5px 10px -10px rgba(28,28,28,.3),0 0 5px 0 rgba(28,28,28,.08);color:var(--kirby-card-main-color);background-color:var(--kirby-card-main-background-color);background-image:var(--kirby-card-background-image);background-repeat:var(--kirby-card-background-repeat,no-repeat);background-position:var(--kirby-card-background-position,center);background-size:var(--kirby-card-background-size,cover);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;position:relative;z-index:1;width:var(--kirby-card-width,auto)}:host .content-wrapper.padding{padding:16px}:host.highlighted{box-shadow:0 10px 15px -10px rgba(28,28,28,.3),0 0 5px 0 rgba(28,28,28,.08)}:host.flat{box-shadow:none}:host[role=button]{cursor:pointer;outline-offset:2px}:host-context(.swiper-slide-active){box-shadow:0 10px 15px -10px rgba(28,28,28,.3),0 0 5px 0 rgba(28,28,28,.08);transition:all .5s;transform:translateY(-3px)}:host(.primary){--kirby-card-main-background-color:var(--kirby-primary);--kirby-card-main-color:var(--kirby-primary-contrast)}:host(.secondary){--kirby-card-main-background-color:var(--kirby-secondary);--kirby-card-main-color:var(--kirby-secondary-contrast)}:host(.tertiary){--kirby-card-main-background-color:var(--kirby-tertiary);--kirby-card-main-color:var(--kirby-tertiary-contrast)}:host(.success){--kirby-card-main-background-color:var(--kirby-success);--kirby-card-main-color:var(--kirby-success-contrast)}:host(.warning){--kirby-card-main-background-color:var(--kirby-warning);--kirby-card-main-color:var(--kirby-warning-contrast)}:host(.danger){--kirby-card-main-background-color:var(--kirby-danger);--kirby-card-main-color:var(--kirby-danger-contrast)}:host(.light){--kirby-card-main-background-color:var(--kirby-light);--kirby-card-main-color:var(--kirby-light-contrast)}:host(.medium){--kirby-card-main-background-color:var(--kirby-medium);--kirby-card-main-color:var(--kirby-medium-contrast)}:host(.dark){--kirby-card-main-background-color:var(--kirby-dark);--kirby-card-main-color:var(--kirby-dark-contrast)}"]
62
- },] }
63
- ];
64
- /** @nocollapse */
65
- CardComponent.ctorParameters = () => [
66
- { type: ElementRef },
67
- { type: ResizeObserverService },
68
- { type: Renderer2 }
69
- ];
70
- CardComponent.propDecorators = {
71
- title: [{ type: Input }],
72
- subtitle: [{ type: Input }],
73
- _backgroundImage: [{ type: HostBinding, args: ['style.--kirby-card-background-image',] }],
74
- backgroundImageUrl: [{ type: Input }],
75
- hasPadding: [{ type: Input }],
76
- sizes: [{ type: Input }],
77
- flat: [{ type: HostBinding, args: ['class.flat',] }],
78
- highlighted: [{ type: HostBinding, args: ['class.highlighted',] }],
79
- mode: [{ type: Input }]
80
- };
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvY2FyZC9jYXJkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUdMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQVExRixNQUFNLE9BQU8sYUFBYTtJQXdDeEIsWUFDVSxVQUFzQixFQUN0QixxQkFBNEMsRUFDNUMsUUFBbUI7UUFGbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGFBQVEsR0FBUixRQUFRLENBQVc7UUE1QnJCLDRCQUF1QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztZQUMzRCxLQUFLLEVBQUUsR0FBRztZQUNWLE1BQU0sRUFBRSxHQUFHO1lBQ1gsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7UUFhSCxTQUFJLEdBQVksS0FBSyxDQUFDO1FBRXRCLGdCQUFXLEdBQVksS0FBSyxDQUFDO0lBVTFCLENBQUM7SUFyQ0osSUFDSSxrQkFBa0IsQ0FBQyxLQUFhO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQzVDLENBQUM7SUFXRCxJQUNJLEtBQUssQ0FBQyxLQUFpQztRQUN6QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUM3QixPQUFPLENBQUMsS0FBSyxDQUNYLGdIQUFnSCxDQUNqSCxDQUFDO1NBQ0g7UUFDRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFNRCxJQUFhLElBQUksQ0FBQyxLQUE2QjtRQUM3QyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssS0FBSyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLEtBQUssYUFBYSxDQUFDO0lBQzdDLENBQUM7SUFRRCxRQUFRO1FBQ04sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8scUJBQXFCLENBQUMsS0FBaUM7UUFDN0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRU8sd0JBQXdCLENBQUMsQ0FBbUIsRUFBRSxDQUFtQjtRQUN2RSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQTBCO1FBQzdDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDO1FBQ2pDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25FLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsdUJBQXVCLEVBQUU7WUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxJQUFJLHNCQUFzQixFQUFFLENBQUMsQ0FBQztTQUMzRjthQUFNO1lBQ0wsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JELElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksS0FBSyxFQUFFO29CQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUNuRTtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7WUFoRkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxZQUFZO2dCQUN0QixpT0FBb0M7O2FBRXJDOzs7O1lBZkMsVUFBVTtZQVFILHFCQUFxQjtZQUg1QixTQUFTOzs7b0JBWVIsS0FBSzt1QkFDTCxLQUFLOytCQUVMLFdBQVcsU0FBQyxxQ0FBcUM7aUNBR2pELEtBQUs7eUJBS0wsS0FBSztvQkFTTCxLQUFLO21CQVVMLFdBQVcsU0FBQyxZQUFZOzBCQUV4QixXQUFXLFNBQUMsbUJBQW1CO21CQUUvQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvcmVzaXplLW9ic2VydmVyL3Jlc2l6ZS1vYnNlcnZlci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyRW50cnkgfSBmcm9tICcuLi9zaGFyZWQvcmVzaXplLW9ic2VydmVyL3R5cGVzL3Jlc2l6ZS1vYnNlcnZlci1lbnRyeSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhcmQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZztcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0ta2lyYnktY2FyZC1iYWNrZ3JvdW5kLWltYWdlJylcbiAgX2JhY2tncm91bmRJbWFnZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBiYWNrZ3JvdW5kSW1hZ2VVcmwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2JhY2tncm91bmRJbWFnZSA9IGB1cmwoJyR7dmFsdWV9JylgO1xuICB9XG5cbiAgQElucHV0KClcbiAgaGFzUGFkZGluZzogYm9vbGVhbjtcblxuICBwcml2YXRlIHNpemVzU29ydGVkQnlCcmVha3BvaW50ID0gdGhpcy5zb3J0U2l6ZXNCeUJyZWFrcG9pbnQoe1xuICAgIHNtYWxsOiAzNjAsXG4gICAgbWVkaXVtOiA3MjAsXG4gICAgbGFyZ2U6IDEwMjQsXG4gIH0pO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBzaXplcyh2YWx1ZTogeyBbc2l6ZTogc3RyaW5nXTogbnVtYmVyIH0pIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ1NpemVzIHByb3BlcnR5IGNhbm5vdCBiZSBhIHN0cmluZy4gUGxlYXNlIGVuc3VyZSB0aGUgc2l6ZSBwcm9wZXJ0eSBpcyBib3VuZCBhcyBhbiBleHByZXNzaW9uOlxcbltzaXplc109XCJ7Li4ufVwiJ1xuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5zaXplc1NvcnRlZEJ5QnJlYWtwb2ludCA9IHRoaXMuc29ydFNpemVzQnlCcmVha3BvaW50KHZhbHVlKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZmxhdCcpXG4gIGZsYXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oaWdobGlnaHRlZCcpXG4gIGhpZ2hsaWdodGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNldCBtb2RlKHZhbHVlOiAnZmxhdCcgfCAnaGlnaGxpZ2h0ZWQnKSB7XG4gICAgdGhpcy5mbGF0ID0gdmFsdWUgPT09ICdmbGF0JztcbiAgICB0aGlzLmhpZ2hsaWdodGVkID0gdmFsdWUgPT09ICdoaWdobGlnaHRlZCc7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZXNpemVPYnNlcnZlclNlcnZpY2U6IFJlc2l6ZU9ic2VydmVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLm9ic2VydmUodGhpcy5lbGVtZW50UmVmLCAoZW50cnkpID0+IHRoaXMuaGFuZGxlUmVzaXplKGVudHJ5KSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS51bm9ic2VydmUodGhpcy5lbGVtZW50UmVmKTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydFNpemVzQnlCcmVha3BvaW50KHNpemVzOiB7IFtzaXplOiBzdHJpbmddOiBudW1iZXIgfSk6IFtzdHJpbmcsIG51bWJlcl1bXSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHNpemVzKS5zb3J0KHRoaXMuY29tcGFyZVNpemVzQnlCcmVha3BvaW50KTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcGFyZVNpemVzQnlCcmVha3BvaW50KGE6IFtzdHJpbmcsIG51bWJlcl0sIGI6IFtzdHJpbmcsIG51bWJlcl0pOiBudW1iZXIge1xuICAgIHJldHVybiBhWzFdID4gYlsxXSA/IDEgOiBiWzFdID4gYVsxXSA/IC0xIDogMDtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUmVzaXplKGVudHJ5OiBSZXNpemVPYnNlcnZlckVudHJ5KSB7XG4gICAgY29uc3Qgc2l6ZUF0dHJpYnV0ZU5hbWUgPSAnc2l6ZSc7XG4gICAgY29uc3Qgc21hbGxlc3RCcmVha3BvaW50TmFtZSA9IHRoaXMuc2l6ZXNTb3J0ZWRCeUJyZWFrcG9pbnRbMF1bMF07XG4gICAgY29uc3Qgc21hbGxlc3RCcmVha3BvaW50V2lkdGggPSB0aGlzLnNpemVzU29ydGVkQnlCcmVha3BvaW50WzBdWzFdO1xuICAgIGlmIChlbnRyeS5jb250ZW50UmVjdC53aWR0aCA8IHNtYWxsZXN0QnJlYWtwb2ludFdpZHRoKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShlbnRyeS50YXJnZXQsIHNpemVBdHRyaWJ1dGVOYW1lLCBgPCR7c21hbGxlc3RCcmVha3BvaW50TmFtZX1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaXplc1NvcnRlZEJ5QnJlYWtwb2ludC5mb3JFYWNoKChbc2l6ZSwgd2lkdGhdKSA9PiB7XG4gICAgICAgIGlmIChlbnRyeS5jb250ZW50UmVjdC53aWR0aCA+PSB3aWR0aCkge1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVudHJ5LnRhcmdldCwgc2l6ZUF0dHJpYnV0ZU5hbWUsIHNpemUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
59
+ /** @nocollapse */ CardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CardComponent, deps: [{ token: i0.ElementRef }, { token: i1.ResizeObserverService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
60
+ /** @nocollapse */ CardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CardComponent, selector: "kirby-card", inputs: { title: "title", subtitle: "subtitle", backgroundImageUrl: "backgroundImageUrl", hasPadding: "hasPadding", sizes: "sizes", mode: "mode" }, host: { properties: { "style.--kirby-card-background-image": "this._backgroundImage", "class.flat": "this.flat", "class.highlighted": "this.highlighted" } }, ngImport: i0, template: "<ng-content select=\"kirby-card-header\"></ng-content>\n<div class=\"content-wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n</div>\n<ng-content select=\"kirby-card-footer\"></ng-content>\n", styles: [":host{--kirby-card-main-background-color: var(--kirby-white);--kirby-card-main-color: var(--kirby-white-contrast);--kirby-card-footer-background-color: var(--kirby-white);--kirby-card-footer-color: var(--kirby-white-contrast);border-radius:16px;box-shadow:0 5px 10px -10px #1c1c1c4d,0 0 5px #1c1c1c14;color:var(--kirby-card-main-color);background-color:var(--kirby-card-main-background-color);background-image:var(--kirby-card-background-image);background-repeat:var(--kirby-card-background-repeat, no-repeat);background-position:var(--kirby-card-background-position, center);background-size:var(--kirby-card-background-size, cover);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;position:relative;z-index:1;width:var(--kirby-card-width, auto)}:host .content-wrapper.padding{padding:16px}:host.highlighted{box-shadow:0 10px 15px -10px #1c1c1c4d,0 0 5px #1c1c1c14}:host.flat{box-shadow:none}:host[role=button]{cursor:pointer;outline-offset:2px}:host-context(.swiper-slide-active){box-shadow:0 10px 15px -10px #1c1c1c4d,0 0 5px #1c1c1c14;transition:all .5s;transform:translateY(-3px)}:host(.primary){--kirby-card-main-background-color: var(--kirby-primary);--kirby-card-main-color: var(--kirby-primary-contrast)}:host(.secondary){--kirby-card-main-background-color: var(--kirby-secondary);--kirby-card-main-color: var(--kirby-secondary-contrast)}:host(.tertiary){--kirby-card-main-background-color: var(--kirby-tertiary);--kirby-card-main-color: var(--kirby-tertiary-contrast)}:host(.success){--kirby-card-main-background-color: var(--kirby-success);--kirby-card-main-color: var(--kirby-success-contrast)}:host(.warning){--kirby-card-main-background-color: var(--kirby-warning);--kirby-card-main-color: var(--kirby-warning-contrast)}:host(.danger){--kirby-card-main-background-color: var(--kirby-danger);--kirby-card-main-color: var(--kirby-danger-contrast)}:host(.light){--kirby-card-main-background-color: var(--kirby-light);--kirby-card-main-color: var(--kirby-light-contrast)}:host(.medium){--kirby-card-main-background-color: var(--kirby-medium);--kirby-card-main-color: var(--kirby-medium-contrast)}:host(.dark){--kirby-card-main-background-color: var(--kirby-dark);--kirby-card-main-color: var(--kirby-dark-contrast)}\n"] });
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CardComponent, decorators: [{
62
+ type: Component,
63
+ args: [{
64
+ selector: 'kirby-card',
65
+ templateUrl: './card.component.html',
66
+ styleUrls: ['./card.component.scss'],
67
+ }]
68
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ResizeObserverService }, { type: i0.Renderer2 }]; }, propDecorators: { title: [{
69
+ type: Input
70
+ }], subtitle: [{
71
+ type: Input
72
+ }], _backgroundImage: [{
73
+ type: HostBinding,
74
+ args: ['style.--kirby-card-background-image']
75
+ }], backgroundImageUrl: [{
76
+ type: Input
77
+ }], hasPadding: [{
78
+ type: Input
79
+ }], sizes: [{
80
+ type: Input
81
+ }], flat: [{
82
+ type: HostBinding,
83
+ args: ['class.flat']
84
+ }], highlighted: [{
85
+ type: HostBinding,
86
+ args: ['class.highlighted']
87
+ }], mode: [{
88
+ type: Input
89
+ }] } });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvY2FyZC9jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9jYXJkL2NhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7OztBQVExRixNQUFNLE9BQU8sYUFBYTtJQXdDeEIsWUFDVSxVQUFzQixFQUN0QixxQkFBNEMsRUFDNUMsUUFBbUI7UUFGbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGFBQVEsR0FBUixRQUFRLENBQVc7UUE1QnJCLDRCQUF1QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztZQUMzRCxLQUFLLEVBQUUsR0FBRztZQUNWLE1BQU0sRUFBRSxHQUFHO1lBQ1gsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7UUFhSCxTQUFJLEdBQVksS0FBSyxDQUFDO1FBRXRCLGdCQUFXLEdBQVksS0FBSyxDQUFDO0lBVTFCLENBQUM7SUFyQ0osSUFDSSxrQkFBa0IsQ0FBQyxLQUFhO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQzVDLENBQUM7SUFXRCxJQUNJLEtBQUssQ0FBQyxLQUFpQztRQUN6QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUM3QixPQUFPLENBQUMsS0FBSyxDQUNYLGdIQUFnSCxDQUNq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LEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9yZXNpemUtb2JzZXJ2ZXIvcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzaXplT2JzZXJ2ZXJFbnRyeSB9IGZyb20gJy4uL3NoYXJlZC9yZXNpemUtb2JzZXJ2ZXIvdHlwZXMvcmVzaXplLW9ic2VydmVyLWVudHJ5JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FyZC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1raXJieS1jYXJkLWJhY2tncm91bmQtaW1hZ2UnKVxuICBfYmFja2dyb3VuZEltYWdlOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgc2V0IGJhY2tncm91bmRJbWFnZVVybCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fYmFja2dyb3VuZEltYWdlID0gYHVybCgnJHt2YWx1ZX0nKWA7XG4gIH1cblxuICBASW5wdXQoKVxuICBoYXNQYWRkaW5nOiBib29sZWFuO1xuXG4gIHByaXZhdGUgc2l6ZXNTb3J0ZWRCeUJyZWFrcG9pbnQgPSB0aGlzLnNvcnRTaXplc0J5QnJlYWtwb2ludCh7XG4gICAgc21hbGw6IDM2MCxcbiAgICBtZWRpdW06IDcyMCxcbiAgICBsYXJnZTogMTAyNCxcbiAgfSk7XG5cbiAgQElucHV0KClcbiAgc2V0IHNpemVzKHZhbHVlOiB7IFtzaXplOiBzdHJpbmddOiBudW1iZXIgfSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAnU2l6ZXMgcHJvcGVydHkgY2Fubm90IGJlIGEgc3RyaW5nLiBQbGVhc2UgZW5zdXJlIHRoZSBzaXplIHByb3BlcnR5IGlzIGJvdW5kIGFzIGFuIGV4cHJlc3Npb246XFxuW3NpemVzXT1cInsuLi59XCInXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnNpemVzU29ydGVkQnlCcmVha3BvaW50ID0gdGhpcy5zb3J0U2l6ZXNCeUJyZWFrcG9pbnQodmFsdWUpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mbGF0JylcbiAgZmxhdDogYm9vbGVhbiA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhpZ2hsaWdodGVkJylcbiAgaGlnaGxpZ2h0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IG1vZGUodmFsdWU6ICdmbGF0JyB8ICdoaWdobGlnaHRlZCcpIHtcbiAgICB0aGlzLmZsYXQgPSB2YWx1ZSA9PT0gJ2ZsYXQnO1xuICAgIHRoaXMuaGlnaGxpZ2h0ZWQgPSB2YWx1ZSA9PT0gJ2hpZ2hsaWdodGVkJztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyU2VydmljZTogUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYsIChlbnRyeSkgPT4gdGhpcy5oYW5kbGVSZXNpemUoZW50cnkpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLnVub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0U2l6ZXNCeUJyZWFrcG9pbnQoc2l6ZXM6IHsgW3NpemU6IHN0cmluZ106IG51bWJlciB9KTogW3N0cmluZywgbnVtYmVyXVtdIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoc2l6ZXMpLnNvcnQodGhpcy5jb21wYXJlU2l6ZXNCeUJyZWFrcG9pbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wYXJlU2l6ZXNCeUJyZWFrcG9pbnQoYTogW3N0cmluZywgbnVtYmVyXSwgYjogW3N0cmluZywgbnVtYmVyXSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGFbMV0gPiBiWzFdID8gMSA6IGJbMV0gPiBhWzFdID8gLTEgOiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVSZXNpemUoZW50cnk6IFJlc2l6ZU9ic2VydmVyRW50cnkpIHtcbiAgICBjb25zdCBzaXplQXR0cmlidXRlTmFtZSA9ICdzaXplJztcbiAgICBjb25zdCBzbWFsbGVzdEJyZWFrcG9pbnROYW1lID0gdGhpcy5zaXplc1NvcnRlZEJ5QnJlYWtwb2ludFswXVswXTtcbiAgICBjb25zdCBzbWFsbGVzdEJyZWFrcG9pbnRXaWR0aCA9IHRoaXMuc2l6ZXNTb3J0ZWRCeUJyZWFrcG9pbnRbMF1bMV07XG4gICAgaWYgKGVudHJ5LmNvbnRlbnRSZWN0LndpZHRoIDwgc21hbGxlc3RCcmVha3BvaW50V2lkdGgpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVudHJ5LnRhcmdldCwgc2l6ZUF0dHJpYnV0ZU5hbWUsIGA8JHtzbWFsbGVzdEJyZWFrcG9pbnROYW1lfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNpemVzU29ydGVkQnlCcmVha3BvaW50LmZvckVhY2goKFtzaXplLCB3aWR0aF0pID0+IHtcbiAgICAgICAgaWYgKGVudHJ5LmNvbnRlbnRSZWN0LndpZHRoID49IHdpZHRoKSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZW50cnkudGFyZ2V0LCBzaXplQXR0cmlidXRlTmFtZSwgc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwia2lyYnktY2FyZC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG48ZGl2IGNsYXNzPVwiY29udGVudC13cmFwcGVyXCIgW2NsYXNzLnBhZGRpbmddPVwiaGFzUGFkZGluZ1wiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxuZy1jb250ZW50IHNlbGVjdD1cImtpcmJ5LWNhcmQtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuIl19
@@ -4,6 +4,8 @@ import { mergeDeepAll } from '../../../helpers/merge-deep';
4
4
  import { isNumberArray, } from '../chart.types';
5
5
  import { ChartConfigService } from '../configs/chart-config.service';
6
6
  import { Chart } from './configured-chart-js';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../configs/chart-config.service";
7
9
  const CHART_LOCALE_DEFAULT = 'en-US';
8
10
  export class ChartJSService {
9
11
  constructor(chartConfigService) {
@@ -253,7 +255,9 @@ export class ChartJSService {
253
255
  createDatasets(data) {
254
256
  var _a, _b, _c;
255
257
  // We need to modify the datasets in order to add datalabels.
256
- if (((_a = this.dataLabelOptions) === null || _a === void 0 ? void 0 : _a.showCurrent) || ((_b = this.dataLabelOptions) === null || _b === void 0 ? void 0 : _b.showMax) || ((_c = this.dataLabelOptions) === null || _c === void 0 ? void 0 : _c.showMin)) {
258
+ if (((_a = this.dataLabelOptions) === null || _a === void 0 ? void 0 : _a.showCurrent) ||
259
+ ((_b = this.dataLabelOptions) === null || _b === void 0 ? void 0 : _b.showMax) ||
260
+ ((_c = this.dataLabelOptions) === null || _c === void 0 ? void 0 : _c.showMin)) {
257
261
  data = this.addDataLabelsData(data);
258
262
  }
259
263
  let datasets = isNumberArray(data) ? [{ data }] : data;
@@ -316,11 +320,9 @@ export class ChartJSService {
316
320
  return { value, pointer };
317
321
  }
318
322
  }
319
- ChartJSService.decorators = [
320
- { type: Injectable }
321
- ];
322
- /** @nocollapse */
323
- ChartJSService.ctorParameters = () => [
324
- { type: ChartConfigService }
325
- ];
326
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtanMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC9jaGFydC1qcy9jaGFydC1qcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQU9MLGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5QyxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztBQUdyQyxNQUFNLE9BQU8sY0FBYztJQU96QixZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUFHLENBQUM7SUFFdkQsV0FBVyxDQUFDLElBU2xCO1FBQ0MsTUFBTSxFQUNKLGFBQWEsRUFDYixJQUFJLEVBQ0osSUFBSSxFQUNKLE1BQU0sRUFDTixhQUFhLEVBQ2IsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixtQkFBbUIsR0FDcEIsR0FBRyxJQUFJLENBQUM7UUFFVCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLElBQUksSUFBSSxDQUFDO1FBQ2pELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsSUFBSSxJQUFJLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFBLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixDQUFFLE1BQU0sS0FBSSxvQkFBb0IsQ0FBQztRQUUvRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUN2QyxhQUFhO1lBQ2IsV0FBVztZQUNYLGdCQUFnQjtTQUNqQixDQUFDLENBQUM7UUFDSCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFN0UsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sVUFBVSxDQUFDLElBQStCO1FBQy9DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUN0QyxDQUFDO0lBRU0sWUFBWSxDQUFDLE1BQW9CO1FBQ3RDO21FQUMyRDtRQUMzRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxVQUFVLENBQUMsSUFBZSxFQUFFLGFBQTRCO1FBQzdELElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQ3ZDOzRDQUNnQztZQUNoQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQ25EO2FBQU07WUFDTCxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQ3REO0lBQ0gsQ0FBQztJQUVNLG1CQUFtQixDQUFDLGdCQUF1QztRQUNoRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7SUFDM0MsQ0FBQztJQUVNLGFBQWEsQ0FBQyxhQUEyQixFQUFFLElBQWU7UUFDL0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVNLGlCQUFpQixDQUFDLFdBQWdDO1FBQ3ZELE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLHVCQUF1QixDQUFDO0lBQzlFLENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxtQkFBOEM7UUFDN0UsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO1FBQy9DLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQTBCLENBQUM7UUFFL0QsNkNBQTZDO1FBQzdDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTs7WUFDMUIsVUFBSSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsWUFBWSwwQ0FBRSxtQkFBbUIsRUFBRTtnQkFDOUMsT0FBTyxPQUFPLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDO2FBQ2pEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU8sMkJBQTJCOztRQUNqQyxNQUFNLFdBQVcsZUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLDBDQUFFLFVBQVUsMENBQUUsV0FBVyxDQUFDO1FBQ3hFOzsrRUFFdUU7UUFDdkUsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQzdCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2hFO2FBQU07WUFDTCxPQUFPLEVBQUUsQ0FBQztTQUNYO0lBQ0gsQ0FBQztJQUVPLHVCQUF1QixDQUFDLElBQWUsRUFBRSxhQUE0QjtRQUMzRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUEwQixDQUFDO1FBQzVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQXNCLENBQUMsQ0FBQywrREFBK0Q7UUFDdEgsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFFdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDekUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9FLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBRXhDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sMEJBQTBCLENBQUMsU0FBb0IsRUFBRSxhQUE0QjtRQUNuRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDdkMsYUFBYTtZQUNiLFdBQVc7U0FDWixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRU8sa0JBQWtCLENBQUMsYUFBZ0MsRUFBRSxNQUEwQjtRQUNyRixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU8saUJBQWlCLENBQUMsUUFBd0I7UUFDaEQsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUUsRUFBRSxDQUN6RSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQzVGLENBQUM7UUFDRixPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU8sMEJBQTBCLENBQUMsV0FBZ0M7UUFDakUsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDcEMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlGLE9BQU8sWUFBWSxDQUFDLHNCQUFzQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG1DQUFtQyxDQUFDLFdBQWdDO1FBQzFFLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdFLE9BQU87WUFDTCxPQUFPLEVBQUU7Z0JBQ1AsVUFBVSxFQUFFO29CQUNWLFdBQVcsRUFBRSx1QkFBdUI7aUJBQ3JDO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLG1DQUFtQyxDQUFDLE9BQXFCO1FBQy9ELE1BQU0sOEJBQThCLEdBQ2xDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO1FBQzlELE1BQU0sQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2xFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFRLEVBQUUsQ0FBa0IsRUFBRSxDQUFRLEVBQUUsRUFBRTtnQkFDeEQsOEJBQThCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDekQsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU8sd0JBQXdCLENBQUMsZ0JBQXVDO1FBQ3RFLE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsT0FBTyxFQUFFO2dCQUNQLE9BQU8sRUFBRTtvQkFDUCxTQUFTLEVBQUU7d0JBQ1QsS0FBSyxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUU7OzRCQUN0QixNQUFNLElBQUksR0FBRyxNQUFNLE9BQUUsTUFBQSxZQUFZLENBQUMsQ0FBQyxDQUFDLDBDQUFFLEdBQVcsMENBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQ3RELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dDQUNsQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO29DQUMxQyxHQUFHLEVBQUUsU0FBUztvQ0FDZCxLQUFLLEVBQUUsT0FBTztvQ0FDZCxJQUFJLEVBQUUsU0FBUztvQ0FDZixNQUFNLEVBQUUsU0FBUztpQ0FDbEIsQ0FBQyxDQUFDOzZCQUNKO3dCQUNILENBQUM7d0JBQ0QsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7NEJBQ2pCLHVFQUF1RTs0QkFDdkUsdUJBQXVCOzRCQUN2QixPQUFPLEdBQUcsR0FBRyxPQUFPLENBQUMsY0FBYyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDO3dCQUM3RSxDQUFDO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sQ0FBQyxFQUFFO29CQUNELEtBQUssRUFBRTt3QkFDTCxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTs0QkFDbEIsT0FBTyxLQUFLLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUM7d0JBQ3RELENBQUM7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sbUJBQW1CLENBQUMsSUFJM0I7UUFDQyxNQUFNLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxHQUFHLElBQUksQ0FBQztRQUVyRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RSxNQUFNLGlCQUFpQixHQUFHLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxPQUFPLENBQUM7UUFDOUMsTUFBTSx1QkFBdUIsR0FBRyxXQUFXO1lBQ3pDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsV0FBVyxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxNQUFNLFlBQVksR0FDaEIsSUFBSSxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFekYsSUFBSSxPQUFPLEdBQWlCLFlBQVksQ0FDdEMsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsdUJBQXVCLENBQ3hCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU8scUJBQXFCLENBQUMsUUFBd0IsRUFBRSxNQUFtQjtRQUN6RSxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxFQUFFLENBQ3pFLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FDNUYsQ0FBQztRQUNGLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUF1QixFQUFFLEVBQUUsQ0FDekQsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUU7WUFDekMsS0FBSyxFQUFFLE9BQU87WUFDZCxHQUFHLEVBQUUsU0FBUztTQUNmLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQixDQUFDLElBS3hCO1FBQ0MsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQztRQUVuRCxNQUFNLGdCQUFnQixHQUFHLENBQUMsRUFBRSxJQUFJLEVBQWdCLEVBQUUsRUFBRSxDQUNsRCxDQUFDLEVBQUMsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLElBQUksQ0FDVixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxTQUFTLEtBQUssUUFBUSxJQUFJLE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLFFBQVEsRUFDekYsQ0FBQztRQUVKOzs7Ozs7OztVQVFFO1FBQ0YsTUFBTSw2QkFBNkIsR0FBRyxNQUFNLEtBQUssU0FBUyxDQUFDO1FBQzNELE1BQU0saUNBQWlDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTFFLElBQUksNkJBQTZCLEVBQUU7WUFDakMsT0FBTyxNQUFNLENBQUM7U0FDZjthQUFNLElBQUksaUNBQWlDLEVBQUU7WUFDNUMsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFNO1lBQ0w7Ozs7Y0FJRTtZQUNGLE9BQU8sSUFBSSxLQUFLLE9BQU87Z0JBQ3JCLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQ25ELENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBRU8seUJBQXlCLENBQy9CLElBQWUsRUFDZixRQUF3QixFQUN4QixPQUFxQixFQUNyQixNQUFxQjs7UUFFckIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUvRCxNQUFNLFNBQVMsZUFBRyxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsT0FBTywwQ0FBRSxTQUFTLG1DQUFJLEdBQUcsQ0FBQztRQUN4RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRW5GLE9BQU8sWUFBWSxDQUFDLFVBQVUsRUFBRTtZQUM5QixJQUFJLEVBQUU7Z0JBQ0osTUFBTSxFQUFFLGFBQWE7Z0JBQ3JCLFFBQVE7YUFDVDtZQUNELE9BQU87U0FDUixDQUF1QixDQUFDO0lBQzNCLENBQUM7SUFFTyxnQ0FBZ0MsQ0FDdEMsbUJBQTZDLEVBQzdDLFFBQXdCO1FBRXhCLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUU7O1lBQ3hELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBRXJCLFVBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFlBQVksMENBQUUsbUJBQW1CLEVBQUU7Z0JBQzlDLE9BQU8sQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzFEO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxZQUFZLG1DQUNmLE9BQU8sQ0FBQyxZQUFZLEtBQ3ZCLG1CQUFtQixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQ2pDLENBQUM7YUFDSDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNPLGNBQWMsQ0FBQyxJQUErQjs7UUFDcEQsNkRBQTZEO1FBQzdELElBQ0UsT0FBQSxJQUFJLENBQUMsZ0JBQWdCLDBDQUFFLFdBQVcsWUFDbEMsSUFBSSxDQUFDLGdCQUFnQiwwQ0FBRSxPQUFPLENBQUEsV0FDOUIsSUFBSSxDQUFDLGdCQUFnQiwwQ0FBRSxPQUFPLENBQUEsRUFDOUI7WUFDQSxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxRQUFRLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3ZELElBQUksSUFBSSxDQUFDLG1CQUFtQjtZQUMxQixJQUFJLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTVFOzs7VUFHRTtRQUNGLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxPQUFPLEVBQUU7WUFDOUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMzQixPQUFPLENBQUMsWUFBWSxtQ0FDZixPQUFPLENBQUMsWUFBWSxLQUN2QixZQUFZLEVBQUUsSUFBSSxHQUNuQixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNJLGlCQUFpQixDQUFDLElBQStCO1FBQ3RELElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sS0FBSyxDQUFDLDhFQUE4RSxDQUFDLENBQUM7U0FDN0Y7UUFFRCxNQUFNLGlCQUFpQixHQUFHLENBQ3hCLEdBQWlCLEVBQ2pCLElBQWUsRUFDZixTQUF5QixFQUN6QixRQUE2QyxFQUN2QyxFQUFFO1lBQ1IsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNoRixHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLGdDQUNkLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFzQixLQUMxQyxTQUFTLEVBQUU7b0JBQ1QsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO29CQUN4RCxRQUFRO2lCQUNULEdBQ2tCLENBQUM7UUFDeEIsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2YsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO2dCQUNqQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQzthQUM5QztZQUNELElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtnQkFDakMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDNUM7WUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3JDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQzlDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyx5QkFBeUIsQ0FDL0IsT0FBcUIsRUFDckIsSUFBWSxFQUNaLFNBQXlCO1FBRXpCLElBQUksT0FBZSxDQUFDO1FBQ3BCLElBQUksS0FBYSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3hDLElBQUksU0FBUyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDN0QsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUNqQjtZQUNELElBQUksU0FBUyxJQUFJLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDOUQsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUNqQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM1QixDQUFDOzs7WUF0YUYsVUFBVTs7OztZQU5GLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2ZUVsZW1lbnQsIENoYXJ0Q29uZmlndXJhdGlvbiwgQ2hhcnRPcHRpb25zLCBTY2F0dGVyRGF0YVBvaW50IH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbk9wdGlvbnMgfSBmcm9tICdjaGFydGpzLXBsdWdpbi1hbm5vdGF0aW9uJztcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gJ2RhdGUtZm5zJztcblxuaW1wb3J0IHsgbWVyZ2VEZWVwQWxsIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwJztcbmltcG9ydCB7XG4gIENoYXJ0RGF0YUxhYmVsT3B0aW9ucyxcbiAgQ2hhcnREYXRhc2V0LFxuICBDaGFydEhpZ2hsaWdodGVkRWxlbWVudHMsXG4gIENoYXJ0TGFiZWwsXG4gIENoYXJ0TG9jYWxlLFxuICBDaGFydFR5cGUsXG4gIGlzTnVtYmVyQXJyYXksXG59IGZyb20gJy4uL2NoYXJ0LnR5cGVzJztcbmltcG9ydCB7IENoYXJ0Q29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvbmZpZ3MvY2hhcnQtY29uZmlnLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJy4vY29uZmlndXJlZC1jaGFydC1qcyc7XG5cbmNvbnN0IENIQVJUX0xPQ0FMRV9ERUZBVUxUID0gJ2VuLVVTJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENoYXJ0SlNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjaGFydDogQ2hhcnQ7XG4gIHByaXZhdGUgZGF0YUxhYmVsT3B0aW9uczogQ2hhcnREYXRhTGFiZWxPcHRpb25zO1xuICBwcml2YXRlIGhpZ2hsaWdodGVkRWxlbWVudHM6IENoYXJ0SGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgcHJpdmF0ZSBjaGFydFR5cGU6IENoYXJ0VHlwZTtcbiAgcHJpdmF0ZSBsb2NhbGU6IENoYXJ0TG9jYWxlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhcnRDb25maWdTZXJ2aWNlOiBDaGFydENvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgcHVibGljIHJlbmRlckNoYXJ0KGFyZ3M6IHtcbiAgICB0YXJnZXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgICB0eXBlOiBDaGFydFR5cGU7XG4gICAgZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXTtcbiAgICBsYWJlbHM/OiBDaGFydExhYmVsW107XG4gICAgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucztcbiAgICBhbm5vdGF0aW9ucz86IEFubm90YXRpb25PcHRpb25zW107XG4gICAgZGF0YUxhYmVsT3B0aW9ucz86IENoYXJ0RGF0YUxhYmVsT3B0aW9ucztcbiAgICBoaWdobGlnaHRlZEVsZW1lbnRzPzogQ2hhcnRIaWdobGlnaHRlZEVsZW1lbnRzO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgdGFyZ2V0RWxlbWVudCxcbiAgICAgIHR5cGUsXG4gICAgICBkYXRhLFxuICAgICAgbGFiZWxzLFxuICAgICAgY3VzdG9tT3B0aW9ucyxcbiAgICAgIGFubm90YXRpb25zLFxuICAgICAgZGF0YUxhYmVsT3B0aW9ucyxcbiAgICAgIGhpZ2hsaWdodGVkRWxlbWVudHMsXG4gICAgfSA9IGFyZ3M7XG5cbiAgICB0aGlzLmRhdGFMYWJlbE9wdGlvbnMgPSBkYXRhTGFiZWxPcHRpb25zIHx8IG51bGw7XG4gICAgdGhpcy5oaWdobGlnaHRlZEVsZW1lbnRzID0gaGlnaGxpZ2h0ZWRFbGVtZW50cyB8fCBudWxsO1xuICAgIHRoaXMuY2hhcnRUeXBlID0gdHlwZTtcbiAgICB0aGlzLmxvY2FsZSA9IGRhdGFMYWJlbE9wdGlvbnM/LmxvY2FsZSB8fCBDSEFSVF9MT0NBTEVfREVGQVVMVDtcblxuICAgIGNvbnN0IGRhdGFzZXRzID0gdGhpcy5jcmVhdGVEYXRhc2V0cyhkYXRhKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNyZWF0ZU9wdGlvbnNPYmplY3Qoe1xuICAgICAgY3VzdG9tT3B0aW9ucyxcbiAgICAgIGFubm90YXRpb25zLFxuICAgICAgZGF0YUxhYmVsT3B0aW9ucyxcbiAgICB9KTtcbiAgICBsZXQgY29uZmlnID0gdGhpcy5jcmVhdGVDb25maWd1cmF0aW9uT2JqZWN0KHR5cGUsIGRhdGFzZXRzLCBvcHRpb25zLCBsYWJlbHMpO1xuXG4gICAgdGhpcy5pbml0aWFsaXplTmV3Q2hhcnQodGFyZ2V0RWxlbWVudC5uYXRpdmVFbGVtZW50LCBjb25maWcpO1xuICB9XG5cbiAgcHVibGljIHJlZHJhd0NoYXJ0KCkge1xuICAgIHRoaXMuY2hhcnQudXBkYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRGF0YShkYXRhOiBDaGFydERhdGFzZXRbXSB8IG51bWJlcltdKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YXNldHMgPSB0aGlzLmNyZWF0ZURhdGFzZXRzKGRhdGEpO1xuXG4gICAgdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzID0gZGF0YXNldHM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlTGFiZWxzKGxhYmVsczogQ2hhcnRMYWJlbFtdKSB7XG4gICAgLyogQXMgbGFiZWxzIHByb3ZpZGVkIHZpYSB0aGUgJ2xhYmVscycgaW5wdXQgcHJvcGVydHkgYWx3YXlzIGhhcyBcbiAgICBoaWdoZXN0IHByaW9yaXR5IC0gd2UgY2FuIGp1c3Qgc2V0IHRoZSBwcm9wZXJ0eSBkaXJlY3RseSAqL1xuICAgIHRoaXMuY2hhcnQuZGF0YS5sYWJlbHMgPSBsYWJlbHM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVHlwZSh0eXBlOiBDaGFydFR5cGUsIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBpZiAodHlwZSA9PT0gJ2JhcicgfHwgdHlwZSA9PT0gJ2NvbHVtbicpIHtcbiAgICAgIC8qIGluZGV4QXhpcyBkb2VzIG5vdCB1cGRhdGUgcHJlZGljdGFibHk7IHVwZGF0ZSBieSByZXBsYWNpbmcgXG4gICAgICAgICB0aGUgY2hhcnQgZW50aXJlbHkgaW5zdGVhZCAqL1xuICAgICAgdGhpcy5kZXN0cnVjdGl2ZWx5VXBkYXRlVHlwZSh0eXBlLCBjdXN0b21PcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub25EZXN0cnVjdGl2ZWx5VXBkYXRlVHlwZSh0eXBlLCBjdXN0b21PcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0RGF0YUxhYmVsT3B0aW9ucyhkYXRhTGFiZWxPcHRpb25zOiBDaGFydERhdGFMYWJlbE9wdGlvbnMpIHtcbiAgICB0aGlzLmRhdGFMYWJlbE9wdGlvbnMgPSBkYXRhTGFiZWxPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU9wdGlvbnMoY3VzdG9tT3B0aW9uczogQ2hhcnRPcHRpb25zLCB0eXBlOiBDaGFydFR5cGUpIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IHRoaXMuZ2V0RXhpc3RpbmdDaGFydEFubm90YXRpb25zKCk7XG4gICAgdGhpcy5jaGFydFR5cGUgPSB0eXBlO1xuICAgIHRoaXMuY2hhcnQub3B0aW9ucyA9IHRoaXMuY3JlYXRlT3B0aW9uc09iamVjdCh7IGN1c3RvbU9wdGlvbnMsIGFubm90YXRpb25zIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFubm90YXRpb25zKGFubm90YXRpb25zOiBBbm5vdGF0aW9uT3B0aW9uc1tdKSB7XG4gICAgY29uc3QgYW5ub3RhdGlvbnNXaXRoRGVmYXVsdHMgPSB0aGlzLmFwcGx5RGVmYXVsdHNUb0Fubm90YXRpb25zKGFubm90YXRpb25zKTtcbiAgICB0aGlzLmNoYXJ0Lm9wdGlvbnMucGx1Z2lucy5hbm5vdGF0aW9uLmFubm90YXRpb25zID0gYW5ub3RhdGlvbnNXaXRoRGVmYXVsdHM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlSGlnaGxpZ2h0ZWRFbGVtZW50cyhoaWdobGlnaHRlZEVsZW1lbnRzPzogQ2hhcnRIaWdobGlnaHRlZEVsZW1lbnRzKSB7XG4gICAgdGhpcy5oaWdobGlnaHRlZEVsZW1lbnRzID0gaGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgICBjb25zdCBvbGREYXRhc2V0cyA9IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyBhcyBDaGFydERhdGFzZXRbXTtcblxuICAgIC8vIENsZWFyIG9sZCBkYXRhc2V0cyBvZiBoaWdobGlnaHRlZCBlbGVtZW50c1xuICAgIG9sZERhdGFzZXRzLm1hcCgoZGF0YXNldCkgPT4ge1xuICAgICAgaWYgKGRhdGFzZXQ/LmtpcmJ5T3B0aW9ucz8uaGlnaGxpZ2h0ZWRFbGVtZW50cykge1xuICAgICAgICBkZWxldGUgZGF0YXNldC5raXJieU9wdGlvbnMuaGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyA9IHRoaXMuY3JlYXRlRGF0YXNldHMob2xkRGF0YXNldHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeGlzdGluZ0NoYXJ0QW5ub3RhdGlvbnMoKTogQW5ub3RhdGlvbk9wdGlvbnNbXSB7XG4gICAgY29uc3QgYW5ub3RhdGlvbnMgPSB0aGlzLmNoYXJ0Lm9wdGlvbnMucGx1Z2lucz8uYW5ub3RhdGlvbj8uYW5ub3RhdGlvbnM7XG4gICAgLyogSW4gYnJvd3NlciBjaGFydC5qcyBtaWdodCByZXR1cm4gYW5ub3RhdGlvbnMgYXMgYSBQcm94eSBvYmplY3Q7IGZvcmNlIGl0IHRvIGJlIGFuIGFycmF5LlxuICAgICAgIEVhY2ggYW5ub3RhdGlvbk9wdGlvbiBpbiB0aGUgcmVzdWx0aW5nIGFycmF5ICB3aWxsIGFsc28gYmUgYSBQcm94eSBvYmplY3QuIFxuICAgICAgIEJ1dCBpbnRlcm5hbGx5IGNoYXJ0LmpzIHdpbGwganVzdCB3b3JrIHdpdGggdGhlbSBhcyBub3JtYWwgdmFsdWVzICovXG4gICAgaWYgKGFubm90YXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhhbm5vdGF0aW9ucykubWFwKChrZXkpID0+IGFubm90YXRpb25zW2tleV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cnVjdGl2ZWx5VXBkYXRlVHlwZSh0eXBlOiBDaGFydFR5cGUsIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBjb25zdCBkYXRhc2V0cyA9IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyBhcyBDaGFydERhdGFzZXRbXTtcbiAgICBjb25zdCBsYWJlbHMgPSB0aGlzLmNoYXJ0LmRhdGEubGFiZWxzIGFzIENoYXJ0TGFiZWxbXTsgLy8gY2hhcnQuanMgc3RvcmVzIGxhYmVscyBhcyB1bmtub3duW107IGNhc3QgaXQgdG8gQ2hhcnRMYWJlbFtdXG4gICAgY29uc3QgYW5ub3RhdGlvbnMgPSB0aGlzLmdldEV4aXN0aW5nQ2hhcnRBbm5vdGF0aW9ucygpO1xuXG4gICAgdGhpcy5jaGFydFR5cGUgPSB0eXBlO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNyZWF0ZU9wdGlvbnNPYmplY3QoeyBjdXN0b21PcHRpb25zLCBhbm5vdGF0aW9ucyB9KTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNyZWF0ZUNvbmZpZ3VyYXRpb25PYmplY3QodHlwZSwgZGF0YXNldHMsIG9wdGlvbnMsIGxhYmVscyk7XG4gICAgY29uc3QgY2FudmFzRWxlbWVudCA9IHRoaXMuY2hhcnQuY2FudmFzO1xuXG4gICAgdGhpcy5jaGFydC5kZXN0cm95KCk7XG4gICAgdGhpcy5pbml0aWFsaXplTmV3Q2hhcnQoY2FudmFzRWxlbWVudCwgY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9uRGVzdHJ1Y3RpdmVseVVwZGF0ZVR5cGUoY2hhcnRUeXBlOiBDaGFydFR5cGUsIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IHRoaXMuZ2V0RXhpc3RpbmdDaGFydEFubm90YXRpb25zKCk7XG4gICAgdGhpcy5jaGFydFR5cGUgPSBjaGFydFR5cGU7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY3JlYXRlT3B0aW9uc09iamVjdCh7XG4gICAgICBjdXN0b21PcHRpb25zLFxuICAgICAgYW5ub3RhdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0Lm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuY2hhcnQuY29uZmlnLnR5cGUgPSB0aGlzLmNoYXJ0Q29uZmlnU2VydmljZS5jaGFydFR5cGVUb0NoYXJ0SlNUeXBlKGNoYXJ0VHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVOZXdDaGFydChjYW52YXNFbGVtZW50OiBIVE1MQ2FudmFzRWxlbWVudCwgY29uZmlnOiBDaGFydENvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KGNhbnZhc0VsZW1lbnQsIGNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUJsYW5rTGFiZWxzKGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBsYXJnZXN0RGF0YXNldCA9IGRhdGFzZXRzLnJlZHVjZSgocHJldmlvdXNEYXRhc2V0LCBjdXJyZW50RGF0YXNldCkgPT5cbiAgICAgIHByZXZpb3VzRGF0YXNldC5kYXRhLmxlbmd0aCA+IGN1cnJlbnREYXRhc2V0LmRhdGEubGVuZ3RoID8gcHJldmlvdXNEYXRhc2V0IDogY3VycmVudERhdGFzZXRcbiAgICApO1xuICAgIHJldHVybiBBcnJheShsYXJnZXN0RGF0YXNldC5kYXRhLmxlbmd0aCkuZmlsbCgnJyk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RGVmYXVsdHNUb0Fubm90YXRpb25zKGFubm90YXRpb25zOiBBbm5vdGF0aW9uT3B0aW9uc1tdKSB7XG4gICAgcmV0dXJuIGFubm90YXRpb25zLm1hcCgoYW5ub3RhdGlvbikgPT4ge1xuICAgICAgY29uc3QgYW5ub3RhdGlvblR5cGVEZWZhdWx0cyA9IHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmdldEFubm90YXRpb25EZWZhdWx0cyhhbm5vdGF0aW9uLnR5cGUpO1xuICAgICAgcmV0dXJuIG1lcmdlRGVlcEFsbChhbm5vdGF0aW9uVHlwZURlZmF1bHRzLCBhbm5vdGF0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQW5ub3RhdGlvblBsdWdpbk9wdGlvbnNPYmplY3QoYW5ub3RhdGlvbnM6IEFubm90YXRpb25PcHRpb25zW10pIHtcbiAgICBjb25zdCBhbm5vdGF0aW9uc1dpdGhEZWZhdWx0cyA9IHRoaXMuYXBwbHlEZWZhdWx0c1RvQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnMpO1xuICAgIHJldHVybiB7XG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIGFubm90YXRpb246IHtcbiAgICAgICAgICBhbm5vdGF0aW9uczogYW5ub3RhdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFwcGx5SW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zKG9wdGlvbnM6IENoYXJ0T3B0aW9ucyk6IENoYXJ0T3B0aW9ucyB7XG4gICAgY29uc3QgaW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zID1cbiAgICAgIHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmdldEludGVyYWN0aW9uRnVuY3Rpb25zRXh0ZW5zaW9ucygpO1xuICAgIE9iamVjdC5lbnRyaWVzKGludGVyYWN0aW9uRnVuY3Rpb25zRXh0ZW5zaW9ucykuZm9yRWFjaCgoW2tleSwgX10pID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gb3B0aW9uc1trZXldO1xuICAgICAgb3B0aW9uc1trZXldID0gKGU6IEV2ZW50LCBhOiBBY3RpdmVFbGVtZW50W10sIGM6IENoYXJ0KSA9PiB7XG4gICAgICAgIGludGVyYWN0aW9uRnVuY3Rpb25zRXh0ZW5zaW9uc1trZXldKGUsIGEsIGMsIGNhbGxiYWNrKTtcbiAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN0b2NrT3B0aW9uc09iamVjdChkYXRhTGFiZWxPcHRpb25zOiBDaGFydERhdGFMYWJlbE9wdGlvbnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICAgICAgdGl0bGU6ICh0b29sdGlwSXRlbXMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZGF0ZSA9IHRvRGF0ZSgodG9vbHRpcEl0ZW1zWzBdPy5yYXcgYXMgYW55KT8ueCk7XG4gICAgICAgICAgICAgIGlmIChkYXRlLnZhbHVlT2YoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZSwge1xuICAgICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgICAgICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcbiAgICAgICAgICAgICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFiZWw6IChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgIC8vIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGFkZCBzcGFjaW5nIGJldHdlZW4gY29sb3IgbGVnZW5kIGFuZCB0ZXh0IHNvIHdlXG4gICAgICAgICAgICAgIC8vIHByZWZpeCB3aXRoIGEgc3BhY2UuXG4gICAgICAgICAgICAgIHJldHVybiAnICcgKyBjb250ZXh0LmZvcm1hdHRlZFZhbHVlICsgKGRhdGFMYWJlbE9wdGlvbnMudmFsdWVTdWZmaXggfHwgJycpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNjYWxlczoge1xuICAgICAgICB5OiB7XG4gICAgICAgICAgdGlja3M6IHtcbiAgICAgICAgICAgIGNhbGxiYWNrOiAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICsgKGRhdGFMYWJlbE9wdGlvbnMudmFsdWVTdWZmaXggfHwgJycpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPcHRpb25zT2JqZWN0KGFyZ3M6IHtcbiAgICBjdXN0b21PcHRpb25zPzogQ2hhcnRPcHRpb25zO1xuICAgIGFubm90YXRpb25zPzogQW5ub3RhdGlvbk9wdGlvbnNbXTtcbiAgICBkYXRhTGFiZWxPcHRpb25zPzogQ2hhcnREYXRhTGFiZWxPcHRpb25zO1xuICB9KTogQ2hhcnRPcHRpb25zIHtcbiAgICBjb25zdCB7IGN1c3RvbU9wdGlvbnMsIGFubm90YXRpb25zLCBkYXRhTGFiZWxPcHRpb25zOiBjaGFydERhdGFMYWJlbE9wdGlvbnMgfSA9IGFyZ3M7XG5cbiAgICBjb25zdCB0eXBlQ29uZmlnID0gdGhpcy5jaGFydENvbmZpZ1NlcnZpY2UuZ2V0VHlwZUNvbmZpZyh0aGlzLmNoYXJ0VHlwZSk7XG4gICAgY29uc3QgdHlwZUNvbmZpZ09wdGlvbnMgPSB0eXBlQ29uZmlnPy5vcHRpb25zO1xuICAgIGNvbnN0IGFubm90YXRpb25QbHVnaW5PcHRpb25zID0gYW5ub3RhdGlvbnNcbiAgICAgID8gdGhpcy5jcmVhdGVBbm5vdGF0aW9uUGx1Z2luT3B0aW9uc09iamVjdChhbm5vdGF0aW9ucylcbiAgICAgIDoge307XG4gICAgY29uc3Qgc3RvY2tPcHRpb25zOiBDaGFydE9wdGlvbnMgPVxuICAgICAgdGhpcy5jaGFydFR5cGUgPT09ICdzdG9jaycgPyB0aGlzLmNyZWF0ZVN0b2NrT3B0aW9uc09iamVjdChjaGFydERhdGFMYWJlbE9wdGlvbnMpIDoge307XG5cbiAgICBsZXQgb3B0aW9uczogQ2hhcnRPcHRpb25zID0gbWVyZ2VEZWVwQWxsKFxuICAgICAgc3RvY2tPcHRpb25zLFxuICAgICAgdHlwZUNvbmZpZ09wdGlvbnMsXG4gICAgICBjdXN0b21PcHRpb25zLFxuICAgICAgYW5ub3RhdGlvblBsdWdpbk9wdGlvbnNcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuYXBwbHlJbnRlcmFjdGlvbkZ1bmN0aW9uc0V4dGVuc2lvbnMob3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRTdG9ja0xhYmVscyhkYXRhc2V0czogQ2hhcnREYXRhc2V0W10sIGxvY2FsZTogQ2hhcnRMb2NhbGUpIHtcbiAgICBjb25zdCBsYXJnZXN0RGF0YXNldCA9IGRhdGFzZXRzLnJlZHVjZSgocHJldmlvdXNEYXRhc2V0LCBjdXJyZW50RGF0YXNldCkgPT5cbiAgICAgIHByZXZpb3VzRGF0YXNldC5kYXRhLmxlbmd0aCA+IGN1cnJlbnREYXRhc2V0LmRhdGEubGVuZ3RoID8gcHJldmlvdXNEYXRhc2V0IDogY3VycmVudERhdGFzZXRcbiAgICApO1xuICAgIHJldHVybiBsYXJnZXN0RGF0YXNldC5kYXRhLm1hcCgocG9pbnQ6IFNjYXR0ZXJEYXRhUG9pbnQpID0+XG4gICAgICB0b0RhdGUocG9pbnQueCkudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSwge1xuICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldExhYmVsc1RvQXBwbHkoYXJnczoge1xuICAgIGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXTtcbiAgICB0eXBlOiBDaGFydFR5cGU7XG4gICAgaW5kZXhBeGlzOiAneCcgfCAneSc7XG4gICAgbGFiZWxzPzogQ2hhcnRMYWJlbFtdO1xuICB9KSB7XG4gICAgY29uc3QgeyBkYXRhc2V0cywgbGFiZWxzLCB0eXBlLCBpbmRleEF4aXMgfSA9IGFyZ3M7XG5cbiAgICBjb25zdCBkYXRhc2V0SGFzTGFiZWxzID0gKHsgZGF0YSB9OiBDaGFydERhdGFzZXQpID0+XG4gICAgICAhIWRhdGE/LnNvbWUoXG4gICAgICAgIChkYXRhcG9pbnQpID0+IHR5cGVvZiBkYXRhcG9pbnQgPT09ICdvYmplY3QnICYmIHR5cGVvZiBkYXRhcG9pbnRbaW5kZXhBeGlzXSA9PT0gJ3N0cmluZydcbiAgICAgICk7XG5cbiAgICAvKlxuICAgICAgIExhYmVscyBjYW4gYmUgcHJvdmlkZWQgYnkgdGhlIHVzZXIgdHdvIHdheXM6XG4gICAgICAgMS4gQXMgYSBzZXBlcmF0ZSBDaGFydExhYmVsW10gdmlhIHRoZSAnbGFiZWxzJyBpbnB1dCBwcm9wIC0gdGhpcyBoYXMgaGlnaGVzdCBwcmlvcml0eVxuICAgICAgIDIuIFRvZ2V0aGVyIHdpdGggdGhlIGRhdGFzZXQgdmlhIHRoZSAnZGF0YScgaW5wdXQgcHJvcCAtIGhlcmUgZWFjaCBkYXRhcG9pbnQgY29udGFpbnMgXG4gICAgICAgYSBsYWJlbCBmb3IgdGhlIGluZGV4QXhpcy4gXG4gICAgICAgRm9yIGV4YW1wbGU6IHsgeDogJ2xhYmVsMScsIHk6IDF9IGluIHRoZSBjYXNlIHdoZXJlIHRoZSBpbmRleCBheGlzIGlzICd4Jy4gXG5cbiAgICAgICBJZiBubyBsYWJlbHMgYXJlIHByb3ZpZGVkIHRoZW4gZGVmYXVsdCBsYWJlbHMgYXJlIHVzZWQuIFxuICAgICovXG4gICAgY29uc3QgbGFiZWxzQXJlR2l2ZW5Bc1NlcGVyYXRlQXJyYXkgPSBsYWJlbHMgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBsYWJlbHNBcmVHaXZlblRvZ2V0aGVyV2l0aERhdGFzZXQgPSBkYXRhc2V0cy5zb21lKGRhdGFzZXRIYXNMYWJlbHMpO1xuXG4gICAgaWYgKGxhYmVsc0FyZUdpdmVuQXNTZXBlcmF0ZUFycmF5KSB7XG4gICAgICByZXR1cm4gbGFiZWxzO1xuICAgIH0gZWxzZSBpZiAobGFiZWxzQXJlR2l2ZW5Ub2dldGhlcldpdGhEYXRhc2V0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgLyogXG4gICAgICAgIENoYXJ0LmpzIHJlcXVpcmVzIGxhYmVscyBhbG9uZyB0aGUgaW5kZXggYXhpcyB0byByZW5kZXIgYW55dGhpbmcgdGhlcmVmb3JlXG4gICAgICAgIGFsbCBvdGhlciB0eXBlcyB0aGFuIHN0b2NrIHVzZXMgZW1wdHkgbGFiZWxzIGFzIGRlZmF1bHQuIFRoZSBzdG9jayB0eXBlIFxuICAgICAgICBkaXNwbGF5cyBkYXkgJiBtb250aCBhcyBkZWZhdWx0LiBcbiAgICAgICovXG4gICAgICByZXR1cm4gdHlwZSA9PT0gJ3N0b2NrJ1xuICAgICAgICA/IHRoaXMuZ2V0RGVmYXVsdFN0b2NrTGFiZWxzKGRhdGFzZXRzLCB0aGlzLmxvY2FsZSlcbiAgICAgICAgOiB0aGlzLmNyZWF0ZUJsYW5rTGFiZWxzKGRhdGFzZXRzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbmZpZ3VyYXRpb25PYmplY3QoXG4gICAgdHlwZTogQ2hhcnRUeXBlLFxuICAgIGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXSxcbiAgICBvcHRpb25zOiBDaGFydE9wdGlvbnMsXG4gICAgbGFiZWxzPzogQ2hhcnRMYWJlbFtdXG4gICk6IENoYXJ0Q29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgdHlwZUNvbmZpZyA9IHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmdldFR5cGVDb25maWcodHlwZSk7XG5cbiAgICBjb25zdCBpbmRleEF4aXMgPSB0eXBlQ29uZmlnPy5vcHRpb25zPy5pbmRleEF4aXMgPz8gJ3gnO1xuICAgIGNvbnN0IGxhYmVsc1RvQXBwbHkgPSB0aGlzLmdldExhYmVsc1RvQXBwbHkoeyBsYWJlbHMsIGRhdGFzZXRzLCB0eXBlLCBpbmRleEF4aXMgfSk7XG5cbiAgICByZXR1cm4gbWVyZ2VEZWVwQWxsKHR5cGVDb25maWcsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGFiZWxzOiBsYWJlbHNUb0FwcGx5LFxuICAgICAgICBkYXRhc2V0cyxcbiAgICAgIH0sXG4gICAgICBvcHRpb25zLFxuICAgIH0pIGFzIENoYXJ0Q29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSGlnaGxpZ2h0ZWRFbGVtZW50c1RvRGF0YXNldHMoXG4gICAgaGlnaGxpZ2h0ZWRFbGVtZW50czogQ2hhcnRIaWdobGlnaHRlZEVsZW1lbnRzLFxuICAgIGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXVxuICApIHtcbiAgICBoaWdobGlnaHRlZEVsZW1lbnRzLmZvckVhY2goKFtkYXRhc2V0SW5kZXgsIGRhdGFJbmRleF0pID0+IHtcbiAgICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhc2V0SW5kZXhdO1xuICAgICAgaWYgKCFkYXRhc2V0KSByZXR1cm47XG5cbiAgICAgIGlmIChkYXRhc2V0Py5raXJieU9wdGlvbnM/LmhpZ2hsaWdodGVkRWxlbWVudHMpIHtcbiAgICAgICAgZGF0YXNldC5raXJieU9wdGlvbnMuaGlnaGxpZ2h0ZWRFbGVtZW50cy5wdXNoKGRhdGFJbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhc2V0LmtpcmJ5T3B0aW9ucyA9IHtcbiAgICAgICAgICAuLi5kYXRhc2V0LmtpcmJ5T3B0aW9ucyxcbiAgICAgICAgICBoaWdobGlnaHRlZEVsZW1lbnRzOiBbZGF0YUluZGV4XSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZURhdGFzZXRzKGRhdGE6IENoYXJ0RGF0YXNldFtdIHwgbnVtYmVyW10pOiBDaGFydERhdGFzZXRbXSB7XG4gICAgLy8gV2UgbmVlZCB0byBtb2RpZnkgdGhlIGRhdGFzZXRzIGluIG9yZGVyIHRvIGFkZCBkYXRhbGFiZWxzLlxuICAgIGlmIChcbiAgICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucz8uc2hvd0N1cnJlbnQgfHxcbiAgICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucz8uc2hvd01heCB8fFxuICAgICAgdGhpcy5kYXRhTGFiZWxPcHRpb25zPy5zaG93TWluXG4gICAgKSB7XG4gICAgICBkYXRhID0gdGhpcy5hZGREYXRhTGFiZWxzRGF0YShkYXRhKTtcbiAgICB9XG4gICAgbGV0IGRhdGFzZXRzID0gaXNOdW1iZXJBcnJheShkYXRhKSA/IFt7IGRhdGEgfV0gOiBkYXRhO1xuICAgIGlmICh0aGlzLmhpZ2hsaWdodGVkRWxlbWVudHMpXG4gICAgICB0aGlzLmFkZEhpZ2hsaWdodGVkRWxlbWVudHNUb0RhdGFzZXRzKHRoaXMuaGlnaGxpZ2h0ZWRFbGVtZW50cywgZGF0YXNldHMpO1xuXG4gICAgLyogXG4gICAgICAgSGFja3kgc29sdXRpb24uIFNob3VsZCBiZSBmaXhlZCBpbiB0aGlzIGlzc3VlOlxuICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2tpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9pc3N1ZXMvMTk2NyBcbiAgICAqL1xuICAgIGlmICh0aGlzLmNoYXJ0VHlwZSA9PT0gJ3N0b2NrJykge1xuICAgICAgZGF0YXNldHMuZm9yRWFjaCgoZGF0YXNldCkgPT4ge1xuICAgICAgICBkYXRhc2V0LmtpcmJ5T3B0aW9ucyA9IHtcbiAgICAgICAgICAuLi5kYXRhc2V0LmtpcmJ5T3B0aW9ucyxcbiAgICAgICAgICBpc1N0b2NrQ2hhcnQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YXNldHM7XG4gIH1cbiAgLyoqXG4gICAqIERlY29yYXRlIENoYXJ0RGF0YXNldCB3aXRoIHByb3BlcnRpZXMgdG8gYWxsb3cgZm9yIGRhdGFsYWJlbHMuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEByZXR1cm5zIENoYXJ0RGF0YXNldFtdXG4gICAqL1xuICBwdWJsaWMgYWRkRGF0YUxhYmVsc0RhdGEoZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXSk6IENoYXJ0RGF0YXNldFtdIHtcbiAgICBpZiAoaXNOdW1iZXJBcnJheShkYXRhKSkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJDdXJyZW50bHkgaXQncyBpbXBvc3NpYmxlIHRvIGFkZCBkYXRhTGFiZWxzIHRvIG5vbiBTY2F0dGVyRGF0YVBvaW50IGRhdGFzZXRzXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlY29yYXRlRGF0YVBvaW50ID0gKFxuICAgICAgc2V0OiBDaGFydERhdGFzZXQsXG4gICAgICBheGlzOiAneCcgfCAneScsXG4gICAgICBkaXJlY3Rpb246ICdoaWdoJyB8ICdsb3cnLFxuICAgICAgcG9zaXRpb246ICdib3R0b20nIHwgJ3RvcCcgfCAnbGVmdCcgfCAncmlnaHQnXG4gICAgKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCB7IHZhbHVlLCBwb2ludGVyIH0gPSB0aGlzLmxvY2F0ZVZhbHVlSW5kZXhJbkRhdGFzZXQoc2V0LCBheGlzLCBkaXJlY3Rpb24pO1xuICAgICAgc2V0LmRhdGFbcG9pbnRlcl0gPSB7XG4gICAgICAgIC4uLihzZXQuZGF0YVtwb2ludGVyXSBhcyBTY2F0dGVyRGF0YVBvaW50KSxcbiAgICAgICAgZGF0YWxhYmVsOiB7XG4gICAgICAgICAgdmFsdWU6IHZhbHVlICsgKHRoaXMuZGF0YUxhYmVsT3B0aW9ucy52YWx1ZVN1ZmZpeCB8fCAnJyksXG4gICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgIH0sXG4gICAgICB9IGFzIFNjYXR0ZXJEYXRhUG9pbnQ7XG4gICAgfTtcblxuICAgIGRhdGEubWFwKChzZXQpID0+IHtcbiAgICAgIGlmICh0aGlzLmRhdGFMYWJlbE9wdGlvbnMuc2hvd01pbikge1xuICAgICAgICBkZWNvcmF0ZURhdGFQb2ludChzZXQsICd5JywgJ2xvdycsICdib3R0b20nKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRhdGFMYWJlbE9wdGlvbnMuc2hvd01heCkge1xuICAgICAgICBkZWNvcmF0ZURhdGFQb2ludChzZXQsICd5JywgJ2hpZ2gnLCAndG9wJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kYXRhTGFiZWxPcHRpb25zLnNob3dDdXJyZW50KSB7XG4gICAgICAgIGRlY29yYXRlRGF0YVBvaW50KHNldCwgJ3gnLCAnaGlnaCcsICdyaWdodCcpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2NhdGVWYWx1ZUluZGV4SW5EYXRhc2V0KFxuICAgIGRhdGFzZXQ6IENoYXJ0RGF0YXNldCxcbiAgICBheGlzOiBzdHJpbmcsXG4gICAgZGlyZWN0aW9uOiAnbG93JyB8ICdoaWdoJ1xuICApOiB7IHZhbHVlOiBudW1iZXI7IHBvaW50ZXI6IG51bWJlciB9IHtcbiAgICBsZXQgcG9pbnRlcjogbnVtYmVyO1xuICAgIGxldCB2YWx1ZTogbnVtYmVyO1xuICAgIGRhdGFzZXQuZGF0YS5mb3JFYWNoKChkYXRhcG9pbnQsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoZGlyZWN0aW9uID09ICdsb3cnICYmICghdmFsdWUgfHwgZGF0YXBvaW50W2F4aXNdIDwgdmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gZGF0YXBvaW50Wyd5J107XG4gICAgICAgIHBvaW50ZXIgPSBpbmRleDtcbiAgICAgIH1cbiAgICAgIGlmIChkaXJlY3Rpb24gPT0gJ2hpZ2gnICYmICghdmFsdWUgfHwgZGF0YXBvaW50W2F4aXNdID4gdmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gZGF0YXBvaW50Wyd5J107XG4gICAgICAgIHBvaW50ZXIgPSBpbmRleDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4geyB2YWx1ZSwgcG9pbnRlciB9O1xuICB9XG59XG4iXX0=
323
+ /** @nocollapse */ ChartJSService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChartJSService, deps: [{ token: i1.ChartConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
324
+ /** @nocollapse */ ChartJSService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChartJSService });
325
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChartJSService, decorators: [{
326
+ type: Injectable
327
+ }], ctorParameters: function () { return [{ type: i1.ChartConfigService }]; } });
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtanMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC9jaGFydC1qcy9jaGFydC1qcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQU9MLGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRTlDLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDO0FBR3JDLE1BQU0sT0FBTyxjQUFjO0lBT3pCLFlBQW9CLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQUcsQ0FBQztJQUV2RCxXQUFXLENBQUMsSUFTbEI7UUFDQyxNQUFNLEVBQ0osYUFBYSxFQUNiLElBQUksRUFDSixJQUFJLEVBQ0osTUFBTSxFQUNOLGFBQWEsRUFDYixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLG1CQUFtQixHQUNwQixHQUFHLElBQUksQ0FBQztRQUVULElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsSUFBSSxJQUFJLENBQUM7UUFDakQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixJQUFJLElBQUksQ0FBQztRQUN2RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUEsZ0JBQWdCLGFBQWhCLGdCQUFnQix1QkFBaEIsZ0JBQWdC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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2ZUVsZW1lbnQsIENoYXJ0Q29uZmlndXJhdGlvbiwgQ2hhcnRPcHRpb25zLCBTY2F0dGVyRGF0YVBvaW50IH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbk9wdGlvbnMgfSBmcm9tICdjaGFydGpzLXBsdWdpbi1hbm5vdGF0aW9uJztcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gJ2RhdGUtZm5zJztcblxuaW1wb3J0IHsgbWVyZ2VEZWVwQWxsIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwJztcbmltcG9ydCB7XG4gIENoYXJ0RGF0YUxhYmVsT3B0aW9ucyxcbiAgQ2hhcnREYXRhc2V0LFxuICBDaGFydEhpZ2hsaWdodGVkRWxlbWVudHMsXG4gIENoYXJ0TGFiZWwsXG4gIENoYXJ0TG9jYWxlLFxuICBDaGFydFR5cGUsXG4gIGlzTnVtYmVyQXJyYXksXG59IGZyb20gJy4uL2NoYXJ0LnR5cGVzJztcbmltcG9ydCB7IENoYXJ0Q29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvbmZpZ3MvY2hhcnQtY29uZmlnLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJy4vY29uZmlndXJlZC1jaGFydC1qcyc7XG5cbmNvbnN0IENIQVJUX0xPQ0FMRV9ERUZBVUxUID0gJ2VuLVVTJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENoYXJ0SlNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjaGFydDogQ2hhcnQ7XG4gIHByaXZhdGUgZGF0YUxhYmVsT3B0aW9uczogQ2hhcnREYXRhTGFiZWxPcHRpb25zO1xuICBwcml2YXRlIGhpZ2hsaWdodGVkRWxlbWVudHM6IENoYXJ0SGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgcHJpdmF0ZSBjaGFydFR5cGU6IENoYXJ0VHlwZTtcbiAgcHJpdmF0ZSBsb2NhbGU6IENoYXJ0TG9jYWxlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhcnRDb25maWdTZXJ2aWNlOiBDaGFydENvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgcHVibGljIHJlbmRlckNoYXJ0KGFyZ3M6IHtcbiAgICB0YXJnZXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgICB0eXBlOiBDaGFydFR5cGU7XG4gICAgZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXTtcbiAgICBsYWJlbHM/OiBDaGFydExhYmVsW107XG4gICAgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucztcbiAgICBhbm5vdGF0aW9ucz86IEFubm90YXRpb25PcHRpb25zW107XG4gICAgZGF0YUxhYmVsT3B0aW9ucz86IENoYXJ0RGF0YUxhYmVsT3B0aW9ucztcbiAgICBoaWdobGlnaHRlZEVsZW1lbnRzPzogQ2hhcnRIaWdobGlnaHRlZEVsZW1lbnRzO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgdGFyZ2V0RWxlbWVudCxcbiAgICAgIHR5cGUsXG4gICAgICBkYXRhLFxuICAgICAgbGFiZWxzLFxuICAgICAgY3VzdG9tT3B0aW9ucyxcbiAgICAgIGFubm90YXRpb25zLFxuICAgICAgZGF0YUxhYmVsT3B0aW9ucyxcbiAgICAgIGhpZ2hsaWdodGVkRWxlbWVudHMsXG4gICAgfSA9IGFyZ3M7XG5cbiAgICB0aGlzLmRhdGFMYWJlbE9wdGlvbnMgPSBkYXRhTGFiZWxPcHRpb25zIHx8IG51bGw7XG4gICAgdGhpcy5oaWdobGlnaHRlZEVsZW1lbnRzID0gaGlnaGxpZ2h0ZWRFbGVtZW50cyB8fCBudWxsO1xuICAgIHRoaXMuY2hhcnRUeXBlID0gdHlwZTtcbiAgICB0aGlzLmxvY2FsZSA9IGRhdGFMYWJlbE9wdGlvbnM/LmxvY2FsZSB8fCBDSEFSVF9MT0NBTEVfREVGQVVMVDtcblxuICAgIGNvbnN0IGRhdGFzZXRzID0gdGhpcy5jcmVhdGVEYXRhc2V0cyhkYXRhKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNyZWF0ZU9wdGlvbnNPYmplY3Qoe1xuICAgICAgY3VzdG9tT3B0aW9ucyxcbiAgICAgIGFubm90YXRpb25zLFxuICAgICAgZGF0YUxhYmVsT3B0aW9ucyxcbiAgICB9KTtcbiAgICBsZXQgY29uZmlnID0gdGhpcy5jcmVhdGVDb25maWd1cmF0aW9uT2JqZWN0KHR5cGUsIGRhdGFzZXRzLCBvcHRpb25zLCBsYWJlbHMpO1xuXG4gICAgdGhpcy5pbml0aWFsaXplTmV3Q2hhcnQodGFyZ2V0RWxlbWVudC5uYXRpdmVFbGVtZW50LCBjb25maWcpO1xuICB9XG5cbiAgcHVibGljIHJlZHJhd0NoYXJ0KCkge1xuICAgIHRoaXMuY2hhcnQudXBkYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRGF0YShkYXRhOiBDaGFydERhdGFzZXRbXSB8IG51bWJlcltdKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YXNldHMgPSB0aGlzLmNyZWF0ZURhdGFzZXRzKGRhdGEpO1xuXG4gICAgdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzID0gZGF0YXNldHM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlTGFiZWxzKGxhYmVsczogQ2hhcnRMYWJlbFtdKSB7XG4gICAgLyogQXMgbGFiZWxzIHByb3ZpZGVkIHZpYSB0aGUgJ2xhYmVscycgaW5wdXQgcHJvcGVydHkgYWx3YXlzIGhhcyBcbiAgICBoaWdoZXN0IHByaW9yaXR5IC0gd2UgY2FuIGp1c3Qgc2V0IHRoZSBwcm9wZXJ0eSBkaXJlY3RseSAqL1xuICAgIHRoaXMuY2hhcnQuZGF0YS5sYWJlbHMgPSBsYWJlbHM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVHlwZSh0eXBlOiBDaGFydFR5cGUsIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBpZiAodHlwZSA9PT0gJ2JhcicgfHwgdHlwZSA9PT0gJ2NvbHVtbicpIHtcbiAgICAgIC8qIGluZGV4QXhpcyBkb2VzIG5vdCB1cGRhdGUgcHJlZGljdGFibHk7IHVwZGF0ZSBieSByZXBsYWNpbmcgXG4gICAgICAgICB0aGUgY2hhcnQgZW50aXJlbHkgaW5zdGVhZCAqL1xuICAgICAgdGhpcy5kZXN0cnVjdGl2ZWx5VXBkYXRlVHlwZSh0eXBlLCBjdXN0b21PcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub25EZXN0cnVjdGl2ZWx5VXBkYXRlVHlwZSh0eXBlLCBjdXN0b21PcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0RGF0YUxhYmVsT3B0aW9ucyhkYXRhTGFiZWxPcHRpb25zOiBDaGFydERhdGFMYWJlbE9wdGlvbnMpIHtcbiAgICB0aGlzLmRhdGFMYWJlbE9wdGlvbnMgPSBkYXRhTGFiZWxPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU9wdGlvbnMoY3VzdG9tT3B0aW9uczogQ2hhcnRPcHRpb25zLCB0eXBlOiBDaGFydFR5cGUpIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IHRoaXMuZ2V0RXhpc3RpbmdDaGFydEFubm90YXRpb25zKCk7XG4gICAgdGhpcy5jaGFydFR5cGUgPSB0eXBlO1xuICAgIHRoaXMuY2hhcnQub3B0aW9ucyA9IHRoaXMuY3JlYXRlT3B0aW9uc09iamVjdCh7IGN1c3RvbU9wdGlvbnMsIGFubm90YXRpb25zIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFubm90YXRpb25zKGFubm90YXRpb25zOiBBbm5vdGF0aW9uT3B0aW9uc1tdKSB7XG4gICAgY29uc3QgYW5ub3RhdGlvbnNXaXRoRGVmYXVsdHMgPSB0aGlzLmFwcGx5RGVmYXVsdHNUb0Fubm90YXRpb25zKGFubm90YXRpb25zKTtcbiAgICB0aGlzLmNoYXJ0Lm9wdGlvbnMucGx1Z2lucy5hbm5vdGF0aW9uLmFubm90YXRpb25zID0gYW5ub3RhdGlvbnNXaXRoRGVmYXVsdHM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlSGlnaGxpZ2h0ZWRFbGVtZW50cyhoaWdobGlnaHRlZEVsZW1lbnRzPzogQ2hhcnRIaWdobGlnaHRlZEVsZW1lbnRzKSB7XG4gICAgdGhpcy5oaWdobGlnaHRlZEVsZW1lbnRzID0gaGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgICBjb25zdCBvbGREYXRhc2V0cyA9IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyBhcyBDaGFydERhdGFzZXRbXTtcblxuICAgIC8vIENsZWFyIG9sZCBkYXRhc2V0cyBvZiBoaWdobGlnaHRlZCBlbGVtZW50c1xuICAgIG9sZERhdGFzZXRzLm1hcCgoZGF0YXNldCkgPT4ge1xuICAgICAgaWYgKGRhdGFzZXQ/LmtpcmJ5T3B0aW9ucz8uaGlnaGxpZ2h0ZWRFbGVtZW50cykge1xuICAgICAgICBkZWxldGUgZGF0YXNldC5raXJieU9wdGlvbnMuaGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyA9IHRoaXMuY3JlYXRlRGF0YXNldHMob2xkRGF0YXNldHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeGlzdGluZ0NoYXJ0QW5ub3RhdGlvbnMoKTogQW5ub3RhdGlvbk9wdGlvbnNbXSB7XG4gICAgY29uc3QgYW5ub3RhdGlvbnMgPSB0aGlzLmNoYXJ0Lm9wdGlvbnMucGx1Z2lucz8uYW5ub3RhdGlvbj8uYW5ub3RhdGlvbnM7XG4gICAgLyogSW4gYnJvd3NlciBjaGFydC5qcyBtaWdodCByZXR1cm4gYW5ub3RhdGlvbnMgYXMgYSBQcm94eSBvYmplY3Q7IGZvcmNlIGl0IHRvIGJlIGFuIGFycmF5LlxuICAgICAgIEVhY2ggYW5ub3RhdGlvbk9wdGlvbiBpbiB0aGUgcmVzdWx0aW5nIGFycmF5ICB3aWxsIGFsc28gYmUgYSBQcm94eSBvYmplY3QuIFxuICAgICAgIEJ1dCBpbnRlcm5hbGx5IGNoYXJ0LmpzIHdpbGwganVzdCB3b3JrIHdpdGggdGhlbSBhcyBub3JtYWwgdmFsdWVzICovXG4gICAgaWYgKGFubm90YXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhhbm5vdGF0aW9ucykubWFwKChrZXkpID0+IGFubm90YXRpb25zW2tleV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cnVjdGl2ZWx5VXBkYXRlVHlwZSh0eXBlOiBDaGFydFR5cGUsIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBjb25zdCBkYXRhc2V0cyA9IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyBhcyBDaGFydERhdGFzZXRbXTtcbiAgICBjb25zdCBsYWJlbHMgPSB0aGlzLmNoYXJ0LmRhdGEubGFiZWxzIGFzIENoYXJ0TGFiZWxbXTsgLy8gY2hhcnQuanMgc3RvcmVzIGxhYmVscyBhcyB1bmtub3duW107IGNhc3QgaXQgdG8gQ2hhcnRMYWJlbFtdXG4gICAgY29uc3QgYW5ub3RhdGlvbnMgPSB0aGlzLmdldEV4aXN0aW5nQ2hhcnRBbm5vdGF0aW9ucygpO1xuXG4gICAgdGhpcy5jaGFydFR5cGUgPSB0eXBlO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNyZWF0ZU9wdGlvbnNPYmplY3QoeyBjdXN0b21PcHRpb25zLCBhbm5vdGF0aW9ucyB9KTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNyZWF0ZUNvbmZpZ3VyYXRpb25PYmplY3QodHlwZSwgZGF0YXNldHMsIG9wdGlvbnMsIGxhYmVscyk7XG4gICAgY29uc3QgY2FudmFzRWxlbWVudCA9IHRoaXMuY2hhcnQuY2FudmFzO1xuXG4gICAgdGhpcy5jaGFydC5kZXN0cm95KCk7XG4gICAgdGhpcy5pbml0aWFsaXplTmV3Q2hhcnQoY2FudmFzRWxlbWVudCwgY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9uRGVzdHJ1Y3RpdmVseVVwZGF0ZVR5cGUoY2hhcnRUeXBlOiBDaGFydFR5cGUsIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IHRoaXMuZ2V0RXhpc3RpbmdDaGFydEFubm90YXRpb25zKCk7XG4gICAgdGhpcy5jaGFydFR5cGUgPSBjaGFydFR5cGU7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY3JlYXRlT3B0aW9uc09iamVjdCh7XG4gICAgICBjdXN0b21PcHRpb25zLFxuICAgICAgYW5ub3RhdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0Lm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuY2hhcnQuY29uZmlnLnR5cGUgPSB0aGlzLmNoYXJ0Q29uZmlnU2VydmljZS5jaGFydFR5cGVUb0NoYXJ0SlNUeXBlKGNoYXJ0VHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVOZXdDaGFydChjYW52YXNFbGVtZW50OiBIVE1MQ2FudmFzRWxlbWVudCwgY29uZmlnOiBDaGFydENvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KGNhbnZhc0VsZW1lbnQsIGNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUJsYW5rTGFiZWxzKGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBsYXJnZXN0RGF0YXNldCA9IGRhdGFzZXRzLnJlZHVjZSgocHJldmlvdXNEYXRhc2V0LCBjdXJyZW50RGF0YXNldCkgPT5cbiAgICAgIHByZXZpb3VzRGF0YXNldC5kYXRhLmxlbmd0aCA+IGN1cnJlbnREYXRhc2V0LmRhdGEubGVuZ3RoID8gcHJldmlvdXNEYXRhc2V0IDogY3VycmVudERhdGFzZXRcbiAgICApO1xuICAgIHJldHVybiBBcnJheShsYXJnZXN0RGF0YXNldC5kYXRhLmxlbmd0aCkuZmlsbCgnJyk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RGVmYXVsdHNUb0Fubm90YXRpb25zKGFubm90YXRpb25zOiBBbm5vdGF0aW9uT3B0aW9uc1tdKSB7XG4gICAgcmV0dXJuIGFubm90YXRpb25zLm1hcCgoYW5ub3RhdGlvbikgPT4ge1xuICAgICAgY29uc3QgYW5ub3RhdGlvblR5cGVEZWZhdWx0cyA9IHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmdldEFubm90YXRpb25EZWZhdWx0cyhhbm5vdGF0aW9uLnR5cGUpO1xuICAgICAgcmV0dXJuIG1lcmdlRGVlcEFsbChhbm5vdGF0aW9uVHlwZURlZmF1bHRzLCBhbm5vdGF0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQW5ub3RhdGlvblBsdWdpbk9wdGlvbnNPYmplY3QoYW5ub3RhdGlvbnM6IEFubm90YXRpb25PcHRpb25zW10pIHtcbiAgICBjb25zdCBhbm5vdGF0aW9uc1dpdGhEZWZhdWx0cyA9IHRoaXMuYXBwbHlEZWZhdWx0c1RvQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnMpO1xuICAgIHJldHVybiB7XG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIGFubm90YXRpb246IHtcbiAgICAgICAgICBhbm5vdGF0aW9uczogYW5ub3RhdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFwcGx5SW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zKG9wdGlvbnM6IENoYXJ0T3B0aW9ucyk6IENoYXJ0T3B0aW9ucyB7XG4gICAgY29uc3QgaW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zID1cbiAgICAgIHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmdldEludGVyYWN0aW9uRnVuY3Rpb25zRXh0ZW5zaW9ucygpO1xuICAgIE9iamVjdC5lbnRyaWVzKGludGVyYWN0aW9uRnVuY3Rpb25zRXh0ZW5zaW9ucykuZm9yRWFjaCgoW2tleSwgX10pID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gb3B0aW9uc1trZXldO1xuICAgICAgb3B0aW9uc1trZXldID0gKGU6IEV2ZW50LCBhOiBBY3RpdmVFbGVtZW50W10sIGM6IENoYXJ0KSA9PiB7XG4gICAgICAgIGludGVyYWN0aW9uRnVuY3Rpb25zRXh0ZW5zaW9uc1trZXldKGUsIGEsIGMsIGNhbGxiYWNrKTtcbiAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN0b2NrT3B0aW9uc09iamVjdChkYXRhTGFiZWxPcHRpb25zOiBDaGFydERhdGFMYWJlbE9wdGlvbnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICAgICAgdGl0bGU6ICh0b29sdGlwSXRlbXMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZGF0ZSA9IHRvRGF0ZSgodG9vbHRpcEl0ZW1zWzBdPy5yYXcgYXMgYW55KT8ueCk7XG4gICAgICAgICAgICAgIGlmIChkYXRlLnZhbHVlT2YoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZSwge1xuICAgICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgICAgICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcbiAgICAgICAgICAgICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFiZWw6IChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgIC8vIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGFkZCBzcGFjaW5nIGJldHdlZW4gY29sb3IgbGVnZW5kIGFuZCB0ZXh0IHNvIHdlXG4gICAgICAgICAgICAgIC8vIHByZWZpeCB3aXRoIGEgc3BhY2UuXG4gICAgICAgICAgICAgIHJldHVybiAnICcgKyBjb250ZXh0LmZvcm1hdHRlZFZhbHVlICsgKGRhdGFMYWJlbE9wdGlvbnMudmFsdWVTdWZmaXggfHwgJycpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNjYWxlczoge1xuICAgICAgICB5OiB7XG4gICAgICAgICAgdGlja3M6IHtcbiAgICAgICAgICAgIGNhbGxiYWNrOiAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICsgKGRhdGFMYWJlbE9wdGlvbnMudmFsdWVTdWZmaXggfHwgJycpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPcHRpb25zT2JqZWN0KGFyZ3M6IHtcbiAgICBjdXN0b21PcHRpb25zPzogQ2hhcnRPcHRpb25zO1xuICAgIGFubm90YXRpb25zPzogQW5ub3RhdGlvbk9wdGlvbnNbXTtcbiAgICBkYXRhTGFiZWxPcHRpb25zPzogQ2hhcnREYXRhTGFiZWxPcHRpb25zO1xuICB9KTogQ2hhcnRPcHRpb25zIHtcbiAgICBjb25zdCB7IGN1c3RvbU9wdGlvbnMsIGFubm90YXRpb25zLCBkYXRhTGFiZWxPcHRpb25zOiBjaGFydERhdGFMYWJlbE9wdGlvbnMgfSA9IGFyZ3M7XG5cbiAgICBjb25zdCB0eXBlQ29uZmlnID0gdGhpcy5jaGFydENvbmZpZ1NlcnZpY2UuZ2V0VHlwZUNvbmZpZyh0aGlzLmNoYXJ0VHlwZSk7XG4gICAgY29uc3QgdHlwZUNvbmZpZ09wdGlvbnMgPSB0eXBlQ29uZmlnPy5vcHRpb25zO1xuICAgIGNvbnN0IGFubm90YXRpb25QbHVnaW5PcHRpb25zID0gYW5ub3RhdGlvbnNcbiAgICAgID8gdGhpcy5jcmVhdGVBbm5vdGF0aW9uUGx1Z2luT3B0aW9uc09iamVjdChhbm5vdGF0aW9ucylcbiAgICAgIDoge307XG4gICAgY29uc3Qgc3RvY2tPcHRpb25zOiBDaGFydE9wdGlvbnMgPVxuICAgICAgdGhpcy5jaGFydFR5cGUgPT09ICdzdG9jaycgPyB0aGlzLmNyZWF0ZVN0b2NrT3B0aW9uc09iamVjdChjaGFydERhdGFMYWJlbE9wdGlvbnMpIDoge307XG5cbiAgICBsZXQgb3B0aW9uczogQ2hhcnRPcHRpb25zID0gbWVyZ2VEZWVwQWxsKFxuICAgICAgc3RvY2tPcHRpb25zLFxuICAgICAgdHlwZUNvbmZpZ09wdGlvbnMsXG4gICAgICBjdXN0b21PcHRpb25zLFxuICAgICAgYW5ub3RhdGlvblBsdWdpbk9wdGlvbnNcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuYXBwbHlJbnRlcmFjdGlvbkZ1bmN0aW9uc0V4dGVuc2lvbnMob3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRTdG9ja0xhYmVscyhkYXRhc2V0czogQ2hhcnREYXRhc2V0W10sIGxvY2FsZTogQ2hhcnRMb2NhbGUpIHtcbiAgICBjb25zdCBsYXJnZXN0RGF0YXNldCA9IGRhdGFzZXRzLnJlZHVjZSgocHJldmlvdXNEYXRhc2V0LCBjdXJyZW50RGF0YXNldCkgPT5cbiAgICAgIHByZXZpb3VzRGF0YXNldC5kYXRhLmxlbmd0aCA+IGN1cnJlbnREYXRhc2V0LmRhdGEubGVuZ3RoID8gcHJldmlvdXNEYXRhc2V0IDogY3VycmVudERhdGFzZXRcbiAgICApO1xuICAgIHJldHVybiBsYXJnZXN0RGF0YXNldC5kYXRhLm1hcCgocG9pbnQ6IFNjYXR0ZXJEYXRhUG9pbnQpID0+XG4gICAgICB0b0RhdGUocG9pbnQueCkudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSwge1xuICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldExhYmVsc1RvQXBwbHkoYXJnczoge1xuICAgIGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXTtcbiAgICB0eXBlOiBDaGFydFR5cGU7XG4gICAgaW5kZXhBeGlzOiAneCcgfCAneSc7XG4gICAgbGFiZWxzPzogQ2hhcnRMYWJlbFtdO1xuICB9KSB7XG4gICAgY29uc3QgeyBkYXRhc2V0cywgbGFiZWxzLCB0eXBlLCBpbmRleEF4aXMgfSA9IGFyZ3M7XG5cbiAgICBjb25zdCBkYXRhc2V0SGFzTGFiZWxzID0gKHsgZGF0YSB9OiBDaGFydERhdGFzZXQpID0+XG4gICAgICAhIWRhdGE/LnNvbWUoXG4gICAgICAgIChkYXRhcG9pbnQpID0+IHR5cGVvZiBkYXRhcG9pbnQgPT09ICdvYmplY3QnICYmIHR5cGVvZiBkYXRhcG9pbnRbaW5kZXhBeGlzXSA9PT0gJ3N0cmluZydcbiAgICAgICk7XG5cbiAgICAvKlxuICAgICAgIExhYmVscyBjYW4gYmUgcHJvdmlkZWQgYnkgdGhlIHVzZXIgdHdvIHdheXM6XG4gICAgICAgMS4gQXMgYSBzZXBlcmF0ZSBDaGFydExhYmVsW10gdmlhIHRoZSAnbGFiZWxzJyBpbnB1dCBwcm9wIC0gdGhpcyBoYXMgaGlnaGVzdCBwcmlvcml0eVxuICAgICAgIDIuIFRvZ2V0aGVyIHdpdGggdGhlIGRhdGFzZXQgdmlhIHRoZSAnZGF0YScgaW5wdXQgcHJvcCAtIGhlcmUgZWFjaCBkYXRhcG9pbnQgY29udGFpbnMgXG4gICAgICAgYSBsYWJlbCBmb3IgdGhlIGluZGV4QXhpcy4gXG4gICAgICAgRm9yIGV4YW1wbGU6IHsgeDogJ2xhYmVsMScsIHk6IDF9IGluIHRoZSBjYXNlIHdoZXJlIHRoZSBpbmRleCBheGlzIGlzICd4Jy4gXG5cbiAgICAgICBJZiBubyBsYWJlbHMgYXJlIHByb3ZpZGVkIHRoZW4gZGVmYXVsdCBsYWJlbHMgYXJlIHVzZWQuIFxuICAgICovXG4gICAgY29uc3QgbGFiZWxzQXJlR2l2ZW5Bc1NlcGVyYXRlQXJyYXkgPSBsYWJlbHMgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBsYWJlbHNBcmVHaXZlblRvZ2V0aGVyV2l0aERhdGFzZXQgPSBkYXRhc2V0cy5zb21lKGRhdGFzZXRIYXNMYWJlbHMpO1xuXG4gICAgaWYgKGxhYmVsc0FyZUdpdmVuQXNTZXBlcmF0ZUFycmF5KSB7XG4gICAgICByZXR1cm4gbGFiZWxzO1xuICAgIH0gZWxzZSBpZiAobGFiZWxzQXJlR2l2ZW5Ub2dldGhlcldpdGhEYXRhc2V0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgLyogXG4gICAgICAgIENoYXJ0LmpzIHJlcXVpcmVzIGxhYmVscyBhbG9uZyB0aGUgaW5kZXggYXhpcyB0byByZW5kZXIgYW55dGhpbmcgdGhlcmVmb3JlXG4gICAgICAgIGFsbCBvdGhlciB0eXBlcyB0aGFuIHN0b2NrIHVzZXMgZW1wdHkgbGFiZWxzIGFzIGRlZmF1bHQuIFRoZSBzdG9jayB0eXBlIFxuICAgICAgICBkaXNwbGF5cyBkYXkgJiBtb250aCBhcyBkZWZhdWx0LiBcbiAgICAgICovXG4gICAgICByZXR1cm4gdHlwZSA9PT0gJ3N0b2NrJ1xuICAgICAgICA/IHRoaXMuZ2V0RGVmYXVsdFN0b2NrTGFiZWxzKGRhdGFzZXRzLCB0aGlzLmxvY2FsZSlcbiAgICAgICAgOiB0aGlzLmNyZWF0ZUJsYW5rTGFiZWxzKGRhdGFzZXRzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbmZpZ3VyYXRpb25PYmplY3QoXG4gICAgdHlwZTogQ2hhcnRUeXBlLFxuICAgIGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXSxcbiAgICBvcHRpb25zOiBDaGFydE9wdGlvbnMsXG4gICAgbGFiZWxzPzogQ2hhcnRMYWJlbFtdXG4gICk6IENoYXJ0Q29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgdHlwZUNvbmZpZyA9IHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmdldFR5cGVDb25maWcodHlwZSk7XG5cbiAgICBjb25zdCBpbmRleEF4aXMgPSB0eXBlQ29uZmlnPy5vcHRpb25zPy5pbmRleEF4aXMgPz8gJ3gnO1xuICAgIGNvbnN0IGxhYmVsc1RvQXBwbHkgPSB0aGlzLmdldExhYmVsc1RvQXBwbHkoeyBsYWJlbHMsIGRhdGFzZXRzLCB0eXBlLCBpbmRleEF4aXMgfSk7XG5cbiAgICByZXR1cm4gbWVyZ2VEZWVwQWxsKHR5cGVDb25maWcsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGFiZWxzOiBsYWJlbHNUb0FwcGx5LFxuICAgICAgICBkYXRhc2V0cyxcbiAgICAgIH0sXG4gICAgICBvcHRpb25zLFxuICAgIH0pIGFzIENoYXJ0Q29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSGlnaGxpZ2h0ZWRFbGVtZW50c1RvRGF0YXNldHMoXG4gICAgaGlnaGxpZ2h0ZWRFbGVtZW50czogQ2hhcnRIaWdobGlnaHRlZEVsZW1lbnRzLFxuICAgIGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXVxuICApIHtcbiAgICBoaWdobGlnaHRlZEVsZW1lbnRzLmZvckVhY2goKFtkYXRhc2V0SW5kZXgsIGRhdGFJbmRleF0pID0+IHtcbiAgICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhc2V0SW5kZXhdO1xuICAgICAgaWYgKCFkYXRhc2V0KSByZXR1cm47XG5cbiAgICAgIGlmIChkYXRhc2V0Py5raXJieU9wdGlvbnM/LmhpZ2hsaWdodGVkRWxlbWVudHMpIHtcbiAgICAgICAgZGF0YXNldC5raXJieU9wdGlvbnMuaGlnaGxpZ2h0ZWRFbGVtZW50cy5wdXNoKGRhdGFJbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhc2V0LmtpcmJ5T3B0aW9ucyA9IHtcbiAgICAgICAgICAuLi5kYXRhc2V0LmtpcmJ5T3B0aW9ucyxcbiAgICAgICAgICBoaWdobGlnaHRlZEVsZW1lbnRzOiBbZGF0YUluZGV4XSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZURhdGFzZXRzKGRhdGE6IENoYXJ0RGF0YXNldFtdIHwgbnVtYmVyW10pOiBDaGFydERhdGFzZXRbXSB7XG4gICAgLy8gV2UgbmVlZCB0byBtb2RpZnkgdGhlIGRhdGFzZXRzIGluIG9yZGVyIHRvIGFkZCBkYXRhbGFiZWxzLlxuICAgIGlmIChcbiAgICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucz8uc2hvd0N1cnJlbnQgfHxcbiAgICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucz8uc2hvd01heCB8fFxuICAgICAgdGhpcy5kYXRhTGFiZWxPcHRpb25zPy5zaG93TWluXG4gICAgKSB7XG4gICAgICBkYXRhID0gdGhpcy5hZGREYXRhTGFiZWxzRGF0YShkYXRhKTtcbiAgICB9XG4gICAgbGV0IGRhdGFzZXRzID0gaXNOdW1iZXJBcnJheShkYXRhKSA/IFt7IGRhdGEgfV0gOiBkYXRhO1xuICAgIGlmICh0aGlzLmhpZ2hsaWdodGVkRWxlbWVudHMpXG4gICAgICB0aGlzLmFkZEhpZ2hsaWdodGVkRWxlbWVudHNUb0RhdGFzZXRzKHRoaXMuaGlnaGxpZ2h0ZWRFbGVtZW50cywgZGF0YXNldHMpO1xuXG4gICAgLyogXG4gICAgICAgSGFja3kgc29sdXRpb24uIFNob3VsZCBiZSBmaXhlZCBpbiB0aGlzIGlzc3VlOlxuICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2tpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9pc3N1ZXMvMTk2NyBcbiAgICAqL1xuICAgIGlmICh0aGlzLmNoYXJ0VHlwZSA9PT0gJ3N0b2NrJykge1xuICAgICAgZGF0YXNldHMuZm9yRWFjaCgoZGF0YXNldCkgPT4ge1xuICAgICAgICBkYXRhc2V0LmtpcmJ5T3B0aW9ucyA9IHtcbiAgICAgICAgICAuLi5kYXRhc2V0LmtpcmJ5T3B0aW9ucyxcbiAgICAgICAgICBpc1N0b2NrQ2hhcnQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YXNldHM7XG4gIH1cbiAgLyoqXG4gICAqIERlY29yYXRlIENoYXJ0RGF0YXNldCB3aXRoIHByb3BlcnRpZXMgdG8gYWxsb3cgZm9yIGRhdGFsYWJlbHMuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEByZXR1cm5zIENoYXJ0RGF0YXNldFtdXG4gICAqL1xuICBwdWJsaWMgYWRkRGF0YUxhYmVsc0RhdGEoZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXSk6IENoYXJ0RGF0YXNldFtdIHtcbiAgICBpZiAoaXNOdW1iZXJBcnJheShkYXRhKSkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJDdXJyZW50bHkgaXQncyBpbXBvc3NpYmxlIHRvIGFkZCBkYXRhTGFiZWxzIHRvIG5vbiBTY2F0dGVyRGF0YVBvaW50IGRhdGFzZXRzXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlY29yYXRlRGF0YVBvaW50ID0gKFxuICAgICAgc2V0OiBDaGFydERhdGFzZXQsXG4gICAgICBheGlzOiAneCcgfCAneScsXG4gICAgICBkaXJlY3Rpb246ICdoaWdoJyB8ICdsb3cnLFxuICAgICAgcG9zaXRpb246ICdib3R0b20nIHwgJ3RvcCcgfCAnbGVmdCcgfCAncmlnaHQnXG4gICAgKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCB7IHZhbHVlLCBwb2ludGVyIH0gPSB0aGlzLmxvY2F0ZVZhbHVlSW5kZXhJbkRhdGFzZXQoc2V0LCBheGlzLCBkaXJlY3Rpb24pO1xuICAgICAgc2V0LmRhdGFbcG9pbnRlcl0gPSB7XG4gICAgICAgIC4uLihzZXQuZGF0YVtwb2ludGVyXSBhcyBTY2F0dGVyRGF0YVBvaW50KSxcbiAgICAgICAgZGF0YWxhYmVsOiB7XG4gICAgICAgICAgdmFsdWU6IHZhbHVlICsgKHRoaXMuZGF0YUxhYmVsT3B0aW9ucy52YWx1ZVN1ZmZpeCB8fCAnJyksXG4gICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgIH0sXG4gICAgICB9IGFzIFNjYXR0ZXJEYXRhUG9pbnQ7XG4gICAgfTtcblxuICAgIGRhdGEubWFwKChzZXQpID0+IHtcbiAgICAgIGlmICh0aGlzLmRhdGFMYWJlbE9wdGlvbnMuc2hvd01pbikge1xuICAgICAgICBkZWNvcmF0ZURhdGFQb2ludChzZXQsICd5JywgJ2xvdycsICdib3R0b20nKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRhdGFMYWJlbE9wdGlvbnMuc2hvd01heCkge1xuICAgICAgICBkZWNvcmF0ZURhdGFQb2ludChzZXQsICd5JywgJ2hpZ2gnLCAndG9wJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kYXRhTGFiZWxPcHRpb25zLnNob3dDdXJyZW50KSB7XG4gICAgICAgIGRlY29yYXRlRGF0YVBvaW50KHNldCwgJ3gnLCAnaGlnaCcsICdyaWdodCcpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2NhdGVWYWx1ZUluZGV4SW5EYXRhc2V0KFxuICAgIGRhdGFzZXQ6IENoYXJ0RGF0YXNldCxcbiAgICBheGlzOiBzdHJpbmcsXG4gICAgZGlyZWN0aW9uOiAnbG93JyB8ICdoaWdoJ1xuICApOiB7IHZhbHVlOiBudW1iZXI7IHBvaW50ZXI6IG51bWJlciB9IHtcbiAgICBsZXQgcG9pbnRlcjogbnVtYmVyO1xuICAgIGxldCB2YWx1ZTogbnVtYmVyO1xuICAgIGRhdGFzZXQuZGF0YS5mb3JFYWNoKChkYXRhcG9pbnQsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoZGlyZWN0aW9uID09ICdsb3cnICYmICghdmFsdWUgfHwgZGF0YXBvaW50W2F4aXNdIDwgdmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gZGF0YXBvaW50Wyd5J107XG4gICAgICAgIHBvaW50ZXIgPSBpbmRleDtcbiAgICAgIH1cbiAgICAgIGlmIChkaXJlY3Rpb24gPT0gJ2hpZ2gnICYmICghdmFsdWUgfHwgZGF0YXBvaW50W2F4aXNdID4gdmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gZGF0YXBvaW50Wyd5J107XG4gICAgICAgIHBvaW50ZXIgPSBpbmRleDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4geyB2YWx1ZSwgcG9pbnRlciB9O1xuICB9XG59XG4iXX0=
@@ -20,7 +20,6 @@ const hasMarkerConfiguration = (chart) => {
20
20
  */
21
21
  return chart.data.datasets.some((dataset) => { var _a; return !!((_a = dataset === null || dataset === void 0 ? void 0 : dataset.kirbyOptions) === null || _a === void 0 ? void 0 : _a.isStockChart); });
22
22
  };
23
- const ɵ0 = hasMarkerConfiguration;
24
23
  export default {
25
24
  id: 'marker',
26
25
  afterInit: function (chart) {
@@ -197,5 +196,4 @@ export default {
197
196
  }
198
197
  },
199
198
  };
200
- export { ɵ0 };
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRqcy1wbHVnaW4tbWFya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2NoYXJ0L2NoYXJ0LWpzL2NoYXJ0anMtcGx1Z2luLW1hcmtlci9jaGFydGpzLXBsdWdpbi1tYXJrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7RUFJRTtBQUdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlsRCxJQUFJLGNBQWMsR0FBRztJQUNuQixJQUFJLEVBQUU7UUFDSixLQUFLLEVBQUUsT0FBTztRQUNkLEtBQUssRUFBRSxDQUFDO1FBQ1IsV0FBVyxFQUFFLEVBQUU7S0FDaEI7SUFDRCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsS0FBSztLQUNmO0NBQ0YsQ0FBQztBQUVGLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtJQUM5Qzs7TUFFRTtJQUNGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBcUIsRUFBRSxFQUFFLFdBQUMsT0FBQSxDQUFDLFFBQUMsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFlBQVksMENBQUUsWUFBWSxDQUFBLENBQUEsRUFBQSxDQUFDLENBQUM7QUFDcEcsQ0FBQyxDQUFDOztBQUVGLGVBQWU7SUFDYixFQUFFLEVBQUUsUUFBUTtJQUVaLFNBQVMsRUFBRSxVQUFVLEtBQUs7UUFDeEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLE9BQU87U0FDUjtRQUVELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXBELElBQ0UsVUFBVSxLQUFLLFFBQVE7WUFDdkIsVUFBVSxL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biBpcyBoZWF2aWx5IGluc3BpcmVkIGJ5IGh0dHBzOi8vY2hhcnRqcy1wbHVnaW4tY3Jvc3NoYWlyLm5ldGxpZnkuYXBwXG4gIFRoZSBwcm9qZWN0IGFwcGVhcnMgc3RhbGUgYW5kIG9ubHkgdGhlIHZlcnRpY2FsIGxpbmUgZmVhdHVyZSBpcyBuZWVkZWRcbiAgIHBhcnQgb2YgdGhlIHBsdWdpbiB0aGF0IHdhcyBhY3R1YWxseSBuZWVkZWQgaXMgaW1wbGVtZW50ZWQgaGVyZS4gXG4qL1xuXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCB7IHZhbHVlT3JEZWZhdWx0IH0gZnJvbSAnY2hhcnQuanMvaGVscGVycyc7XG5cbmltcG9ydCB7IENoYXJ0RGF0YXNldCB9IGZyb20gJy4uLy4uL2NoYXJ0LnR5cGVzJztcblxudmFyIGRlZmF1bHRPcHRpb25zID0ge1xuICBsaW5lOiB7XG4gICAgY29sb3I6ICdibGFjaycsXG4gICAgd2lkdGg6IDEsXG4gICAgZGFzaFBhdHRlcm46IFtdLFxuICB9LFxuICBzbmFwOiB7XG4gICAgZW5hYmxlZDogZmFsc2UsXG4gIH0sXG59O1xuXG5jb25zdCBoYXNNYXJrZXJDb25maWd1cmF0aW9uID0gKGNoYXJ0OiBDaGFydCkgPT4ge1xuICAvKiBcbiAgICBIYWNreSBzb2x1dGlvbi4gU2hvdWxkIGJlIGZpeGVkIGluIHRoaXMgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9raXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaXNzdWVzLzE5NjdcbiAgKi9cbiAgcmV0dXJuIGNoYXJ0LmRhdGEuZGF0YXNldHMuc29tZSgoZGF0YXNldDogQ2hhcnREYXRhc2V0KSA9PiAhIWRhdGFzZXQ/LmtpcmJ5T3B0aW9ucz8uaXNTdG9ja0NoYXJ0KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaWQ6ICdtYXJrZXInLFxuXG4gIGFmdGVySW5pdDogZnVuY3Rpb24gKGNoYXJ0KSB7XG4gICAgaWYgKCFoYXNNYXJrZXJDb25maWd1cmF0aW9uKGNoYXJ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciB4U2NhbGVUeXBlID0gY2hhcnQuY29uZmlnLm9wdGlvbnMuc2NhbGVzLngudHlwZTtcblxuICAgIGlmIChcbiAgICAgIHhTY2FsZVR5cGUgIT09ICdsaW5lYXInICYmXG4gICAgICB4U2NhbGVUeXBlICE9PSAndGltZScgJiZcbiAgICAgIHhTY2FsZVR5cGUgIT09ICdjYXRlZ29yeScgJiZcbiAgICAgIHhTY2FsZVR5cGUgIT09ICdsb2dhcml0aG1pYydcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2hhcnQub3B0aW9ucy5wbHVnaW5zLm1hcmtlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjaGFydC5vcHRpb25zLnBsdWdpbnMubWFya2VyID0gZGVmYXVsdE9wdGlvbnM7XG4gICAgfVxuXG4gICAgY2hhcnQubWFya2VyID0ge1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICBzdXBwcmVzc1VwZGF0ZTogZmFsc2UsXG4gICAgICB4OiBudWxsLFxuICAgICAgb3JpZ2luYWxEYXRhOiBbXSxcbiAgICAgIG9yaWdpbmFsWFJhbmdlOiB7fSxcbiAgICAgIGRyYWdTdGFydGVkOiBmYWxzZSxcbiAgICAgIGRyYWdTdGFydFg6IG51bGwsXG4gICAgICBkcmFnRW5kWDogbnVsbCxcbiAgICAgIHN1cHByZXNzVG9vbHRpcHM6IGZhbHNlLFxuICAgICAgaWdub3JlTmV4dEV2ZW50czogMCxcbiAgICB9O1xuICB9LFxuXG4gIGdldE9wdGlvbjogZnVuY3Rpb24gKGNoYXJ0LCBjYXRlZ29yeSwgbmFtZSkge1xuICAgIHJldHVybiB2YWx1ZU9yRGVmYXVsdChcbiAgICAgIGNoYXJ0Lm9wdGlvbnMucGx1Z2lucy5tYXJrZXJbY2F0ZWdvcnldXG4gICAgICAgID8gY2hhcnQub3B0aW9ucy5wbHVnaW5zLm1hcmtlcltjYXRlZ29yeV1bbmFtZV1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBkZWZhdWx0T3B0aW9uc1tjYXRlZ29yeV1bbmFtZV1cbiAgICApO1xuICB9LFxuXG4gIGdldFhTY2FsZTogZnVuY3Rpb24gKGNoYXJ0KSB7XG4gICAgcmV0dXJuIGNoYXJ0LmRhdGEuZGF0YXNldHMubGVuZ3RoID8gY2hhcnQuc2NhbGVzW2NoYXJ0LmdldERhdGFzZXRNZXRhKDApLnhBeGlzSURdIDogbnVsbDtcbiAgfSxcbiAgZ2V0WVNjYWxlOiBmdW5jdGlvbiAoY2hhcnQpIHtcbiAgICByZXR1cm4gY2hhcnQuc2NhbGVzW2NoYXJ0LmdldERhdGFzZXRNZXRhKDApLnlBeGlzSURdO1xuICB9LFxuXG4gIGFmdGVyRXZlbnQ6IGZ1bmN0aW9uIChjaGFydCwgZXZlbnQpIHtcbiAgICBpZiAoIWhhc01hcmtlckNvbmZpZ3VyYXRpb24oY2hhcnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChjaGFydC5jb25maWcub3B0aW9ucy5zY2FsZXMueC5sZW5ndGggPT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBlID0gZXZlbnQuZXZlbnQ7XG5cbiAgICB2YXIgeFNjYWxlVHlwZSA9IGNoYXJ0LmNvbmZpZy5vcHRpb25zLnNjYWxlcy54LnR5cGU7XG5cbiAgICBpZiAoXG4gICAgICB4U2NhbGVUeXBlICE9PSAnbGluZWFyJyAmJlxuICAgICAgeFNjYWxlVHlwZSAhPT0gJ3RpbWUnICYmXG4gICAgICB4U2NhbGVUeXBlICE9PSAnY2F0ZWdvcnknICYmXG4gICAgICB4U2NhbGVUeXBlICE9PSAnbG9nYXJpdGhtaWMnXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHhTY2FsZSA9IHRoaXMuZ2V0WFNjYWxlKGNoYXJ0KTtcblxuICAgIGlmICgheFNjYWxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNoYXJ0Lm1hcmtlci5pZ25vcmVOZXh0RXZlbnRzID4gMCkge1xuICAgICAgY2hhcnQubWFya2VyLmlnbm9yZU5leHRFdmVudHMgLT0gMTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBmaXggZm9yIFNhZmFyaVxuICAgIHZhciBidXR0b25zID0gZS5uYXRpdmUuYnV0dG9ucyA9PT0gdW5kZWZpbmVkID8gZS5uYXRpdmUud2hpY2ggOiBlLm5hdGl2ZS5idXR0b25zO1xuICAgIGlmIChlLm5hdGl2ZS50eXBlID09PSAnbW91c2V1cCcpIHtcbiAgICAgIGJ1dHRvbnMgPSAwO1xuICAgIH1cblxuICAgIGNoYXJ0Lm1hcmtlci5lbmFibGVkID1cbiAgICAgIGUudHlwZSAhPT0gJ21vdXNlb3V0JyAmJlxuICAgICAgZS54ID4geFNjYWxlLmdldFBpeGVsRm9yVmFsdWUoeFNjYWxlLm1pbikgJiZcbiAgICAgIGUueCA8IHhTY2FsZS5nZXRQaXhlbEZvclZhbHVlKHhTY2FsZS5tYXgpO1xuXG4gICAgaWYgKCFjaGFydC5tYXJrZXIuZW5hYmxlZCAmJiAhY2hhcnQubWFya2VyLnN1cHByZXNzVXBkYXRlKSB7XG4gICAgICBpZiAoZS54ID4geFNjYWxlLmdldFBpeGVsRm9yVmFsdWUoeFNjYWxlLm1heCkpIHtcbiAgICAgICAgLy8gc3VwcHJlc3MgZnV0dXJlIHVwZGF0ZXMgdG8gcHJldmVudCBlbmRsZXNzIHJlZHJhd2luZyBvZiBjaGFydFxuICAgICAgICBjaGFydC5tYXJrZXIuc3VwcHJlc3NVcGRhdGUgPSB0cnVlO1xuICAgICAgICBjaGFydC51cGRhdGUoJ25vbmUnKTtcbiAgICAgIH1cbiAgICAgIGNoYXJ0Lm1hcmtlci5kcmFnU3RhcnRlZCA9IGZhbHNlOyAvLyBjYW5jZWwgem9vbSBpbiBwcm9ncmVzc1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjaGFydC5tYXJrZXIuc3VwcHJlc3NVcGRhdGUgPSBmYWxzZTtcblxuICAgIGNoYXJ0Lm1hcmtlci54ID0gZS54O1xuXG4gICAgY2hhcnQuZHJhdygpO1xuICB9LFxuICBkb0RyYXc6IGZ1bmN0aW9uIChjaGFydCkge1xuICAgIGlmICghaGFzTWFya2VyQ29uZmlndXJhdGlvbihjaGFydCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWNoYXJ0Lm1hcmtlci5lbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3VHJhY2VMaW5lKGNoYXJ0KTtcbiAgICB0aGlzLmludGVycG9sYXRlVmFsdWVzKGNoYXJ0KTtcbiAgICB0aGlzLmRyYXdUcmFjZVBvaW50cyhjaGFydCk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgYmVmb3JlRHJhdzogZnVuY3Rpb24gKGNoYXJ0KSB7XG4gICAgcmV0dXJuIHRoaXMuZG9EcmF3KGNoYXJ0KTtcbiAgfSxcbiAgLy8gTG9naWMgbW92ZWQgdG8gYmVmb3JlRHJhdyBpbiBvcmRlclxuICAvLyBmb3IgdGhlIHZlcnRpY2FsIGxpbmUgdG8gYmUgZHJhd25cbiAgLy8gdW5kZXIgdG9vbHRpcCBhbmQgZGF0YWxhYmVscy5cbiAgLy8gYWZ0ZXJEcmF3OiBmdW5jdGlvbihjaGFydCkge1xuICAvLyAgIHJldHVybiB0aGlzLmRvRHJhdyhjaGFydCk7XG4gIC8vIH0sXG5cbiAgZHJhd1RyYWNlTGluZTogZnVuY3Rpb24gKGNoYXJ0KSB7XG4gICAgaWYgKCFoYXNNYXJrZXJDb25maWd1cmF0aW9uKGNoYXJ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgeVNjYWxlID0gdGhpcy5nZXRZU2NhbGUoY2hhcnQpO1xuXG4gICAgdmFyIGxpbmVXaWR0aCA9IHRoaXMuZ2V0T3B0aW9uKGNoYXJ0LCAnbGluZScsICd3aWR0aCcpO1xuICAgIHZhciBjb2xvciA9IHRoaXMuZ2V0T3B0aW9uKGNoYXJ0LCAnbGluZScsICdjb2xvcicpO1xuICAgIHZhciBkYXNoUGF0dGVybiA9IHRoaXMuZ2V0T3B0aW9uKGNoYXJ0LCAnbGluZScsICdkYXNoUGF0dGVybicpO1xuICAgIHZhciBzbmFwRW5hYmxlZCA9IHRoaXMuZ2V0T3B0aW9uKGNoYXJ0LCAnc25hcCcsICdlbmFibGVkJyk7XG5cbiAgICB2YXIgbGluZVggPSBjaGFydC5tYXJrZXIueDtcblxuICAgIGlmIChzbmFwRW5hYmxlZCAmJiBjaGFydC5fYWN0aXZlLmxlbmd0aCkge1xuICAgICAgbGluZVggPSBjaGFydC5fYWN0aXZlWzBdLmVsZW1lbnQueDtcbiAgICB9XG5cbiAgICBjaGFydC5jdHguYmVnaW5QYXRoKCk7XG4gICAgY2hhcnQuY3R4LnNldExpbmVEYXNoKGRhc2hQYXR0ZXJuKTtcbiAgICBjaGFydC5jdHgubW92ZVRvKGxpbmVYLCB5U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZSh5U2NhbGUubWF4KSk7XG4gICAgY2hhcnQuY3R4LmxpbmVXaWR0aCA9IGxpbmVXaWR0aDtcbiAgICBjaGFydC5jdHguc3Ryb2tlU3R5bGUgPSBjb2xvcjtcbiAgICBjaGFydC5jdHgubGluZVRvKGxpbmVYLCB5U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZSh5U2NhbGUubWluKSk7XG4gICAgY2hhcnQuY3R4LnN0cm9rZSgpO1xuICAgIGNoYXJ0LmN0eC5zZXRMaW5lRGFzaChbXSk7XG4gIH0sXG5cbiAgZHJhd1RyYWNlUG9pbnRzOiBmdW5jdGlvbiAoY2hhcnQpIHtcbiAgICBpZiAoIWhhc01hcmtlckNvbmZpZ3VyYXRpb24oY2hhcnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAodmFyIGNoYXJ0SW5kZXggPSAwOyBjaGFydEluZGV4IDwgY2hhcnQuZGF0YS5kYXRhc2V0cy5sZW5ndGg7IGNoYXJ0SW5kZXgrKykge1xuICAgICAgdmFyIGRhdGFzZXQgPSBjaGFydC5kYXRhLmRhdGFzZXRzW2NoYXJ0SW5kZXhdO1xuICAgICAgdmFyIG1ldGEgPSBjaGFydC5nZXREYXRhc2V0TWV0YShjaGFydEluZGV4KTtcblxuICAgICAgdmFyIHlTY2FsZSA9IGNoYXJ0LnNjYWxlc1ttZXRhLnlBeGlzSURdO1xuXG4gICAgICBpZiAobWV0YS5oaWRkZW4gfHwgIWRhdGFzZXQuaW50ZXJwb2xhdGUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNoYXJ0LmN0eC5iZWdpblBhdGgoKTtcbiAgICAgIGNoYXJ0LmN0eC5hcmMoXG4gICAgICAgIGNoYXJ0Lm1hcmtlci54LFxuICAgICAgICB5U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZShkYXRhc2V0LmludGVycG9sYXRlZFZhbHVlKSxcbiAgICAgICAgMyxcbiAgICAgICAgMCxcbiAgICAgICAgMiAqIE1hdGguUEksXG4gICAgICAgIGZhbHNlXG4gICAgICApO1xuICAgICAgY2hhcnQuY3R4LmZpbGxTdHlsZSA9ICd3aGl0ZSc7XG4gICAgICBjaGFydC5jdHgubGluZVdpZHRoID0gMjtcbiAgICAgIGNoYXJ0LmN0eC5zdHJva2VTdHlsZSA9IGRhdGFzZXQuYm9yZGVyQ29sb3I7XG4gICAgICBjaGFydC5jdHguZmlsbCgpO1xuICAgICAgY2hhcnQuY3R4LnN0cm9rZSgpO1xuICAgIH1cbiAgfSxcblxuICBpbnRlcnBvbGF0ZVZhbHVlczogZnVuY3Rpb24gKGNoYXJ0KSB7XG4gICAgZm9yICh2YXIgY2hhcnRJbmRleCA9IDA7IGNoYXJ0SW5kZXggPCBjaGFydC5kYXRhLmRhdGFzZXRzLmxlbmd0aDsgY2hhcnRJbmRleCsrKSB7XG4gICAgICB2YXIgZGF0YXNldCA9IGNoYXJ0LmRhdGEuZGF0YXNldHNbY2hhcnRJbmRleF07XG5cbiAgICAgIHZhciBtZXRhID0gY2hhcnQuZ2V0RGF0YXNldE1ldGEoY2hhcnRJbmRleCk7XG5cbiAgICAgIHZhciB4U2NhbGUgPSBjaGFydC5zY2FsZXNbbWV0YS54QXhpc0lEXTtcbiAgICAgIHZhciB4VmFsdWUgPSB4U2NhbGUuZ2V0VmFsdWVGb3JQaXhlbChjaGFydC5tYXJrZXIueCk7XG5cbiAgICAgIGlmIChtZXRhLmhpZGRlbiB8fCAhZGF0YXNldC5pbnRlcnBvbGF0ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRhdGEgPSBkYXRhc2V0LmRhdGE7XG4gICAgICB2YXIgaW5kZXggPSBkYXRhLmZpbmRJbmRleChmdW5jdGlvbiAobykge1xuICAgICAgICByZXR1cm4gby54ID49IHhWYWx1ZTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHByZXYgPSBkYXRhW2luZGV4IC0gMV07XG4gICAgICB2YXIgbmV4dCA9IGRhdGFbaW5kZXhdO1xuXG4gICAgICBpZiAoY2hhcnQuZGF0YS5kYXRhc2V0c1tjaGFydEluZGV4XS5zdGVwcGVkTGluZSAmJiBwcmV2KSB7XG4gICAgICAgIGRhdGFzZXQuaW50ZXJwb2xhdGVkVmFsdWUgPSBwcmV2Lnk7XG4gICAgICB9IGVsc2UgaWYgKHByZXYgJiYgbmV4dCkge1xuICAgICAgICB2YXIgc2xvcGUgPSAobmV4dC55IC0gcHJldi55KSAvIChuZXh0LnggLSBwcmV2LngpO1xuICAgICAgICBkYXRhc2V0LmludGVycG9sYXRlZFZhbHVlID0gcHJldi55ICsgKHhWYWx1ZSAtIHByZXYueCkgKiBzbG9wZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFzZXQuaW50ZXJwb2xhdGVkVmFsdWUgPSBOYU47XG4gICAgICB9XG4gICAgfVxuICB9LFxufTtcbiJdfQ==
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRqcy1wbHVnaW4tbWFya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2NoYXJ0L2NoYXJ0LWpzL2NoYXJ0anMtcGx1Z2luLW1hcmtlci9jaGFydGpzLXBsdWdpbi1tYXJrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7RUFJRTtBQUdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlsRCxJQUFJLGNBQWMsR0FBRztJQUNuQixJQUFJLEVBQUU7UUFDSixLQUFLLEVBQUUsT0FBTztRQUNkLEtBQUssRUFBRSxDQUFDO1FBQ1IsV0FBVyxFQUFFLEVBQUU7S0FDaEI7SUFDRCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsS0FBSztLQUNmO0NBQ0YsQ0FBQztBQUVGLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtJQUM5Qzs7TUFFRTtJQUNGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBcUIsRUFBRSxFQUFFLFdBQUMsT0FBQSxDQUFDLENBQUMsQ0FBQSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxZQUFZLDBDQUFFLFlBQVksQ0FBQSxDQUFBLEVBQUEsQ0FBQyxDQUFDO0FBQ3BHLENBQUMsQ0FBQztBQUVGLGVBQWU7SUFDYixFQUFFLEVBQUUsUUFBUTtJQUVaLFNBQVMsRUFBRSxVQUFVLEtBQUs7UUFDeEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLE9BQU87U0FDUjtRQUVELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXBELElBQ0UsVUFBVSxLQUFLLFFBQVE7WUFD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a2VyIHBsdWdpbiBpcyBoZWF2aWx5IGluc3BpcmVkIGJ5IGh0dHBzOi8vY2hhcnRqcy1wbHVnaW4tY3Jvc3NoYWlyLm5ldGxpZnkuYXBwXG4gIFRoZSBwcm9qZWN0IGFwcGVhcnMgc3RhbGUgYW5kIG9ubHkgdGhlIHZlcnRpY2FsIGxpbmUgZmVhdHVyZSBpcyBuZWVkZWRcbiAgIHBhcnQgb2YgdGhlIHBsdWdpbiB0aGF0IHdhcyBhY3R1YWxseSBuZWVkZWQgaXMgaW1wbGVtZW50ZWQgaGVyZS4gXG4qL1xuXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCB7IHZhbHVlT3JEZWZhdWx0IH0gZnJvbSAnY2hhcnQuanMvaGVscGVycyc7XG5cbmltcG9ydCB7IENoYXJ0RGF0YXNldCB9IGZyb20gJy4uLy4uL2NoYXJ0LnR5cGVzJztcblxudmFyIGRlZmF1bHRPcHRpb25zID0ge1xuICBsaW5lOiB7XG4gICAgY29sb3I6ICdibGFjaycsXG4gICAgd2lkdGg6IDEsXG4gICAgZGFzaFBhdHRlcm46IFtdLFxuICB9LFxuICBzbmFwOiB7XG4gICAgZW5hYmxlZDogZmFsc2UsXG4gIH0sXG59O1xuXG5jb25zdCBoYXNNYXJrZXJDb25maWd1cmF0aW9uID0gKGNoYXJ0OiBDaGFydCkgPT4ge1xuICAvKiBcbiAgICBIYWNreSBzb2x1dGlvbi4gU2hvdWxkIGJlIGZpeGVkIGluIHRoaXMgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9raXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaXNzdWVzLzE5NjdcbiAgKi9cbiAgcmV0dXJuIGNoYXJ0LmRhdGEuZGF0YXNldHMuc29tZSgoZGF0YXNldDogQ2hhcnREYXRhc2V0KSA9PiAhIWRhdGFzZXQ/LmtpcmJ5T3B0aW9ucz8uaXNTdG9ja0NoYXJ0KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaWQ6ICdtYXJrZXInLFxuXG4gIGFmdGVySW5pdDogZnVuY3Rpb24gKGNoYXJ0KSB7XG4gICAgaWYgKCFoYXNNYXJrZXJDb25maWd1cmF0aW9uKGNoYXJ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciB4U2NhbGVUeXBlID0gY2hhcnQuY29uZmlnLm9wdGlvbnMuc2NhbGVzLngudHlwZTtcblxuICAgIGlmIChcbiAgICAgIHhTY2FsZVR5cGUgIT09ICdsaW5lYXInICYmXG4gICAgICB4U2NhbGVUeXBlICE9PSAndGltZScgJiZcbiAgICAgIHhTY2FsZVR5cGUgIT09ICdjYXRlZ29yeScgJiZcbiAgICAgIHhTY2FsZVR5cGUgIT09ICdsb2dhcml0aG1pYydcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2hhcnQub3B0aW9ucy5wbHVnaW5zLm1hcmtlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjaGFydC5vcHRpb25zLnBsdWdpbnMubWFya2VyID0gZGVmYXVsdE9wdGlvbnM7XG4gICAgfVxuXG4gICAgY2hhcnQubWFya2VyID0ge1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICBzdXBwcmVzc1VwZGF0ZTogZmFsc2UsXG4gICAgICB4OiBudWxsLFxuICAgICAgb3JpZ2luYWxEYXRhOiBbXSxcbiAgICAgIG9yaWdpbmFsWFJhbmdlOiB7fSxcbiAgICAgIGRyYWdTdGFydGVkOiBmYWxzZSxcbiAgICAgIGRyYWdTdGFydFg6IG51bGwsXG4gICAgICBkcmFnRW5kWDogbnVsbCxcbiAgICAgIHN1cHByZXNzVG9vbHRpcHM6IGZhbHNlLFxuICAgICAgaWdub3JlTmV4dEV2ZW50czogMCxcbiAgICB9O1xuICB9LFxuXG4gIGdldE9wdGlvbjogZnVuY3Rpb24gKGNoYXJ0LCBjYXRlZ29yeSwgbmFtZSkge1xuICAgIHJldHVybiB2YWx1ZU9yRGVmYXVsdChcbiAgICAgIGNoYXJ0Lm9wdGlvbnMucGx1Z2lucy5tYXJrZXJbY2F0ZWdvcnldXG4gICAgICAgID8gY2hhcnQub3B0aW9ucy5wbHVnaW5zLm1hcmtlcltjYXRlZ29yeV1bbmFtZV1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBkZWZhdWx0T3B0aW9uc1tjYXRlZ29yeV1bbmFtZV1cbiAgICApO1xuICB9LFxuXG4gIGdldFhTY2FsZTogZnVuY3Rpb24gKGNoYXJ0KSB7XG4gICAgcmV0dXJuIGNoYXJ0LmRhdGEuZGF0YXNldHMubGVuZ3RoID8gY2hhcnQuc2NhbGVzW2NoYXJ0LmdldERhdGFzZXRNZXRhKDApLnhBeGlzSURdIDogbnVsbDtcbiAgfSxcbiAgZ2V0WVNjYWxlOiBmdW5jdGlvbiAoY2hhcnQpIHtcbiAgICByZXR1cm4gY2hhcnQuc2NhbGVzW2NoYXJ0LmdldERhdGFzZXRNZXRhKDApLnlBeGlzSURdO1xuICB9LFxuXG4gIGFmdGVyRXZlbnQ6IGZ1bmN0aW9uIChjaGFydCwgZXZlbnQpIHtcbiAgICBpZiAoIWhhc01hcmtlckNvbmZpZ3VyYXRpb24oY2hhcnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChjaGFydC5jb25maWcub3B0aW9ucy5zY2FsZXMueC5sZW5ndGggPT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBlID0gZXZlbnQuZXZlbnQ7XG5cbiAgICB2YXIgeFNjYWxlVHlwZSA9IGNoYXJ0LmNvbmZpZy5vcHRpb25zLnNjYWxlcy54LnR5cGU7XG5cbiAgICBpZiAoXG4gICAgICB4U2NhbGVUeXBlICE9PSAnbGluZWFyJyAmJlxuICAgICAgeFNjYWxlVHlwZSAhPT0gJ3RpbWUnICYmXG4gICAgICB4U2NhbGVUeXBlICE9PSAnY2F0ZWdvcnknICYmXG4gICAgICB4U2NhbGVUeXBlICE9PSAnbG9nYXJpdGhtaWMnXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHhTY2FsZSA9IHRoaXMuZ2V0WFNjYWxlKGNoYXJ0KTtcblxuICAgIGlmICgheFNjYWxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNoYXJ0Lm1hcmtlci5pZ25vcmVOZXh0RXZlbnRzID4gMCkge1xuICAgICAgY2hhcnQubWFya2VyLmlnbm9yZU5leHRFdmVudHMgLT0gMTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBmaXggZm9yIFNhZmFyaVxuICAgIHZhciBidXR0b25zID0gZS5uYXRpdmUuYnV0dG9ucyA9PT0gdW5kZWZpbmVkID8gZS5uYXRpdmUud2hpY2ggOiBlLm5hdGl2ZS5idXR0b25zO1xuICAgIGlmIChlLm5hdGl2ZS50eXBlID09PSAnbW91c2V1cCcpIHtcbiAgICAgIGJ1dHRvbnMgPSAwO1xuICAgIH1cblxuICAgIGNoYXJ0Lm1hcmtlci5lbmFibGVkID1cbiAgICAgIGUudHlwZSAhPT0gJ21vdXNlb3V0JyAmJlxuICAgICAgZS54ID4geFNjYWxlLmdldFBpeGVsRm9yVmFsdWUoeFNjYWxlLm1pbikgJiZcbiAgICAgIGUueCA8IHhTY2FsZS5nZXRQaXhlbEZvclZhbHVlKHhTY2FsZS5tYXgpO1xuXG4gICAgaWYgKCFjaGFydC5tYXJrZXIuZW5hYmxlZCAmJiAhY2hhcnQubWFya2VyLnN1cHByZXNzVXBkYXRlKSB7XG4gICAgICBpZiAoZS54ID4geFNjYWxlLmdldFBpeGVsRm9yVmFsdWUoeFNjYWxlLm1heCkpIHtcbiAgICAgICAgLy8gc3VwcHJlc3MgZnV0dXJlIHVwZGF0ZXMgdG8gcHJldmVudCBlbmRsZXNzIHJlZHJhd2luZyBvZiBjaGFydFxuICAgICAgICBjaGFydC5tYXJrZXIuc3VwcHJlc3NVcGRhdGUgPSB0cnVlO1xuICAgICAgICBjaGFydC51cGRhdGUoJ25vbmUnKTtcbiAgICAgIH1cbiAgICAgIGNoYXJ0Lm1hcmtlci5kcmFnU3RhcnRlZCA9IGZhbHNlOyAvLyBjYW5jZWwgem9vbSBpbiBwcm9ncmVzc1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjaGFydC5tYXJrZXIuc3VwcHJlc3NVcGRhdGUgPSBmYWxzZTtcblxuICAgIGNoYXJ0Lm1hcmtlci54ID0gZS54O1xuXG4gICAgY2hhcnQuZHJhdygpO1xuICB9LFxuICBkb0RyYXc6IGZ1bmN0aW9uIChjaGFydCkge1xuICAgIGlmICghaGFzTWFya2VyQ29uZmlndXJhdGlvbihjaGFydCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWNoYXJ0Lm1hcmtlci5lbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3VHJhY2VMaW5lKGNoYXJ0KTtcbiAgICB0aGlzLmludGVycG9sYXRlVmFsdWVzKGNoYXJ0KTtcbiAgICB0aGlzLmRyYXdUcmFjZVBvaW50cyhjaGFydCk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgYmVmb3JlRHJhdzogZnVuY3Rpb24gKGNoYXJ0KSB7XG4gICAgcmV0dXJuIHRoaXMuZG9EcmF3KGNoYXJ0KTtcbiAgfSxcbiAgLy8gTG9naWMgbW92ZWQgdG8gYmVmb3JlRHJhdyBpbiBvcmRlclxuICAvLyBmb3IgdGhlIHZlcnRpY2FsIGxpbmUgdG8gYmUgZHJhd25cbiAgLy8gdW5kZXIgdG9vbHRpcCBhbmQgZGF0YWxhYmVscy5cbiAgLy8gYWZ0ZXJEcmF3OiBmdW5jdGlvbihjaGFydCkge1xuICAvLyAgIHJldHVybiB0aGlzLmRvRHJhdyhjaGFydCk7XG4gIC8vIH0sXG5cbiAgZHJhd1RyYWNlTGluZTogZnVuY3Rpb24gKGNoYXJ0KSB7XG4gICAgaWYgKCFoYXNNYXJrZXJDb25maWd1cmF0aW9uKGNoYXJ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgeVNjYWxlID0gdGhpcy5nZXRZU2NhbGUoY2hhcnQpO1xuXG4gICAgdmFyIGxpbmVXaWR0aCA9IHRoaXMuZ2V0T3B0aW9uKGNoYXJ0LCAnbGluZScsICd3aWR0aCcpO1xuICAgIHZhciBjb2xvciA9IHRoaXMuZ2V0T3B0aW9uKGNoYXJ0LCAnbGluZScsICdjb2xvcicpO1xuICAgIHZhciBkYXNoUGF0dGVybiA9IHRoaXMuZ2V0T3B0aW9uKGNoYXJ0LCAnbGluZScsICdkYXNoUGF0dGVybicpO1xuICAgIHZhciBzbmFwRW5hYmxlZCA9IHRoaXMuZ2V0T3B0aW9uKGNoYXJ0LCAnc25hcCcsICdlbmFibGVkJyk7XG5cbiAgICB2YXIgbGluZVggPSBjaGFydC5tYXJrZXIueDtcblxuICAgIGlmIChzbmFwRW5hYmxlZCAmJiBjaGFydC5fYWN0aXZlLmxlbmd0aCkge1xuICAgICAgbGluZVggPSBjaGFydC5fYWN0aXZlWzBdLmVsZW1lbnQueDtcbiAgICB9XG5cbiAgICBjaGFydC5jdHguYmVnaW5QYXRoKCk7XG4gICAgY2hhcnQuY3R4LnNldExpbmVEYXNoKGRhc2hQYXR0ZXJuKTtcbiAgICBjaGFydC5jdHgubW92ZVRvKGxpbmVYLCB5U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZSh5U2NhbGUubWF4KSk7XG4gICAgY2hhcnQuY3R4LmxpbmVXaWR0aCA9IGxpbmVXaWR0aDtcbiAgICBjaGFydC5jdHguc3Ryb2tlU3R5bGUgPSBjb2xvcjtcbiAgICBjaGFydC5jdHgubGluZVRvKGxpbmVYLCB5U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZSh5U2NhbGUubWluKSk7XG4gICAgY2hhcnQuY3R4LnN0cm9rZSgpO1xuICAgIGNoYXJ0LmN0eC5zZXRMaW5lRGFzaChbXSk7XG4gIH0sXG5cbiAgZHJhd1RyYWNlUG9pbnRzOiBmdW5jdGlvbiAoY2hhcnQpIHtcbiAgICBpZiAoIWhhc01hcmtlckNvbmZpZ3VyYXRpb24oY2hhcnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAodmFyIGNoYXJ0SW5kZXggPSAwOyBjaGFydEluZGV4IDwgY2hhcnQuZGF0YS5kYXRhc2V0cy5sZW5ndGg7IGNoYXJ0SW5kZXgrKykge1xuICAgICAgdmFyIGRhdGFzZXQgPSBjaGFydC5kYXRhLmRhdGFzZXRzW2NoYXJ0SW5kZXhdO1xuICAgICAgdmFyIG1ldGEgPSBjaGFydC5nZXREYXRhc2V0TWV0YShjaGFydEluZGV4KTtcblxuICAgICAgdmFyIHlTY2FsZSA9IGNoYXJ0LnNjYWxlc1ttZXRhLnlBeGlzSURdO1xuXG4gICAgICBpZiAobWV0YS5oaWRkZW4gfHwgIWRhdGFzZXQuaW50ZXJwb2xhdGUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNoYXJ0LmN0eC5iZWdpblBhdGgoKTtcbiAgICAgIGNoYXJ0LmN0eC5hcmMoXG4gICAgICAgIGNoYXJ0Lm1hcmtlci54LFxuICAgICAgICB5U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZShkYXRhc2V0LmludGVycG9sYXRlZFZhbHVlKSxcbiAgICAgICAgMyxcbiAgICAgICAgMCxcbiAgICAgICAgMiAqIE1hdGguUEksXG4gICAgICAgIGZhbHNlXG4gICAgICApO1xuICAgICAgY2hhcnQuY3R4LmZpbGxTdHlsZSA9ICd3aGl0ZSc7XG4gICAgICBjaGFydC5jdHgubGluZVdpZHRoID0gMjtcbiAgICAgIGNoYXJ0LmN0eC5zdHJva2VTdHlsZSA9IGRhdGFzZXQuYm9yZGVyQ29sb3I7XG4gICAgICBjaGFydC5jdHguZmlsbCgpO1xuICAgICAgY2hhcnQuY3R4LnN0cm9rZSgpO1xuICAgIH1cbiAgfSxcblxuICBpbnRlcnBvbGF0ZVZhbHVlczogZnVuY3Rpb24gKGNoYXJ0KSB7XG4gICAgZm9yICh2YXIgY2hhcnRJbmRleCA9IDA7IGNoYXJ0SW5kZXggPCBjaGFydC5kYXRhLmRhdGFzZXRzLmxlbmd0aDsgY2hhcnRJbmRleCsrKSB7XG4gICAgICB2YXIgZGF0YXNldCA9IGNoYXJ0LmRhdGEuZGF0YXNldHNbY2hhcnRJbmRleF07XG5cbiAgICAgIHZhciBtZXRhID0gY2hhcnQuZ2V0RGF0YXNldE1ldGEoY2hhcnRJbmRleCk7XG5cbiAgICAgIHZhciB4U2NhbGUgPSBjaGFydC5zY2FsZXNbbWV0YS54QXhpc0lEXTtcbiAgICAgIHZhciB4VmFsdWUgPSB4U2NhbGUuZ2V0VmFsdWVGb3JQaXhlbChjaGFydC5tYXJrZXIueCk7XG5cbiAgICAgIGlmIChtZXRhLmhpZGRlbiB8fCAhZGF0YXNldC5pbnRlcnBvbGF0ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRhdGEgPSBkYXRhc2V0LmRhdGE7XG4gICAgICB2YXIgaW5kZXggPSBkYXRhLmZpbmRJbmRleChmdW5jdGlvbiAobykge1xuICAgICAgICByZXR1cm4gby54ID49IHhWYWx1ZTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHByZXYgPSBkYXRhW2luZGV4IC0gMV07XG4gICAgICB2YXIgbmV4dCA9IGRhdGFbaW5kZXhdO1xuXG4gICAgICBpZiAoY2hhcnQuZGF0YS5kYXRhc2V0c1tjaGFydEluZGV4XS5zdGVwcGVkTGluZSAmJiBwcmV2KSB7XG4gICAgICAgIGRhdGFzZXQuaW50ZXJwb2xhdGVkVmFsdWUgPSBwcmV2Lnk7XG4gICAgICB9IGVsc2UgaWYgKHByZXYgJiYgbmV4dCkge1xuICAgICAgICB2YXIgc2xvcGUgPSAobmV4dC55IC0gcHJldi55KSAvIChuZXh0LnggLSBwcmV2LngpO1xuICAgICAgICBkYXRhc2V0LmludGVycG9sYXRlZFZhbHVlID0gcHJldi55ICsgKHhWYWx1ZSAtIHByZXYueCkgKiBzbG9wZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFzZXQuaW50ZXJwb2xhdGVkVmFsdWUgPSBOYU47XG4gICAgICB9XG4gICAgfVxuICB9LFxufTtcbiJdfQ==