@sbb-esta/lyne-elements 3.7.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/alert/alert/alert.component.d.ts +2 -0
  2. package/alert/alert/alert.component.d.ts.map +1 -1
  3. package/alert/alert/alert.component.js +44 -39
  4. package/autocomplete/autocomplete-base-element.js +20 -20
  5. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +14 -14
  6. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +1 -1
  7. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +9 -9
  8. package/badge.css +2 -2
  9. package/breadcrumb/breadcrumb/breadcrumb.component.js +12 -12
  10. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +15 -15
  11. package/button/common.js +1 -1
  12. package/button/mini-button/mini-button.component.js +7 -7
  13. package/button/mini-button-group/mini-button-group.component.js +21 -21
  14. package/button.js +1 -1
  15. package/calendar/calendar.component.js +36 -36
  16. package/card/card/card.component.js +10 -10
  17. package/card/card-badge/card-badge.component.js +15 -15
  18. package/carousel/carousel/carousel.component.d.ts +1 -0
  19. package/carousel/carousel/carousel.component.d.ts.map +1 -1
  20. package/carousel/carousel/carousel.component.js +37 -33
  21. package/carousel/carousel-list/carousel-list.component.d.ts +2 -2
  22. package/carousel/carousel-list/carousel-list.component.d.ts.map +1 -1
  23. package/carousel/carousel-list/carousel-list.component.js +32 -29
  24. package/checkbox/common.js +1 -1
  25. package/checkbox-common-gjHkSAmN.js +5 -0
  26. package/checkbox.js +1 -1
  27. package/chip/chip/chip.component.js +23 -23
  28. package/chip-label/chip-label.component.js +22 -22
  29. package/clock/clock.component.js +29 -29
  30. package/container/container/container.component.js +21 -21
  31. package/container/sticky-bar/sticky-bar.component.js +13 -13
  32. package/core/config/config.d.ts +6 -0
  33. package/core/config/config.d.ts.map +1 -1
  34. package/core/controllers/media-matchers-controller.d.ts +29 -0
  35. package/core/controllers/media-matchers-controller.d.ts.map +1 -1
  36. package/core/controllers/media-matchers-controller.js +73 -23
  37. package/core/controllers.js +16 -14
  38. package/core/dom/contains-pierce-shadow-dom.d.ts +3 -0
  39. package/core/dom/contains-pierce-shadow-dom.d.ts.map +1 -0
  40. package/core/dom/contains-pierce-shadow-dom.js +12 -0
  41. package/core/dom/queue-dom-content-loaded.d.ts +5 -0
  42. package/core/dom/queue-dom-content-loaded.d.ts.map +1 -0
  43. package/core/dom/queue-dom-content-loaded.js +7 -0
  44. package/core/dom/set-or-remove-attribute.d.ts +14 -0
  45. package/core/dom/set-or-remove-attribute.d.ts.map +1 -1
  46. package/core/dom/set-or-remove-attribute.js +11 -3
  47. package/core/dom.d.ts +2 -0
  48. package/core/dom.d.ts.map +1 -1
  49. package/core/dom.js +28 -22
  50. package/core/images.d.ts +4 -0
  51. package/core/images.d.ts.map +1 -1
  52. package/core/images.js +12 -12
  53. package/core/mixins.js +10 -10
  54. package/core/overlay/overlay-outside-pointer-event-listener.d.ts +26 -0
  55. package/core/overlay/overlay-outside-pointer-event-listener.d.ts.map +1 -0
  56. package/core/overlay/overlay-outside-pointer-event-listener.js +37 -0
  57. package/core/overlay.d.ts +1 -0
  58. package/core/overlay.d.ts.map +1 -1
  59. package/core/overlay.js +14 -11
  60. package/core/styles/core.scss +39 -12
  61. package/core/styles/mixins/badge.scss +2 -2
  62. package/core/styles/mixins/buttons.scss +14 -14
  63. package/core/styles/mixins/card.scss +9 -6
  64. package/core/styles/mixins/chip.scss +8 -8
  65. package/core/styles/mixins/image.scss +3 -0
  66. package/core/styles/mixins/link.scss +12 -7
  67. package/core/styles/mixins/lists.scss +6 -4
  68. package/core/styles/mixins/overlay.scss +6 -3
  69. package/core/styles/mixins/panel.scss +3 -3
  70. package/core/styles/mixins/pearl-chain-bullet.scss +9 -5
  71. package/core/styles/mixins/scrollbar.scss +12 -6
  72. package/core/styles/mixins/shadows.scss +32 -64
  73. package/core/styles/mixins/table.scss +13 -10
  74. package/core/styles/mixins/timetable-form.scss +3 -3
  75. package/core/styles/mixins/typo.scss +4 -4
  76. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss +49 -1
  77. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables_css--mixin.scss +203 -5
  78. package/core/styles/off-brand-theme.scss +3 -0
  79. package/core/styles/safety-theme.scss +3 -0
  80. package/core/styles/standard-theme.scss +3 -14
  81. package/core/styles/theme.scss +18 -0
  82. package/core.css +253 -21
  83. package/custom-elements.json +1392 -115
  84. package/date-input/date-input.component.js +1 -1
  85. package/datepicker/datepicker-next-day/datepicker-next-day.component.js +4 -4
  86. package/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +6 -6
  87. package/datepicker/datepicker-toggle/datepicker-toggle.component.js +7 -7
  88. package/development/alert/alert/alert.component.d.ts +2 -0
  89. package/development/alert/alert/alert.component.d.ts.map +1 -1
  90. package/development/alert/alert/alert.component.js +22 -8
  91. package/development/autocomplete/autocomplete-base-element.js +23 -11
  92. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +15 -14
  93. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +5 -4
  94. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +19 -11
  95. package/development/breadcrumb/breadcrumb/breadcrumb.component.js +4 -1
  96. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +16 -8
  97. package/development/button/common.js +1 -1
  98. package/development/button/mini-button/mini-button.component.js +15 -14
  99. package/development/button/mini-button-group/mini-button-group.component.js +4 -4
  100. package/development/button.js +1 -1
  101. package/development/calendar/calendar.component.js +21 -11
  102. package/development/card/card/card.component.js +11 -6
  103. package/development/card/card-badge/card-badge.component.js +10 -9
  104. package/development/carousel/carousel/carousel.component.d.ts +1 -0
  105. package/development/carousel/carousel/carousel.component.d.ts.map +1 -1
  106. package/development/carousel/carousel/carousel.component.js +14 -4
  107. package/development/carousel/carousel-list/carousel-list.component.d.ts +2 -2
  108. package/development/carousel/carousel-list/carousel-list.component.d.ts.map +1 -1
  109. package/development/carousel/carousel-list/carousel-list.component.js +29 -21
  110. package/development/checkbox/common.js +1 -1
  111. package/development/{checkbox-common-aMPOsPVA.js → checkbox-common-Dy_ofVhp.js} +4 -3
  112. package/development/checkbox.js +1 -1
  113. package/development/chip/chip/chip.component.js +15 -14
  114. package/development/chip-label/chip-label.component.js +12 -15
  115. package/development/clock/clock.component.js +11 -3
  116. package/development/container/container/container.component.js +6 -6
  117. package/development/container/sticky-bar/sticky-bar.component.js +6 -6
  118. package/development/core/config/config.d.ts +6 -0
  119. package/development/core/config/config.d.ts.map +1 -1
  120. package/development/core/config/config.js +1 -1
  121. package/development/core/controllers/media-matchers-controller.d.ts +29 -0
  122. package/development/core/controllers/media-matchers-controller.d.ts.map +1 -1
  123. package/development/core/controllers/media-matchers-controller.js +74 -1
  124. package/development/core/controllers.js +3 -1
  125. package/development/core/dom/contains-pierce-shadow-dom.d.ts +3 -0
  126. package/development/core/dom/contains-pierce-shadow-dom.d.ts.map +1 -0
  127. package/development/core/dom/contains-pierce-shadow-dom.js +14 -0
  128. package/development/core/dom/queue-dom-content-loaded.d.ts +5 -0
  129. package/development/core/dom/queue-dom-content-loaded.d.ts.map +1 -0
  130. package/development/core/dom/queue-dom-content-loaded.js +12 -0
  131. package/development/core/dom/set-or-remove-attribute.d.ts +14 -0
  132. package/development/core/dom/set-or-remove-attribute.d.ts.map +1 -1
  133. package/development/core/dom/set-or-remove-attribute.js +9 -1
  134. package/development/core/dom.d.ts +2 -0
  135. package/development/core/dom.d.ts.map +1 -1
  136. package/development/core/dom.js +8 -2
  137. package/development/core/images.d.ts +4 -0
  138. package/development/core/images.d.ts.map +1 -1
  139. package/development/core/images.js +11 -11
  140. package/development/core/mixins.js +7 -6
  141. package/development/core/overlay/overlay-outside-pointer-event-listener.d.ts +26 -0
  142. package/development/core/overlay/overlay-outside-pointer-event-listener.d.ts.map +1 -0
  143. package/development/core/overlay/overlay-outside-pointer-event-listener.js +61 -0
  144. package/development/core/overlay.d.ts +1 -0
  145. package/development/core/overlay.d.ts.map +1 -1
  146. package/development/core/overlay.js +4 -1
  147. package/development/date-input/date-input.component.js +2 -2
  148. package/development/datepicker/datepicker-next-day/datepicker-next-day.component.js +15 -14
  149. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +15 -14
  150. package/development/datepicker/datepicker-toggle/datepicker-toggle.component.js +15 -14
  151. package/development/dialog/dialog/dialog.component.d.ts +1 -0
  152. package/development/dialog/dialog/dialog.component.d.ts.map +1 -1
  153. package/development/dialog/dialog/dialog.component.js +28 -14
  154. package/development/dialog/dialog-actions/dialog-actions.component.js +1 -1
  155. package/development/dialog/dialog-title/dialog-title.component.js +1 -1
  156. package/development/divider/divider.component.js +2 -2
  157. package/development/expansion-panel/expansion-panel/expansion-panel.component.js +6 -6
  158. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +6 -2
  159. package/development/file-selector/common.js +1 -1
  160. package/development/{file-selector-common-CRnQigIZ.js → file-selector-common-CRNAWFM_.js} +8 -5
  161. package/development/file-selector.js +1 -1
  162. package/development/flip-card/flip-card/flip-card.component.js +8 -3
  163. package/development/footer/footer.component.js +5 -4
  164. package/development/form-error/form-error.component.js +2 -2
  165. package/development/form-field/form-field/form-field.component.js +36 -22
  166. package/development/form-field/form-field-clear/form-field-clear.component.js +15 -14
  167. package/development/header/common/header-action-common.js +4 -4
  168. package/development/header/header/header.component.js +2 -2
  169. package/development/header/header-environment/header-environment.component.js +1 -1
  170. package/development/{icon-sidebar-button-common-CA_8TnFu.js → icon-sidebar-button-common-BGrKtvyM.js} +3 -2
  171. package/development/journey-header/journey-header.component.js +1 -1
  172. package/development/lead-container/lead-container.component.js +4 -2
  173. package/development/link/common/block-link-common.js +17 -5
  174. package/development/link/common/inline-link-common.js +9 -3
  175. package/development/link-list/link-list-anchor/link-list-anchor.component.js +11 -9
  176. package/development/loading-indicator/loading-indicator.component.js +1 -1
  177. package/development/loading-indicator-circle/loading-indicator-circle.component.js +2 -2
  178. package/development/logo/logo.component.js +3 -2
  179. package/development/map-container/map-container.component.js +14 -6
  180. package/development/menu/common/menu-action-common.js +4 -3
  181. package/development/menu/menu/menu.component.d.ts +2 -0
  182. package/development/menu/menu/menu.component.d.ts.map +1 -1
  183. package/development/menu/menu/menu.component.js +36 -13
  184. package/development/message/message.component.js +3 -1
  185. package/development/navigation/common/navigation-action-common.js +4 -4
  186. package/development/navigation/navigation/navigation.component.js +21 -19
  187. package/development/navigation/navigation-list/navigation-list.component.js +1 -1
  188. package/development/navigation/navigation-marker/navigation-marker.component.js +1 -1
  189. package/development/navigation/navigation-section/navigation-section.component.js +3 -3
  190. package/development/notification/notification.component.js +38 -18
  191. package/development/option/optgroup/optgroup-base-element.js +3 -2
  192. package/development/option/option/option.component.js +13 -11
  193. package/development/option/option-hint/option-hint.component.js +3 -2
  194. package/development/overlay/overlay.component.d.ts.map +1 -1
  195. package/development/overlay/overlay.component.js +28 -22
  196. package/development/paginator/compact-paginator/compact-paginator.component.js +3 -2
  197. package/development/paginator/paginator/paginator.component.js +18 -17
  198. package/development/popover/popover/popover.component.js +8 -6
  199. package/development/popover/popover-trigger/popover-trigger.component.js +20 -17
  200. package/development/radio-button/common.js +1 -1
  201. package/development/radio-button/radio-button/radio-button.component.js +3 -3
  202. package/development/radio-button/radio-button-panel/radio-button-panel.component.js +3 -3
  203. package/development/{radio-button-common-454JtP9b.js → radio-button-common-CgM3kQSW.js} +9 -8
  204. package/development/radio-button.js +1 -1
  205. package/development/sbb-tokens-CVLcOi-S.js +1 -1
  206. package/development/select/select.component.js +31 -13
  207. package/development/selection-action-panel/selection-action-panel.component.js +9 -5
  208. package/development/selection-expansion-panel/selection-expansion-panel.component.js +10 -6
  209. package/development/sidebar/common.js +1 -1
  210. package/development/sidebar/icon-sidebar/icon-sidebar.component.js +2 -2
  211. package/development/sidebar/sidebar/sidebar.component.js +14 -6
  212. package/development/sidebar.js +1 -1
  213. package/development/signet/signet.component.js +2 -2
  214. package/development/skiplink-list/skiplink-list.component.d.ts +3 -1
  215. package/development/skiplink-list/skiplink-list.component.d.ts.map +1 -1
  216. package/development/skiplink-list/skiplink-list.component.js +26 -9
  217. package/development/slider/slider.component.js +15 -9
  218. package/development/status/status.component.js +7 -7
  219. package/development/stepper/step/step.component.js +1 -3
  220. package/development/stepper/step-label/step-label.component.js +7 -6
  221. package/development/stepper/stepper/stepper.component.js +5 -5
  222. package/development/tabs/tab-label/tab-label.component.js +7 -14
  223. package/development/tag/tag/tag.component.js +15 -9
  224. package/development/teaser/teaser.component.js +3 -2
  225. package/development/teaser-hero/teaser-hero.component.js +3 -3
  226. package/development/teaser-product/common.js +1 -1
  227. package/development/{teaser-product-common-D6fa6x3w.js → teaser-product-common-DvlBRkE_.js} +14 -6
  228. package/development/teaser-product.js +1 -1
  229. package/development/time-input/time-input.component.js +2 -2
  230. package/development/timetable-form/timetable-form/timetable-form.component.js +1 -1
  231. package/development/timetable-form/timetable-form-details/timetable-form-details.component.js +1 -1
  232. package/development/timetable-form/timetable-form-field/timetable-form-field.component.js +3 -3
  233. package/development/timetable-occupancy/timetable-occupancy.component.js +2 -2
  234. package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.d.ts +1 -0
  235. package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.d.ts.map +1 -1
  236. package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.js +4 -3
  237. package/development/title/title-base.js +2 -5
  238. package/development/title/title.component.js +1 -1
  239. package/development/toast/toast.component.d.ts +3 -1
  240. package/development/toast/toast.component.d.ts.map +1 -1
  241. package/development/toast/toast.component.js +31 -15
  242. package/development/toggle/toggle/toggle.component.js +8 -4
  243. package/development/toggle/toggle-option/toggle-option.component.js +5 -3
  244. package/development/toggle-check/toggle-check.component.js +13 -14
  245. package/development/tooltip/tooltip.component.d.ts +89 -0
  246. package/development/tooltip/tooltip.component.d.ts.map +1 -0
  247. package/development/tooltip/tooltip.component.js +466 -0
  248. package/development/tooltip.d.ts +5 -0
  249. package/development/tooltip.d.ts.map +1 -0
  250. package/development/tooltip.js +5 -0
  251. package/development/train/train-blocked-passage/train-blocked-passage.component.js +1 -1
  252. package/development/train/train-formation/train-formation.component.js +16 -4
  253. package/development/train/train-wagon/train-wagon.component.js +3 -12
  254. package/development/{transparent-button-COe-YB_U.js → transparent-button-DdSaBp_-.js} +141 -86
  255. package/development/visual-checkbox/visual-checkbox.component.js +12 -12
  256. package/dialog/dialog/dialog.component.d.ts +1 -0
  257. package/dialog/dialog/dialog.component.d.ts.map +1 -1
  258. package/dialog/dialog/dialog.component.js +37 -36
  259. package/dialog/dialog-actions/dialog-actions.component.js +6 -6
  260. package/dialog/dialog-title/dialog-title.component.js +4 -4
  261. package/divider/divider.component.js +16 -16
  262. package/expansion-panel/expansion-panel/expansion-panel.component.js +1 -1
  263. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +3 -3
  264. package/file-selector/common.js +1 -1
  265. package/file-selector-common-D88J9PEh.js +5 -0
  266. package/file-selector.js +1 -1
  267. package/flip-card/flip-card/flip-card.component.js +14 -14
  268. package/footer/footer.component.js +18 -18
  269. package/form-error/form-error.component.js +4 -4
  270. package/form-field/form-field/form-field.component.js +1 -1
  271. package/form-field/form-field-clear/form-field-clear.component.js +9 -9
  272. package/header/common/header-action-common.js +1 -1
  273. package/header/header/header.component.js +19 -19
  274. package/header/header-environment/header-environment.component.js +1 -1
  275. package/icon-sidebar-button-common-BeRXvifI.js +7 -0
  276. package/index.d.ts +2 -0
  277. package/index.js +2 -0
  278. package/journey-header/journey-header.component.js +1 -1
  279. package/lead-container/lead-container.component.js +5 -5
  280. package/link/common/block-link-common.js +23 -23
  281. package/link/common/inline-link-common.js +7 -7
  282. package/link-list/link-list-anchor/link-list-anchor.component.js +11 -11
  283. package/lists.css +5 -3
  284. package/loading-indicator/loading-indicator.component.js +1 -1
  285. package/loading-indicator-circle/loading-indicator-circle.component.js +13 -13
  286. package/logo/logo.component.js +9 -9
  287. package/map-container/map-container.component.js +15 -15
  288. package/menu/common/menu-action-common.js +5 -5
  289. package/menu/menu/menu.component.d.ts +2 -0
  290. package/menu/menu/menu.component.d.ts.map +1 -1
  291. package/menu/menu/menu.component.js +45 -38
  292. package/message/message.component.js +9 -9
  293. package/navigation/common/navigation-action-common.js +6 -6
  294. package/navigation/navigation/navigation.component.js +19 -19
  295. package/navigation/navigation-list/navigation-list.component.js +1 -1
  296. package/navigation/navigation-marker/navigation-marker.component.js +1 -1
  297. package/navigation/navigation-section/navigation-section.component.js +1 -1
  298. package/notification/notification.component.js +8 -8
  299. package/off-brand-theme.css +3017 -0
  300. package/option/optgroup/optgroup-base-element.js +1 -1
  301. package/option/option/option.component.js +3 -3
  302. package/option/option-hint/option-hint.component.js +8 -8
  303. package/overlay/overlay.component.d.ts.map +1 -1
  304. package/overlay/overlay.component.js +47 -48
  305. package/package.json +14 -1
  306. package/paginator/compact-paginator/compact-paginator.component.js +4 -4
  307. package/paginator/paginator/paginator.component.js +10 -10
  308. package/popover/popover/popover.component.js +9 -9
  309. package/popover/popover-trigger/popover-trigger.component.js +5 -5
  310. package/radio-button/common.js +1 -1
  311. package/radio-button/radio-button/radio-button.component.js +13 -13
  312. package/radio-button/radio-button-panel/radio-button-panel.component.js +2 -2
  313. package/radio-button-common-Nm9ULjVb.js +5 -0
  314. package/radio-button.js +1 -1
  315. package/safety-theme.css +3017 -0
  316. package/scrollbar.css +52 -20
  317. package/select/select.component.js +45 -45
  318. package/selection-action-panel/selection-action-panel.component.js +6 -6
  319. package/selection-expansion-panel/selection-expansion-panel.component.js +11 -11
  320. package/sidebar/common.js +1 -1
  321. package/sidebar/icon-sidebar/icon-sidebar.component.js +12 -12
  322. package/sidebar/sidebar/sidebar.component.js +29 -29
  323. package/sidebar.js +1 -1
  324. package/signet/signet.component.js +1 -1
  325. package/skiplink-list/skiplink-list.component.d.ts +3 -1
  326. package/skiplink-list/skiplink-list.component.d.ts.map +1 -1
  327. package/skiplink-list/skiplink-list.component.js +37 -30
  328. package/slider/slider.component.js +16 -16
  329. package/standard-theme.css +334 -58
  330. package/status/status.component.js +13 -13
  331. package/stepper/step/step.component.js +5 -5
  332. package/stepper/step-label/step-label.component.js +1 -1
  333. package/stepper/stepper/stepper.component.js +7 -7
  334. package/table.css +15 -9
  335. package/tabs/tab-label/tab-label.component.js +19 -19
  336. package/tag/tag/tag.component.js +14 -14
  337. package/teaser/teaser.component.js +1 -1
  338. package/teaser-hero/teaser-hero.component.js +12 -12
  339. package/teaser-product/common.js +1 -1
  340. package/teaser-product-common-DIra6aVg.js +5 -0
  341. package/teaser-product.js +1 -1
  342. package/time-input/time-input.component.js +1 -1
  343. package/timetable-form/timetable-form/timetable-form.component.js +6 -6
  344. package/timetable-form/timetable-form-details/timetable-form-details.component.js +4 -4
  345. package/timetable-form/timetable-form-field/timetable-form-field.component.js +5 -5
  346. package/timetable-form.css +3 -3
  347. package/timetable-occupancy/timetable-occupancy.component.js +7 -7
  348. package/timetable-occupancy-icon/timetable-occupancy-icon.component.d.ts +1 -0
  349. package/timetable-occupancy-icon/timetable-occupancy-icon.component.d.ts.map +1 -1
  350. package/timetable-occupancy-icon/timetable-occupancy-icon.component.js +23 -23
  351. package/title/title-base.js +1 -1
  352. package/title/title.component.js +1 -1
  353. package/toast/toast.component.d.ts +3 -1
  354. package/toast/toast.component.d.ts.map +1 -1
  355. package/toast/toast.component.js +67 -59
  356. package/toggle/toggle/toggle.component.js +1 -1
  357. package/toggle/toggle-option/toggle-option.component.js +5 -5
  358. package/toggle-check/toggle-check.component.js +16 -16
  359. package/tooltip/tooltip.component.d.ts +89 -0
  360. package/tooltip/tooltip.component.d.ts.map +1 -0
  361. package/tooltip/tooltip.component.js +215 -0
  362. package/tooltip.d.ts +5 -0
  363. package/tooltip.d.ts.map +1 -0
  364. package/tooltip.js +4 -0
  365. package/train/train-blocked-passage/train-blocked-passage.component.js +1 -1
  366. package/train/train-formation/train-formation.component.js +16 -16
  367. package/train/train-wagon/train-wagon.component.js +1 -1
  368. package/transparent-button-Bg9fU_iZ.js +9 -0
  369. package/typography.css +1 -0
  370. package/visual-checkbox/visual-checkbox.component.js +14 -14
  371. package/checkbox-common-CDzcyq8p.js +0 -5
  372. package/file-selector-common-OHK9hu3a.js +0 -5
  373. package/icon-sidebar-button-common-CM-ueEhH.js +0 -7
  374. package/radio-button-common-CUppr5FI.js +0 -5
  375. package/teaser-product-common-C8oSkIxy.js +0 -5
  376. package/transparent-button-xudJxob_.js +0 -9
@@ -9,7 +9,7 @@ import { __runInitializers, __esDecorate } from "tslib";
9
9
  import { css, LitElement, isServer, html } from "lit";
10
10
  import { customElement, property } from "lit/decorators.js";
11
11
  import { ref } from "lit/directives/ref.js";
12
- const clockFaceSVG = '<svg focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 105 105"><g class="face"><circle fill="#FFF" cx="52.5" cy="52.5" r="52.5"/><path d="M50.75 4h3.5v12h-3.5zM50.75 89h3.5v12h-3.5zM75.233 9.623l3.03 1.75-6 10.392-3.03-1.75zM32.734 83.233l3.03 1.75-6 10.392-3.03-1.75zM93.628 26.732l1.75 3.031-10.392 6-1.75-3.03zM20.017 69.234l1.75 3.031-10.392 6-1.75-3.03zM101 50.75v3.5H89v-3.5zM16 50.75v3.5H4v-3.5zM95.379 75.232l-1.75 3.031-10.392-6 1.75-3.03zM21.766 32.734l-1.75 3.031-10.392-6 1.75-3.03zM78.267 93.63l-3.03 1.75-6-10.393 3.03-1.75zM35.766 20.015l-3.03 1.75-6-10.392 3.03-1.75z"/><g><path d="M56.873 4.19l1.392.147-.366 3.48-1.392-.145zM47.101 97.177l1.393.146-.366 3.481-1.392-.146zM61.896 4.914l1.37.29-.728 3.424-1.37-.29zM42.458 96.366l1.37.29-.728 3.424-1.37-.291zM66.825 6.157l1.332.432-1.082 3.33-1.331-.434zM37.931 95.085l1.332.432-1.082 3.33-1.331-.433zM71.584 7.906l1.28.569-1.424 3.197-1.28-.57zM33.56 93.32l1.278.569-1.423 3.197-1.28-.57zM80.44 12.852l1.133.823-2.058 2.831-1.132-.823zM25.481 88.494l1.133.822-2.057 2.832-1.133-.823zM84.43 15.986l1.04.937-2.342 2.6-1.04-.936zM21.87 85.469l1.04.936-2.341 2.601-1.04-.937zM88.072 19.522l.937 1.04-2.6 2.343-.937-1.04zM18.593 82.088l.937 1.04-2.601 2.342-.937-1.04zM91.328 23.425l.823 1.133-2.832 2.057-.823-1.132zM15.684 78.385l.823 1.132-2.832 2.058-.822-1.133zM96.52 32.128l.57 1.279-3.198 1.423-.57-1.278zM11.109 70.161l.569 1.279-3.197 1.423-.57-1.279zM98.407 36.85l.433 1.332-3.33 1.081-.432-1.331zM9.483 65.74l.432 1.33-3.329 1.082-.432-1.331zM99.795 41.726l.291 1.37-3.423.727-.29-1.37zM8.34 61.17l.292 1.37-3.424.728-.29-1.37zM100.66 46.73l.146 1.393-3.48.366-.147-1.392zM7.674 56.506l.146 1.392-3.48.366-.147-1.392zM100.811 56.873l-.146 1.392-3.48-.365.145-1.393zM7.821 47.101l-.146 1.392-3.48-.365.145-1.393zM100.09 61.895l-.291 1.369-3.424-.728.291-1.369zM8.631 42.46l-.291 1.37-3.423-.728.29-1.37zM98.84 66.827l-.432 1.331-3.329-1.081.433-1.332zM9.918 37.93l-.433 1.331-3.329-1.082.433-1.331zM97.098 71.585l-.569 1.28-3.197-1.424.57-1.28zM11.677 33.558l-.57 1.28-3.197-1.424.57-1.279zM92.149 80.439l-.823 1.133-2.832-2.058.823-1.132zM16.506 25.482l-.823 1.133-2.831-2.057.823-1.133zM89.017 84.431l-.937 1.04-2.6-2.341.936-1.04zM19.528 21.869l-.936 1.04-2.601-2.342.936-1.04zM85.48 88.076l-1.041.936-2.342-2.6 1.04-.937zM22.91 18.59l-1.04.937-2.341-2.601 1.04-.937zM81.574 91.328l-1.133.823-2.057-2.831 1.132-.823zM26.617 15.684l-1.133.823-2.057-2.832 1.132-.823zM72.873 96.524l-1.279.57-1.423-3.198 1.278-.57zM34.838 11.105l-1.279.57-1.423-3.198 1.279-.57zM68.151 98.405l-1.331.432-1.082-3.329 1.332-.432zM39.259 9.485l-1.332.433-1.081-3.33 1.331-.432zM63.272 99.799l-1.369.29-.728-3.422 1.37-.291zM43.83 8.337l-1.369.291-.727-3.423 1.37-.291zM58.27 100.662l-1.393.146-.366-3.48 1.393-.147zM48.494 7.672l-1.392.147-.366-3.481 1.392-.147z"/></g></g></svg>\n';
12
+ const clockFaceSVG = '<svg focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 105 105"><g class="face"><circle fill="var(--sbb-clock-background-color)" cx="52.5" cy="52.5" r="52.5"/><path d="M50.75 4h3.5v12h-3.5zM50.75 89h3.5v12h-3.5zM75.233 9.623l3.03 1.75-6 10.392-3.03-1.75zM32.734 83.233l3.03 1.75-6 10.392-3.03-1.75zM93.628 26.732l1.75 3.031-10.392 6-1.75-3.03zM20.017 69.234l1.75 3.031-10.392 6-1.75-3.03zM101 50.75v3.5H89v-3.5zM16 50.75v3.5H4v-3.5zM95.379 75.232l-1.75 3.031-10.392-6 1.75-3.03zM21.766 32.734l-1.75 3.031-10.392-6 1.75-3.03zM78.267 93.63l-3.03 1.75-6-10.393 3.03-1.75zM35.766 20.015l-3.03 1.75-6-10.392 3.03-1.75z"/><g><path d="M56.873 4.19l1.392.147-.366 3.48-1.392-.145zM47.101 97.177l1.393.146-.366 3.481-1.392-.146zM61.896 4.914l1.37.29-.728 3.424-1.37-.29zM42.458 96.366l1.37.29-.728 3.424-1.37-.291zM66.825 6.157l1.332.432-1.082 3.33-1.331-.434zM37.931 95.085l1.332.432-1.082 3.33-1.331-.433zM71.584 7.906l1.28.569-1.424 3.197-1.28-.57zM33.56 93.32l1.278.569-1.423 3.197-1.28-.57zM80.44 12.852l1.133.823-2.058 2.831-1.132-.823zM25.481 88.494l1.133.822-2.057 2.832-1.133-.823zM84.43 15.986l1.04.937-2.342 2.6-1.04-.936zM21.87 85.469l1.04.936-2.341 2.601-1.04-.937zM88.072 19.522l.937 1.04-2.6 2.343-.937-1.04zM18.593 82.088l.937 1.04-2.601 2.342-.937-1.04zM91.328 23.425l.823 1.133-2.832 2.057-.823-1.132zM15.684 78.385l.823 1.132-2.832 2.058-.822-1.133zM96.52 32.128l.57 1.279-3.198 1.423-.57-1.278zM11.109 70.161l.569 1.279-3.197 1.423-.57-1.279zM98.407 36.85l.433 1.332-3.33 1.081-.432-1.331zM9.483 65.74l.432 1.33-3.329 1.082-.432-1.331zM99.795 41.726l.291 1.37-3.423.727-.29-1.37zM8.34 61.17l.292 1.37-3.424.728-.29-1.37zM100.66 46.73l.146 1.393-3.48.366-.147-1.392zM7.674 56.506l.146 1.392-3.48.366-.147-1.392zM100.811 56.873l-.146 1.392-3.48-.365.145-1.393zM7.821 47.101l-.146 1.392-3.48-.365.145-1.393zM100.09 61.895l-.291 1.369-3.424-.728.291-1.369zM8.631 42.46l-.291 1.37-3.423-.728.29-1.37zM98.84 66.827l-.432 1.331-3.329-1.081.433-1.332zM9.918 37.93l-.433 1.331-3.329-1.082.433-1.331zM97.098 71.585l-.569 1.28-3.197-1.424.57-1.28zM11.677 33.558l-.57 1.28-3.197-1.424.57-1.279zM92.149 80.439l-.823 1.133-2.832-2.058.823-1.132zM16.506 25.482l-.823 1.133-2.831-2.057.823-1.133zM89.017 84.431l-.937 1.04-2.6-2.341.936-1.04zM19.528 21.869l-.936 1.04-2.601-2.342.936-1.04zM85.48 88.076l-1.041.936-2.342-2.6 1.04-.937zM22.91 18.59l-1.04.937-2.341-2.601 1.04-.937zM81.574 91.328l-1.133.823-2.057-2.831 1.132-.823zM26.617 15.684l-1.133.823-2.057-2.832 1.132-.823zM72.873 96.524l-1.279.57-1.423-3.198 1.278-.57zM34.838 11.105l-1.279.57-1.423-3.198 1.279-.57zM68.151 98.405l-1.331.432-1.082-3.329 1.332-.432zM39.259 9.485l-1.332.433-1.081-3.33 1.331-.432zM63.272 99.799l-1.369.29-.728-3.422 1.37-.291zM43.83 8.337l-1.369.291-.727-3.423 1.37-.291zM58.27 100.662l-1.393.146-.366-3.48 1.393-.147zM48.494 7.672l-1.392.147-.366-3.481 1.392-.147z"/></g></g></svg>\n';
13
13
  const clockHandleHoursSVG = '<svg focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 105 105"><path id="mod_clock_svg_hours" d="M55.7 64.5h-6.4l.6-44h5.2z"/></svg>\n';
14
14
  const clockHandleMinutesSVG = '<svg focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 105 105"><path d="M55.1,64.5h-5.2l0.8-58h3.6L55.1,64.5z"/></svg>\n';
15
15
  const clockHandleSecondsSVG = '<svg focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 105 105"><path d="M57.8,21.3c0-2.9-2.4-5.2-5.2-5.2s-5.3,2.3-5.3,5.2c0,2.7,2,4.8,4.5,5.2V69h1.5V26.5C55.8,26.2,57.8,24,57.8,21.3z"/></svg>\n';
@@ -25,7 +25,9 @@ const style = css`*,
25
25
  --sbb-clock-hours-animation-duration: 0s;
26
26
  --sbb-clock-seconds-animation-duration: 0s;
27
27
  --sbb-clock-animation-play-state: paused;
28
- --sbb-clock-seconds-hand-color: var(--sbb-color-red);
28
+ --sbb-clock-seconds-hand-color: var(--sbb-color-brand);
29
+ --sbb-clock-face-color: var(--sbb-color-1);
30
+ --sbb-clock-background-color: var(--sbb-background-color-1);
29
31
  display: block;
30
32
  }
31
33
 
@@ -50,6 +52,12 @@ const style = css`*,
50
52
  backface-visibility: hidden;
51
53
  }
52
54
 
55
+ .sbb-clock__hand-hours,
56
+ .sbb-clock__hand-minutes,
57
+ .sbb-clock__face {
58
+ fill: var(--sbb-clock-face-color);
59
+ }
60
+
53
61
  .sbb-clock__hand-minutes {
54
62
  transition: transform var(--sbb-disable-animation-duration, 0.2s) cubic-bezier(0.4, 2.08, 0.55, 0.44);
55
63
  }
@@ -377,4 +385,4 @@ let SbbClockElement = (() => {
377
385
  export {
378
386
  SbbClockElement
379
387
  };
380
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2suY29tcG9uZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19mYWNlLnN2Zz9yYXciLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19ob3Vycy5zdmc/cmF3IiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Nsb2NrL2Fzc2V0cy9zYmJfY2xvY2tfbWludXRlcy5zdmc/cmF3IiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Nsb2NrL2Fzc2V0cy9zYmJfY2xvY2tfc2Vjb25kcy5zdmc/cmF3IiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Nsb2NrL2Nsb2NrLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZm9jdXNhYmxlPVxcXCJmYWxzZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTA1IDEwNVxcXCI+PGcgY2xhc3M9XFxcImZhY2VcXFwiPjxjaXJjbGUgZmlsbD1cXFwiI0ZGRlxcXCIgY3g9XFxcIjUyLjVcXFwiIGN5PVxcXCI1Mi41XFxcIiByPVxcXCI1Mi41XFxcIi8+PHBhdGggZD1cXFwiTTUwLjc1IDRoMy41djEyaC0zLjV6TTUwLjc1IDg5aDMuNXYxMmgtMy41ek03NS4yMzMgOS42MjNsMy4wMyAxLjc1LTYgMTAuMzkyLTMuMDMtMS43NXpNMzIuNzM0IDgzLjIzM2wzLjAzIDEuNzUtNiAxMC4zOTItMy4wMy0xLjc1ek05My42MjggMjYuNzMybDEuNzUgMy4wMzEtMTAuMzkyIDYtMS43NS0zLjAzek0yMC4wMTcgNjkuMjM0bDEuNzUgMy4wMzEtMTAuMzkyIDYtMS43NS0zLjAzek0xMDEgNTAuNzV2My41SDg5di0zLjV6TTE2IDUwLjc1djMuNUg0di0zLjV6TTk1LjM3OSA3NS4yMzJsLTEuNzUgMy4wMzEtMTAuMzkyLTYgMS43NS0zLjAzek0yMS43NjYgMzIuNzM0bC0xLjc1IDMuMDMxLTEwLjM5Mi02IDEuNzUtMy4wM3pNNzguMjY3IDkzLjYzbC0zLjAzIDEuNzUtNi0xMC4zOTMgMy4wMy0xLjc1ek0zNS43NjYgMjAuMDE1bC0zLjAzIDEuNzUtNi0xMC4zOTIgMy4wMy0xLjc1elxcXCIvPjxnPjxwYXRoIGQ9XFxcIk01Ni44NzMgNC4xOWwxLjM5Mi4xNDctLjM2NiAzLjQ4LTEuMzkyLS4xNDV6TTQ3LjEwMSA5Ny4xNzdsMS4zOTMuMTQ2LS4zNjYgMy40ODEtMS4zOTItLjE0NnpNNjEuODk2IDQuOTE0bDEuMzcuMjktLjcyOCAzLjQyNC0xLjM3LS4yOXpNNDIuNDU4IDk2LjM2NmwxLjM3LjI5LS43MjggMy40MjQtMS4zNy0uMjkxek02Ni44MjUgNi4xNTdsMS4zMzIuNDMyLTEuMDgyIDMuMzMtMS4zMzEtLjQzNHpNMzcuOTMxIDk1LjA4NWwxLjMzMi40MzItMS4wODIgMy4zMy0xLjMzMS0uNDMzek03MS41ODQgNy45MDZsMS4yOC41NjktMS40MjQgMy4xOTctMS4yOC0uNTd6TTMzLjU2IDkzLjMybDEuMjc4LjU2OS0xLjQyMyAzLjE5Ny0xLjI4LS41N3pNODAuNDQgMTIuODUybDEuMTMzLjgyMy0yLjA1OCAyLjgzMS0xLjEzMi0uODIzek0yNS40ODEgODguNDk0bDEuMTMzLjgyMi0yLjA1NyAyLjgzMi0xLjEzMy0uODIzek04NC40MyAxNS45ODZsMS4wNC45MzctMi4zNDIgMi42LTEuMDQtLjkzNnpNMjEuODcgODUuNDY5bDEuMDQuOTM2LTIuMzQxIDIuNjAxLTEuMDQtLjkzN3pNODguMDcyIDE5LjUyMmwuOTM3IDEuMDQtMi42IDIuMzQzLS45MzctMS4wNHpNMTguNTkzIDgyLjA4OGwuOTM3IDEuMDQtMi42MDEgMi4zNDItLjkzNy0xLjA0ek05MS4zMjggMjMuNDI1bC44MjMgMS4xMzMtMi44MzIgMi4wNTctLjgyMy0xLjEzMnpNMTUuNjg0IDc4LjM4NWwuODIzIDEuMTMyLTIuODMyIDIuMDU4LS44MjItMS4xMzN6TTk2LjUyIDMyLjEyOGwuNTcgMS4yNzktMy4xOTggMS40MjMtLjU3LTEuMjc4ek0xMS4xMDkgNzAuMTYxbC41NjkgMS4yNzktMy4xOTcgMS40MjMtLjU3LTEuMjc5ek05OC40MDcgMzYuODVsLjQzMyAxLjMzMi0zLjMzIDEuMDgxLS40MzItMS4zMzF6TTkuNDgzIDY1Ljc0bC40MzIgMS4zMy0zLjMyOSAxLjA4Mi0uNDMyLTEuMzMxek05OS43OTUgNDEuNzI2bC4yOTEgMS4zNy0zLjQyMy43MjctLjI5LTEuMzd6TTguMzQgNjEuMTdsLjI5MiAxLjM3LTMuNDI0LjcyOC0uMjktMS4zN3pNMTAwLjY2IDQ2LjczbC4xNDYgMS4zOTMtMy40OC4zNjYtLjE0Ny0xLjM5MnpNNy42NzQgNTYuNTA2bC4xNDYgMS4zOTItMy40OC4zNjYtLjE0Ny0xLjM5MnpNMTAwLjgxMSA1Ni44NzNsLS4xNDYgMS4zOTItMy40OC0uMzY1LjE0NS0xLjM5M3pNNy44MjEgNDcuMTAxbC0uMTQ2IDEuMzkyLTMuNDgtLjM2NS4xNDUtMS4zOTN6TTEwMC4wOSA2MS44OTVsLS4yOTEgMS4zNjktMy40MjQtLjcyOC4yOTEtMS4zNjl6TTguNjMxIDQyLjQ2bC0uMjkxIDEuMzctMy40MjMtLjcyOC4yOS0xLjM3ek05OC44NCA2Ni44MjdsLS40MzIgMS4zMzEtMy4zMjktMS4wODEuNDMzLTEuMzMyek05LjkxOCAzNy45M2wtLjQzMyAxLjMzMS0zLjMyOS0xLjA4Mi40MzMtMS4zMzF6TTk3LjA5OCA3MS41ODVsLS41NjkgMS4yOC0zLjE5Ny0xLjQyNC41Ny0xLjI4ek0xMS42NzcgMzMuNTU4bC0uNTcgMS4yOC0zLjE5Ny0xLjQyNC41Ny0xLjI3OXpNOTIuMTQ5IDgwLjQzOWwtLjgyMyAxLjEzMy0yLjgzMi0yLjA1OC44MjMtMS4xMzJ6TTE2LjUwNiAyNS40ODJsLS44MjMgMS4xMzMtMi44MzEtMi4wNTcuODIzLTEuMTMzek04OS4wMTcgODQuNDMxbC0uOTM3IDEuMDQtMi42LTIuMzQxLjkzNi0xLjA0ek0xOS41MjggMjEuODY5bC0uOTM2IDEuMDQtMi42MDEtMi4zNDIuOTM2LTEuMDR6TTg1LjQ4IDg4LjA3NmwtMS4wNDEuOTM2LTIuMzQyLTIuNiAxLjA0LS45Mzd6TTIyLjkxIDE4LjU5bC0xLjA0LjkzNy0yLjM0MS0yLjYwMSAxLjA0LS45Mzd6TTgxLjU3NCA5MS4zMjhsLTEuMTMzLjgyMy0yLjA1Ny0yLjgzMSAxLjEzMi0uODIzek0yNi42MTcgMTUuNjg0bC0xLjEzMy44MjMtMi4wNTctMi44MzIgMS4xMzItLjgyM3pNNzIuODczIDk2LjUyNGwtMS4yNzkuNTctMS40MjMtMy4xOTggMS4yNzgtLjU3ek0zNC44MzggMTEuMTA1bC0xLjI3OS41Ny0xLjQyMy0zLjE5OCAxLjI3OS0uNTd6TTY4LjE1MSA5OC40MDVsLTEuMzMxLjQzMi0xLjA4Mi0zLjMyOSAxLjMzMi0uNDMyek0zOS4yNTkgOS40ODVsLTEuMzMyLjQzMy0xLjA4MS0zLjMzIDEuMzMxLS40MzJ6TTYzLjI3MiA5OS43OTlsLTEuMzY5LjI5LS43MjgtMy40MjIgMS4zNy0uMjkxek00My44MyA4LjMzN2wtMS4zNjkuMjkxLS43MjctMy40MjMgMS4zNy0uMjkxek01OC4yNyAxMDAuNjYybC0xLjM5My4xNDYtLjM2Ni0zLjQ4IDEuMzkzLS4xNDd6TTQ4LjQ5NCA3LjY3MmwtMS4zOTIuMTQ3LS4zNjYtMy40ODEgMS4zOTItLjE0N3pcXFwiLz48L2c+PC9nPjwvc3ZnPlxcblwiIiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZvY3VzYWJsZT1cXFwiZmFsc2VcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEwNSAxMDVcXFwiPjxwYXRoIGlkPVxcXCJtb2RfY2xvY2tfc3ZnX2hvdXJzXFxcIiBkPVxcXCJNNTUuNyA2NC41aC02LjRsLjYtNDRoNS4yelxcXCIvPjwvc3ZnPlxcblwiIiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZvY3VzYWJsZT1cXFwiZmFsc2VcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEwNSAxMDVcXFwiPjxwYXRoIGQ9XFxcIk01NS4xLDY0LjVoLTUuMmwwLjgtNThoMy42TDU1LjEsNjQuNXpcXFwiLz48L3N2Zz5cXG5cIiIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmb2N1c2FibGU9XFxcImZhbHNlXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDUgMTA1XFxcIj48cGF0aCBkPVxcXCJNNTcuOCwyMS4zYzAtMi45LTIuNC01LjItNS4yLTUuMnMtNS4zLDIuMy01LjMsNS4yYzAsMi43LDIsNC44LDQuNSw1LjJWNjloMS41VjI2LjVDNTUuOCwyNi4yLDU3LjgsMjQsNTcuOCwyMS4zelxcXCIvPjwvc3ZnPlxcblwiIiwiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIGlzU2VydmVyLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHR5cGUgeyBTYmJUaW1lIH0gZnJvbSAnLi4vY29yZS9pbnRlcmZhY2VzLmpzJztcblxuaW1wb3J0IGNsb2NrRmFjZVNWRyBmcm9tICcuL2Fzc2V0cy9zYmJfY2xvY2tfZmFjZS5zdmc/cmF3JztcbmltcG9ydCBjbG9ja0hhbmRsZUhvdXJzU1ZHIGZyb20gJy4vYXNzZXRzL3NiYl9jbG9ja19ob3Vycy5zdmc/cmF3JztcbmltcG9ydCBjbG9ja0hhbmRsZU1pbnV0ZXNTVkcgZnJvbSAnLi9hc3NldHMvc2JiX2Nsb2NrX21pbnV0ZXMuc3ZnP3Jhdyc7XG5pbXBvcnQgY2xvY2tIYW5kbGVTZWNvbmRzU1ZHIGZyb20gJy4vYXNzZXRzL3NiYl9jbG9ja19zZWNvbmRzLnN2Zz9yYXcnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vY2xvY2suc2Nzcz9saXQmaW5saW5lJztcblxuLyoqIE51bWJlciBvZiBob3VycyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbmNvbnN0IFRPVEFMX0hPVVJTX09OX0NMT0NLX0ZBQ0UgPSAxMjtcblxuLyoqIE51bWJlciBvZiBtaW51dGVzIG9uIHRoZSBjbG9jayBmYWNlLiAqL1xuY29uc3QgVE9UQUxfTUlOVVRFU19PTl9DTE9DS19GQUNFID0gNjA7XG5cbi8qKiBOdW1iZXIgb2Ygc2Vjb25kcyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbmNvbnN0IFRPVEFMX1NFQ09ORFNfT05fQ0xPQ0tfRkFDRSA9IDYwO1xuXG4vKiogVGltZW91dCBmb3IgdGhlIGNsb2NrIHN0YXJ0LiAqL1xuY29uc3QgSU5JVElBTF9USU1FT1VUX0RVUkFUSU9OID0gNTA7XG5cbi8qKiBBbmdsZSBpbiBhIHNpbmdsZSByb3RhdGlvbi4gKi9cbmNvbnN0IEZVTExfQU5HTEUgPSAzNjA7XG5cbi8qKiBBbmdsZSBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBob3VyczogMzYwLzEyLCBtZWFucyBhIGZ1bGwgcm90YXRpb24gLyBudW1iZXIgb2YgaG91cnMgaW4gYSByb3RhdGlvbi4gKi9cbmNvbnN0IEhPVVJTX0FOR0xFID0gMzA7XG5cbi8qKiBBbmdsZSBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBtaW51dGVzOiAzNjAvNjAsIG1lYW5zIGEgZnVsbCByb3RhdGlvbiAvIG51bWJlciBvZiBtaW51dGVzIGluIG9uZSBob3VyLiAqL1xuY29uc3QgTUlOVVRFU19BTkdMRSA9IDY7XG5cbi8qKiBBbmdsZSBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBzZWNvbmRzIGZvciBTQkIgY2xvY2sgY3VzdG9tIGJlaGF2aW9yLiAqL1xuY29uc3QgU0JCX1NFQ09ORFNfQU5HTEUgPSAzNjAgLyA1OC41O1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgaW4gYSBtaW51dGUuICovXG5jb25zdCBTRUNPTkRTX0lOX0FfTUlOVVRFID0gNjA7XG5cbi8qKiBOdW1iZXIgb2Ygc2Vjb25kcyBpbiBhbiBob3VyLiAqL1xuY29uc3QgU0VDT05EU19JTl9BTl9IT1VSID0gMzYwMDtcblxuLyoqIEFzIGEgZmFsbGJhY2sgbWVhc3VyZSwgcmVzZXQgdGhlIGNsb2NrIGV2ZXJ5IGhhbGYgYW4gaG91ciAqL1xuY29uc3QgUkVTRVRfSU5URVJWQUwgPSBTRUNPTkRTX0lOX0FOX0hPVVIgLyAyO1xuXG5jb25zdCBBRERfRVZFTlRfTElTVEVORVJfT1BUSU9OUzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gIG9uY2U6IHRydWUsXG4gIHBhc3NpdmU6IHRydWUsXG59O1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGFuIGFuYWxvZyBjbG9jayB3aXRoIHRoZSBjbGFzc2ljIFNCQiBmYWNlLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItY2xvY2snKVxuY2xhc3MgU2JiQ2xvY2tFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgYSBzcGVjaWZpYyB0aW1lIHdoaWNoIHRoZSBjbG9jayBzaG91bGQgc2hvdyBzdGF0aWNhbGx5LlxuICAgKiBAcGFyYW0gdmFsdWUgSEg6TU06c3NcbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBub3c6IFNiYlRpbWUgfCBudWxsID0gbnVsbDtcblxuICAvKiogV2hldGhlciB0aGUgY2xvY2sgaXMgdGlja2luZyBvciBub3QgKi9cbiAgcHJpdmF0ZSBfc3RhdGU6ICdydW5uaW5nJyB8ICdwYXVzZWQnID0gJ3BhdXNlZCc7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgaG91ciBoYW5kLiAqL1xuICBwcml2YXRlIF9jbG9ja0hhbmRIb3VycyE6IEhUTUxFbGVtZW50O1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIG1pbnV0ZSBoYW5kLiAqL1xuICBwcml2YXRlIF9jbG9ja0hhbmRNaW51dGVzITogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2Vjb25kIGhhbmQuICovXG4gIHByaXZhdGUgX2Nsb2NrSGFuZFNlY29uZHMhOiBIVE1MRWxlbWVudDtcblxuICAvKiogSG91cnMgdmFsdWUgZm9yIHRoZSBjdXJyZW50IGRhdGUuICovXG4gIHByaXZhdGUgX2hvdXJzITogbnVtYmVyO1xuXG4gIC8qKiBNaW51dGVzIHZhbHVlIGZvciB0aGUgY3VycmVudCBkYXRlLiAqL1xuICBwcml2YXRlIF9taW51dGVzITogbnVtYmVyO1xuXG4gIC8qKiBTZWNvbmRzIHZhbHVlIGZvciB0aGUgY3VycmVudCBkYXRlLiAqL1xuICBwcml2YXRlIF9zZWNvbmRzITogbnVtYmVyO1xuXG4gIC8qKiBNb3ZlIHRoZSBtaW51dGVzIGhhbmQgZXZlcnkgbWludXRlLiAqL1xuICBwcml2YXRlIF9oYW5kTW92ZW1lbnQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD47XG5cbiAgcHJpdmF0ZSBfcmVzZXRJbnRlcnZhbElkPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgaG91cnMgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfbW92ZUhvdXJzSGFuZEZuID0gKCk6IHZvaWQgPT4gdGhpcy5fbW92ZUhvdXJzSGFuZCgpO1xuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgbWludXRlcyBoYW5kLiAqL1xuICBwcml2YXRlIF9tb3ZlTWludXRlc0hhbmRGbiA9ICgpOiB2b2lkID0+IHRoaXMuX21vdmVNaW51dGVzSGFuZCgpO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgdGhpcy5fcmVzZXRJbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5fcmVzZXRDbG9jaygpLCBSRVNFVF9JTlRFUlZBTCAqIDEwMDApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIWlzU2VydmVyICYmIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbm93JykpIHtcbiAgICAgIHRoaXMuX3N0YXJ0T3JDb25maWd1cmVDbG9jaygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCB0aGlzLl9oYW5kbGVQYWdlVmlzaWJpbGl0eUNoYW5nZSwgZmFsc2UpO1xuICAgICAgdGhpcy5fc3RhcnRPckNvbmZpZ3VyZUNsb2NrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX3Jlc2V0SW50ZXJ2YWxJZCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVQYWdlVmlzaWJpbGl0eUNoYW5nZSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAodGhpcy5ub3cpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAnaGlkZGVuJykge1xuICAgICAgYXdhaXQgdGhpcy5fc3RvcENsb2NrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuX3N0YXJ0Q2xvY2soKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBhc3luYyBfc3RhcnRPckNvbmZpZ3VyZUNsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm5vdykge1xuICAgICAgYXdhaXQgdGhpcy5fc3RvcENsb2NrKCk7XG4gICAgICB0aGlzLl9yZXNldFNlY29uZHNIYW5kQW5pbWF0aW9uKCk7XG4gICAgICB0aGlzLl9zZXRIYW5kc1N0YXJ0aW5nUG9zaXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5fc3RhcnRDbG9jaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTdGFydHMgdGhlIGNsb2NrIGJ5IGRlZmluaW5nIHRoZSBoYW5kcyBzdGFydGluZyBwb3NpdGlvbiB0aGVuIHN0YXJ0aW5nIHRoZSBhbmltYXRpb25zLiAqL1xuICBwcml2YXRlIGFzeW5jIF9zdGFydENsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2FuaW1hdGlvbmVuZCcsXG4gICAgICB0aGlzLl9tb3ZlSG91cnNIYW5kRm4sXG4gICAgICBBRERfRVZFTlRfTElTVEVORVJfT1BUSU9OUyxcbiAgICApO1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnYW5pbWF0aW9uZW5kJyxcbiAgICAgIHRoaXMuX21vdmVNaW51dGVzSGFuZEZuLFxuICAgICAgQUREX0VWRU5UX0xJU1RFTkVSX09QVElPTlMsXG4gICAgKTtcblxuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3NldEhhbmRzU3RhcnRpbmdQb3NpdGlvbigpO1xuXG4gICAgICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi1jbG9jay1hbmltYXRpb24tcGxheS1zdGF0ZScsICdydW5uaW5nJyk7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gJ3J1bm5pbmcnO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9LCBJTklUSUFMX1RJTUVPVVRfRFVSQVRJT04pLFxuICAgICk7XG4gIH1cblxuICAvKiogU3RvcHMgdGhlIGNsb2NrIGJ5IHJlbW92aW5nIGFsbCB0aGUgYW5pbWF0aW9ucy4gKi9cbiAgcHJpdmF0ZSBhc3luYyBfc3RvcENsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faGFuZE1vdmVtZW50KTtcblxuICAgIHRoaXMuX3JlbW92ZVNlY29uZHNBbmltYXRpb25TdHlsZXMoKTtcbiAgICB0aGlzLl9yZW1vdmVIb3Vyc0FuaW1hdGlvblN0eWxlcygpO1xuXG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVIb3Vyc0hhbmRGbik7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZU1pbnV0ZXNIYW5kRm4pO1xuXG4gICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcz8uY2xhc3NMaXN0LmFkZCgnc2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMtLW5vLXRyYW5zaXRpb24nKTtcblxuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi1jbG9jay1hbmltYXRpb24tcGxheS1zdGF0ZScsICdwYXVzZWQnKTtcbiAgICB0aGlzLl9zdGF0ZSA9ICdwYXVzZWQnO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzIGEgZmFsbGJhY2sgbWVhc3VyZSB0byBwcmV2ZW50IGRlLXN5bmMsIHJlc2V0IHRoZSBjbG9jayB0byB0aGUgc3lzdGVtIHRpbWUuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9yZXNldENsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9zdGF0ZSAhPT0gJ3J1bm5pbmcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuX3N0b3BDbG9jaygpO1xuICAgIGF3YWl0IHRoaXMuX3N0YXJ0Q2xvY2soKTtcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIGZvciB0aGUgdGhyZWUgaGFuZHMgb24gdGhlIGNsb2NrIGZhY2UuICovXG4gIHByaXZhdGUgX3NldEhhbmRzU3RhcnRpbmdQb3NpdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hc3NpZ25DdXJyZW50VGltZSgpO1xuICAgIGNvbnN0IHJlbWFpbmluZ1NlY29uZHMgPSBUT1RBTF9TRUNPTkRTX09OX0NMT0NLX0ZBQ0UgLSB0aGlzLl9zZWNvbmRzO1xuICAgIGNvbnN0IHJlbWFpbmluZ01pbnV0ZXMgPSBUT1RBTF9NSU5VVEVTX09OX0NMT0NLX0ZBQ0UgLSB0aGlzLl9taW51dGVzO1xuICAgIGNvbnN0IHJlbWFpbmluZ0hvdXJzID0gVE9UQUxfSE9VUlNfT05fQ0xPQ0tfRkFDRSAtIHRoaXMuX2hvdXJzO1xuXG4gICAgbGV0IGhvdXJzQW5pbWF0aW9uRHVyYXRpb24gPSAwO1xuICAgIGxldCBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzID0gMDtcblxuICAgIGlmIChyZW1haW5pbmdTZWNvbmRzID4gMCkge1xuICAgICAgaG91cnNBbmltYXRpb25EdXJhdGlvbiArPSByZW1haW5pbmdTZWNvbmRzO1xuICAgICAgaGFzUmVtYWluaW5nTWludXRlc09yU2Vjb25kcyA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHJlbWFpbmluZ01pbnV0ZXMgPiAwKSB7XG4gICAgICBob3Vyc0FuaW1hdGlvbkR1cmF0aW9uICs9XG4gICAgICAgIChyZW1haW5pbmdNaW51dGVzIC0gaGFzUmVtYWluaW5nTWludXRlc09yU2Vjb25kcykgKiBTRUNPTkRTX0lOX0FfTUlOVVRFO1xuICAgICAgaGFzUmVtYWluaW5nTWludXRlc09yU2Vjb25kcyA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHJlbWFpbmluZ0hvdXJzID4gMCkge1xuICAgICAgaG91cnNBbmltYXRpb25EdXJhdGlvbiArPVxuICAgICAgICAocmVtYWluaW5nSG91cnMgLSBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzKSAqIFNFQ09ORFNfSU5fQU5fSE9VUjtcbiAgICB9XG5cbiAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eShcbiAgICAgICctLXNiYi1jbG9jay1ob3Vycy1hbmltYXRpb24tc3RhcnQtYW5nbGUnLFxuICAgICAgYCR7TWF0aC5jZWlsKHRoaXMuX2hvdXJzICogSE9VUlNfQU5HTEUgKyB0aGlzLl9taW51dGVzIC8gMil9ZGVnYCxcbiAgICApO1xuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi1jbG9jay1ob3Vycy1hbmltYXRpb24tZHVyYXRpb24nLCBgJHtob3Vyc0FuaW1hdGlvbkR1cmF0aW9ufXNgKTtcbiAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eShcbiAgICAgICctLXNiYi1jbG9jay1zZWNvbmRzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScsXG4gICAgICBgJHtNYXRoLmNlaWwodGhpcy5fc2Vjb25kcyAqIFNCQl9TRUNPTkRTX0FOR0xFKX1kZWdgLFxuICAgICk7XG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLWNsb2NrLXNlY29uZHMtYW5pbWF0aW9uLWR1cmF0aW9uJywgYCR7cmVtYWluaW5nU2Vjb25kc31zYCk7XG5cbiAgICB0aGlzLl9zZXRNaW51dGVzSGFuZCgpO1xuXG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8uY2xhc3NMaXN0LmFkZCgnc2JiLWNsb2NrX19oYW5kLXNlY29uZHMtLWluaXRpYWwtbWludXRlJyk7XG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LmNsYXNzTGlzdC5hZGQoJ3NiYi1jbG9ja19faGFuZC1ob3Vycy0taW5pdGlhbC1ob3VyJyk7XG5cbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1pbml0aWFsaXplZCcsIHRydWUpO1xuICB9XG5cbiAgLyoqIEdpdmVuIHRoZSBjdXJyZW50IGRhdGUsIGNhbGN1bGF0ZXMgdGhlIGhoL21tL3NzIHZhbHVlcyBhbmQgdGhlIGhoL21tL3NzIGxlZnQgdG8gdGhlIG5leHQgbWlkbmlnaHQuICovXG4gIHByaXZhdGUgX2Fzc2lnbkN1cnJlbnRUaW1lKCk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGUgPSB0aGlzLm5vdyA/IG51bGwgOiBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IFtob3VycywgbWludXRlcywgc2Vjb25kc10gPSBkYXRlXG4gICAgICA/IFtkYXRlLmdldEhvdXJzKCksIGRhdGUuZ2V0TWludXRlcygpLCBkYXRlLmdldFNlY29uZHMoKV1cbiAgICAgIDogdGhpcy5ub3chLnNwbGl0KCc6JykubWFwKChwKSA9PiArcCk7XG5cbiAgICB0aGlzLl9ob3VycyA9IGhvdXJzICUgMTI7XG4gICAgdGhpcy5fbWludXRlcyA9IG1pbnV0ZXM7XG4gICAgdGhpcy5fc2Vjb25kcyA9IHNlY29uZHM7XG4gIH1cblxuICAvKiogU2V0IHRoZSBzdGFydGluZyBwb3NpdGlvbiBmb3IgdGhlIG1pbnV0ZXMgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfc2V0TWludXRlc0hhbmQoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcz8uc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAndHJhbnNmb3JtJyxcbiAgICAgIGByb3RhdGVaKCR7TWF0aC5jZWlsKHRoaXMuX21pbnV0ZXMgKiBNSU5VVEVTX0FOR0xFKX1kZWcpYCxcbiAgICApO1xuICB9XG5cbiAgLyoqIE1vdmUgdGhlIGhvdXJzIGhhbmQgdG8gdGhlIG5leHQgdmFsdWUuICovXG4gIHByaXZhdGUgX21vdmVIb3Vyc0hhbmQoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVtb3ZlSG91cnNBbmltYXRpb25TdHlsZXMoKTtcblxuICAgIGxldCBob3Vyc0FuZ2xlID0gTWF0aC5jZWlsKHRoaXMuX2hvdXJzICogSE9VUlNfQU5HTEUgKyB0aGlzLl9taW51dGVzIC8gMik7XG5cbiAgICBpZiAoaG91cnNBbmdsZSA+PSBGVUxMX0FOR0xFKSB7XG4gICAgICBob3Vyc0FuZ2xlIC09IEZVTExfQU5HTEU7XG4gICAgfVxuXG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LnN0eWxlLnNldFByb3BlcnR5KCd0cmFuc2Zvcm0nLCBgcm90YXRlWigke2hvdXJzQW5nbGV9ZGVnKWApO1xuICB9XG5cbiAgLyoqIE1vdmUgdGhlIG1pbnV0ZXMgaGFuZCB0byB0aGUgbmV4dCB2YWx1ZS4gKi9cbiAgcHJpdmF0ZSBfbW92ZU1pbnV0ZXNIYW5kKCk6IHZvaWQge1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVNaW51dGVzSGFuZEZuKTtcblxuICAgIHRoaXMuX3JlbW92ZVNlY29uZHNBbmltYXRpb25TdHlsZXMoKTtcblxuICAgIHRoaXMuX2FkZE1pbnV0ZXNBbmRTZXRIYW5kcygpO1xuXG4gICAgdGhpcy5faGFuZE1vdmVtZW50ID0gc2V0SW50ZXJ2YWwoXG4gICAgICAoKSA9PiB0aGlzLl9hZGRNaW51dGVzQW5kU2V0SGFuZHMoKSxcbiAgICAgIFRPVEFMX1NFQ09ORFNfT05fQ0xPQ0tfRkFDRSAqIDEwMDAsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZE1pbnV0ZXNBbmRTZXRIYW5kcygpOiB2b2lkIHtcbiAgICB0aGlzLl9taW51dGVzKys7XG4gICAgdGhpcy5fc2V0TWludXRlc0hhbmQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmluZyBhbmltYXRpb24gYnkgb3ZlcnJpZGluZyB3aXRoIGVtcHR5IHN0cmluZyxcbiAgICogdGhlbiB0cmlnZ2VyaW5nIGEgcmVmbG93IGFuZCByZSBhZGQgb3JpZ2luYWwgYW5pbWF0aW9uIGJ5IHJlbW92aW5nIG92ZXJyaWRlLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfcmVzZXRTZWNvbmRzSGFuZEFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2Nsb2NrSGFuZFNlY29uZHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcy5zdHlsZS5hbmltYXRpb24gPSAnJztcbiAgICAvLyBIYWNrIHRvIHRyaWdnZXIgcmVmbG93XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtZXhwcmVzc2lvbnNcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzLm9mZnNldEhlaWdodDtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdhbmltYXRpb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGRvY3VtZW50Py5yZW1vdmVFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgdGhpcy5faGFuZGxlUGFnZVZpc2liaWxpdHlDaGFuZ2UpO1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLl9tb3ZlSG91cnNIYW5kRm4pO1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVNaW51dGVzSGFuZEZuKTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX2hhbmRNb3ZlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVIb3Vyc0FuaW1hdGlvblN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8uY2xhc3NMaXN0LnJlbW92ZSgnc2JiLWNsb2NrX19oYW5kLWhvdXJzLS1pbml0aWFsLWhvdXInKTtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNiYi1jbG9jay1ob3Vycy1hbmltYXRpb24tc3RhcnQtYW5nbGUnKTtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNiYi1jbG9jay1ob3Vycy1hbmltYXRpb24tZHVyYXRpb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZVNlY29uZHNBbmltYXRpb25TdHlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8uY2xhc3NMaXN0LnJlbW92ZSgnc2JiLWNsb2NrX19oYW5kLXNlY29uZHMtLWluaXRpYWwtbWludXRlJyk7XG4gICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcz8uY2xhc3NMaXN0LnJlbW92ZSgnc2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMtLW5vLXRyYW5zaXRpb24nKTtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNiYi1jbG9jay1zZWNvbmRzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLXNlY29uZHMtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItY2xvY2tcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItY2xvY2tfX2ZhY2VcIiAuaW5uZXJIVE1MPSR7Y2xvY2tGYWNlU1ZHfT48L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJzYmItY2xvY2tfX2hhbmQtaG91cnNcIlxuICAgICAgICAgIC5pbm5lckhUTUw9JHtjbG9ja0hhbmRsZUhvdXJzU1ZHfVxuICAgICAgICAgICR7cmVmKChlPzogRWxlbWVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2xvY2tIYW5kSG91cnMgPSBlIGFzIEhUTUxTcGFuRWxlbWVudDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNiYi1jbG9ja19faGFuZC1taW51dGVzIHNiYi1jbG9ja19faGFuZC1taW51dGVzLS1uby10cmFuc2l0aW9uXCJcbiAgICAgICAgICAuaW5uZXJIVE1MPSR7Y2xvY2tIYW5kbGVNaW51dGVzU1ZHfVxuICAgICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Nsb2NrSGFuZE1pbnV0ZXMgPSBlbCBhcyBIVE1MU3BhbkVsZW1lbnQ7XG4gICAgICAgICAgfSl9XG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJzYmItY2xvY2tfX2hhbmQtc2Vjb25kc1wiXG4gICAgICAgICAgLmlubmVySFRNTD0ke2Nsb2NrSGFuZGxlU2Vjb25kc1NWR31cbiAgICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzID0gZWwgYXMgSFRNTFNwYW5FbGVtZW50O1xuICAgICAgICAgIH0pfVxuICAgICAgICA+PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWNsb2NrJzogU2JiQ2xvY2tFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxNQUFBLGVBQWU7QUNBZixNQUFBLHNCQUFl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
388
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2suY29tcG9uZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19mYWNlLnN2Zz9yYXciLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19ob3Vycy5zdmc/cmF3IiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Nsb2NrL2Fzc2V0cy9zYmJfY2xvY2tfbWludXRlcy5zdmc/cmF3IiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Nsb2NrL2Fzc2V0cy9zYmJfY2xvY2tfc2Vjb25kcy5zdmc/cmF3IiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Nsb2NrL2Nsb2NrLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZm9jdXNhYmxlPVxcXCJmYWxzZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTA1IDEwNVxcXCI+PGcgY2xhc3M9XFxcImZhY2VcXFwiPjxjaXJjbGUgZmlsbD1cXFwidmFyKC0tc2JiLWNsb2NrLWJhY2tncm91bmQtY29sb3IpXFxcIiBjeD1cXFwiNTIuNVxcXCIgY3k9XFxcIjUyLjVcXFwiIHI9XFxcIjUyLjVcXFwiLz48cGF0aCBkPVxcXCJNNTAuNzUgNGgzLjV2MTJoLTMuNXpNNTAuNzUgODloMy41djEyaC0zLjV6TTc1LjIzMyA5LjYyM2wzLjAzIDEuNzUtNiAxMC4zOTItMy4wMy0xLjc1ek0zMi43MzQgODMuMjMzbDMuMDMgMS43NS02IDEwLjM5Mi0zLjAzLTEuNzV6TTkzLjYyOCAyNi43MzJsMS43NSAzLjAzMS0xMC4zOTIgNi0xLjc1LTMuMDN6TTIwLjAxNyA2OS4yMzRsMS43NSAzLjAzMS0xMC4zOTIgNi0xLjc1LTMuMDN6TTEwMSA1MC43NXYzLjVIODl2LTMuNXpNMTYgNTAuNzV2My41SDR2LTMuNXpNOTUuMzc5IDc1LjIzMmwtMS43NSAzLjAzMS0xMC4zOTItNiAxLjc1LTMuMDN6TTIxLjc2NiAzMi43MzRsLTEuNzUgMy4wMzEtMTAuMzkyLTYgMS43NS0zLjAzek03OC4yNjcgOTMuNjNsLTMuMDMgMS43NS02LTEwLjM5MyAzLjAzLTEuNzV6TTM1Ljc2NiAyMC4wMTVsLTMuMDMgMS43NS02LTEwLjM5MiAzLjAzLTEuNzV6XFxcIi8+PGc+PHBhdGggZD1cXFwiTTU2Ljg3MyA0LjE5bDEuMzkyLjE0Ny0uMzY2IDMuNDgtMS4zOTItLjE0NXpNNDcuMTAxIDk3LjE3N2wxLjM5My4xNDYtLjM2NiAzLjQ4MS0xLjM5Mi0uMTQ2ek02MS44OTYgNC45MTRsMS4zNy4yOS0uNzI4IDMuNDI0LTEuMzctLjI5ek00Mi40NTggOTYuMzY2bDEuMzcuMjktLjcyOCAzLjQyNC0xLjM3LS4yOTF6TTY2LjgyNSA2LjE1N2wxLjMzMi40MzItMS4wODIgMy4zMy0xLjMzMS0uNDM0ek0zNy45MzEgOTUuMDg1bDEuMzMyLjQzMi0xLjA4MiAzLjMzLTEuMzMxLS40MzN6TTcxLjU4NCA3LjkwNmwxLjI4LjU2OS0xLjQyNCAzLjE5Ny0xLjI4LS41N3pNMzMuNTYgOTMuMzJsMS4yNzguNTY5LTEuNDIzIDMuMTk3LTEuMjgtLjU3ek04MC40NCAxMi44NTJsMS4xMzMuODIzLTIuMDU4IDIuODMxLTEuMTMyLS44MjN6TTI1LjQ4MSA4OC40OTRsMS4xMzMuODIyLTIuMDU3IDIuODMyLTEuMTMzLS44MjN6TTg0LjQzIDE1Ljk4NmwxLjA0LjkzNy0yLjM0MiAyLjYtMS4wNC0uOTM2ek0yMS44NyA4NS40NjlsMS4wNC45MzYtMi4zNDEgMi42MDEtMS4wNC0uOTM3ek04OC4wNzIgMTkuNTIybC45MzcgMS4wNC0yLjYgMi4zNDMtLjkzNy0xLjA0ek0xOC41OTMgODIuMDg4bC45MzcgMS4wNC0yLjYwMSAyLjM0Mi0uOTM3LTEuMDR6TTkxLjMyOCAyMy40MjVsLjgyMyAxLjEzMy0yLjgzMiAyLjA1Ny0uODIzLTEuMTMyek0xNS42ODQgNzguMzg1bC44MjMgMS4xMzItMi44MzIgMi4wNTgtLjgyMi0xLjEzM3pNOTYuNTIgMzIuMTI4bC41NyAxLjI3OS0zLjE5OCAxLjQyMy0uNTctMS4yNzh6TTExLjEwOSA3MC4xNjFsLjU2OSAxLjI3OS0zLjE5NyAxLjQyMy0uNTctMS4yNzl6TTk4LjQwNyAzNi44NWwuNDMzIDEuMzMyLTMuMzMgMS4wODEtLjQzMi0xLjMzMXpNOS40ODMgNjUuNzRsLjQzMiAxLjMzLTMuMzI5IDEuMDgyLS40MzItMS4zMzF6TTk5Ljc5NSA0MS43MjZsLjI5MSAxLjM3LTMuNDIzLjcyNy0uMjktMS4zN3pNOC4zNCA2MS4xN2wuMjkyIDEuMzctMy40MjQuNzI4LS4yOS0xLjM3ek0xMDAuNjYgNDYuNzNsLjE0NiAxLjM5My0zLjQ4LjM2Ni0uMTQ3LTEuMzkyek03LjY3NCA1Ni41MDZsLjE0NiAxLjM5Mi0zLjQ4LjM2Ni0uMTQ3LTEuMzkyek0xMDAuODExIDU2Ljg3M2wtLjE0NiAxLjM5Mi0zLjQ4LS4zNjUuMTQ1LTEuMzkzek03LjgyMSA0Ny4xMDFsLS4xNDYgMS4zOTItMy40OC0uMzY1LjE0NS0xLjM5M3pNMTAwLjA5IDYxLjg5NWwtLjI5MSAxLjM2OS0zLjQyNC0uNzI4LjI5MS0xLjM2OXpNOC42MzEgNDIuNDZsLS4yOTEgMS4zNy0zLjQyMy0uNzI4LjI5LTEuMzd6TTk4Ljg0IDY2LjgyN2wtLjQzMiAxLjMzMS0zLjMyOS0xLjA4MS40MzMtMS4zMzJ6TTkuOTE4IDM3LjkzbC0uNDMzIDEuMzMxLTMuMzI5LTEuMDgyLjQzMy0xLjMzMXpNOTcuMDk4IDcxLjU4NWwtLjU2OSAxLjI4LTMuMTk3LTEuNDI0LjU3LTEuMjh6TTExLjY3NyAzMy41NThsLS41NyAxLjI4LTMuMTk3LTEuNDI0LjU3LTEuMjc5ek05Mi4xNDkgODAuNDM5bC0uODIzIDEuMTMzLTIuODMyLTIuMDU4LjgyMy0xLjEzMnpNMTYuNTA2IDI1LjQ4MmwtLjgyMyAxLjEzMy0yLjgzMS0yLjA1Ny44MjMtMS4xMzN6TTg5LjAxNyA4NC40MzFsLS45MzcgMS4wNC0yLjYtMi4zNDEuOTM2LTEuMDR6TTE5LjUyOCAyMS44NjlsLS45MzYgMS4wNC0yLjYwMS0yLjM0Mi45MzYtMS4wNHpNODUuNDggODguMDc2bC0xLjA0MS45MzYtMi4zNDItMi42IDEuMDQtLjkzN3pNMjIuOTEgMTguNTlsLTEuMDQuOTM3LTIuMzQxLTIuNjAxIDEuMDQtLjkzN3pNODEuNTc0IDkxLjMyOGwtMS4xMzMuODIzLTIuMDU3LTIuODMxIDEuMTMyLS44MjN6TTI2LjYxNyAxNS42ODRsLTEuMTMzLjgyMy0yLjA1Ny0yLjgzMiAxLjEzMi0uODIzek03Mi44NzMgOTYuNTI0bC0xLjI3OS41Ny0xLjQyMy0zLjE5OCAxLjI3OC0uNTd6TTM0LjgzOCAxMS4xMDVsLTEuMjc5LjU3LTEuNDIzLTMuMTk4IDEuMjc5LS41N3pNNjguMTUxIDk4LjQwNWwtMS4zMzEuNDMyLTEuMDgyLTMuMzI5IDEuMzMyLS40MzJ6TTM5LjI1OSA5LjQ4NWwtMS4zMzIuNDMzLTEuMDgxLTMuMzMgMS4zMzEtLjQzMnpNNjMuMjcyIDk5Ljc5OWwtMS4zNjkuMjktLjcyOC0zLjQyMiAxLjM3LS4yOTF6TTQzLjgzIDguMzM3bC0xLjM2OS4yOTEtLjcyNy0zLjQyMyAxLjM3LS4yOTF6TTU4LjI3IDEwMC42NjJsLTEuMzkzLjE0Ni0uMzY2LTMuNDggMS4zOTMtLjE0N3pNNDguNDk0IDcuNjcybC0xLjM5Mi4xNDctLjM2Ni0zLjQ4MSAxLjM5Mi0uMTQ3elxcXCIvPjwvZz48L2c+PC9zdmc+XFxuXCIiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZm9jdXNhYmxlPVxcXCJmYWxzZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTA1IDEwNVxcXCI+PHBhdGggaWQ9XFxcIm1vZF9jbG9ja19zdmdfaG91cnNcXFwiIGQ9XFxcIk01NS43IDY0LjVoLTYuNGwuNi00NGg1LjJ6XFxcIi8+PC9zdmc+XFxuXCIiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZm9jdXNhYmxlPVxcXCJmYWxzZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTA1IDEwNVxcXCI+PHBhdGggZD1cXFwiTTU1LjEsNjQuNWgtNS4ybDAuOC01OGgzLjZMNTUuMSw2NC41elxcXCIvPjwvc3ZnPlxcblwiIiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZvY3VzYWJsZT1cXFwiZmFsc2VcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEwNSAxMDVcXFwiPjxwYXRoIGQ9XFxcIk01Ny44LDIxLjNjMC0yLjktMi40LTUuMi01LjItNS4ycy01LjMsMi4zLTUuMyw1LjJjMCwyLjcsMiw0LjgsNC41LDUuMlY2OWgxLjVWMjYuNUM1NS44LDI2LjIsNTcuOCwyNCw1Ny44LDIxLjN6XFxcIi8+PC9zdmc+XFxuXCIiLCJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgaXNTZXJ2ZXIsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYlRpbWUgfSBmcm9tICcuLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuXG5pbXBvcnQgY2xvY2tGYWNlU1ZHIGZyb20gJy4vYXNzZXRzL3NiYl9jbG9ja19mYWNlLnN2Zz9yYXcnO1xuaW1wb3J0IGNsb2NrSGFuZGxlSG91cnNTVkcgZnJvbSAnLi9hc3NldHMvc2JiX2Nsb2NrX2hvdXJzLnN2Zz9yYXcnO1xuaW1wb3J0IGNsb2NrSGFuZGxlTWludXRlc1NWRyBmcm9tICcuL2Fzc2V0cy9zYmJfY2xvY2tfbWludXRlcy5zdmc/cmF3JztcbmltcG9ydCBjbG9ja0hhbmRsZVNlY29uZHNTVkcgZnJvbSAnLi9hc3NldHMvc2JiX2Nsb2NrX3NlY29uZHMuc3ZnP3Jhdyc7XG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9jbG9jay5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKiogTnVtYmVyIG9mIGhvdXJzIG9uIHRoZSBjbG9jayBmYWNlLiAqL1xuY29uc3QgVE9UQUxfSE9VUlNfT05fQ0xPQ0tfRkFDRSA9IDEyO1xuXG4vKiogTnVtYmVyIG9mIG1pbnV0ZXMgb24gdGhlIGNsb2NrIGZhY2UuICovXG5jb25zdCBUT1RBTF9NSU5VVEVTX09OX0NMT0NLX0ZBQ0UgPSA2MDtcblxuLyoqIE51bWJlciBvZiBzZWNvbmRzIG9uIHRoZSBjbG9jayBmYWNlLiAqL1xuY29uc3QgVE9UQUxfU0VDT05EU19PTl9DTE9DS19GQUNFID0gNjA7XG5cbi8qKiBUaW1lb3V0IGZvciB0aGUgY2xvY2sgc3RhcnQuICovXG5jb25zdCBJTklUSUFMX1RJTUVPVVRfRFVSQVRJT04gPSA1MDtcblxuLyoqIEFuZ2xlIGluIGEgc2luZ2xlIHJvdGF0aW9uLiAqL1xuY29uc3QgRlVMTF9BTkdMRSA9IDM2MDtcblxuLyoqIEFuZ2xlIGJldHdlZW4gdHdvIGNvbnNlY3V0aXZlIGhvdXJzOiAzNjAvMTIsIG1lYW5zIGEgZnVsbCByb3RhdGlvbiAvIG51bWJlciBvZiBob3VycyBpbiBhIHJvdGF0aW9uLiAqL1xuY29uc3QgSE9VUlNfQU5HTEUgPSAzMDtcblxuLyoqIEFuZ2xlIGJldHdlZW4gdHdvIGNvbnNlY3V0aXZlIG1pbnV0ZXM6IDM2MC82MCwgbWVhbnMgYSBmdWxsIHJvdGF0aW9uIC8gbnVtYmVyIG9mIG1pbnV0ZXMgaW4gb25lIGhvdXIuICovXG5jb25zdCBNSU5VVEVTX0FOR0xFID0gNjtcblxuLyoqIEFuZ2xlIGJldHdlZW4gdHdvIGNvbnNlY3V0aXZlIHNlY29uZHMgZm9yIFNCQiBjbG9jayBjdXN0b20gYmVoYXZpb3IuICovXG5jb25zdCBTQkJfU0VDT05EU19BTkdMRSA9IDM2MCAvIDU4LjU7XG5cbi8qKiBOdW1iZXIgb2Ygc2Vjb25kcyBpbiBhIG1pbnV0ZS4gKi9cbmNvbnN0IFNFQ09ORFNfSU5fQV9NSU5VVEUgPSA2MDtcblxuLyoqIE51bWJlciBvZiBzZWNvbmRzIGluIGFuIGhvdXIuICovXG5jb25zdCBTRUNPTkRTX0lOX0FOX0hPVVIgPSAzNjAwO1xuXG4vKiogQXMgYSBmYWxsYmFjayBtZWFzdXJlLCByZXNldCB0aGUgY2xvY2sgZXZlcnkgaGFsZiBhbiBob3VyICovXG5jb25zdCBSRVNFVF9JTlRFUlZBTCA9IFNFQ09ORFNfSU5fQU5fSE9VUiAvIDI7XG5cbmNvbnN0IEFERF9FVkVOVF9MSVNURU5FUl9PUFRJT05TOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyA9IHtcbiAgb25jZTogdHJ1ZSxcbiAgcGFzc2l2ZTogdHJ1ZSxcbn07XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gYW5hbG9nIGNsb2NrIHdpdGggdGhlIGNsYXNzaWMgU0JCIGZhY2UuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1jbG9jaycpXG5jbGFzcyBTYmJDbG9ja0VsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqXG4gICAqIERlZmluZSBhIHNwZWNpZmljIHRpbWUgd2hpY2ggdGhlIGNsb2NrIHNob3VsZCBzaG93IHN0YXRpY2FsbHkuXG4gICAqIEBwYXJhbSB2YWx1ZSBISDpNTTpzc1xuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIG5vdzogU2JiVGltZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjbG9jayBpcyB0aWNraW5nIG9yIG5vdCAqL1xuICBwcml2YXRlIF9zdGF0ZTogJ3J1bm5pbmcnIHwgJ3BhdXNlZCcgPSAncGF1c2VkJztcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBob3VyIGhhbmQuICovXG4gIHByaXZhdGUgX2Nsb2NrSGFuZEhvdXJzITogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgbWludXRlIGhhbmQuICovXG4gIHByaXZhdGUgX2Nsb2NrSGFuZE1pbnV0ZXMhOiBIVE1MRWxlbWVudDtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzZWNvbmQgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfY2xvY2tIYW5kU2Vjb25kcyE6IEhUTUxFbGVtZW50O1xuXG4gIC8qKiBIb3VycyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgZGF0ZS4gKi9cbiAgcHJpdmF0ZSBfaG91cnMhOiBudW1iZXI7XG5cbiAgLyoqIE1pbnV0ZXMgdmFsdWUgZm9yIHRoZSBjdXJyZW50IGRhdGUuICovXG4gIHByaXZhdGUgX21pbnV0ZXMhOiBudW1iZXI7XG5cbiAgLyoqIFNlY29uZHMgdmFsdWUgZm9yIHRoZSBjdXJyZW50IGRhdGUuICovXG4gIHByaXZhdGUgX3NlY29uZHMhOiBudW1iZXI7XG5cbiAgLyoqIE1vdmUgdGhlIG1pbnV0ZXMgaGFuZCBldmVyeSBtaW51dGUuICovXG4gIHByaXZhdGUgX2hhbmRNb3ZlbWVudD86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcblxuICBwcml2YXRlIF9yZXNldEludGVydmFsSWQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD47XG5cbiAgLyoqIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBob3VycyBoYW5kLiAqL1xuICBwcml2YXRlIF9tb3ZlSG91cnNIYW5kRm4gPSAoKTogdm9pZCA9PiB0aGlzLl9tb3ZlSG91cnNIYW5kKCk7XG5cbiAgLyoqIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBtaW51dGVzIGhhbmQuICovXG4gIHByaXZhdGUgX21vdmVNaW51dGVzSGFuZEZuID0gKCk6IHZvaWQgPT4gdGhpcy5fbW92ZU1pbnV0ZXNIYW5kKCk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICB0aGlzLl9yZXNldEludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLl9yZXNldENsb2NrKCksIFJFU0VUX0lOVEVSVkFMICogMTAwMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICghaXNTZXJ2ZXIgJiYgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdub3cnKSkge1xuICAgICAgdGhpcy5fc3RhcnRPckNvbmZpZ3VyZUNsb2NrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIHRoaXMuX2hhbmRsZVBhZ2VWaXNpYmlsaXR5Q2hhbmdlLCBmYWxzZSk7XG4gICAgICB0aGlzLl9zdGFydE9yQ29uZmlndXJlQ2xvY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9yZW1vdmVFdmVudExpc3RlbmVycygpO1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fcmVzZXRJbnRlcnZhbElkKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVBhZ2VWaXNpYmlsaXR5Q2hhbmdlID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGlmICh0aGlzLm5vdykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICdoaWRkZW4nKSB7XG4gICAgICBhd2FpdCB0aGlzLl9zdG9wQ2xvY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5fc3RhcnRDbG9jaygpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIGFzeW5jIF9zdGFydE9yQ29uZmlndXJlQ2xvY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMubm93KSB7XG4gICAgICBhd2FpdCB0aGlzLl9zdG9wQ2xvY2soKTtcbiAgICAgIHRoaXMuX3Jlc2V0U2Vjb25kc0hhbmRBbmltYXRpb24oKTtcbiAgICAgIHRoaXMuX3NldEhhbmRzU3RhcnRpbmdQb3NpdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLl9zdGFydENsb2NrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFN0YXJ0cyB0aGUgY2xvY2sgYnkgZGVmaW5pbmcgdGhlIGhhbmRzIHN0YXJ0aW5nIHBvc2l0aW9uIHRoZW4gc3RhcnRpbmcgdGhlIGFuaW1hdGlvbnMuICovXG4gIHByaXZhdGUgYXN5bmMgX3N0YXJ0Q2xvY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnYW5pbWF0aW9uZW5kJyxcbiAgICAgIHRoaXMuX21vdmVIb3Vyc0hhbmRGbixcbiAgICAgIEFERF9FVkVOVF9MSVNURU5FUl9PUFRJT05TLFxuICAgICk7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdhbmltYXRpb25lbmQnLFxuICAgICAgdGhpcy5fbW92ZU1pbnV0ZXNIYW5kRm4sXG4gICAgICBBRERfRVZFTlRfTElTVEVORVJfT1BUSU9OUyxcbiAgICApO1xuXG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5fc2V0SGFuZHNTdGFydGluZ1Bvc2l0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLWNsb2NrLWFuaW1hdGlvbi1wbGF5LXN0YXRlJywgJ3J1bm5pbmcnKTtcbiAgICAgICAgdGhpcy5fc3RhdGUgPSAncnVubmluZyc7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0sIElOSVRJQUxfVElNRU9VVF9EVVJBVElPTiksXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBTdG9wcyB0aGUgY2xvY2sgYnkgcmVtb3ZpbmcgYWxsIHRoZSBhbmltYXRpb25zLiAqL1xuICBwcml2YXRlIGFzeW5jIF9zdG9wQ2xvY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9oYW5kTW92ZW1lbnQpO1xuXG4gICAgdGhpcy5fcmVtb3ZlU2Vjb25kc0FuaW1hdGlvblN0eWxlcygpO1xuICAgIHRoaXMuX3JlbW92ZUhvdXJzQW5pbWF0aW9uU3R5bGVzKCk7XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZUhvdXJzSGFuZEZuKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLl9tb3ZlTWludXRlc0hhbmRGbik7XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRNaW51dGVzPy5jbGFzc0xpc3QuYWRkKCdzYmItY2xvY2tfX2hhbmQtbWludXRlcy0tbm8tdHJhbnNpdGlvbicpO1xuXG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLWNsb2NrLWFuaW1hdGlvbi1wbGF5LXN0YXRlJywgJ3BhdXNlZCcpO1xuICAgIHRoaXMuX3N0YXRlID0gJ3BhdXNlZCc7XG4gIH1cblxuICAvKipcbiAgICogQXMgYSBmYWxsYmFjayBtZWFzdXJlIHRvIHByZXZlbnQgZGUtc3luYywgcmVzZXQgdGhlIGNsb2NrIHRvIHRoZSBzeXN0ZW0gdGltZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgX3Jlc2V0Q2xvY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlICE9PSAncnVubmluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5fc3RvcENsb2NrKCk7XG4gICAgYXdhaXQgdGhpcy5fc3RhcnRDbG9jaygpO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gZm9yIHRoZSB0aHJlZSBoYW5kcyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbiAgcHJpdmF0ZSBfc2V0SGFuZHNTdGFydGluZ1Bvc2l0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2Fzc2lnbkN1cnJlbnRUaW1lKCk7XG4gICAgY29uc3QgcmVtYWluaW5nU2Vjb25kcyA9IFRPVEFMX1NFQ09ORFNfT05fQ0xPQ0tfRkFDRSAtIHRoaXMuX3NlY29uZHM7XG4gICAgY29uc3QgcmVtYWluaW5nTWludXRlcyA9IFRPVEFMX01JTlVURVNfT05fQ0xPQ0tfRkFDRSAtIHRoaXMuX21pbnV0ZXM7XG4gICAgY29uc3QgcmVtYWluaW5nSG91cnMgPSBUT1RBTF9IT1VSU19PTl9DTE9DS19GQUNFIC0gdGhpcy5faG91cnM7XG5cbiAgICBsZXQgaG91cnNBbmltYXRpb25EdXJhdGlvbiA9IDA7XG4gICAgbGV0IGhhc1JlbWFpbmluZ01pbnV0ZXNPclNlY29uZHMgPSAwO1xuXG4gICAgaWYgKHJlbWFpbmluZ1NlY29uZHMgPiAwKSB7XG4gICAgICBob3Vyc0FuaW1hdGlvbkR1cmF0aW9uICs9IHJlbWFpbmluZ1NlY29uZHM7XG4gICAgICBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzID0gMTtcbiAgICB9XG5cbiAgICBpZiAocmVtYWluaW5nTWludXRlcyA+IDApIHtcbiAgICAgIGhvdXJzQW5pbWF0aW9uRHVyYXRpb24gKz1cbiAgICAgICAgKHJlbWFpbmluZ01pbnV0ZXMgLSBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzKSAqIFNFQ09ORFNfSU5fQV9NSU5VVEU7XG4gICAgICBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzID0gMTtcbiAgICB9XG5cbiAgICBpZiAocmVtYWluaW5nSG91cnMgPiAwKSB7XG4gICAgICBob3Vyc0FuaW1hdGlvbkR1cmF0aW9uICs9XG4gICAgICAgIChyZW1haW5pbmdIb3VycyAtIGhhc1JlbWFpbmluZ01pbnV0ZXNPclNlY29uZHMpICogU0VDT05EU19JTl9BTl9IT1VSO1xuICAgIH1cblxuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KFxuICAgICAgJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScsXG4gICAgICBgJHtNYXRoLmNlaWwodGhpcy5faG91cnMgKiBIT1VSU19BTkdMRSArIHRoaXMuX21pbnV0ZXMgLyAyKX1kZWdgLFxuICAgICk7XG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1kdXJhdGlvbicsIGAke2hvdXJzQW5pbWF0aW9uRHVyYXRpb259c2ApO1xuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KFxuICAgICAgJy0tc2JiLWNsb2NrLXNlY29uZHMtYW5pbWF0aW9uLXN0YXJ0LWFuZ2xlJyxcbiAgICAgIGAke01hdGguY2VpbCh0aGlzLl9zZWNvbmRzICogU0JCX1NFQ09ORFNfQU5HTEUpfWRlZ2AsXG4gICAgKTtcbiAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eSgnLS1zYmItY2xvY2stc2Vjb25kcy1hbmltYXRpb24tZHVyYXRpb24nLCBgJHtyZW1haW5pbmdTZWNvbmRzfXNgKTtcblxuICAgIHRoaXMuX3NldE1pbnV0ZXNIYW5kKCk7XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5jbGFzc0xpc3QuYWRkKCdzYmItY2xvY2tfX2hhbmQtc2Vjb25kcy0taW5pdGlhbC1taW51dGUnKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8uY2xhc3NMaXN0LmFkZCgnc2JiLWNsb2NrX19oYW5kLWhvdXJzLS1pbml0aWFsLWhvdXInKTtcblxuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWluaXRpYWxpemVkJywgdHJ1ZSk7XG4gIH1cblxuICAvKiogR2l2ZW4gdGhlIGN1cnJlbnQgZGF0ZSwgY2FsY3VsYXRlcyB0aGUgaGgvbW0vc3MgdmFsdWVzIGFuZCB0aGUgaGgvbW0vc3MgbGVmdCB0byB0aGUgbmV4dCBtaWRuaWdodC4gKi9cbiAgcHJpdmF0ZSBfYXNzaWduQ3VycmVudFRpbWUoKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMubm93ID8gbnVsbCA6IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzXSA9IGRhdGVcbiAgICAgID8gW2RhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCksIGRhdGUuZ2V0U2Vjb25kcygpXVxuICAgICAgOiB0aGlzLm5vdyEuc3BsaXQoJzonKS5tYXAoKHApID0+ICtwKTtcblxuICAgIHRoaXMuX2hvdXJzID0gaG91cnMgJSAxMjtcbiAgICB0aGlzLl9taW51dGVzID0gbWludXRlcztcbiAgICB0aGlzLl9zZWNvbmRzID0gc2Vjb25kcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIGZvciB0aGUgbWludXRlcyBoYW5kLiAqL1xuICBwcml2YXRlIF9zZXRNaW51dGVzSGFuZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9ja0hhbmRNaW51dGVzPy5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgYHJvdGF0ZVooJHtNYXRoLmNlaWwodGhpcy5fbWludXRlcyAqIE1JTlVURVNfQU5HTEUpfWRlZylgLFxuICAgICk7XG4gIH1cblxuICAvKiogTW92ZSB0aGUgaG91cnMgaGFuZCB0byB0aGUgbmV4dCB2YWx1ZS4gKi9cbiAgcHJpdmF0ZSBfbW92ZUhvdXJzSGFuZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZW1vdmVIb3Vyc0FuaW1hdGlvblN0eWxlcygpO1xuXG4gICAgbGV0IGhvdXJzQW5nbGUgPSBNYXRoLmNlaWwodGhpcy5faG91cnMgKiBIT1VSU19BTkdMRSArIHRoaXMuX21pbnV0ZXMgLyAyKTtcblxuICAgIGlmIChob3Vyc0FuZ2xlID49IEZVTExfQU5HTEUpIHtcbiAgICAgIGhvdXJzQW5nbGUgLT0gRlVMTF9BTkdMRTtcbiAgICB9XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8uc3R5bGUuc2V0UHJvcGVydHkoJ3RyYW5zZm9ybScsIGByb3RhdGVaKCR7aG91cnNBbmdsZX1kZWcpYCk7XG4gIH1cblxuICAvKiogTW92ZSB0aGUgbWludXRlcyBoYW5kIHRvIHRoZSBuZXh0IHZhbHVlLiAqL1xuICBwcml2YXRlIF9tb3ZlTWludXRlc0hhbmQoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZU1pbnV0ZXNIYW5kRm4pO1xuXG4gICAgdGhpcy5fcmVtb3ZlU2Vjb25kc0FuaW1hdGlvblN0eWxlcygpO1xuXG4gICAgdGhpcy5fYWRkTWludXRlc0FuZFNldEhhbmRzKCk7XG5cbiAgICB0aGlzLl9oYW5kTW92ZW1lbnQgPSBzZXRJbnRlcnZhbChcbiAgICAgICgpID0+IHRoaXMuX2FkZE1pbnV0ZXNBbmRTZXRIYW5kcygpLFxuICAgICAgVE9UQUxfU0VDT05EU19PTl9DTE9DS19GQUNFICogMTAwMCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkTWludXRlc0FuZFNldEhhbmRzKCk6IHZvaWQge1xuICAgIHRoaXMuX21pbnV0ZXMrKztcbiAgICB0aGlzLl9zZXRNaW51dGVzSGFuZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92aW5nIGFuaW1hdGlvbiBieSBvdmVycmlkaW5nIHdpdGggZW1wdHkgc3RyaW5nLFxuICAgKiB0aGVuIHRyaWdnZXJpbmcgYSByZWZsb3cgYW5kIHJlIGFkZCBvcmlnaW5hbCBhbmltYXRpb24gYnkgcmVtb3Zpbmcgb3ZlcnJpZGUuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9yZXNldFNlY29uZHNIYW5kQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY2xvY2tIYW5kU2Vjb25kcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzLnN0eWxlLmFuaW1hdGlvbiA9ICcnO1xuICAgIC8vIEhhY2sgdG8gdHJpZ2dlciByZWZsb3dcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC1leHByZXNzaW9uc1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMub2Zmc2V0SGVpZ2h0O1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2FuaW1hdGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgZG9jdW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCB0aGlzLl9oYW5kbGVQYWdlVmlzaWJpbGl0eUNoYW5nZSk7XG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVIb3Vyc0hhbmRGbik7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZU1pbnV0ZXNIYW5kRm4pO1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faGFuZE1vdmVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZUhvdXJzQW5pbWF0aW9uU3R5bGVzKCk6IHZvaWQge1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5jbGFzc0xpc3QucmVtb3ZlKCdzYmItY2xvY2tfX2hhbmQtaG91cnMtLWluaXRpYWwtaG91cicpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlU2Vjb25kc0FuaW1hdGlvblN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5jbGFzc0xpc3QucmVtb3ZlKCdzYmItY2xvY2tfX2hhbmQtc2Vjb25kcy0taW5pdGlhbC1taW51dGUnKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRNaW51dGVzPy5jbGFzc0xpc3QucmVtb3ZlKCdzYmItY2xvY2tfX2hhbmQtbWludXRlcy0tbm8tdHJhbnNpdGlvbicpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLXNlY29uZHMtYW5pbWF0aW9uLXN0YXJ0LWFuZ2xlJyk7XG4gICAgdGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYmItY2xvY2stc2Vjb25kcy1hbmltYXRpb24tZHVyYXRpb24nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1jbG9ja1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1jbG9ja19fZmFjZVwiIC5pbm5lckhUTUw9JHtjbG9ja0ZhY2VTVkd9Pjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNiYi1jbG9ja19faGFuZC1ob3Vyc1wiXG4gICAgICAgICAgLmlubmVySFRNTD0ke2Nsb2NrSGFuZGxlSG91cnNTVkd9XG4gICAgICAgICAgJHtyZWYoKGU/OiBFbGVtZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jbG9ja0hhbmRIb3VycyA9IGUgYXMgSFRNTFNwYW5FbGVtZW50O1xuICAgICAgICAgIH0pfVxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwic2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMgc2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMtLW5vLXRyYW5zaXRpb25cIlxuICAgICAgICAgIC5pbm5lckhUTUw9JHtjbG9ja0hhbmRsZU1pbnV0ZXNTVkd9XG4gICAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcyA9IGVsIGFzIEhUTUxTcGFuRWxlbWVudDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNiYi1jbG9ja19faGFuZC1zZWNvbmRzXCJcbiAgICAgICAgICAuaW5uZXJIVE1MPSR7Y2xvY2tIYW5kbGVTZWNvbmRzU1ZHfVxuICAgICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMgPSBlbCBhcyBIVE1MU3BhbkVsZW1lbnQ7XG4gICAgICAgICAgfSl9XG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItY2xvY2snOiBTYmJDbG9ja0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztB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
@@ -22,26 +22,26 @@ const style = css`@charset "UTF-8";
22
22
  display: block;
23
23
  }
24
24
 
25
- :host([color=white]) {
26
- --sbb-container-background-color: var(--sbb-color-white);
25
+ :host(:is(:not([color]), [color=white])) {
26
+ --sbb-container-background-color: var(--sbb-background-color-1);
27
27
  }
28
28
 
29
29
  :host([color=milk]) {
30
- --sbb-container-background-color: var(--sbb-color-milk);
30
+ --sbb-container-background-color: var(--sbb-background-color-3);
31
31
  }
32
32
 
33
33
  :host([color=midnight]),
34
34
  :host([color=charcoal]) {
35
35
  --sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);
36
- --sbb-container-color: var(--sbb-color-white);
36
+ --sbb-container-color: var(--sbb-color-1-negative);
37
37
  }
38
38
 
39
39
  :host([color=midnight]) {
40
- --sbb-container-background-color: var(--sbb-color-midnight);
40
+ --sbb-container-background-color: var(--sbb-background-color-1-negative);
41
41
  }
42
42
 
43
43
  :host([color=charcoal]) {
44
- --sbb-container-background-color: var(--sbb-color-charcoal);
44
+ --sbb-container-background-color: var(--sbb-background-color-2-negative);
45
45
  }
46
46
 
47
47
  :host([data-slot-names~=image]) {
@@ -52,7 +52,7 @@ const style = css`*,
52
52
  :host([data-sticking]:not([data-state=unsticky])) {
53
53
  --sbb-sticky-bar-sticky-background-color: var(
54
54
  --sbb-container-background-color,
55
- var(--sbb-color-white)
55
+ var(--sbb-background-color-1)
56
56
  );
57
57
  --_sbb-sticky-bar-intersector-background-color: var(--sbb-sticky-bar-sticky-background-color);
58
58
  --_sbb-sticky-bar-background-animation-duration: var(--sbb-sticky-bar-fade-in-animation-duration);
@@ -64,19 +64,19 @@ const style = css`*,
64
64
  }
65
65
 
66
66
  :host([data-sticking]:not([data-state=unsticky])[color=white]) {
67
- --sbb-sticky-bar-sticky-background-color: var(--sbb-color-white);
67
+ --sbb-sticky-bar-sticky-background-color: var(--sbb-background-color-1);
68
68
  }
69
69
 
70
70
  :host([data-sticking]:not([data-state=unsticky])[color=milk]) {
71
- --sbb-sticky-bar-sticky-background-color: var(--sbb-color-milk);
71
+ --sbb-sticky-bar-sticky-background-color: var(--sbb-background-color-3);
72
72
  }
73
73
 
74
74
  :host([data-sticking]:not([data-state=unsticky])[color=midnight]) {
75
- --sbb-sticky-bar-sticky-background-color: var(--sbb-color-midnight);
75
+ --sbb-sticky-bar-sticky-background-color: var(--sbb-background-color-1-negative);
76
76
  }
77
77
 
78
78
  :host([data-sticking]:not([data-state=unsticky])[color=charcoal]) {
79
- --sbb-sticky-bar-sticky-background-color: var(--sbb-color-charcoal);
79
+ --sbb-sticky-bar-sticky-background-color: var(--sbb-background-color-2-negative);
80
80
  }
81
81
 
82
82
  :host(:is([data-sticking]:is([data-slide-vertically], [data-state=sticking], [data-state=unsticking]),
@@ -153,7 +153,7 @@ const style = css`*,
153
153
  clip-path: polygon(-50% calc(-1 * var(--sbb-shadow-elevation-level-11-shadow-1-blur)), 150% calc(-1 * var(--sbb-shadow-elevation-level-11-shadow-1-blur)), 150% 50%, -50% 50%);
154
154
  }
155
155
  :host([data-sticking]:not([data-state=unsticky])) .sbb-sticky-bar::before {
156
- box-shadow: var(--sbb-shadow-elevation-level-11-shadow-2-offset-x) var(--sbb-shadow-elevation-level-11-shadow-2-offset-y) var(--sbb-shadow-elevation-level-11-shadow-2-blur) var(--sbb-shadow-elevation-level-11-shadow-2-spread) var(--sbb-shadow-elevation-level-11-soft-2-color), var(--sbb-shadow-elevation-level-11-shadow-1-offset-x) var(--sbb-shadow-elevation-level-11-shadow-1-offset-y) var(--sbb-shadow-elevation-level-11-shadow-1-blur) var(--sbb-shadow-elevation-level-11-shadow-1-spread) var(--sbb-shadow-elevation-level-11-soft-1-color);
156
+ box-shadow: var(--sbb-shadow-elevation-level-11-shadow-2-offset-x) var(--sbb-shadow-elevation-level-11-shadow-2-offset-y) var(--sbb-shadow-elevation-level-11-shadow-2-blur) var(--sbb-shadow-elevation-level-11-shadow-2-spread) var(--sbb-shadow-color-soft-2), var(--sbb-shadow-elevation-level-11-shadow-1-offset-x) var(--sbb-shadow-elevation-level-11-shadow-1-offset-y) var(--sbb-shadow-elevation-level-11-shadow-1-blur) var(--sbb-shadow-elevation-level-11-shadow-1-spread) var(--sbb-shadow-color-soft-1);
157
157
  }
158
158
  :host(:not([data-expanded])) .sbb-sticky-bar {
159
159
  padding-inline: var(--sbb-layout-base-offset-responsive);
@@ -15,11 +15,17 @@ export interface SbbPopoverConfig {
15
15
  openDelay?: number;
16
16
  closeDelay?: number;
17
17
  }
18
+ export interface SbbTooltipConfig {
19
+ openDelay?: number;
20
+ closeDelay?: number;
21
+ longPressCloseDelay?: number;
22
+ }
18
23
  export interface SbbConfig {
19
24
  language?: string;
20
25
  icon?: SbbIconConfig;
21
26
  datetime?: SbbDatetimeConfig;
22
27
  popover?: SbbPopoverConfig;
28
+ tooltip?: SbbTooltipConfig;
23
29
  }
24
30
  export declare function readConfig(): SbbConfig;
25
31
  export declare function mergeConfig(config: Partial<SbbConfig>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;KAChC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAE/B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED,wBAAgB,UAAU,IAAI,SAAS,CAKtC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAG5D;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,SAAS,EAAE,SAAS,CAAC;CAC1B"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;KAChC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAE/B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAE/B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED,wBAAgB,UAAU,IAAI,SAAS,CAKtC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAG5D;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,SAAS,EAAE,SAAS,CAAC;CAC1B"}
@@ -12,4 +12,4 @@ export {
12
12
  mergeConfig,
13
13
  readConfig
14
14
  };
15
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9jb25maWcvY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi9kYXRldGltZS5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiSWNvbkNvbmZpZyB7XG4gIGludGVyY2VwdG9yPzogKHBhcmFtZXRlcnM6IHtcbiAgICBuYW1lc3BhY2U6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgcmVxdWVzdDogKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICB9KSA9PiBQcm9taXNlPHN0cmluZz47XG4gIG5hbWVzcGFjZXM/OiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNiYkRhdGV0aW1lQ29uZmlnIHtcbiAgZGF0ZUFkYXB0ZXI/OiBEYXRlQWRhcHRlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYmJQb3BvdmVyQ29uZmlnIHtcbiAgLyogRGVsYXkgaW4gbWlsbGlzZWNvbmRzIHVudGlsIHRoZSBwb3BvdmVyIGlzIG9wZW5lZC4gKi9cbiAgb3BlbkRlbGF5PzogbnVtYmVyO1xuICAvKiBEZWxheSBpbiBtaWxsaXNlY29uZHMgdW50aWwgdGhlIHBvcG92ZXIgaXMgY2xvc2VkLiAqL1xuICBjbG9zZURlbGF5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNiYkNvbmZpZyB7XG4gIGxhbmd1YWdlPzogc3RyaW5nO1xuICBpY29uPzogU2JiSWNvbkNvbmZpZztcbiAgZGF0ZXRpbWU/OiBTYmJEYXRldGltZUNvbmZpZztcbiAgcG9wb3Zlcj86IFNiYlBvcG92ZXJDb25maWc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkQ29uZmlnKCk6IFNiYkNvbmZpZyB7XG4gIGlmICghKCdzYmJDb25maWcnIGluIGdsb2JhbFRoaXMpKSB7XG4gICAgZ2xvYmFsVGhpcy5zYmJDb25maWcgPSB7fTtcbiAgfVxuICByZXR1cm4gZ2xvYmFsVGhpcy5zYmJDb25maWcgYXMgU2JiQ29uZmlnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VDb25maWcoY29uZmlnOiBQYXJ0aWFsPFNiYkNvbmZpZz4pOiB2b2lkIHtcbiAgY29uc3Qgb2xkQ29uZmlnID0gcmVhZENvbmZpZygpO1xuICBPYmplY3QuYXNzaWduKG9sZENvbmZpZywgY29uZmlnKTtcbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICAvLyBPbmx5IGB2YXJgIGlzIHdvcmtpbmdcbiAgdmFyIHNiYkNvbmZpZzogU2JiQ29uZmlnO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJTQThCZ0IsYUFBVTtBQUN4QixNQUFJLEVBQUUsZUFBZSxhQUFhO0FBQ2hDLGVBQVcsWUFBWSxDQUFBO0FBQUEsRUFDekI7QUFDQSxTQUFPLFdBQVc7QUFDcEI7QUFFTSxTQUFVLFlBQVksUUFBMEI7QUFDcEQsUUFBTSxZQUFZLFdBQUE7QUFDbEIsU0FBTyxPQUFPLFdBQVcsTUFBTTtBQUNqQzsifQ==
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9jb25maWcvY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi9kYXRldGltZS5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiSWNvbkNvbmZpZyB7XG4gIGludGVyY2VwdG9yPzogKHBhcmFtZXRlcnM6IHtcbiAgICBuYW1lc3BhY2U6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgcmVxdWVzdDogKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICB9KSA9PiBQcm9taXNlPHN0cmluZz47XG4gIG5hbWVzcGFjZXM/OiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNiYkRhdGV0aW1lQ29uZmlnIHtcbiAgZGF0ZUFkYXB0ZXI/OiBEYXRlQWRhcHRlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYmJQb3BvdmVyQ29uZmlnIHtcbiAgLyogRGVsYXkgaW4gbWlsbGlzZWNvbmRzIGJlZm9yZSB0aGUgcG9wb3ZlciBvcGVucy4gKi9cbiAgb3BlbkRlbGF5PzogbnVtYmVyO1xuICAvKiBEZWxheSBpbiBtaWxsaXNlY29uZHMgYmVmb3JlIHRoZSBwb3BvdmVyIGNsb3Nlcy4gKi9cbiAgY2xvc2VEZWxheT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYmJUb29sdGlwQ29uZmlnIHtcbiAgLyogRGVsYXkgaW4gbWlsbGlzZWNvbmRzIGJlZm9yZSB0aGUgdG9vbHRpcCBvcGVucy4gKi9cbiAgb3BlbkRlbGF5PzogbnVtYmVyO1xuICAvKiBEZWxheSBpbiBtaWxsaXNlY29uZHMgYmVmb3JlIHRoZSB0b29sdGlwIGNsb3Nlcy4gKi9cbiAgY2xvc2VEZWxheT86IG51bWJlcjtcbiAgLyogRGVsYXkgaW4gbWlsbGlzZWNvbmRzIGJlZm9yZSB0aGUgdG9vbHRpcCBpcyBhdXRvbWF0aWNhbGx5IGNsb3NlZCB3aGVuIGlzIG9wZW5lZCBieSBhIGxvbmcgcHJlc3MgKHRvdWNoIGRldmljZXMpLiAqL1xuICBsb25nUHJlc3NDbG9zZURlbGF5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNiYkNvbmZpZyB7XG4gIGxhbmd1YWdlPzogc3RyaW5nO1xuICBpY29uPzogU2JiSWNvbkNvbmZpZztcbiAgZGF0ZXRpbWU/OiBTYmJEYXRldGltZUNvbmZpZztcbiAgcG9wb3Zlcj86IFNiYlBvcG92ZXJDb25maWc7XG4gIHRvb2x0aXA/OiBTYmJUb29sdGlwQ29uZmlnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZENvbmZpZygpOiBTYmJDb25maWcge1xuICBpZiAoISgnc2JiQ29uZmlnJyBpbiBnbG9iYWxUaGlzKSkge1xuICAgIGdsb2JhbFRoaXMuc2JiQ29uZmlnID0ge307XG4gIH1cbiAgcmV0dXJuIGdsb2JhbFRoaXMuc2JiQ29uZmlnIGFzIFNiYkNvbmZpZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQ29uZmlnKGNvbmZpZzogUGFydGlhbDxTYmJDb25maWc+KTogdm9pZCB7XG4gIGNvbnN0IG9sZENvbmZpZyA9IHJlYWRDb25maWcoKTtcbiAgT2JqZWN0LmFzc2lnbihvbGRDb25maWcsIGNvbmZpZyk7XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgLy8gT25seSBgdmFyYCBpcyB3b3JraW5nXG4gIHZhciBzYmJDb25maWc6IFNiYkNvbmZpZztcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiU0F3Q2dCLGFBQVU7QUFDeEIsTUFBSSxFQUFFLGVBQWUsYUFBYTtBQUNoQyxlQUFXLFlBQVksQ0FBQTtBQUFBLEVBQ3pCO0FBQ0EsU0FBTyxXQUFXO0FBQ3BCO0FBRU0sU0FBVSxZQUFZLFFBQTBCO0FBQ3BELFFBQU0sWUFBWSxXQUFBO0FBQ2xCLFNBQU8sT0FBTyxXQUFXLE1BQU07QUFDakM7In0=
@@ -1,5 +1,7 @@
1
1
  import { ReactiveController, ReactiveControllerHost } from 'lit';
2
+ import { SbbElementInternalsMixinType } from '../mixins.js';
2
3
  export declare const SbbMediaQueryForcedColors = "(forced-colors: active)";
4
+ export declare const SbbMediaQueryDarkMode = "(prefers-color-scheme: dark)";
3
5
  export declare const SbbMediaQueryHover = "(any-hover: hover)";
4
6
  export declare const SbbMediaQueryPointerCoarse = "(pointer: coarse)";
5
7
  export declare const SbbMediaQueryBreakpointMediumAndAbove: string;
@@ -30,4 +32,31 @@ export declare class SbbMediaMatcherController implements ReactiveController {
30
32
  hostConnected(): void;
31
33
  hostDisconnected(): void;
32
34
  }
35
+ /**
36
+ * A specialized version of the SbbMediaMatcherController, which
37
+ * takes the color-scheme CSS property into account when determining
38
+ * the dark mode state and updates a :state(dark) on the host.
39
+ *
40
+ * @example
41
+ * new SbbDarkModeController(this, (isDarkMode) => doSomething(isDarkMode));
42
+ */
43
+ export declare class SbbDarkModeController extends SbbMediaMatcherController {
44
+ private _host;
45
+ /** The current mode based on the class attribute of the <html> element. */
46
+ private static _currentMode;
47
+ /** MutationObserver that observes the "class" attribute of the <html> element. */
48
+ private static readonly _observer;
49
+ private static readonly _observerConfig;
50
+ private readonly _onChangeWithStateUpdater;
51
+ constructor(_host: ReactiveControllerHost & HTMLElement & SbbElementInternalsMixinType, onChange: SbbMediaMatcherHandler);
52
+ private static _readLightDarkClass;
53
+ /**
54
+ * Requests an update of the dark mode state. This is needed when the color-scheme
55
+ * CSS property changes, as the media query does not pick this up automatically.
56
+ */
57
+ static requestUpdate(): void;
58
+ hostConnected(): void;
59
+ hostDisconnected(): void;
60
+ matches(): boolean;
61
+ }
33
62
  //# sourceMappingURL=media-matchers-controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-matchers-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/controllers/media-matchers-controller.ts"],"names":[],"mappings":"AAMA,OAAO,EAAY,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAKrF,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AACnE,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,0BAA0B,sBAAsB,CAAC;AAC9D,eAAO,MAAM,qCAAqC,QAAuD,CAAC;AAC1G,eAAO,MAAM,qCAAqC,QAAuD,CAAC;AAC1G,eAAO,MAAM,oCAAoC,QAAsD,CAAC;AAGxG;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAehE;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,kBAAkB;IAGhE,OAAO,CAAC,QAAQ;gBADhB,IAAI,EAAE,sBAAsB,EACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAK1D;;;;OAIG;IACI,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAMtC,aAAa,IAAI,IAAI;IAoBrB,gBAAgB,IAAI,IAAI;CAWhC"}
1
+ {"version":3,"file":"media-matchers-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/controllers/media-matchers-controller.ts"],"names":[],"mappings":"AAMA,OAAO,EAAY,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAErF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAKjE,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AACnE,eAAO,MAAM,qBAAqB,iCAAiC,CAAC;AACpE,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,0BAA0B,sBAAsB,CAAC;AAC9D,eAAO,MAAM,qCAAqC,QAAuD,CAAC;AAC1G,eAAO,MAAM,qCAAqC,QAAuD,CAAC;AAC1G,eAAO,MAAM,oCAAoC,QAAsD,CAAC;AAGxG;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAehE;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,kBAAkB;IAGhE,OAAO,CAAC,QAAQ;gBADhB,IAAI,EAAE,sBAAsB,EACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAK1D;;;;OAIG;IACI,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAMtC,aAAa,IAAI,IAAI;IAoBrB,gBAAgB,IAAI,IAAI;CAWhC;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,SAAQ,yBAAyB;IAyBhE,OAAO,CAAC,KAAK;IAxBf,2EAA2E;IAC3E,OAAO,CAAC,MAAM,CAAC,YAAY,CAAsE;IAEjG,kFAAkF;IAClF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAUxB;IAET,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAGrC;IAEF,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAa;gBAG7C,KAAK,EAAE,sBAAsB,GAAG,WAAW,GAAG,4BAA4B,EAClF,QAAQ,EAAE,sBAAsB;IAYlC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAYlC;;;OAGG;WAEW,aAAa,IAAI,IAAI;IAOnB,aAAa,IAAI,IAAI;IAerB,gBAAgB,IAAI,IAAI;IAQxB,OAAO,IAAI,OAAO;CAWnC"}
@@ -2,6 +2,7 @@ import { S as SbbTypoScaleDefault, a as SbbBreakpointMediumMax, b as SbbBreakpoi
2
2
  import { isServer } from "lit";
3
3
  const pxToRem = (px) => px / SbbTypoScaleDefault;
4
4
  const SbbMediaQueryForcedColors = "(forced-colors: active)";
5
+ const SbbMediaQueryDarkMode = "(prefers-color-scheme: dark)";
5
6
  const SbbMediaQueryHover = "(any-hover: hover)";
6
7
  const SbbMediaQueryPointerCoarse = "(pointer: coarse)";
7
8
  const SbbMediaQueryBreakpointMediumAndAbove = `(min-width: ${pxToRem(SbbBreakpointMediumMin)}rem)`;
@@ -50,13 +51,85 @@ class SbbMediaMatcherController {
50
51
  }
51
52
  }
52
53
  }
54
+ const _SbbDarkModeController = class _SbbDarkModeController extends SbbMediaMatcherController {
55
+ constructor(_host, onChange) {
56
+ const onChangeWithStateUpdater = () => {
57
+ onChange(this.matches());
58
+ this._host["toggleState"]("dark", this.matches());
59
+ };
60
+ super(_host, {
61
+ [SbbMediaQueryDarkMode]: onChangeWithStateUpdater
62
+ });
63
+ this._host = _host;
64
+ this._onChangeWithStateUpdater = onChangeWithStateUpdater;
65
+ }
66
+ static _readLightDarkClass() {
67
+ if (isServer) {
68
+ return null;
69
+ }
70
+ const classList = document.documentElement.classList;
71
+ return ["light-dark", "dark", "light"].find((mode) => classList.contains(`sbb-${mode}`)) ?? null;
72
+ }
73
+ /**
74
+ * Requests an update of the dark mode state. This is needed when the color-scheme
75
+ * CSS property changes, as the media query does not pick this up automatically.
76
+ */
77
+ // eslint-disable-next-line lyne/needs-super-call-rule
78
+ static requestUpdate() {
79
+ const entry = mediaQueryRegistry.get(SbbMediaQueryDarkMode);
80
+ if (entry) {
81
+ entry.handlers.forEach((h) => h(entry.mediaQueryList.matches));
82
+ }
83
+ }
84
+ hostConnected() {
85
+ const isFirstListener = (mediaQueryRegistry.get(SbbMediaQueryDarkMode)?.handlers.size ?? 0) === 0;
86
+ super.hostConnected();
87
+ if (isFirstListener) {
88
+ _SbbDarkModeController._observer.observe(document.documentElement, _SbbDarkModeController._observerConfig);
89
+ }
90
+ this._onChangeWithStateUpdater();
91
+ }
92
+ hostDisconnected() {
93
+ super.hostDisconnected();
94
+ if ((mediaQueryRegistry.get(SbbMediaQueryDarkMode)?.handlers.size ?? 0) === 0) {
95
+ _SbbDarkModeController._observer.disconnect();
96
+ }
97
+ }
98
+ matches() {
99
+ if (isServer) {
100
+ return false;
101
+ }
102
+ const colorScheme = getComputedStyle(this._host).getPropertyValue("color-scheme");
103
+ const darkAvailable = colorScheme.includes("dark");
104
+ const darkOnly = colorScheme.trim() === "dark";
105
+ const preferredDarkMode = super.matches(SbbMediaQueryDarkMode);
106
+ return preferredDarkMode && darkAvailable || darkOnly;
107
+ }
108
+ };
109
+ _SbbDarkModeController._currentMode = _SbbDarkModeController._readLightDarkClass();
110
+ _SbbDarkModeController._observer = !isServer ? new MutationObserver((mutations) => {
111
+ if (mutations[0].oldValue !== document.documentElement.getAttribute("class")) {
112
+ const newMode = _SbbDarkModeController._readLightDarkClass();
113
+ if (_SbbDarkModeController._currentMode !== newMode) {
114
+ _SbbDarkModeController.requestUpdate();
115
+ _SbbDarkModeController._currentMode = newMode;
116
+ }
117
+ }
118
+ }) : null;
119
+ _SbbDarkModeController._observerConfig = {
120
+ attributeFilter: ["class"],
121
+ attributeOldValue: true
122
+ };
123
+ let SbbDarkModeController = _SbbDarkModeController;
53
124
  export {
125
+ SbbDarkModeController,
54
126
  SbbMediaMatcherController,
55
127
  SbbMediaQueryBreakpointMediumAndAbove,
56
128
  SbbMediaQueryBreakpointMediumAndBelow,
57
129
  SbbMediaQueryBreakpointSmallAndBelow,
130
+ SbbMediaQueryDarkMode,
58
131
  SbbMediaQueryForcedColors,
59
132
  SbbMediaQueryHover,
60
133
  SbbMediaQueryPointerCoarse
61
134
  };
62
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtbWF0Y2hlcnMtY29udHJvbGxlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMvbWVkaWEtbWF0Y2hlcnMtY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTYmJCcmVha3BvaW50TWVkaXVtTWF4LFxuICBTYmJCcmVha3BvaW50TWVkaXVtTWluLFxuICBTYmJCcmVha3BvaW50U21hbGxNYXgsXG4gIFNiYlR5cG9TY2FsZURlZmF1bHQsXG59IGZyb20gJ0BzYmItZXN0YS9seW5lLWRlc2lnbi10b2tlbnMnO1xuaW1wb3J0IHsgaXNTZXJ2ZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVyLCB0eXBlIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5jb25zdCBweFRvUmVtID0gKHB4OiBudW1iZXIpOiBudW1iZXIgPT4gcHggLyBTYmJUeXBvU2NhbGVEZWZhdWx0O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5Rm9yY2VkQ29sb3JzID0gJyhmb3JjZWQtY29sb3JzOiBhY3RpdmUpJztcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5SG92ZXIgPSAnKGFueS1ob3ZlcjogaG92ZXIpJztcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5UG9pbnRlckNvYXJzZSA9ICcocG9pbnRlcjogY29hcnNlKSc7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRNZWRpdW1BbmRBYm92ZSA9IGAobWluLXdpZHRoOiAke3B4VG9SZW0oU2JiQnJlYWtwb2ludE1lZGl1bU1pbil9cmVtKWA7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRNZWRpdW1BbmRCZWxvdyA9IGAobWF4LXdpZHRoOiAke3B4VG9SZW0oU2JiQnJlYWtwb2ludE1lZGl1bU1heCl9cmVtKWA7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRTbWFsbEFuZEJlbG93ID0gYChtYXgtd2lkdGg6ICR7cHhUb1JlbShTYmJCcmVha3BvaW50U21hbGxNYXgpfXJlbSlgO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cblxuLyoqXG4gKiBBIGNhbGxiYWNrLCB3aGljaCBpcyBpbnZva2VkIHdoZW4gdGhlIGFzc29jaWF0ZWQgbWVkaWEgcXVlcnkgbWF0Y2hcbiAqIHN0YXR1cyBjaGFuZ2VzLlxuICovXG5leHBvcnQgdHlwZSBTYmJNZWRpYU1hdGNoZXJIYW5kbGVyID0gKG1hdGNoZXM6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbmludGVyZmFjZSBNZWRpYVF1ZXJ5RW50cnkge1xuICBtZWRpYVF1ZXJ5TGlzdDogTWVkaWFRdWVyeUxpc3Q7XG4gIGV2ZW50SGFuZGxlcjogKGV2ZW50OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KSA9PiB2b2lkO1xuICBoYW5kbGVyczogU2V0PFNiYk1lZGlhTWF0Y2hlckhhbmRsZXI+O1xufVxuXG4vKipcbiAqIFdlIHdhbnQgdG8gY2FjaGUgTWVkaWFRdWVyeUxpc3QgaW5zdGFuY2VzIGFuZCBjb3JyZXNwb25kaW5nXG4gKiBldmVudCBoYW5kbGVycywgYXMgYSBtdWx0aXR1ZGUgb2YgZXZlbnQgaGFuZGxlcnMgb24gZ2xvYmFsIG9iamVjdHNcbiAqIGNhbiBkZWdyYWRlIHBlcmZvcm1hbmNlIHdpdGggdGltZS5cbiAqL1xuY29uc3QgbWVkaWFRdWVyeVJlZ2lzdHJ5ID0gbmV3IE1hcDxzdHJpbmcsIE1lZGlhUXVlcnlFbnRyeT4oKTtcblxuLyoqXG4gKiBUaGlzIGNvbnRyb2xsZXIgYWxsb3dzIGxpc3RlbmluZyB0byBtZWRpYSBxdWVyeSBjaGFuZ2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBuZXcgU2JiTWVkaWFNYXRjaGVyQ29udHJvbGxlcih0aGlzLCB7XG4gKiAgIFtTYmJGb3JjZWRDb2xvcnNRdWVyeV06IChtYXRjaGVzKSA9PiBkb1NvbWV0aGluZyhtYXRjaGVzKSxcbiAqIH0pXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIGhvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QsXG4gICAgcHJpdmF0ZSBfcXVlcmllczogUmVjb3JkPHN0cmluZywgU2JiTWVkaWFNYXRjaGVySGFuZGxlcj4sXG4gICkge1xuICAgIGhvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIHF1ZXJ5IG1hdGNoZXMuIFJldHVybnMgbnVsbCB3aXRoIFNTUi5cbiAgICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSB0byBjaGVjayBhZ2FpbnN0LlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBxdWVyeSBtYXRjaGVzIG9yIG51bGwgd2l0aCBTU1IuXG4gICAqL1xuICBwdWJsaWMgbWF0Y2hlcyhxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB8IG51bGwge1xuICAgIC8vIElmIHdlIHVzZSB0aGUgY2FjaGVkIGluc3RhbmNlLCBXZWJraXQgc2VlbXMgdG8gdXBkYXRlIHRoZSBzdGF0ZSBhIHRpY2sgdG9vIGxhdGUuXG4gICAgLy8gRHVlIHRvIHRoaXMgd2UgZGlyZWN0bHkgdXNlIG1hdGNoTWVkaWEgaGVyZS5cbiAgICByZXR1cm4gaXNTZXJ2ZXIgPyBudWxsIDogbWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlcztcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3F1ZXJ5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9xdWVyaWVzKSkge1xuICAgICAgY29uc3QgbWVkaWFRdWVyeSA9IG1lZGlhUXVlcnlSZWdpc3RyeS5nZXQocXVlcnkpO1xuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgbWVkaWFRdWVyeS5oYW5kbGVycy5hZGQoaGFuZGxlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtZWRpYVF1ZXJ5TGlzdCA9IG1hdGNoTWVkaWEocXVlcnkpO1xuICAgICAgICBjb25zdCBoYW5kbGVycyA9IG5ldyBTZXQoW2hhbmRsZXJdKTtcbiAgICAgICAgY29uc3QgZXZlbnRIYW5kbGVyID0gKGU6IE1lZGlhUXVlcnlMaXN0RXZlbnQpOiB2b2lkID0+XG4gICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaCgoaCkgPT4gaChlLm1hdGNoZXMpKTtcbiAgICAgICAgbWVkaWFRdWVyeUxpc3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgbWVkaWFRdWVyeVJlZ2lzdHJ5LnNldChxdWVyeSwgeyBtZWRpYVF1ZXJ5TGlzdCwgaGFuZGxlcnMsIGV2ZW50SGFuZGxlciB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFtxdWVyeSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fcXVlcmllcykpIHtcbiAgICAgIGNvbnN0IG1lZGlhUXVlcnkgPSBtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KHF1ZXJ5KTtcbiAgICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICAgIG1lZGlhUXVlcnkuaGFuZGxlcnMuZGVsZXRlKGhhbmRsZXIpO1xuICAgICAgICBpZiAoIW1lZGlhUXVlcnkuaGFuZGxlcnMuc2l6ZSkge1xuICAgICAgICAgIG1lZGlhUXVlcnlSZWdpc3RyeS5kZWxldGUocXVlcnkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFRQSxNQUFNLFVBQVUsQ0FBQyxPQUF1QixLQUFLO0FBR3RDLE1BQU0sNEJBQTRCO0FBQ2xDLE1BQU0scUJBQXFCO0FBQzNCLE1BQU0sNkJBQTZCO0FBQ25DLE1BQU0sd0NBQXdDLGVBQWUsUUFBUSxzQkFBc0IsQ0FBQztBQUM1RixNQUFNLHdDQUF3QyxlQUFlLFFBQVEsc0JBQXNCLENBQUM7QUFDNUYsTUFBTSx1Q0FBdUMsZUFBZSxRQUFRLHFCQUFxQixDQUFDO0FBb0JqRyxNQUFNLHlDQUF5QixJQUFBO01BVWxCLDBCQUF5QjtBQUFBLEVBQ3BDLFlBQ0UsTUFDUSxVQUFnRDtBQUFoRCxTQUFBLFdBQUE7QUFFUixTQUFLLGNBQWMsSUFBSTtBQUFBLEVBQ3pCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sUUFBUSxPQUFhO0FBRzFCLFdBQU8sV0FBVyxPQUFPLFdBQVcsS0FBSyxFQUFFO0FBQUEsRUFDN0M7QUFBQSxFQUVPLGdCQUFhO0FBQ2xCLFFBQUksVUFBVTtBQUNaO0FBQUEsSUFDRjtBQUVBLGVBQVcsQ0FBQyxPQUFPLE9BQU8sS0FBSyxPQUFPLFFBQVEsS0FBSyxRQUFRLEdBQUc7QUFDNUQsWUFBTSxhQUFhLG1CQUFtQixJQUFJLEtBQUs7QUFDL0MsVUFBSSxZQUFZO0FBQ2QsbUJBQVcsU0FBUyxJQUFJLE9BQU87QUFBQSxNQUNqQyxPQUFPO0FBQ0wsY0FBTSxpQkFBaUIsV0FBVyxLQUFLO0FBQ3ZDLGNBQU0sV0FBVyxvQkFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ2xDLGNBQU0sZUFBZSxDQUFDLE1BQ3BCLFNBQVMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sQ0FBQztBQUN0Qyx1QkFBZSxpQkFBaUIsVUFBVSxZQUFZO0FBQ3RELDJCQUFtQixJQUFJLE9BQU8sRUFBRSxnQkFBZ0IsVUFBVSxjQUFjO0FBQUEsTUFDMUU7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBRU8sbUJBQWdCO0FBQ3JCLGVBQVcsQ0FBQyxPQUFPLE9BQU8sS0FBSyxPQUFPLFFBQVEsS0FBSyxRQUFRLEdBQUc7QUFDNUQsWUFBTSxhQUFhLG1CQUFtQixJQUFJLEtBQUs7QUFDL0MsVUFBSSxZQUFZO0FBQ2QsbUJBQVcsU0FBUyxPQUFPLE9BQU87QUFDbEMsWUFBSSxDQUFDLFdBQVcsU0FBUyxNQUFNO0FBQzdCLDZCQUFtQixPQUFPLEtBQUs7QUFBQSxRQUNqQztBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNEOyJ9
135
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtbWF0Y2hlcnMtY29udHJvbGxlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMvbWVkaWEtbWF0Y2hlcnMtY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTYmJCcmVha3BvaW50TWVkaXVtTWF4LFxuICBTYmJCcmVha3BvaW50TWVkaXVtTWluLFxuICBTYmJCcmVha3BvaW50U21hbGxNYXgsXG4gIFNiYlR5cG9TY2FsZURlZmF1bHQsXG59IGZyb20gJ0BzYmItZXN0YS9seW5lLWRlc2lnbi10b2tlbnMnO1xuaW1wb3J0IHsgaXNTZXJ2ZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVyLCB0eXBlIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpblR5cGUgfSBmcm9tICcuLi9taXhpbnMuanMnO1xuXG5jb25zdCBweFRvUmVtID0gKHB4OiBudW1iZXIpOiBudW1iZXIgPT4gcHggLyBTYmJUeXBvU2NhbGVEZWZhdWx0O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5Rm9yY2VkQ29sb3JzID0gJyhmb3JjZWQtY29sb3JzOiBhY3RpdmUpJztcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5RGFya01vZGUgPSAnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSc7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUhvdmVyID0gJyhhbnktaG92ZXI6IGhvdmVyKSc7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeVBvaW50ZXJDb2Fyc2UgPSAnKHBvaW50ZXI6IGNvYXJzZSknO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50TWVkaXVtQW5kQWJvdmUgPSBgKG1pbi13aWR0aDogJHtweFRvUmVtKFNiYkJyZWFrcG9pbnRNZWRpdW1NaW4pfXJlbSlgO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50TWVkaXVtQW5kQmVsb3cgPSBgKG1heC13aWR0aDogJHtweFRvUmVtKFNiYkJyZWFrcG9pbnRNZWRpdW1NYXgpfXJlbSlgO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50U21hbGxBbmRCZWxvdyA9IGAobWF4LXdpZHRoOiAke3B4VG9SZW0oU2JiQnJlYWtwb2ludFNtYWxsTWF4KX1yZW0pYDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5cbi8qKlxuICogQSBjYWxsYmFjaywgd2hpY2ggaXMgaW52b2tlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIG1lZGlhIHF1ZXJ5IG1hdGNoXG4gKiBzdGF0dXMgY2hhbmdlcy5cbiAqL1xuZXhwb3J0IHR5cGUgU2JiTWVkaWFNYXRjaGVySGFuZGxlciA9IChtYXRjaGVzOiBib29sZWFuKSA9PiB2b2lkO1xuXG5pbnRlcmZhY2UgTWVkaWFRdWVyeUVudHJ5IHtcbiAgbWVkaWFRdWVyeUxpc3Q6IE1lZGlhUXVlcnlMaXN0O1xuICBldmVudEhhbmRsZXI6IChldmVudDogTWVkaWFRdWVyeUxpc3RFdmVudCkgPT4gdm9pZDtcbiAgaGFuZGxlcnM6IFNldDxTYmJNZWRpYU1hdGNoZXJIYW5kbGVyPjtcbn1cblxuLyoqXG4gKiBXZSB3YW50IHRvIGNhY2hlIE1lZGlhUXVlcnlMaXN0IGluc3RhbmNlcyBhbmQgY29ycmVzcG9uZGluZ1xuICogZXZlbnQgaGFuZGxlcnMsIGFzIGEgbXVsdGl0dWRlIG9mIGV2ZW50IGhhbmRsZXJzIG9uIGdsb2JhbCBvYmplY3RzXG4gKiBjYW4gZGVncmFkZSBwZXJmb3JtYW5jZSB3aXRoIHRpbWUuXG4gKi9cbmNvbnN0IG1lZGlhUXVlcnlSZWdpc3RyeSA9IG5ldyBNYXA8c3RyaW5nLCBNZWRpYVF1ZXJ5RW50cnk+KCk7XG5cbi8qKlxuICogVGhpcyBjb250cm9sbGVyIGFsbG93cyBsaXN0ZW5pbmcgdG8gbWVkaWEgcXVlcnkgY2hhbmdlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogbmV3IFNiYk1lZGlhTWF0Y2hlckNvbnRyb2xsZXIodGhpcywge1xuICogICBbU2JiRm9yY2VkQ29sb3JzUXVlcnldOiAobWF0Y2hlcykgPT4gZG9Tb21ldGhpbmcobWF0Y2hlcyksXG4gKiB9KVxuICovXG5leHBvcnQgY2xhc3MgU2JiTWVkaWFNYXRjaGVyQ29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0LFxuICAgIHByaXZhdGUgX3F1ZXJpZXM6IFJlY29yZDxzdHJpbmcsIFNiYk1lZGlhTWF0Y2hlckhhbmRsZXI+LFxuICApIHtcbiAgICBob3N0LmFkZENvbnRyb2xsZXIodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBxdWVyeSBtYXRjaGVzLiBSZXR1cm5zIG51bGwgd2l0aCBTU1IuXG4gICAqIEBwYXJhbSBxdWVyeSBUaGUgcXVlcnkgdG8gY2hlY2sgYWdhaW5zdC5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgcXVlcnkgbWF0Y2hlcyBvciBudWxsIHdpdGggU1NSLlxuICAgKi9cbiAgcHVibGljIG1hdGNoZXMocXVlcnk6IHN0cmluZyk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICAvLyBJZiB3ZSB1c2UgdGhlIGNhY2hlZCBpbnN0YW5jZSwgV2Via2l0IHNlZW1zIHRvIHVwZGF0ZSB0aGUgc3RhdGUgYSB0aWNrIHRvbyBsYXRlLlxuICAgIC8vIER1ZSB0byB0aGlzIHdlIGRpcmVjdGx5IHVzZSBtYXRjaE1lZGlhIGhlcmUuXG4gICAgcmV0dXJuIGlzU2VydmVyID8gbnVsbCA6IG1hdGNoTWVkaWEocXVlcnkpLm1hdGNoZXM7XG4gIH1cblxuICBwdWJsaWMgaG9zdENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtxdWVyeSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fcXVlcmllcykpIHtcbiAgICAgIGNvbnN0IG1lZGlhUXVlcnkgPSBtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KHF1ZXJ5KTtcbiAgICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICAgIG1lZGlhUXVlcnkuaGFuZGxlcnMuYWRkKGhhbmRsZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbWVkaWFRdWVyeUxpc3QgPSBtYXRjaE1lZGlhKHF1ZXJ5KTtcbiAgICAgICAgY29uc3QgaGFuZGxlcnMgPSBuZXcgU2V0KFtoYW5kbGVyXSk7XG4gICAgICAgIGNvbnN0IGV2ZW50SGFuZGxlciA9IChlOiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KTogdm9pZCA9PlxuICAgICAgICAgIGhhbmRsZXJzLmZvckVhY2goKGgpID0+IGgoZS5tYXRjaGVzKSk7XG4gICAgICAgIG1lZGlhUXVlcnlMaXN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGV2ZW50SGFuZGxlcik7XG4gICAgICAgIG1lZGlhUXVlcnlSZWdpc3RyeS5zZXQocXVlcnksIHsgbWVkaWFRdWVyeUxpc3QsIGhhbmRsZXJzLCBldmVudEhhbmRsZXIgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBbcXVlcnksIGhhbmRsZXJdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX3F1ZXJpZXMpKSB7XG4gICAgICBjb25zdCBtZWRpYVF1ZXJ5ID0gbWVkaWFRdWVyeVJlZ2lzdHJ5LmdldChxdWVyeSk7XG4gICAgICBpZiAobWVkaWFRdWVyeSkge1xuICAgICAgICBtZWRpYVF1ZXJ5LmhhbmRsZXJzLmRlbGV0ZShoYW5kbGVyKTtcbiAgICAgICAgaWYgKCFtZWRpYVF1ZXJ5LmhhbmRsZXJzLnNpemUpIHtcbiAgICAgICAgICBtZWRpYVF1ZXJ5UmVnaXN0cnkuZGVsZXRlKHF1ZXJ5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgU2JiTWVkaWFNYXRjaGVyQ29udHJvbGxlciwgd2hpY2hcbiAqIHRha2VzIHRoZSBjb2xvci1zY2hlbWUgQ1NTIHByb3BlcnR5IGludG8gYWNjb3VudCB3aGVuIGRldGVybWluaW5nXG4gKiB0aGUgZGFyayBtb2RlIHN0YXRlIGFuZCB1cGRhdGVzIGEgOnN0YXRlKGRhcmspIG9uIHRoZSBob3N0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBuZXcgU2JiRGFya01vZGVDb250cm9sbGVyKHRoaXMsIChpc0RhcmtNb2RlKSA9PiBkb1NvbWV0aGluZyhpc0RhcmtNb2RlKSk7XG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJEYXJrTW9kZUNvbnRyb2xsZXIgZXh0ZW5kcyBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyIHtcbiAgLyoqIFRoZSBjdXJyZW50IG1vZGUgYmFzZWQgb24gdGhlIGNsYXNzIGF0dHJpYnV0ZSBvZiB0aGUgPGh0bWw+IGVsZW1lbnQuICovXG4gIHByaXZhdGUgc3RhdGljIF9jdXJyZW50TW9kZTogJ2xpZ2h0LWRhcmsnIHwgJ2xpZ2h0JyB8ICdkYXJrJyB8IG51bGwgPSB0aGlzLl9yZWFkTGlnaHREYXJrQ2xhc3MoKTtcblxuICAvKiogTXV0YXRpb25PYnNlcnZlciB0aGF0IG9ic2VydmVzIHRoZSBcImNsYXNzXCIgYXR0cmlidXRlIG9mIHRoZSA8aHRtbD4gZWxlbWVudC4gKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX29ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICAgIGlmIChtdXRhdGlvbnNbMF0ub2xkVmFsdWUgIT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykpIHtcbiAgICAgICAgICBjb25zdCBuZXdNb2RlID0gdGhpcy5fcmVhZExpZ2h0RGFya0NsYXNzKCk7XG4gICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRNb2RlICE9PSBuZXdNb2RlKSB7XG4gICAgICAgICAgICBTYmJEYXJrTW9kZUNvbnRyb2xsZXIucmVxdWVzdFVwZGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudE1vZGUgPSBuZXdNb2RlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICA6IG51bGw7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX29ic2VydmVyQ29uZmlnID0ge1xuICAgIGF0dHJpYnV0ZUZpbHRlcjogWydjbGFzcyddLFxuICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX29uQ2hhbmdlV2l0aFN0YXRlVXBkYXRlcjogKCkgPT4gdm9pZDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIEhUTUxFbGVtZW50ICYgU2JiRWxlbWVudEludGVybmFsc01peGluVHlwZSxcbiAgICBvbkNoYW5nZTogU2JiTWVkaWFNYXRjaGVySGFuZGxlcixcbiAgKSB7XG4gICAgY29uc3Qgb25DaGFuZ2VXaXRoU3RhdGVVcGRhdGVyOiAoKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgICAgb25DaGFuZ2UodGhpcy5tYXRjaGVzKCkpO1xuICAgICAgdGhpcy5faG9zdFsndG9nZ2xlU3RhdGUnXSgnZGFyaycsIHRoaXMubWF0Y2hlcygpKTtcbiAgICB9O1xuICAgIHN1cGVyKF9ob3N0LCB7XG4gICAgICBbU2JiTWVkaWFRdWVyeURhcmtNb2RlXTogb25DaGFuZ2VXaXRoU3RhdGVVcGRhdGVyLFxuICAgIH0pO1xuICAgIHRoaXMuX29uQ2hhbmdlV2l0aFN0YXRlVXBkYXRlciA9IG9uQ2hhbmdlV2l0aFN0YXRlVXBkYXRlcjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9yZWFkTGlnaHREYXJrQ2xhc3MoKTogJ2xpZ2h0LWRhcmsnIHwgJ2xpZ2h0JyB8ICdkYXJrJyB8IG51bGwge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGNsYXNzTGlzdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3Q7XG4gICAgcmV0dXJuIChcbiAgICAgIChbJ2xpZ2h0LWRhcmsnLCAnZGFyaycsICdsaWdodCddIGFzIGNvbnN0KS5maW5kKChtb2RlKSA9PlxuICAgICAgICBjbGFzc0xpc3QuY29udGFpbnMoYHNiYi0ke21vZGV9YCksXG4gICAgICApID8/IG51bGxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3RzIGFuIHVwZGF0ZSBvZiB0aGUgZGFyayBtb2RlIHN0YXRlLiBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZSBjb2xvci1zY2hlbWVcbiAgICogQ1NTIHByb3BlcnR5IGNoYW5nZXMsIGFzIHRoZSBtZWRpYSBxdWVyeSBkb2VzIG5vdCBwaWNrIHRoaXMgdXAgYXV0b21hdGljYWxseS5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBseW5lL25lZWRzLXN1cGVyLWNhbGwtcnVsZVxuICBwdWJsaWMgc3RhdGljIHJlcXVlc3RVcGRhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgZW50cnkgPSBtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KFNiYk1lZGlhUXVlcnlEYXJrTW9kZSk7XG4gICAgaWYgKGVudHJ5KSB7XG4gICAgICBlbnRyeS5oYW5kbGVycy5mb3JFYWNoKChoKSA9PiBoKGVudHJ5Lm1lZGlhUXVlcnlMaXN0Lm1hdGNoZXMpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBpc0ZpcnN0TGlzdGVuZXIgPVxuICAgICAgKG1lZGlhUXVlcnlSZWdpc3RyeS5nZXQoU2JiTWVkaWFRdWVyeURhcmtNb2RlKT8uaGFuZGxlcnMuc2l6ZSA/PyAwKSA9PT0gMDtcbiAgICBzdXBlci5ob3N0Q29ubmVjdGVkKCk7XG5cbiAgICBpZiAoaXNGaXJzdExpc3RlbmVyKSB7XG4gICAgICBTYmJEYXJrTW9kZUNvbnRyb2xsZXIuX29ic2VydmVyIS5vYnNlcnZlKFxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsXG4gICAgICAgIFNiYkRhcmtNb2RlQ29udHJvbGxlci5fb2JzZXJ2ZXJDb25maWcsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX29uQ2hhbmdlV2l0aFN0YXRlVXBkYXRlcigpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgc3VwZXIuaG9zdERpc2Nvbm5lY3RlZCgpO1xuXG4gICAgaWYgKChtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KFNiYk1lZGlhUXVlcnlEYXJrTW9kZSk/LmhhbmRsZXJzLnNpemUgPz8gMCkgPT09IDApIHtcbiAgICAgIFNiYkRhcmtNb2RlQ29udHJvbGxlci5fb2JzZXJ2ZXIhLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgbWF0Y2hlcygpOiBib29sZWFuIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgY29sb3JTY2hlbWUgPSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX2hvc3QpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yLXNjaGVtZScpO1xuICAgIGNvbnN0IGRhcmtBdmFpbGFibGUgPSBjb2xvclNjaGVtZS5pbmNsdWRlcygnZGFyaycpO1xuICAgIGNvbnN0IGRhcmtPbmx5ID0gY29sb3JTY2hlbWUudHJpbSgpID09PSAnZGFyayc7XG4gICAgY29uc3QgcHJlZmVycmVkRGFya01vZGUgPSBzdXBlci5tYXRjaGVzKFNiYk1lZGlhUXVlcnlEYXJrTW9kZSkgYXMgYm9vbGVhbjtcblxuICAgIHJldHVybiAocHJlZmVycmVkRGFya01vZGUgJiYgZGFya0F2YWlsYWJsZSkgfHwgZGFya09ubHk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVVBLE1BQU0sVUFBVSxDQUFDLE9BQXVCLEtBQUs7QUFHdEMsTUFBTSw0QkFBNEI7QUFDbEMsTUFBTSx3QkFBd0I7QUFDOUIsTUFBTSxxQkFBcUI7QUFDM0IsTUFBTSw2QkFBNkI7QUFDbkMsTUFBTSx3Q0FBd0MsZUFBZSxRQUFRLHNCQUFzQixDQUFDO0FBQzVGLE1BQU0sd0NBQXdDLGVBQWUsUUFBUSxzQkFBc0IsQ0FBQztBQUM1RixNQUFNLHVDQUF1QyxlQUFlLFFBQVEscUJBQXFCLENBQUM7QUFvQmpHLE1BQU0seUNBQXlCLElBQUE7TUFVbEIsMEJBQXlCO0FBQUEsRUFDcEMsWUFDRSxNQUNRLFVBQWdEO0FBQWhELFNBQUEsV0FBQTtBQUVSLFNBQUssY0FBYyxJQUFJO0FBQUEsRUFDekI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxRQUFRLE9BQWE7QUFHMUIsV0FBTyxXQUFXLE9BQU8sV0FBVyxLQUFLLEVBQUU7QUFBQSxFQUM3QztBQUFBLEVBRU8sZ0JBQWE7QUFDbEIsUUFBSSxVQUFVO0FBQ1o7QUFBQSxJQUNGO0FBRUEsZUFBVyxDQUFDLE9BQU8sT0FBTyxLQUFLLE9BQU8sUUFBUSxLQUFLLFFBQVEsR0FBRztBQUM1RCxZQUFNLGFBQWEsbUJBQW1CLElBQUksS0FBSztBQUMvQyxVQUFJLFlBQVk7QUFDZCxtQkFBVyxTQUFTLElBQUksT0FBTztBQUFBLE1BQ2pDLE9BQU87QUFDTCxjQUFNLGlCQUFpQixXQUFXLEtBQUs7QUFDdkMsY0FBTSxXQUFXLG9CQUFJLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDbEMsY0FBTSxlQUFlLENBQUMsTUFDcEIsU0FBUyxRQUFR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
@@ -2,9 +2,10 @@ import { SbbEscapableOverlayController } from "./controllers/escapable-overlay-c
2
2
  import { SbbIdReferenceController } from "./controllers/id-reference-controller.js";
3
3
  import { SbbInertController } from "./controllers/inert-controller.js";
4
4
  import { SbbLanguageController } from "./controllers/language-controller.js";
5
- import { SbbMediaMatcherController, SbbMediaQueryBreakpointMediumAndAbove, SbbMediaQueryBreakpointMediumAndBelow, SbbMediaQueryBreakpointSmallAndBelow, SbbMediaQueryForcedColors, SbbMediaQueryHover, SbbMediaQueryPointerCoarse } from "./controllers/media-matchers-controller.js";
5
+ import { SbbDarkModeController, SbbMediaMatcherController, SbbMediaQueryBreakpointMediumAndAbove, SbbMediaQueryBreakpointMediumAndBelow, SbbMediaQueryBreakpointSmallAndBelow, SbbMediaQueryDarkMode, SbbMediaQueryForcedColors, SbbMediaQueryHover, SbbMediaQueryPointerCoarse } from "./controllers/media-matchers-controller.js";
6
6
  import { SbbSlotStateController } from "./controllers/slot-state-controller.js";
7
7
  export {
8
+ SbbDarkModeController,
8
9
  SbbEscapableOverlayController,
9
10
  SbbIdReferenceController,
10
11
  SbbInertController,
@@ -13,6 +14,7 @@ export {
13
14
  SbbMediaQueryBreakpointMediumAndAbove,
14
15
  SbbMediaQueryBreakpointMediumAndBelow,
15
16
  SbbMediaQueryBreakpointSmallAndBelow,
17
+ SbbMediaQueryDarkMode,
16
18
  SbbMediaQueryForcedColors,
17
19
  SbbMediaQueryHover,
18
20
  SbbMediaQueryPointerCoarse,
@@ -0,0 +1,3 @@
1
+ /** Equivalent to `Element.contains` while piercing shadow DOM. */
2
+ export declare function containsPierceShadowDom(root: HTMLElement, child: HTMLElement | null): boolean;
3
+ //# sourceMappingURL=contains-pierce-shadow-dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contains-pierce-shadow-dom.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/dom/contains-pierce-shadow-dom.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAY7F"}
@@ -0,0 +1,14 @@
1
+ function containsPierceShadowDom(root, child) {
2
+ let current = child;
3
+ while (current) {
4
+ if (current === root) {
5
+ return true;
6
+ }
7
+ current = current instanceof ShadowRoot ? current.host : current.parentNode;
8
+ }
9
+ return false;
10
+ }
11
+ export {
12
+ containsPierceShadowDom
13
+ };
14
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbnMtcGllcmNlLXNoYWRvdy1kb20uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9jb250YWlucy1waWVyY2Utc2hhZG93LWRvbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogRXF1aXZhbGVudCB0byBgRWxlbWVudC5jb250YWluc2Agd2hpbGUgcGllcmNpbmcgc2hhZG93IERPTS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb250YWluc1BpZXJjZVNoYWRvd0RvbShyb290OiBIVE1MRWxlbWVudCwgY2hpbGQ6IEhUTUxFbGVtZW50IHwgbnVsbCk6IGJvb2xlYW4ge1xuICBsZXQgY3VycmVudDogTm9kZSB8IG51bGwgPSBjaGlsZDtcblxuICB3aGlsZSAoY3VycmVudCkge1xuICAgIGlmIChjdXJyZW50ID09PSByb290KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjdXJyZW50ID0gY3VycmVudCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QgPyBjdXJyZW50Lmhvc3QgOiBjdXJyZW50LnBhcmVudE5vZGU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ00sU0FBVSx3QkFBd0IsTUFBbUIsT0FBeUI7QUFDbEYsTUFBSSxVQUF1QjtBQUUzQixTQUFPLFNBQVM7QUFDZCxRQUFJLFlBQVksTUFBTTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUVBLGNBQVUsbUJBQW1CLGFBQWEsUUFBUSxPQUFPLFFBQVE7QUFBQSxFQUNuRTtBQUVBLFNBQU87QUFDVDsifQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Postpone 'action' after the DOM is loaded.
3
+ */
4
+ export declare function queueDomContentLoaded(action: () => void): void;
5
+ //# sourceMappingURL=queue-dom-content-loaded.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-dom-content-loaded.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/dom/queue-dom-content-loaded.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,IAAI,CAO9D"}
@@ -0,0 +1,12 @@
1
+ function queueDomContentLoaded(action) {
2
+ const queuedAction = () => queueMicrotask(action);
3
+ if (document.readyState === "loading") {
4
+ document.addEventListener("DOMContentLoaded", queuedAction);
5
+ } else {
6
+ queuedAction();
7
+ }
8
+ }
9
+ export {
10
+ queueDomContentLoaded
11
+ };
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUtZG9tLWNvbnRlbnQtbG9hZGVkLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kb20vcXVldWUtZG9tLWNvbnRlbnQtbG9hZGVkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUG9zdHBvbmUgJ2FjdGlvbicgYWZ0ZXIgdGhlIERPTSBpcyBsb2FkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBxdWV1ZURvbUNvbnRlbnRMb2FkZWQoYWN0aW9uOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gIGNvbnN0IHF1ZXVlZEFjdGlvbiA9ICgpOiB2b2lkID0+IHF1ZXVlTWljcm90YXNrKGFjdGlvbik7XG4gIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgcXVldWVkQWN0aW9uKTtcbiAgfSBlbHNlIHtcbiAgICBxdWV1ZWRBY3Rpb24oKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdNLFNBQVUsc0JBQXNCLFFBQWtCO0FBQ3RELFFBQU0sZUFBZSxNQUFZLGVBQWUsTUFBTTtBQUN0RCxNQUFJLFNBQVMsZUFBZSxXQUFXO0FBQ3JDLGFBQVMsaUJBQWlCLG9CQUFvQixZQUFZO0FBQUEsRUFDNUQsT0FBTztBQUNMLGlCQUFBO0FBQUEsRUFDRjtBQUNGOyJ9
@@ -5,4 +5,18 @@
5
5
  * @param value The attribute value
6
6
  */
7
7
  export declare function setOrRemoveAttribute(element: HTMLElement, attribute: string, value?: any): void;
8
+ /**
9
+ * Add `value` to an attribute that accept a list of values. If the attribute is not set, it will be set to `value`.
10
+ * @param element The element that will have the attribute
11
+ * @param attribute The attribute name
12
+ * @param value The value to add
13
+ */
14
+ export declare function addToListAttribute(element: HTMLElement, attribute: string, value: string): void;
15
+ /**
16
+ * Remove `value` from an attribute list of values. If the attribute results empty, it will be removed.
17
+ * @param element The element with the attribute
18
+ * @param attribute The attribute name
19
+ * @param value The value to remove from the list
20
+ */
21
+ export declare function removeFromListAttribute(element: HTMLElement, attribute: string, value: string): void;
8
22
  //# sourceMappingURL=set-or-remove-attribute.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"set-or-remove-attribute.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/dom/set-or-remove-attribute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI,CAM/F"}
1
+ {"version":3,"file":"set-or-remove-attribute.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/dom/set-or-remove-attribute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI,CAM/F;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAM/F;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,IAAI,CAMN"}
@@ -5,7 +5,15 @@ function setOrRemoveAttribute(element, attribute, value) {
5
5
  element.setAttribute(attribute, value);
6
6
  }
7
7
  }
8
+ function addToListAttribute(element, attribute, value) {
9
+ setOrRemoveAttribute(element, attribute, `${element.getAttribute(attribute) ?? ""} ${value}`.trim());
10
+ }
11
+ function removeFromListAttribute(element, attribute, value) {
12
+ setOrRemoveAttribute(element, attribute, element.getAttribute(attribute)?.replace(value, "").trim());
13
+ }
8
14
  export {
15
+ addToListAttribute,
16
+ removeFromListAttribute,
9
17
  setOrRemoveAttribute
10
18
  };
11
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LW9yLXJlbW92ZS1hdHRyaWJ1dGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9zZXQtb3ItcmVtb3ZlLWF0dHJpYnV0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNldCB0aGUgYXR0cmlidXRlIG9ubHkgaWYgdmFsdWUgaXMgbm90ICdmYWxzZScsIG90aGVyd2lzZSByZW1vdmUgYXR0cmlidXRlLlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgdGhhdCB3aWxsIGhhdmUgdGhlIGF0dHJpYnV0ZVxuICogQHBhcmFtIGF0dHJpYnV0ZSBUaGUgYXR0cmlidXRlIG5hbWVcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgYXR0cmlidXRlIHZhbHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRPclJlbW92ZUF0dHJpYnV0ZShlbGVtZW50OiBIVE1MRWxlbWVudCwgYXR0cmlidXRlOiBzdHJpbmcsIHZhbHVlPzogYW55KTogdm9pZCB7XG4gIGlmICghdmFsdWUpIHtcbiAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICB9IGVsc2Uge1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgdmFsdWUpO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IlNBTWdCLHFCQUFxQixTQUFzQixXQUFtQixPQUFXO0FBQ3ZGLE1BQUksQ0FBQyxPQUFPO0FBQ1YsWUFBUSxnQkFBZ0IsU0FBUztBQUFBLEVBQ25DLE9BQU87QUFDTCxZQUFRLGFBQWEsV0FBVyxLQUFLO0FBQUEsRUFDdkM7QUFDRjsifQ==
19
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LW9yLXJlbW92ZS1hdHRyaWJ1dGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9zZXQtb3ItcmVtb3ZlLWF0dHJpYnV0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNldCB0aGUgYXR0cmlidXRlIG9ubHkgaWYgdmFsdWUgaXMgbm90ICdmYWxzZScsIG90aGVyd2lzZSByZW1vdmUgYXR0cmlidXRlLlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgdGhhdCB3aWxsIGhhdmUgdGhlIGF0dHJpYnV0ZVxuICogQHBhcmFtIGF0dHJpYnV0ZSBUaGUgYXR0cmlidXRlIG5hbWVcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgYXR0cmlidXRlIHZhbHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRPclJlbW92ZUF0dHJpYnV0ZShlbGVtZW50OiBIVE1MRWxlbWVudCwgYXR0cmlidXRlOiBzdHJpbmcsIHZhbHVlPzogYW55KTogdm9pZCB7XG4gIGlmICghdmFsdWUpIHtcbiAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICB9IGVsc2Uge1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgdmFsdWUpO1xuICB9XG59XG5cbi8qKlxuICogQWRkIGB2YWx1ZWAgdG8gYW4gYXR0cmlidXRlIHRoYXQgYWNjZXB0IGEgbGlzdCBvZiB2YWx1ZXMuIElmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNldCwgaXQgd2lsbCBiZSBzZXQgdG8gYHZhbHVlYC5cbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRoYXQgd2lsbCBoYXZlIHRoZSBhdHRyaWJ1dGVcbiAqIEBwYXJhbSBhdHRyaWJ1dGUgVGhlIGF0dHJpYnV0ZSBuYW1lXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGFkZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkVG9MaXN0QXR0cmlidXRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICBzZXRPclJlbW92ZUF0dHJpYnV0ZShcbiAgICBlbGVtZW50LFxuICAgIGF0dHJpYnV0ZSxcbiAgICBgJHtlbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpID8/ICcnfSAke3ZhbHVlfWAudHJpbSgpLFxuICApO1xufVxuXG4vKipcbiAqIFJlbW92ZSBgdmFsdWVgIGZyb20gYW4gYXR0cmlidXRlIGxpc3Qgb2YgdmFsdWVzLiBJZiB0aGUgYXR0cmlidXRlIHJlc3VsdHMgZW1wdHksIGl0IHdpbGwgYmUgcmVtb3ZlZC5cbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHdpdGggdGhlIGF0dHJpYnV0ZVxuICogQHBhcmFtIGF0dHJpYnV0ZSBUaGUgYXR0cmlidXRlIG5hbWVcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVtb3ZlIGZyb20gdGhlIGxpc3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUZyb21MaXN0QXR0cmlidXRlKFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgYXR0cmlidXRlOiBzdHJpbmcsXG4gIHZhbHVlOiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgc2V0T3JSZW1vdmVBdHRyaWJ1dGUoXG4gICAgZWxlbWVudCxcbiAgICBhdHRyaWJ1dGUsXG4gICAgZWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKT8ucmVwbGFjZSh2YWx1ZSwgJycpLnRyaW0oKSxcbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiU0FNZ0IscUJBQXFCLFNBQXNCLFdBQW1CLE9BQVc7QUFDdkYsTUFBSSxDQUFDLE9BQU87QUFDVixZQUFRLGdCQUFnQixTQUFTO0FBQUEsRUFDbkMsT0FBTztBQUNMLFlBQVEsYUFBYSxXQUFXLEtBQUs7QUFBQSxFQUN2QztBQUNGO1NBUWdCLG1CQUFtQixTQUFzQixXQUFtQixPQUFhO0FBQ3ZGLHVCQUNFLFNBQ0EsV0FDQSxHQUFHLFFBQVEsYUFBYSxTQUFTLEtBQUssRUFBRSxJQUFJLEtBQUssR0FBRyxLQUFBLENBQU07QUFFOUQ7U0FRZ0Isd0JBQ2QsU0FDQSxXQUNBLE9BQWE7QUFFYix1QkFDRSxTQUNBLFdBQ0EsUUFBUSxhQUFhLFNBQVMsR0FBRyxRQUFRLE9BQU8sRUFBRSxFQUFFLEtBQUEsQ0FBTTtBQUU5RDsifQ==