@sbb-esta/lyne-elements 1.12.1 → 1.14.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 (936) hide show
  1. package/accordion/accordion.d.ts +4 -8
  2. package/accordion/accordion.d.ts.map +1 -1
  3. package/accordion.js +90 -81
  4. package/action-group/action-group.d.ts +5 -5
  5. package/action-group/action-group.d.ts.map +1 -1
  6. package/action-group.js +100 -50
  7. package/alert/alert/alert.d.ts +11 -11
  8. package/alert/alert/alert.d.ts.map +1 -1
  9. package/alert/alert-group/alert-group.d.ts +4 -4
  10. package/alert/alert-group/alert-group.d.ts.map +1 -1
  11. package/alert/alert-group.js +101 -69
  12. package/alert/alert.js +191 -104
  13. package/autocomplete/autocomplete-base-element.d.ts +3 -7
  14. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  15. package/autocomplete/autocomplete.d.ts.map +1 -1
  16. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  17. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +1 -0
  18. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts.map +1 -1
  19. package/autocomplete-grid/autocomplete-grid-button.js +53 -60
  20. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts.map +1 -1
  21. package/autocomplete-grid/autocomplete-grid-cell.js +20 -22
  22. package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts.map +1 -1
  23. package/autocomplete-grid/autocomplete-grid-optgroup.js +31 -35
  24. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts.map +1 -1
  25. package/autocomplete-grid/autocomplete-grid-option.js +45 -63
  26. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts.map +1 -1
  27. package/autocomplete-grid/autocomplete-grid-row.js +23 -25
  28. package/autocomplete-grid/autocomplete-grid.js +112 -133
  29. package/autocomplete.js +283 -295
  30. package/breadcrumb/breadcrumb/breadcrumb.d.ts +1 -1
  31. package/breadcrumb/breadcrumb/breadcrumb.d.ts.map +1 -1
  32. package/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts.map +1 -1
  33. package/breadcrumb/breadcrumb-group.js +107 -114
  34. package/breadcrumb/breadcrumb.js +44 -35
  35. package/button/button/button.d.ts.map +1 -1
  36. package/button/button-link/button-link.d.ts.map +1 -1
  37. package/button/button-link.js +15 -18
  38. package/button/button-static/button-static.d.ts.map +1 -1
  39. package/button/button-static.js +15 -18
  40. package/button/button.js +15 -18
  41. package/button/common/button-common.d.ts +4 -4
  42. package/button/common/button-common.d.ts.map +1 -1
  43. package/button/common.js +41 -30
  44. package/button/mini-button/mini-button-base-element.d.ts.map +1 -1
  45. package/button/mini-button/mini-button.d.ts.map +1 -1
  46. package/button/mini-button-group/mini-button-group.d.ts +2 -2
  47. package/button/mini-button-group/mini-button-group.d.ts.map +1 -1
  48. package/button/mini-button-group.js +55 -43
  49. package/button/mini-button.js +28 -32
  50. package/button/secondary-button/secondary-button.d.ts.map +1 -1
  51. package/button/secondary-button-link/secondary-button-link.d.ts.map +1 -1
  52. package/button/secondary-button-link.js +15 -18
  53. package/button/secondary-button-static/secondary-button-static.d.ts.map +1 -1
  54. package/button/secondary-button-static.js +15 -18
  55. package/button/secondary-button.js +15 -18
  56. package/button/tertiary-button/tertiary-button.d.ts.map +1 -1
  57. package/button/tertiary-button-link/tertiary-button-link.d.ts.map +1 -1
  58. package/button/tertiary-button-link.js +15 -18
  59. package/button/tertiary-button-static/tertiary-button-static.d.ts.map +1 -1
  60. package/button/tertiary-button-static.js +15 -18
  61. package/button/tertiary-button.js +15 -18
  62. package/button/transparent-button/transparent-button.d.ts.map +1 -1
  63. package/button/transparent-button-link/transparent-button-link.d.ts.map +1 -1
  64. package/button/transparent-button-link.js +15 -18
  65. package/button/transparent-button-static/transparent-button-static.d.ts.map +1 -1
  66. package/button/transparent-button-static.js +15 -18
  67. package/button/transparent-button.js +15 -18
  68. package/calendar/calendar.d.ts +7 -7
  69. package/calendar/calendar.d.ts.map +1 -1
  70. package/calendar.js +638 -692
  71. package/card/card/card.d.ts +2 -2
  72. package/card/card/card.d.ts.map +1 -1
  73. package/card/card-badge/card-badge.d.ts +1 -1
  74. package/card/card-badge/card-badge.d.ts.map +1 -1
  75. package/card/card-badge.js +45 -34
  76. package/card/card-button/card-button.d.ts.map +1 -1
  77. package/card/card-button.js +16 -16
  78. package/card/card-link/card-link.d.ts.map +1 -1
  79. package/card/card-link.js +17 -17
  80. package/card/card.js +55 -36
  81. package/card/common/card-action-common.d.ts +1 -1
  82. package/card/common/card-action-common.d.ts.map +1 -1
  83. package/card/common.js +27 -33
  84. package/checkbox/checkbox/checkbox.d.ts +3 -4
  85. package/checkbox/checkbox/checkbox.d.ts.map +1 -1
  86. package/checkbox/checkbox-group/checkbox-group.d.ts +4 -4
  87. package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  88. package/checkbox/checkbox-group.js +99 -76
  89. package/checkbox/checkbox-panel/checkbox-panel.d.ts +2 -3
  90. package/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  91. package/checkbox/checkbox-panel.js +51 -50
  92. package/checkbox/checkbox.js +54 -43
  93. package/checkbox/common/checkbox-common.d.ts +1 -1
  94. package/checkbox/common/checkbox-common.d.ts.map +1 -1
  95. package/checkbox/common.js +39 -24
  96. package/chip/chip.d.ts +2 -2
  97. package/chip/chip.d.ts.map +1 -1
  98. package/chip.js +45 -26
  99. package/clock/clock.d.ts +1 -1
  100. package/clock/clock.d.ts.map +1 -1
  101. package/clock.js +136 -144
  102. package/container/container/container.d.ts +3 -3
  103. package/container/container/container.d.ts.map +1 -1
  104. package/container/container.js +60 -35
  105. package/container/sticky-bar/sticky-bar.d.ts +1 -1
  106. package/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  107. package/container/sticky-bar.js +55 -47
  108. package/core/a11y.js +29 -51
  109. package/core/base-elements/action-base-element.d.ts.map +1 -1
  110. package/core/base-elements/button-base-element.d.ts +2 -2
  111. package/core/base-elements/button-base-element.d.ts.map +1 -1
  112. package/core/base-elements/link-base-element.d.ts +5 -5
  113. package/core/base-elements/link-base-element.d.ts.map +1 -1
  114. package/core/base-elements.js +243 -196
  115. package/core/controllers.js +8 -13
  116. package/core/decorators/base.d.ts +14 -0
  117. package/core/decorators/base.d.ts.map +1 -0
  118. package/core/decorators/force-type.d.ts +8 -0
  119. package/core/decorators/force-type.d.ts.map +1 -0
  120. package/core/decorators/get-override.d.ts +7 -0
  121. package/core/decorators/get-override.d.ts.map +1 -0
  122. package/core/decorators/handle-distinct-change.d.ts +8 -0
  123. package/core/decorators/handle-distinct-change.d.ts.map +1 -0
  124. package/core/decorators/omit-empty-converter.d.ts +8 -0
  125. package/core/decorators/omit-empty-converter.d.ts.map +1 -0
  126. package/core/decorators.d.ts +4 -0
  127. package/core/decorators.d.ts.map +1 -1
  128. package/core/decorators.js +59 -15
  129. package/core/dom.js +1 -5
  130. package/core/eventing.js +1 -4
  131. package/core/interfaces/paginator-page.d.ts +7 -0
  132. package/core/interfaces/paginator-page.d.ts.map +1 -0
  133. package/core/interfaces.d.ts +1 -0
  134. package/core/interfaces.d.ts.map +1 -1
  135. package/core/mixins/disabled-mixin.d.ts +2 -3
  136. package/core/mixins/disabled-mixin.d.ts.map +1 -1
  137. package/core/mixins/form-associated-checkbox-mixin.d.ts +1 -0
  138. package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  139. package/core/mixins/form-associated-mixin.d.ts +6 -6
  140. package/core/mixins/form-associated-mixin.d.ts.map +1 -1
  141. package/core/mixins/named-slot-list-mixin.d.ts +1 -1
  142. package/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  143. package/core/mixins/negative-mixin.d.ts +1 -1
  144. package/core/mixins/negative-mixin.d.ts.map +1 -1
  145. package/core/mixins/panel-mixin.d.ts +3 -3
  146. package/core/mixins/panel-mixin.d.ts.map +1 -1
  147. package/core/mixins/required-mixin.d.ts +2 -3
  148. package/core/mixins/required-mixin.d.ts.map +1 -1
  149. package/core/mixins.js +291 -242
  150. package/core/styles/mixins/buttons.scss +1 -1
  151. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss +4 -0
  152. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables_css--mixin.scss +5 -1
  153. package/core/testing/private.d.ts +1 -0
  154. package/core/testing/private.d.ts.map +1 -1
  155. package/core/testing.js +7 -13
  156. package/core.css +5 -1
  157. package/custom-elements.json +14515 -13465
  158. package/datepicker/common/datepicker-button.d.ts +2 -2
  159. package/datepicker/common/datepicker-button.d.ts.map +1 -1
  160. package/datepicker/common.js +110 -116
  161. package/datepicker/datepicker/datepicker.d.ts +6 -6
  162. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  163. package/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
  164. package/datepicker/datepicker-next-day.js +24 -26
  165. package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
  166. package/datepicker/datepicker-previous-day.js +25 -27
  167. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +6 -6
  168. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  169. package/datepicker/datepicker-toggle.js +154 -136
  170. package/datepicker/datepicker.js +248 -213
  171. package/development/accordion/accordion.d.ts +4 -8
  172. package/development/accordion/accordion.d.ts.map +1 -1
  173. package/development/accordion.js +118 -93
  174. package/development/action-group/action-group.d.ts +5 -5
  175. package/development/action-group/action-group.d.ts.map +1 -1
  176. package/development/action-group.js +138 -64
  177. package/development/alert/alert/alert.d.ts +11 -11
  178. package/development/alert/alert/alert.d.ts.map +1 -1
  179. package/development/alert/alert-group/alert-group.d.ts +4 -4
  180. package/development/alert/alert-group/alert-group.d.ts.map +1 -1
  181. package/development/alert/alert-group.js +135 -79
  182. package/development/alert/alert.js +259 -109
  183. package/development/autocomplete/autocomplete-base-element.d.ts +3 -7
  184. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  185. package/development/autocomplete/autocomplete.d.ts.map +1 -1
  186. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  187. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +1 -0
  188. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts.map +1 -1
  189. package/development/autocomplete-grid/autocomplete-grid-button.js +75 -76
  190. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts.map +1 -1
  191. package/development/autocomplete-grid/autocomplete-grid-cell.js +24 -24
  192. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts.map +1 -1
  193. package/development/autocomplete-grid/autocomplete-grid-optgroup.js +38 -39
  194. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts.map +1 -1
  195. package/development/autocomplete-grid/autocomplete-grid-option.js +57 -73
  196. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts.map +1 -1
  197. package/development/autocomplete-grid/autocomplete-grid-row.js +28 -28
  198. package/development/autocomplete-grid/autocomplete-grid.js +142 -160
  199. package/development/autocomplete.js +394 -393
  200. package/development/breadcrumb/breadcrumb/breadcrumb.d.ts +1 -1
  201. package/development/breadcrumb/breadcrumb/breadcrumb.d.ts.map +1 -1
  202. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts.map +1 -1
  203. package/development/breadcrumb/breadcrumb-group.js +130 -130
  204. package/development/breadcrumb/breadcrumb.js +53 -36
  205. package/development/button/button/button.d.ts.map +1 -1
  206. package/development/button/button-link/button-link.d.ts.map +1 -1
  207. package/development/button/button-link.js +18 -19
  208. package/development/button/button-static/button-static.d.ts.map +1 -1
  209. package/development/button/button-static.js +18 -19
  210. package/development/button/button.js +18 -19
  211. package/development/button/common/button-common.d.ts +4 -4
  212. package/development/button/common/button-common.d.ts.map +1 -1
  213. package/development/button/common.js +51 -30
  214. package/development/button/mini-button/mini-button-base-element.d.ts.map +1 -1
  215. package/development/button/mini-button/mini-button.d.ts.map +1 -1
  216. package/development/button/mini-button-group/mini-button-group.d.ts +2 -2
  217. package/development/button/mini-button-group/mini-button-group.d.ts.map +1 -1
  218. package/development/button/mini-button-group.js +77 -50
  219. package/development/button/mini-button.js +39 -38
  220. package/development/button/secondary-button/secondary-button.d.ts.map +1 -1
  221. package/development/button/secondary-button-link/secondary-button-link.d.ts.map +1 -1
  222. package/development/button/secondary-button-link.js +18 -19
  223. package/development/button/secondary-button-static/secondary-button-static.d.ts.map +1 -1
  224. package/development/button/secondary-button-static.js +18 -19
  225. package/development/button/secondary-button.js +18 -19
  226. package/development/button/tertiary-button/tertiary-button.d.ts.map +1 -1
  227. package/development/button/tertiary-button-link/tertiary-button-link.d.ts.map +1 -1
  228. package/development/button/tertiary-button-link.js +18 -19
  229. package/development/button/tertiary-button-static/tertiary-button-static.d.ts.map +1 -1
  230. package/development/button/tertiary-button-static.js +18 -19
  231. package/development/button/tertiary-button.js +18 -19
  232. package/development/button/transparent-button/transparent-button.d.ts.map +1 -1
  233. package/development/button/transparent-button-link/transparent-button-link.d.ts.map +1 -1
  234. package/development/button/transparent-button-link.js +18 -19
  235. package/development/button/transparent-button-static/transparent-button-static.d.ts.map +1 -1
  236. package/development/button/transparent-button-static.js +18 -19
  237. package/development/button/transparent-button.js +18 -19
  238. package/development/calendar/calendar.d.ts +7 -7
  239. package/development/calendar/calendar.d.ts.map +1 -1
  240. package/development/calendar.js +768 -766
  241. package/development/card/card/card.d.ts +2 -2
  242. package/development/card/card/card.d.ts.map +1 -1
  243. package/development/card/card-badge/card-badge.d.ts +1 -1
  244. package/development/card/card-badge/card-badge.d.ts.map +1 -1
  245. package/development/card/card-badge.js +65 -45
  246. package/development/card/card-button/card-button.d.ts.map +1 -1
  247. package/development/card/card-button.js +23 -20
  248. package/development/card/card-link/card-link.d.ts.map +1 -1
  249. package/development/card/card-link.js +23 -20
  250. package/development/card/card.js +72 -41
  251. package/development/card/common/card-action-common.d.ts +1 -1
  252. package/development/card/common/card-action-common.d.ts.map +1 -1
  253. package/development/card/common.js +74 -73
  254. package/development/checkbox/checkbox/checkbox.d.ts +3 -4
  255. package/development/checkbox/checkbox/checkbox.d.ts.map +1 -1
  256. package/development/checkbox/checkbox-group/checkbox-group.d.ts +4 -4
  257. package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  258. package/development/checkbox/checkbox-group.js +139 -92
  259. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +2 -3
  260. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  261. package/development/checkbox/checkbox-panel.js +68 -60
  262. package/development/checkbox/checkbox.js +69 -46
  263. package/development/checkbox/common/checkbox-common.d.ts +1 -1
  264. package/development/checkbox/common/checkbox-common.d.ts.map +1 -1
  265. package/development/checkbox/common.js +65 -46
  266. package/development/chip/chip.d.ts +2 -2
  267. package/development/chip/chip.d.ts.map +1 -1
  268. package/development/chip.js +64 -33
  269. package/development/clock/clock.d.ts +1 -1
  270. package/development/clock/clock.d.ts.map +1 -1
  271. package/development/clock.js +203 -201
  272. package/development/container/container/container.d.ts +3 -3
  273. package/development/container/container/container.d.ts.map +1 -1
  274. package/development/container/container.js +86 -45
  275. package/development/container/sticky-bar/sticky-bar.d.ts +1 -1
  276. package/development/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  277. package/development/container/sticky-bar.js +76 -58
  278. package/development/core/a11y.js +40 -62
  279. package/development/core/base-elements/action-base-element.d.ts.map +1 -1
  280. package/development/core/base-elements/button-base-element.d.ts +2 -2
  281. package/development/core/base-elements/button-base-element.d.ts.map +1 -1
  282. package/development/core/base-elements/link-base-element.d.ts +5 -5
  283. package/development/core/base-elements/link-base-element.d.ts.map +1 -1
  284. package/development/core/base-elements.js +329 -226
  285. package/development/core/config.js +1 -1
  286. package/development/core/controllers.js +13 -21
  287. package/development/core/datetime.js +1 -1
  288. package/development/core/decorators/base.d.ts +14 -0
  289. package/development/core/decorators/base.d.ts.map +1 -0
  290. package/development/core/decorators/force-type.d.ts +8 -0
  291. package/development/core/decorators/force-type.d.ts.map +1 -0
  292. package/development/core/decorators/get-override.d.ts +7 -0
  293. package/development/core/decorators/get-override.d.ts.map +1 -0
  294. package/development/core/decorators/handle-distinct-change.d.ts +8 -0
  295. package/development/core/decorators/handle-distinct-change.d.ts.map +1 -0
  296. package/development/core/decorators/omit-empty-converter.d.ts +8 -0
  297. package/development/core/decorators/omit-empty-converter.d.ts.map +1 -0
  298. package/development/core/decorators.d.ts +4 -0
  299. package/development/core/decorators.d.ts.map +1 -1
  300. package/development/core/decorators.js +69 -5
  301. package/development/core/dom.js +2 -6
  302. package/development/core/eventing.js +2 -5
  303. package/development/core/i18n.js +1 -1
  304. package/development/core/interfaces/paginator-page.d.ts +7 -0
  305. package/development/core/interfaces/paginator-page.d.ts.map +1 -0
  306. package/development/core/interfaces.d.ts +1 -0
  307. package/development/core/interfaces.d.ts.map +1 -1
  308. package/development/core/mixins/disabled-mixin.d.ts +2 -3
  309. package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
  310. package/development/core/mixins/form-associated-checkbox-mixin.d.ts +1 -0
  311. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  312. package/development/core/mixins/form-associated-mixin.d.ts +6 -6
  313. package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
  314. package/development/core/mixins/named-slot-list-mixin.d.ts +1 -1
  315. package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  316. package/development/core/mixins/negative-mixin.d.ts +1 -1
  317. package/development/core/mixins/negative-mixin.d.ts.map +1 -1
  318. package/development/core/mixins/panel-mixin.d.ts +3 -3
  319. package/development/core/mixins/panel-mixin.d.ts.map +1 -1
  320. package/development/core/mixins/required-mixin.d.ts +2 -3
  321. package/development/core/mixins/required-mixin.d.ts.map +1 -1
  322. package/development/core/mixins.js +573 -478
  323. package/development/core/observers.js +1 -1
  324. package/development/core/overlay.js +1 -1
  325. package/development/core/testing/private.d.ts +1 -0
  326. package/development/core/testing/private.d.ts.map +1 -1
  327. package/development/core/testing.js +16 -22
  328. package/development/datepicker/common/datepicker-button.d.ts +2 -2
  329. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  330. package/development/datepicker/common.js +144 -142
  331. package/development/datepicker/datepicker/datepicker.d.ts +6 -6
  332. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  333. package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
  334. package/development/datepicker/datepicker-next-day.js +33 -33
  335. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
  336. package/development/datepicker/datepicker-previous-day.js +33 -33
  337. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +6 -6
  338. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  339. package/development/datepicker/datepicker-toggle.js +227 -174
  340. package/development/datepicker/datepicker.js +327 -249
  341. package/development/dialog/dialog/dialog.d.ts +1 -1
  342. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  343. package/development/dialog/dialog-actions/dialog-actions.d.ts.map +1 -1
  344. package/development/dialog/dialog-actions.js +21 -20
  345. package/development/dialog/dialog-content/dialog-content.d.ts.map +1 -1
  346. package/development/dialog/dialog-content.js +22 -21
  347. package/development/dialog/dialog-title/dialog-title.d.ts +3 -3
  348. package/development/dialog/dialog-title/dialog-title.d.ts.map +1 -1
  349. package/development/dialog/dialog-title.js +121 -66
  350. package/development/dialog/dialog.js +205 -191
  351. package/development/divider/divider.d.ts +1 -1
  352. package/development/divider/divider.d.ts.map +1 -1
  353. package/development/divider.js +55 -36
  354. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts +4 -4
  355. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  356. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.d.ts.map +1 -1
  357. package/development/expansion-panel/expansion-panel-content.js +25 -25
  358. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts.map +1 -1
  359. package/development/expansion-panel/expansion-panel-header.js +56 -63
  360. package/development/expansion-panel/expansion-panel.js +227 -182
  361. package/development/file-selector/file-selector.d.ts +26 -15
  362. package/development/file-selector/file-selector.d.ts.map +1 -1
  363. package/development/file-selector.js +305 -172
  364. package/development/flip-card/flip-card/flip-card.d.ts +2 -2
  365. package/development/flip-card/flip-card/flip-card.d.ts.map +1 -1
  366. package/development/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  367. package/development/flip-card/flip-card-details.js +39 -39
  368. package/development/flip-card/flip-card-summary/flip-card-summary.d.ts +1 -1
  369. package/development/flip-card/flip-card-summary/flip-card-summary.d.ts.map +1 -1
  370. package/development/flip-card/flip-card-summary.js +57 -38
  371. package/development/flip-card/flip-card.js +110 -78
  372. package/development/footer/footer.d.ts +4 -4
  373. package/development/footer/footer.d.ts.map +1 -1
  374. package/development/footer.js +103 -41
  375. package/development/form-error/form-error.d.ts.map +1 -1
  376. package/development/form-error.js +29 -28
  377. package/development/form-field/form-field/form-field.d.ts +10 -10
  378. package/development/form-field/form-field/form-field.d.ts.map +1 -1
  379. package/development/form-field/form-field-clear/form-field-clear.d.ts.map +1 -1
  380. package/development/form-field/form-field-clear.js +51 -51
  381. package/development/form-field/form-field.js +439 -328
  382. package/development/header/common/header-action-common.d.ts +2 -2
  383. package/development/header/common/header-action-common.d.ts.map +1 -1
  384. package/development/header/common.js +95 -28
  385. package/development/header/header/header.d.ts +4 -4
  386. package/development/header/header/header.d.ts.map +1 -1
  387. package/development/header/header-button/header-button.d.ts.map +1 -1
  388. package/development/header/header-button.js +19 -18
  389. package/development/header/header-link/header-link.d.ts.map +1 -1
  390. package/development/header/header-link.js +19 -16
  391. package/development/header/header.js +198 -140
  392. package/development/icon/icon-base.d.ts +3 -4
  393. package/development/icon/icon-base.d.ts.map +1 -1
  394. package/development/icon/icon-name-mixin.d.ts +1 -1
  395. package/development/icon/icon-name-mixin.d.ts.map +1 -1
  396. package/development/icon/icon.d.ts +2 -2
  397. package/development/icon/icon.d.ts.map +1 -1
  398. package/development/icon.js +258 -157
  399. package/development/image/image.d.ts +17 -17
  400. package/development/image/image.d.ts.map +1 -1
  401. package/development/image.js +584 -216
  402. package/development/journey-header/journey-header.d.ts +5 -5
  403. package/development/journey-header/journey-header.d.ts.map +1 -1
  404. package/development/journey-header.js +115 -43
  405. package/development/lead-container/lead-container.d.ts.map +1 -1
  406. package/development/lead-container.js +22 -21
  407. package/development/link/block-link/block-link.d.ts.map +1 -1
  408. package/development/link/block-link-button/block-link-button.d.ts.map +1 -1
  409. package/development/link/block-link-button.js +19 -18
  410. package/development/link/block-link-static/block-link-static.d.ts.map +1 -1
  411. package/development/link/block-link-static.js +19 -18
  412. package/development/link/block-link.js +19 -18
  413. package/development/link/common/block-link-common.d.ts +4 -3
  414. package/development/link/common/block-link-common.d.ts.map +1 -1
  415. package/development/link/common/link-common.d.ts +1 -1
  416. package/development/link/common/link-common.d.ts.map +1 -1
  417. package/development/link/common.js +81 -51
  418. package/development/link/link/link.d.ts.map +1 -1
  419. package/development/link/link-button/link-button.d.ts.map +1 -1
  420. package/development/link/link-button.js +19 -18
  421. package/development/link/link-static/link-static.d.ts.map +1 -1
  422. package/development/link/link-static.js +19 -18
  423. package/development/link/link.js +19 -18
  424. package/development/link-list/common/link-list-base.d.ts +3 -3
  425. package/development/link-list/common/link-list-base.d.ts.map +1 -1
  426. package/development/link-list/common.js +97 -48
  427. package/development/link-list/link-list/link-list.d.ts +2 -2
  428. package/development/link-list/link-list/link-list.d.ts.map +1 -1
  429. package/development/link-list/link-list-anchor/link-list-anchor.d.ts.map +1 -1
  430. package/development/link-list/link-list-anchor.js +18 -17
  431. package/development/link-list/link-list.js +60 -28
  432. package/development/loading-indicator/loading-indicator.d.ts +3 -3
  433. package/development/loading-indicator/loading-indicator.d.ts.map +1 -1
  434. package/development/loading-indicator.js +83 -45
  435. package/development/logo/logo.d.ts +2 -2
  436. package/development/logo/logo.d.ts.map +1 -1
  437. package/development/logo.js +64 -32
  438. package/development/map-container/map-container.d.ts +2 -2
  439. package/development/map-container/map-container.d.ts.map +1 -1
  440. package/development/map-container.js +107 -75
  441. package/development/menu/common/menu-action-common.d.ts +2 -2
  442. package/development/menu/common/menu-action-common.d.ts.map +1 -1
  443. package/development/menu/common.js +41 -20
  444. package/development/menu/menu/menu.d.ts +1 -1
  445. package/development/menu/menu/menu.d.ts.map +1 -1
  446. package/development/menu/menu-button/menu-button.d.ts.map +1 -1
  447. package/development/menu/menu-button.js +19 -18
  448. package/development/menu/menu-link/menu-link.d.ts.map +1 -1
  449. package/development/menu/menu-link.js +19 -18
  450. package/development/menu/menu.js +261 -241
  451. package/development/message/message.d.ts +2 -2
  452. package/development/message/message.d.ts.map +1 -1
  453. package/development/message.js +65 -32
  454. package/development/navigation/common/navigation-action-common.d.ts +1 -1
  455. package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
  456. package/development/navigation/common.js +63 -52
  457. package/development/navigation/navigation/navigation.d.ts +2 -2
  458. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  459. package/development/navigation/navigation-button/navigation-button.d.ts.map +1 -1
  460. package/development/navigation/navigation-button.js +19 -18
  461. package/development/navigation/navigation-link/navigation-link.d.ts.map +1 -1
  462. package/development/navigation/navigation-link.js +19 -18
  463. package/development/navigation/navigation-list/navigation-list.d.ts +1 -1
  464. package/development/navigation/navigation-list/navigation-list.d.ts.map +1 -1
  465. package/development/navigation/navigation-list.js +64 -41
  466. package/development/navigation/navigation-marker/navigation-marker.d.ts +1 -1
  467. package/development/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  468. package/development/navigation/navigation-marker.js +108 -91
  469. package/development/navigation/navigation-section/navigation-section.d.ts +3 -3
  470. package/development/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  471. package/development/navigation/navigation-section.js +282 -236
  472. package/development/navigation/navigation.js +278 -254
  473. package/development/notification/notification.d.ts +6 -6
  474. package/development/notification/notification.d.ts.map +1 -1
  475. package/development/notification.js +212 -146
  476. package/development/option/optgroup/optgroup-base-element.d.ts +3 -3
  477. package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  478. package/development/option/optgroup/optgroup.d.ts.map +1 -1
  479. package/development/option/optgroup.js +187 -142
  480. package/development/option/option/option-base-element.d.ts +7 -7
  481. package/development/option/option/option-base-element.d.ts.map +1 -1
  482. package/development/option/option/option.d.ts.map +1 -1
  483. package/development/option/option.js +392 -296
  484. package/development/overlay/overlay-base-element.d.ts +1 -1
  485. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  486. package/development/overlay/overlay.d.ts +4 -4
  487. package/development/overlay/overlay.d.ts.map +1 -1
  488. package/development/overlay.js +260 -207
  489. package/development/paginator/common/paginator-common.d.ts +26 -0
  490. package/development/paginator/common/paginator-common.d.ts.map +1 -0
  491. package/development/paginator/common.d.ts +2 -0
  492. package/development/paginator/common.d.ts.map +1 -0
  493. package/development/paginator/common.js +189 -0
  494. package/development/paginator/compact-paginator/compact-paginator.d.ts +20 -0
  495. package/development/paginator/compact-paginator/compact-paginator.d.ts.map +1 -0
  496. package/development/paginator/compact-paginator.d.ts +2 -0
  497. package/development/paginator/compact-paginator.d.ts.map +1 -0
  498. package/development/paginator/compact-paginator.js +96 -0
  499. package/development/paginator/paginator/paginator.d.ts +51 -0
  500. package/development/paginator/paginator/paginator.d.ts.map +1 -0
  501. package/development/paginator/paginator.d.ts +1 -90
  502. package/development/paginator/paginator.d.ts.map +1 -1
  503. package/development/paginator/paginator.js +449 -0
  504. package/development/paginator.d.ts +2 -0
  505. package/development/paginator.d.ts.map +1 -1
  506. package/development/paginator.js +4 -519
  507. package/development/popover/popover/popover.d.ts +6 -7
  508. package/development/popover/popover/popover.d.ts.map +1 -1
  509. package/development/popover/popover-trigger/popover-trigger.d.ts.map +1 -1
  510. package/development/popover/popover-trigger.js +29 -30
  511. package/development/popover/popover.js +358 -303
  512. package/development/radio-button/common/radio-button-common.d.ts +1 -1
  513. package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
  514. package/development/radio-button/common.js +170 -127
  515. package/development/radio-button/radio-button/radio-button.d.ts +2 -6
  516. package/development/radio-button/radio-button/radio-button.d.ts.map +1 -1
  517. package/development/radio-button/radio-button-group/radio-button-group.d.ts +6 -6
  518. package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  519. package/development/radio-button/radio-button-group.js +269 -199
  520. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +2 -6
  521. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  522. package/development/radio-button/radio-button-panel.js +60 -48
  523. package/development/radio-button/radio-button.js +54 -40
  524. package/development/screen-reader-only/screen-reader-only.d.ts.map +1 -1
  525. package/development/screen-reader-only.js +22 -21
  526. package/development/select/select.d.ts +17 -9
  527. package/development/select/select.d.ts.map +1 -1
  528. package/development/select.js +557 -524
  529. package/development/selection-expansion-panel/selection-expansion-panel.d.ts +3 -3
  530. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  531. package/development/selection-expansion-panel.js +223 -193
  532. package/development/signet/signet.d.ts +2 -2
  533. package/development/signet/signet.d.ts.map +1 -1
  534. package/development/signet.js +65 -33
  535. package/development/skiplink-list/skiplink-list.d.ts +2 -2
  536. package/development/skiplink-list/skiplink-list.d.ts.map +1 -1
  537. package/development/skiplink-list.js +74 -41
  538. package/development/slider/slider.d.ts +7 -5
  539. package/development/slider/slider.d.ts.map +1 -1
  540. package/development/slider.js +260 -181
  541. package/development/status/status.d.ts +3 -3
  542. package/development/status/status.d.ts.map +1 -1
  543. package/development/status.js +96 -51
  544. package/development/stepper/step/step.d.ts.map +1 -1
  545. package/development/stepper/step-label/step-label.d.ts.map +1 -1
  546. package/development/stepper/step-label.js +86 -90
  547. package/development/stepper/step.js +122 -126
  548. package/development/stepper/stepper/stepper.d.ts +3 -3
  549. package/development/stepper/stepper/stepper.d.ts.map +1 -1
  550. package/development/stepper/stepper.js +291 -241
  551. package/development/table/table-wrapper/table-wrapper.d.ts.map +1 -1
  552. package/development/table/table-wrapper.js +37 -39
  553. package/development/tabs/tab/tab.d.ts.map +1 -1
  554. package/development/tabs/tab-group/tab-group.d.ts +2 -2
  555. package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
  556. package/development/tabs/tab-group.js +296 -279
  557. package/development/tabs/tab-label/tab-label.d.ts +3 -3
  558. package/development/tabs/tab-label/tab-label.d.ts.map +1 -1
  559. package/development/tabs/tab-label.js +83 -37
  560. package/development/tabs/tab.js +40 -39
  561. package/development/tag/tag/tag.d.ts +3 -5
  562. package/development/tag/tag/tag.d.ts.map +1 -1
  563. package/development/tag/tag-group/tag-group.d.ts +3 -3
  564. package/development/tag/tag-group/tag-group.d.ts.map +1 -1
  565. package/development/tag/tag-group.js +143 -88
  566. package/development/tag/tag.js +126 -89
  567. package/development/teaser/teaser.d.ts +4 -4
  568. package/development/teaser/teaser.d.ts.map +1 -1
  569. package/development/teaser-hero/teaser-hero.d.ts +3 -3
  570. package/development/teaser-hero/teaser-hero.d.ts.map +1 -1
  571. package/development/teaser-hero.js +83 -36
  572. package/development/teaser-product/common/teaser-product-common.d.ts +1 -1
  573. package/development/teaser-product/common/teaser-product-common.d.ts.map +1 -1
  574. package/development/teaser-product/common.js +51 -26
  575. package/development/teaser-product/teaser-product/teaser-product.d.ts.map +1 -1
  576. package/development/teaser-product/teaser-product-static/teaser-product-static.d.ts.map +1 -1
  577. package/development/teaser-product/teaser-product-static.js +18 -19
  578. package/development/teaser-product/teaser-product.js +18 -19
  579. package/development/teaser.js +94 -40
  580. package/development/time-input/time-input.d.ts +1 -1
  581. package/development/time-input/time-input.d.ts.map +1 -1
  582. package/development/time-input.js +225 -219
  583. package/development/timetable-occupancy/timetable-occupancy.d.ts +2 -2
  584. package/development/timetable-occupancy/timetable-occupancy.d.ts.map +1 -1
  585. package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +1 -1
  586. package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts.map +1 -1
  587. package/development/timetable-occupancy-icon.js +78 -57
  588. package/development/timetable-occupancy.js +67 -35
  589. package/development/title/title-base.d.ts +3 -3
  590. package/development/title/title-base.d.ts.map +1 -1
  591. package/development/title/title.d.ts.map +1 -1
  592. package/development/title.js +106 -58
  593. package/development/toast/toast.d.ts +4 -4
  594. package/development/toast/toast.d.ts.map +1 -1
  595. package/development/toast.js +204 -146
  596. package/development/toggle/toggle/toggle.d.ts +3 -5
  597. package/development/toggle/toggle/toggle.d.ts.map +1 -1
  598. package/development/toggle/toggle-option/toggle-option.d.ts +2 -2
  599. package/development/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  600. package/development/toggle/toggle-option.js +127 -93
  601. package/development/toggle/toggle.js +200 -163
  602. package/development/toggle-check/toggle-check.d.ts +4 -3
  603. package/development/toggle-check/toggle-check.d.ts.map +1 -1
  604. package/development/toggle-check.js +87 -49
  605. package/development/train/train/train.d.ts +5 -5
  606. package/development/train/train/train.d.ts.map +1 -1
  607. package/development/train/train-blocked-passage/train-blocked-passage.d.ts.map +1 -1
  608. package/development/train/train-blocked-passage.js +22 -21
  609. package/development/train/train-formation/train-formation.d.ts +2 -2
  610. package/development/train/train-formation/train-formation.d.ts.map +1 -1
  611. package/development/train/train-formation.js +113 -90
  612. package/development/train/train-wagon/train-wagon.d.ts +7 -9
  613. package/development/train/train-wagon/train-wagon.d.ts.map +1 -1
  614. package/development/train/train-wagon.js +166 -87
  615. package/development/train/train.js +142 -75
  616. package/development/visual-checkbox/visual-checkbox.d.ts +3 -3
  617. package/development/visual-checkbox/visual-checkbox.d.ts.map +1 -1
  618. package/development/visual-checkbox.js +79 -36
  619. package/dialog/dialog/dialog.d.ts +1 -1
  620. package/dialog/dialog/dialog.d.ts.map +1 -1
  621. package/dialog/dialog-actions/dialog-actions.d.ts.map +1 -1
  622. package/dialog/dialog-actions.js +18 -19
  623. package/dialog/dialog-content/dialog-content.d.ts.map +1 -1
  624. package/dialog/dialog-content.js +17 -18
  625. package/dialog/dialog-title/dialog-title.d.ts +3 -3
  626. package/dialog/dialog-title/dialog-title.d.ts.map +1 -1
  627. package/dialog/dialog-title.js +98 -66
  628. package/dialog/dialog.js +120 -114
  629. package/divider/divider.d.ts +1 -1
  630. package/divider/divider.d.ts.map +1 -1
  631. package/divider.js +41 -30
  632. package/expansion-panel/expansion-panel/expansion-panel.d.ts +4 -4
  633. package/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  634. package/expansion-panel/expansion-panel-content/expansion-panel-content.d.ts.map +1 -1
  635. package/expansion-panel/expansion-panel-content.js +20 -22
  636. package/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts.map +1 -1
  637. package/expansion-panel/expansion-panel-header.js +53 -61
  638. package/expansion-panel/expansion-panel.js +145 -130
  639. package/file-selector/file-selector.d.ts +26 -15
  640. package/file-selector/file-selector.d.ts.map +1 -1
  641. package/file-selector.js +227 -153
  642. package/flip-card/flip-card/flip-card.d.ts +2 -2
  643. package/flip-card/flip-card/flip-card.d.ts.map +1 -1
  644. package/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  645. package/flip-card/flip-card-details.js +36 -38
  646. package/flip-card/flip-card-summary/flip-card-summary.d.ts +1 -1
  647. package/flip-card/flip-card-summary/flip-card-summary.d.ts.map +1 -1
  648. package/flip-card/flip-card-summary.js +42 -31
  649. package/flip-card/flip-card.js +88 -69
  650. package/footer/footer.d.ts +4 -4
  651. package/footer/footer.d.ts.map +1 -1
  652. package/footer.js +78 -37
  653. package/form-error/form-error.d.ts.map +1 -1
  654. package/form-error.js +24 -25
  655. package/form-field/form-field/form-field.d.ts +10 -10
  656. package/form-field/form-field/form-field.d.ts.map +1 -1
  657. package/form-field/form-field-clear/form-field-clear.d.ts.map +1 -1
  658. package/form-field/form-field-clear.js +39 -41
  659. package/form-field/form-field.js +295 -239
  660. package/header/common/header-action-common.d.ts +2 -2
  661. package/header/common/header-action-common.d.ts.map +1 -1
  662. package/header/common.js +36 -21
  663. package/header/header/header.d.ts +4 -4
  664. package/header/header/header.d.ts.map +1 -1
  665. package/header/header-button/header-button.d.ts.map +1 -1
  666. package/header/header-button.js +14 -16
  667. package/header/header-link/header-link.d.ts.map +1 -1
  668. package/header/header-link.js +14 -14
  669. package/header/header.js +138 -109
  670. package/icon/icon-base.d.ts +3 -4
  671. package/icon/icon-base.d.ts.map +1 -1
  672. package/icon/icon-name-mixin.d.ts +1 -1
  673. package/icon/icon-name-mixin.d.ts.map +1 -1
  674. package/icon/icon.d.ts +2 -2
  675. package/icon/icon.d.ts.map +1 -1
  676. package/icon.js +230 -165
  677. package/image/image.d.ts +17 -17
  678. package/image/image.d.ts.map +1 -1
  679. package/image.js +465 -195
  680. package/index.d.ts +3 -1
  681. package/index.js +3 -1
  682. package/journey-header/journey-header.d.ts +5 -5
  683. package/journey-header/journey-header.d.ts.map +1 -1
  684. package/journey-header.js +89 -49
  685. package/lead-container/lead-container.d.ts.map +1 -1
  686. package/lead-container.js +17 -18
  687. package/link/block-link/block-link.d.ts.map +1 -1
  688. package/link/block-link-button/block-link-button.d.ts.map +1 -1
  689. package/link/block-link-button.js +15 -17
  690. package/link/block-link-static/block-link-static.d.ts.map +1 -1
  691. package/link/block-link-static.js +14 -16
  692. package/link/block-link.js +15 -17
  693. package/link/common/block-link-common.d.ts +4 -3
  694. package/link/common/block-link-common.d.ts.map +1 -1
  695. package/link/common/link-common.d.ts +1 -1
  696. package/link/common/link-common.d.ts.map +1 -1
  697. package/link/common.js +64 -46
  698. package/link/link/link.d.ts.map +1 -1
  699. package/link/link-button/link-button.d.ts.map +1 -1
  700. package/link/link-button.js +15 -17
  701. package/link/link-static/link-static.d.ts.map +1 -1
  702. package/link/link-static.js +15 -17
  703. package/link/link.js +15 -17
  704. package/link-list/common/link-list-base.d.ts +3 -3
  705. package/link-list/common/link-list-base.d.ts.map +1 -1
  706. package/link-list/common.js +72 -44
  707. package/link-list/link-list/link-list.d.ts +2 -2
  708. package/link-list/link-list/link-list.d.ts.map +1 -1
  709. package/link-list/link-list-anchor/link-list-anchor.d.ts.map +1 -1
  710. package/link-list/link-list-anchor.js +15 -16
  711. package/link-list/link-list.js +43 -24
  712. package/loading-indicator/loading-indicator.d.ts +3 -3
  713. package/loading-indicator/loading-indicator.d.ts.map +1 -1
  714. package/loading-indicator.js +61 -36
  715. package/logo/logo.d.ts +2 -2
  716. package/logo/logo.d.ts.map +1 -1
  717. package/logo.js +47 -27
  718. package/map-container/map-container.d.ts +2 -2
  719. package/map-container/map-container.d.ts.map +1 -1
  720. package/map-container.js +84 -65
  721. package/menu/common/menu-action-common.d.ts +2 -2
  722. package/menu/common/menu-action-common.d.ts.map +1 -1
  723. package/menu/common.js +37 -22
  724. package/menu/menu/menu.d.ts +1 -1
  725. package/menu/menu/menu.d.ts.map +1 -1
  726. package/menu/menu-button/menu-button.d.ts.map +1 -1
  727. package/menu/menu-button.js +14 -16
  728. package/menu/menu-link/menu-link.d.ts.map +1 -1
  729. package/menu/menu-link.js +15 -17
  730. package/menu/menu.js +175 -170
  731. package/message/message.d.ts +2 -2
  732. package/message/message.d.ts.map +1 -1
  733. package/message.js +47 -27
  734. package/navigation/common/navigation-action-common.d.ts +1 -1
  735. package/navigation/common/navigation-action-common.d.ts.map +1 -1
  736. package/navigation/common.js +38 -33
  737. package/navigation/navigation/navigation.d.ts +2 -2
  738. package/navigation/navigation/navigation.d.ts.map +1 -1
  739. package/navigation/navigation-button/navigation-button.d.ts.map +1 -1
  740. package/navigation/navigation-button.js +14 -16
  741. package/navigation/navigation-link/navigation-link.d.ts.map +1 -1
  742. package/navigation/navigation-link.js +14 -16
  743. package/navigation/navigation-list/navigation-list.d.ts +1 -1
  744. package/navigation/navigation-list/navigation-list.d.ts.map +1 -1
  745. package/navigation/navigation-list.js +48 -35
  746. package/navigation/navigation-marker/navigation-marker.d.ts +1 -1
  747. package/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  748. package/navigation/navigation-marker.js +77 -69
  749. package/navigation/navigation-section/navigation-section.d.ts +3 -3
  750. package/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  751. package/navigation/navigation-section.js +192 -171
  752. package/navigation/navigation.js +185 -181
  753. package/notification/notification.d.ts +6 -6
  754. package/notification/notification.d.ts.map +1 -1
  755. package/notification.js +147 -116
  756. package/option/optgroup/optgroup-base-element.d.ts +3 -3
  757. package/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  758. package/option/optgroup/optgroup.d.ts.map +1 -1
  759. package/option/optgroup.js +131 -112
  760. package/option/option/option-base-element.d.ts +7 -7
  761. package/option/option/option-base-element.d.ts.map +1 -1
  762. package/option/option/option.d.ts.map +1 -1
  763. package/option/option.js +295 -252
  764. package/overlay/overlay-base-element.d.ts +1 -1
  765. package/overlay/overlay-base-element.d.ts.map +1 -1
  766. package/overlay/overlay.d.ts +4 -4
  767. package/overlay/overlay.d.ts.map +1 -1
  768. package/overlay.js +194 -165
  769. package/package.json +19 -3
  770. package/paginator/common/paginator-common.d.ts +26 -0
  771. package/paginator/common/paginator-common.d.ts.map +1 -0
  772. package/paginator/common.d.ts +2 -0
  773. package/paginator/common.d.ts.map +1 -0
  774. package/paginator/common.js +145 -0
  775. package/paginator/compact-paginator/compact-paginator.d.ts +20 -0
  776. package/paginator/compact-paginator/compact-paginator.d.ts.map +1 -0
  777. package/paginator/compact-paginator.d.ts +2 -0
  778. package/paginator/compact-paginator.d.ts.map +1 -0
  779. package/paginator/compact-paginator.js +40 -0
  780. package/paginator/paginator/paginator.d.ts +51 -0
  781. package/paginator/paginator/paginator.d.ts.map +1 -0
  782. package/paginator/paginator.d.ts +1 -90
  783. package/paginator/paginator.d.ts.map +1 -1
  784. package/paginator/paginator.js +171 -0
  785. package/paginator.d.ts +2 -0
  786. package/paginator.d.ts.map +1 -1
  787. package/paginator.js +3 -263
  788. package/popover/popover/popover.d.ts +6 -7
  789. package/popover/popover/popover.d.ts.map +1 -1
  790. package/popover/popover-trigger/popover-trigger.d.ts.map +1 -1
  791. package/popover/popover-trigger.js +26 -29
  792. package/popover/popover.js +230 -208
  793. package/radio-button/common/radio-button-common.d.ts +1 -1
  794. package/radio-button/common/radio-button-common.d.ts.map +1 -1
  795. package/radio-button/common.js +67 -43
  796. package/radio-button/radio-button/radio-button.d.ts +2 -6
  797. package/radio-button/radio-button/radio-button.d.ts.map +1 -1
  798. package/radio-button/radio-button-group/radio-button-group.d.ts +6 -6
  799. package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  800. package/radio-button/radio-button-group.js +192 -156
  801. package/radio-button/radio-button-panel/radio-button-panel.d.ts +2 -6
  802. package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  803. package/radio-button/radio-button-panel.js +49 -45
  804. package/radio-button/radio-button.js +43 -37
  805. package/screen-reader-only/screen-reader-only.d.ts.map +1 -1
  806. package/screen-reader-only.js +17 -18
  807. package/select/select.d.ts +17 -9
  808. package/select/select.d.ts.map +1 -1
  809. package/select.js +377 -373
  810. package/selection-expansion-panel/selection-expansion-panel.d.ts +3 -3
  811. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  812. package/selection-expansion-panel.js +157 -148
  813. package/signet/signet.d.ts +2 -2
  814. package/signet/signet.d.ts.map +1 -1
  815. package/signet.js +48 -28
  816. package/skiplink-list/skiplink-list.d.ts +2 -2
  817. package/skiplink-list/skiplink-list.d.ts.map +1 -1
  818. package/skiplink-list.js +54 -36
  819. package/slider/slider.d.ts +7 -5
  820. package/slider/slider.d.ts.map +1 -1
  821. package/slider.js +197 -155
  822. package/standard-theme.css +5 -1
  823. package/status/status.d.ts +3 -3
  824. package/status/status.d.ts.map +1 -1
  825. package/status.js +71 -46
  826. package/stepper/step/step.d.ts.map +1 -1
  827. package/stepper/step-label/step-label.d.ts.map +1 -1
  828. package/stepper/step-label.js +69 -75
  829. package/stepper/step.js +99 -104
  830. package/stepper/stepper/stepper.d.ts +3 -3
  831. package/stepper/stepper/stepper.d.ts.map +1 -1
  832. package/stepper/stepper.js +208 -188
  833. package/table/table-wrapper/table-wrapper.d.ts.map +1 -1
  834. package/table/table-wrapper.js +32 -36
  835. package/tabs/tab/tab.d.ts.map +1 -1
  836. package/tabs/tab-group/tab-group.d.ts +2 -2
  837. package/tabs/tab-group/tab-group.d.ts.map +1 -1
  838. package/tabs/tab-group.js +200 -193
  839. package/tabs/tab-label/tab-label.d.ts +3 -3
  840. package/tabs/tab-label/tab-label.d.ts.map +1 -1
  841. package/tabs/tab-label.js +65 -37
  842. package/tabs/tab.js +34 -35
  843. package/tag/tag/tag.d.ts +3 -5
  844. package/tag/tag/tag.d.ts.map +1 -1
  845. package/tag/tag-group/tag-group.d.ts +3 -3
  846. package/tag/tag-group/tag-group.d.ts.map +1 -1
  847. package/tag/tag-group.js +107 -75
  848. package/tag/tag.js +92 -73
  849. package/teaser/teaser.d.ts +4 -4
  850. package/teaser/teaser.d.ts.map +1 -1
  851. package/teaser-hero/teaser-hero.d.ts +3 -3
  852. package/teaser-hero/teaser-hero.d.ts.map +1 -1
  853. package/teaser-hero.js +66 -38
  854. package/teaser-product/common/teaser-product-common.d.ts +1 -1
  855. package/teaser-product/common/teaser-product-common.d.ts.map +1 -1
  856. package/teaser-product/common.js +36 -21
  857. package/teaser-product/teaser-product/teaser-product.d.ts.map +1 -1
  858. package/teaser-product/teaser-product-static/teaser-product-static.d.ts.map +1 -1
  859. package/teaser-product/teaser-product-static.js +14 -17
  860. package/teaser-product/teaser-product.js +14 -17
  861. package/teaser.js +69 -37
  862. package/time-input/time-input.d.ts +1 -1
  863. package/time-input/time-input.d.ts.map +1 -1
  864. package/time-input.js +160 -166
  865. package/timetable-occupancy/timetable-occupancy.d.ts +2 -2
  866. package/timetable-occupancy/timetable-occupancy.d.ts.map +1 -1
  867. package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +1 -1
  868. package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts.map +1 -1
  869. package/timetable-occupancy-icon.js +60 -48
  870. package/timetable-occupancy.js +55 -38
  871. package/title/title-base.d.ts +3 -3
  872. package/title/title-base.d.ts.map +1 -1
  873. package/title/title.d.ts.map +1 -1
  874. package/title.js +81 -53
  875. package/toast/toast.d.ts +4 -4
  876. package/toast/toast.d.ts.map +1 -1
  877. package/toast.js +156 -123
  878. package/toggle/toggle/toggle.d.ts +3 -5
  879. package/toggle/toggle/toggle.d.ts.map +1 -1
  880. package/toggle/toggle-option/toggle-option.d.ts +2 -2
  881. package/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  882. package/toggle/toggle-option.js +89 -72
  883. package/toggle/toggle.js +139 -122
  884. package/toggle-check/toggle-check.d.ts +4 -3
  885. package/toggle-check/toggle-check.d.ts.map +1 -1
  886. package/toggle-check.js +63 -41
  887. package/train/train/train.d.ts +5 -5
  888. package/train/train/train.d.ts.map +1 -1
  889. package/train/train-blocked-passage/train-blocked-passage.d.ts.map +1 -1
  890. package/train/train-blocked-passage.js +17 -18
  891. package/train/train-formation/train-formation.d.ts +2 -2
  892. package/train/train-formation/train-formation.d.ts.map +1 -1
  893. package/train/train-formation.js +96 -87
  894. package/train/train-wagon/train-wagon.d.ts +7 -9
  895. package/train/train-wagon/train-wagon.d.ts.map +1 -1
  896. package/train/train-wagon.js +150 -110
  897. package/train/train.js +108 -71
  898. package/visual-checkbox/visual-checkbox.d.ts +3 -3
  899. package/visual-checkbox/visual-checkbox.d.ts.map +1 -1
  900. package/visual-checkbox.js +59 -32
  901. package/autocomplete-grid/autocomplete-grid-optgroup/index.d.ts +0 -2
  902. package/autocomplete-grid/autocomplete-grid-optgroup/index.d.ts.map +0 -1
  903. package/button/mini-button-group/index.d.ts +0 -2
  904. package/button/mini-button-group/index.d.ts.map +0 -1
  905. package/development/autocomplete-grid/autocomplete-grid-optgroup/index.d.ts +0 -2
  906. package/development/autocomplete-grid/autocomplete-grid-optgroup/index.d.ts.map +0 -1
  907. package/development/button/mini-button-group/index.d.ts +0 -2
  908. package/development/button/mini-button-group/index.d.ts.map +0 -1
  909. package/development/flip-card/flip-card/index.d.ts +0 -2
  910. package/development/flip-card/flip-card/index.d.ts.map +0 -1
  911. package/development/flip-card/flip-card-details/index.d.ts +0 -2
  912. package/development/flip-card/flip-card-details/index.d.ts.map +0 -1
  913. package/development/flip-card/flip-card-summary/index.d.ts +0 -2
  914. package/development/flip-card/flip-card-summary/index.d.ts.map +0 -1
  915. package/development/link-list/link-list-anchor/index.d.ts +0 -2
  916. package/development/link-list/link-list-anchor/index.d.ts.map +0 -1
  917. package/development/paginator/index.d.ts +0 -2
  918. package/development/paginator/index.d.ts.map +0 -1
  919. package/development/radio-button/radio-button-panel/index.d.ts +0 -2
  920. package/development/radio-button/radio-button-panel/index.d.ts.map +0 -1
  921. package/development/tabs/tab/index.d.ts +0 -2
  922. package/development/tabs/tab/index.d.ts.map +0 -1
  923. package/flip-card/flip-card/index.d.ts +0 -2
  924. package/flip-card/flip-card/index.d.ts.map +0 -1
  925. package/flip-card/flip-card-details/index.d.ts +0 -2
  926. package/flip-card/flip-card-details/index.d.ts.map +0 -1
  927. package/flip-card/flip-card-summary/index.d.ts +0 -2
  928. package/flip-card/flip-card-summary/index.d.ts.map +0 -1
  929. package/link-list/link-list-anchor/index.d.ts +0 -2
  930. package/link-list/link-list-anchor/index.d.ts.map +0 -1
  931. package/paginator/index.d.ts +0 -2
  932. package/paginator/index.d.ts.map +0 -1
  933. package/radio-button/radio-button-panel/index.d.ts +0 -2
  934. package/radio-button/radio-button-panel/index.d.ts.map +0 -1
  935. package/tabs/tab/index.d.ts +0 -2
  936. package/tabs/tab/index.d.ts.map +0 -1
@@ -1,6 +1,14 @@
1
+ var __typeError = (msg) => {
2
+ throw TypeError(msg);
3
+ };
4
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
+ import { __esDecorate, __runInitializers } from "tslib";
1
9
  import { LitElement, html, nothing, css } from "lit";
2
10
  import { property, state, customElement } from "lit/decorators.js";
3
- import { slotState, hostAttributes } from "../core/decorators.js";
11
+ import { slotState, forceType, hostAttributes } from "../core/decorators.js";
4
12
  import { EventEmitter } from "../core/eventing.js";
5
13
  import { MutationController } from "@lit-labs/observers/mutation-controller.js";
6
14
  import { SbbConnectedAbortController } from "../core/controllers.js";
@@ -9,181 +17,263 @@ import { SbbDisabledMixin, SbbHydrationMixin } from "../core/mixins.js";
9
17
  import { SbbIconNameMixin } from "../icon.js";
10
18
  import "../screen-reader-only.js";
11
19
  import "../visual-checkbox.js";
12
- var __defProp$1 = Object.defineProperty;
13
- var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
14
- var __decorateClass$1 = (decorators, target, key, kind) => {
15
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;
16
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
17
- if (decorator = decorators[i])
18
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
19
- if (kind && result) __defProp$1(target, key, result);
20
- return result;
21
- };
22
20
  let nextId = 0;
23
21
  const inertAriaGroups = isSafari;
24
22
  const optionObserverConfig = {
25
23
  attributeFilter: ["data-group-disabled", "data-negative"]
26
24
  };
27
- let SbbOptionBaseElement = class extends SbbDisabledMixin(
28
- SbbIconNameMixin(SbbHydrationMixin(LitElement))
29
- ) {
30
- constructor() {
31
- super();
32
- this.negative = false;
33
- this.disabledFromGroup = false;
34
- this.disableLabelHighlight = false;
35
- this._highlightString = null;
36
- this._inertAriaGroups = false;
37
- this._abort = new SbbConnectedAbortController(this);
38
- new MutationController(this, {
39
- config: optionObserverConfig,
40
- callback: (mutationsList) => this.onOptionAttributesChange(mutationsList)
41
- });
42
- if (inertAriaGroups) {
25
+ let SbbOptionBaseElement = (() => {
26
+ var _active_accessor_storage, _negative_accessor_storage, _disabledFromGroup_accessor_storage, _label_accessor_storage, _disableLabelHighlight_accessor_storage, __highlightString_accessor_storage, __inertAriaGroups_accessor_storage, _a;
27
+ let _classDecorators = [slotState()];
28
+ let _classDescriptor;
29
+ let _classExtraInitializers = [];
30
+ let _classThis;
31
+ let _classSuper = SbbDisabledMixin(SbbIconNameMixin(SbbHydrationMixin(LitElement)));
32
+ let _instanceExtraInitializers = [];
33
+ let _set_value_decorators;
34
+ let _active_decorators;
35
+ let _active_initializers = [];
36
+ let _active_extraInitializers = [];
37
+ let _set_selected_decorators;
38
+ let _negative_decorators;
39
+ let _negative_initializers = [];
40
+ let _negative_extraInitializers = [];
41
+ let _disabledFromGroup_decorators;
42
+ let _disabledFromGroup_initializers = [];
43
+ let _disabledFromGroup_extraInitializers = [];
44
+ let _label_decorators;
45
+ let _label_initializers = [];
46
+ let _label_extraInitializers = [];
47
+ let _disableLabelHighlight_decorators;
48
+ let _disableLabelHighlight_initializers = [];
49
+ let _disableLabelHighlight_extraInitializers = [];
50
+ let __highlightString_decorators;
51
+ let __highlightString_initializers = [];
52
+ let __highlightString_extraInitializers = [];
53
+ let __inertAriaGroups_decorators;
54
+ let __inertAriaGroups_initializers = [];
55
+ let __inertAriaGroups_extraInitializers = [];
56
+ _a = class extends _classSuper {
57
+ constructor() {
58
+ super();
59
+ __privateAdd(this, _active_accessor_storage);
60
+ __privateAdd(this, _negative_accessor_storage);
61
+ __privateAdd(this, _disabledFromGroup_accessor_storage);
62
+ __privateAdd(this, _label_accessor_storage);
63
+ __privateAdd(this, _disableLabelHighlight_accessor_storage);
64
+ __privateAdd(this, __highlightString_accessor_storage);
65
+ __privateAdd(this, __inertAriaGroups_accessor_storage);
66
+ __privateSet(this, _active_accessor_storage, (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _active_initializers, false)));
67
+ __privateSet(this, _negative_accessor_storage, (__runInitializers(this, _active_extraInitializers), __runInitializers(this, _negative_initializers, false)));
68
+ __privateSet(this, _disabledFromGroup_accessor_storage, (__runInitializers(this, _negative_extraInitializers), __runInitializers(this, _disabledFromGroup_initializers, false)));
69
+ __privateSet(this, _label_accessor_storage, (__runInitializers(this, _disabledFromGroup_extraInitializers), __runInitializers(this, _label_initializers, void 0)));
70
+ __privateSet(this, _disableLabelHighlight_accessor_storage, (__runInitializers(this, _label_extraInitializers), __runInitializers(this, _disableLabelHighlight_initializers, false)));
71
+ __privateSet(this, __highlightString_accessor_storage, (__runInitializers(this, _disableLabelHighlight_extraInitializers), __runInitializers(this, __highlightString_initializers, null)));
72
+ __privateSet(this, __inertAriaGroups_accessor_storage, (__runInitializers(this, __highlightString_extraInitializers), __runInitializers(this, __inertAriaGroups_initializers, false)));
73
+ this._abort = (__runInitializers(this, __inertAriaGroups_extraInitializers), new SbbConnectedAbortController(this));
74
+ new MutationController(this, {
75
+ config: optionObserverConfig,
76
+ callback: (mutationsList) => this.onOptionAttributesChange(mutationsList)
77
+ });
78
+ if (inertAriaGroups) {
79
+ if (this.hydrationRequired) {
80
+ this.hydrationComplete.then(() => this._inertAriaGroups = inertAriaGroups);
81
+ } else {
82
+ this._inertAriaGroups = inertAriaGroups;
83
+ }
84
+ }
85
+ }
86
+ /**
87
+ * Value of the option.
88
+ *
89
+ * @description Developer note: In this case updating the attribute must be synchronous.
90
+ * Due to this, it is implemented as a getter/setter and the attributeChangedCallback() handles the diff check.
91
+ */
92
+ set value(value) {
93
+ this.setAttribute("value", `${value}`);
94
+ }
95
+ get value() {
96
+ return this.getAttribute("value") ?? "";
97
+ }
98
+ /**
99
+ * Whether the option is currently active.
100
+ * TODO: remove with next major version.
101
+ * @deprecated
102
+ * @internal
103
+ */
104
+ get active() {
105
+ return __privateGet(this, _active_accessor_storage);
106
+ }
107
+ set active(value) {
108
+ __privateSet(this, _active_accessor_storage, value);
109
+ }
110
+ /** Whether the option is selected. */
111
+ set selected(value) {
112
+ this.toggleAttribute("selected", value);
113
+ this._updateAriaSelected();
114
+ }
115
+ get selected() {
116
+ return this.hasAttribute("selected");
117
+ }
118
+ /** Whether to apply the negative styling */
119
+ get negative() {
120
+ return __privateGet(this, _negative_accessor_storage);
121
+ }
122
+ set negative(value) {
123
+ __privateSet(this, _negative_accessor_storage, value);
124
+ }
125
+ /** Whether the component must be set disabled due disabled attribute on sbb-optgroup. */
126
+ get disabledFromGroup() {
127
+ return __privateGet(this, _disabledFromGroup_accessor_storage);
128
+ }
129
+ set disabledFromGroup(value) {
130
+ __privateSet(this, _disabledFromGroup_accessor_storage, value);
131
+ }
132
+ get label() {
133
+ return __privateGet(this, _label_accessor_storage);
134
+ }
135
+ set label(value) {
136
+ __privateSet(this, _label_accessor_storage, value);
137
+ }
138
+ /** Disable the highlight of the label. */
139
+ get disableLabelHighlight() {
140
+ return __privateGet(this, _disableLabelHighlight_accessor_storage);
141
+ }
142
+ set disableLabelHighlight(value) {
143
+ __privateSet(this, _disableLabelHighlight_accessor_storage, value);
144
+ }
145
+ /** The portion of the highlighted label. */
146
+ get _highlightString() {
147
+ return __privateGet(this, __highlightString_accessor_storage);
148
+ }
149
+ set _highlightString(value) {
150
+ __privateSet(this, __highlightString_accessor_storage, value);
151
+ }
152
+ get _inertAriaGroups() {
153
+ return __privateGet(this, __inertAriaGroups_accessor_storage);
154
+ }
155
+ set _inertAriaGroups(value) {
156
+ __privateSet(this, __inertAriaGroups_accessor_storage, value);
157
+ }
158
+ attributeChangedCallback(name, old, value) {
159
+ if (name !== "value" || old !== value) {
160
+ super.attributeChangedCallback(name, old, value);
161
+ }
162
+ }
163
+ /**
164
+ * Highlight the label of the option
165
+ * @param value the highlighted portion of the label
166
+ * @internal
167
+ */
168
+ highlight(value) {
169
+ this._highlightString = value;
170
+ }
171
+ /**
172
+ * @internal
173
+ */
174
+ setSelectedViaUserInteraction(selected) {
175
+ this.selected = selected;
176
+ this.selectionChange.emit();
177
+ if (this.selected) {
178
+ this.optionSelected.emit();
179
+ }
180
+ }
181
+ connectedCallback() {
182
+ super.connectedCallback();
183
+ this.id || (this.id = `${this.optionId}-${nextId++}`);
43
184
  if (this.hydrationRequired) {
44
- this.hydrationComplete.then(() => this._inertAriaGroups = inertAriaGroups);
185
+ this.hydrationComplete.then(() => this.init());
45
186
  } else {
46
- this._inertAriaGroups = inertAriaGroups;
187
+ this.init();
47
188
  }
48
189
  }
49
- }
50
- set value(value) {
51
- this.setAttribute("value", `${value}`);
52
- }
53
- get value() {
54
- return this.getAttribute("value") ?? "";
55
- }
56
- set selected(value) {
57
- this.toggleAttribute("selected", value);
58
- this._updateAriaSelected();
59
- }
60
- get selected() {
61
- return this.hasAttribute("selected");
62
- }
63
- attributeChangedCallback(name, old, value) {
64
- if (name !== "value" || old !== value) {
65
- super.attributeChangedCallback(name, old, value);
190
+ willUpdate(changedProperties) {
191
+ super.willUpdate(changedProperties);
192
+ if (changedProperties.has("disabled")) {
193
+ setOrRemoveAttribute(this, "tabindex", isAndroid && !this.disabled && 0);
194
+ this.updateAriaDisabled();
195
+ }
66
196
  }
67
- }
68
- /**
69
- * Highlight the label of the option
70
- * @param value the highlighted portion of the label
71
- * @internal
72
- */
73
- highlight(value) {
74
- this._highlightString = value;
75
- }
76
- /**
77
- * @internal
78
- */
79
- setSelectedViaUserInteraction(selected) {
80
- this.selected = selected;
81
- this.selectionChange.emit();
82
- if (this.selected) {
83
- this.optionSelected.emit();
197
+ firstUpdated(changedProperties) {
198
+ super.firstUpdated(changedProperties);
199
+ this._updateAriaSelected();
84
200
  }
85
- }
86
- connectedCallback() {
87
- super.connectedCallback();
88
- this.id || (this.id = `${this.optionId}-${nextId++}`);
89
- if (this.hydrationRequired) {
90
- this.hydrationComplete.then(() => this.init());
91
- } else {
92
- this.init();
201
+ updateDisableHighlight(disabled) {
202
+ this.disableLabelHighlight = disabled;
203
+ this.toggleAttribute("data-disable-highlight", disabled);
93
204
  }
94
- }
95
- willUpdate(changedProperties) {
96
- super.willUpdate(changedProperties);
97
- if (changedProperties.has("disabled")) {
98
- setOrRemoveAttribute(this, "tabindex", isAndroid && !this.disabled && 0);
99
- this.updateAriaDisabled();
205
+ /**
206
+ * Whether the option is currently active.
207
+ * @internal
208
+ */
209
+ setActive(value) {
210
+ this.toggleAttribute("data-active", value);
100
211
  }
101
- }
102
- firstUpdated(changedProperties) {
103
- super.firstUpdated(changedProperties);
104
- this._updateAriaSelected();
105
- }
106
- updateDisableHighlight(disabled) {
107
- this.disableLabelHighlight = disabled;
108
- this.toggleAttribute("data-disable-highlight", disabled);
109
- }
110
- /**
111
- * Whether the option is currently active.
112
- * @internal
113
- */
114
- setActive(value) {
115
- this.toggleAttribute("data-active", value);
116
- }
117
- init() {
118
- this.setAttributeFromParent();
119
- const signal = this._abort.signal;
120
- this.addEventListener("click", (e) => this.selectByClick(e), {
121
- signal,
122
- passive: true
123
- });
124
- }
125
- updateAriaDisabled() {
126
- setOrRemoveAttribute(
127
- this,
128
- "aria-disabled",
129
- this.disabled || this.disabledFromGroup ? "true" : null
130
- );
131
- }
132
- _updateAriaSelected() {
133
- this.setAttribute("aria-selected", `${this.selected}`);
134
- }
135
- /** Observe changes on data attributes and set the appropriate values. */
136
- onOptionAttributesChange(mutationsList) {
137
- for (const mutation of mutationsList) {
138
- if (mutation.attributeName === "data-group-disabled") {
139
- this.disabledFromGroup = this.hasAttribute("data-group-disabled");
140
- this.updateAriaDisabled();
141
- } else if (mutation.attributeName === "data-negative") {
142
- this.negative = this.hasAttribute("data-negative");
212
+ init() {
213
+ this.setAttributeFromParent();
214
+ const signal = this._abort.signal;
215
+ this.addEventListener("click", (e) => this.selectByClick(e), {
216
+ signal,
217
+ passive: true
218
+ });
219
+ }
220
+ updateAriaDisabled() {
221
+ if (this.disabled || this.disabledFromGroup) {
222
+ this.setAttribute("aria-disabled", "true");
223
+ } else {
224
+ this.removeAttribute("aria-disabled");
143
225
  }
144
226
  }
145
- }
146
- handleHighlightState() {
147
- const slotNodes = Array.from(this.childNodes ?? []).filter(
148
- (n) => n.nodeType !== Node.COMMENT_NODE && (!(n instanceof Element) || n.slot !== "icon")
149
- );
150
- const labelNodes = slotNodes.filter((el) => el.nodeType === Node.TEXT_NODE);
151
- if (labelNodes.length === 0 || slotNodes.filter((n) => !(n instanceof Element) || n.localName !== "template").length !== labelNodes.length) {
152
- this.updateDisableHighlight(true);
153
- return;
154
- }
155
- this.label = labelNodes.map((l) => l.wholeText).filter((l) => l.trim()).join();
156
- }
157
- getHighlightedLabel() {
158
- if (!this._highlightString || !this._highlightString.trim()) {
159
- return html`${this.label}`;
160
- }
161
- const matchIndex = this.label.toLowerCase().indexOf(this._highlightString.toLowerCase());
162
- if (matchIndex === -1) {
163
- return html`${this.label}`;
164
- }
165
- const prefix = this.label.substring(0, matchIndex);
166
- const highlighted = this.label.substring(
167
- matchIndex,
168
- matchIndex + this._highlightString.length
169
- );
170
- const postfix = this.label.substring(matchIndex + this._highlightString.length);
171
- return html`
227
+ _updateAriaSelected() {
228
+ this.setAttribute("aria-selected", `${this.selected}`);
229
+ }
230
+ /** Observe changes on data attributes and set the appropriate values. */
231
+ onOptionAttributesChange(mutationsList) {
232
+ for (const mutation of mutationsList) {
233
+ if (mutation.attributeName === "data-group-disabled") {
234
+ this.disabledFromGroup = this.hasAttribute("data-group-disabled");
235
+ this.updateAriaDisabled();
236
+ } else if (mutation.attributeName === "data-negative") {
237
+ this.negative = this.hasAttribute("data-negative");
238
+ }
239
+ }
240
+ }
241
+ handleHighlightState() {
242
+ const slotNodes = Array.from(this.childNodes ?? []).filter((n) => n.nodeType !== Node.COMMENT_NODE && (!(n instanceof Element) || n.slot !== "icon"));
243
+ const labelNodes = slotNodes.filter((el) => el.nodeType === Node.TEXT_NODE);
244
+ if (labelNodes.length === 0 || slotNodes.filter((n) => !(n instanceof Element) || n.localName !== "template").length !== labelNodes.length) {
245
+ this.updateDisableHighlight(true);
246
+ return;
247
+ }
248
+ this.label = labelNodes.map((l) => l.wholeText).filter((l) => l.trim()).join();
249
+ }
250
+ getHighlightedLabel() {
251
+ if (!this._highlightString || !this._highlightString.trim()) {
252
+ return html`${this.label}`;
253
+ }
254
+ const matchIndex = this.label.toLowerCase().indexOf(this._highlightString.toLowerCase());
255
+ if (matchIndex === -1) {
256
+ return html`${this.label}`;
257
+ }
258
+ const prefix = this.label.substring(0, matchIndex);
259
+ const highlighted = this.label.substring(matchIndex, matchIndex + this._highlightString.length);
260
+ const postfix = this.label.substring(matchIndex + this._highlightString.length);
261
+ return html`
172
262
  <span class="sbb-option__label--highlight">${prefix}</span><span>${highlighted}</span
173
263
  ><span class="sbb-option__label--highlight">${postfix}</span>
174
264
  `;
175
- }
176
- renderIcon() {
177
- return html` <span class="sbb-option__icon"> ${this.renderIconSlot()} </span>`;
178
- }
179
- renderLabel() {
180
- return this.label && !this.disableLabelHighlight ? this.getHighlightedLabel() : nothing;
181
- }
182
- renderTick() {
183
- return nothing;
184
- }
185
- render() {
186
- return html`
265
+ }
266
+ renderIcon() {
267
+ return html` <span class="sbb-option__icon"> ${this.renderIconSlot()} </span>`;
268
+ }
269
+ renderLabel() {
270
+ return this.label && !this.disableLabelHighlight ? this.getHighlightedLabel() : nothing;
271
+ }
272
+ renderTick() {
273
+ return nothing;
274
+ }
275
+ render() {
276
+ return html`
187
277
  <div class="sbb-option__container">
188
278
  <div class="sbb-option">
189
279
  ${this.renderIcon()}
@@ -198,38 +288,52 @@ let SbbOptionBaseElement = class extends SbbDisabledMixin(
198
288
  </div>
199
289
  </div>
200
290
  `;
201
- }
202
- };
203
- __decorateClass$1([
204
- property()
205
- ], SbbOptionBaseElement.prototype, "value", 1);
206
- __decorateClass$1([
207
- property({ reflect: true, type: Boolean })
208
- ], SbbOptionBaseElement.prototype, "active", 2);
209
- __decorateClass$1([
210
- property({ type: Boolean })
211
- ], SbbOptionBaseElement.prototype, "selected", 1);
212
- __decorateClass$1([
213
- state()
214
- ], SbbOptionBaseElement.prototype, "negative", 2);
215
- __decorateClass$1([
216
- state()
217
- ], SbbOptionBaseElement.prototype, "disabledFromGroup", 2);
218
- __decorateClass$1([
219
- state()
220
- ], SbbOptionBaseElement.prototype, "label", 2);
221
- __decorateClass$1([
222
- state()
223
- ], SbbOptionBaseElement.prototype, "disableLabelHighlight", 2);
224
- __decorateClass$1([
225
- state()
226
- ], SbbOptionBaseElement.prototype, "_highlightString", 2);
227
- __decorateClass$1([
228
- state()
229
- ], SbbOptionBaseElement.prototype, "_inertAriaGroups", 2);
230
- SbbOptionBaseElement = __decorateClass$1([
231
- slotState()
232
- ], SbbOptionBaseElement);
291
+ }
292
+ }, _active_accessor_storage = new WeakMap(), _negative_accessor_storage = new WeakMap(), _disabledFromGroup_accessor_storage = new WeakMap(), _label_accessor_storage = new WeakMap(), _disableLabelHighlight_accessor_storage = new WeakMap(), __highlightString_accessor_storage = new WeakMap(), __inertAriaGroups_accessor_storage = new WeakMap(), _classThis = _a, (() => {
293
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
294
+ _set_value_decorators = [property()];
295
+ _active_decorators = [forceType(), property({ reflect: true, type: Boolean })];
296
+ _set_selected_decorators = [property({ type: Boolean })];
297
+ _negative_decorators = [state()];
298
+ _disabledFromGroup_decorators = [state()];
299
+ _label_decorators = [state()];
300
+ _disableLabelHighlight_decorators = [state()];
301
+ __highlightString_decorators = [state()];
302
+ __inertAriaGroups_decorators = [state()];
303
+ __esDecorate(_a, null, _set_value_decorators, { kind: "setter", name: "value", static: false, private: false, access: { has: (obj) => "value" in obj, set: (obj, value) => {
304
+ obj.value = value;
305
+ } }, metadata: _metadata }, null, _instanceExtraInitializers);
306
+ __esDecorate(_a, null, _active_decorators, { kind: "accessor", name: "active", static: false, private: false, access: { has: (obj) => "active" in obj, get: (obj) => obj.active, set: (obj, value) => {
307
+ obj.active = value;
308
+ } }, metadata: _metadata }, _active_initializers, _active_extraInitializers);
309
+ __esDecorate(_a, null, _set_selected_decorators, { kind: "setter", name: "selected", static: false, private: false, access: { has: (obj) => "selected" in obj, set: (obj, value) => {
310
+ obj.selected = value;
311
+ } }, metadata: _metadata }, null, _instanceExtraInitializers);
312
+ __esDecorate(_a, null, _negative_decorators, { kind: "accessor", name: "negative", static: false, private: false, access: { has: (obj) => "negative" in obj, get: (obj) => obj.negative, set: (obj, value) => {
313
+ obj.negative = value;
314
+ } }, metadata: _metadata }, _negative_initializers, _negative_extraInitializers);
315
+ __esDecorate(_a, null, _disabledFromGroup_decorators, { kind: "accessor", name: "disabledFromGroup", static: false, private: false, access: { has: (obj) => "disabledFromGroup" in obj, get: (obj) => obj.disabledFromGroup, set: (obj, value) => {
316
+ obj.disabledFromGroup = value;
317
+ } }, metadata: _metadata }, _disabledFromGroup_initializers, _disabledFromGroup_extraInitializers);
318
+ __esDecorate(_a, null, _label_decorators, { kind: "accessor", name: "label", static: false, private: false, access: { has: (obj) => "label" in obj, get: (obj) => obj.label, set: (obj, value) => {
319
+ obj.label = value;
320
+ } }, metadata: _metadata }, _label_initializers, _label_extraInitializers);
321
+ __esDecorate(_a, null, _disableLabelHighlight_decorators, { kind: "accessor", name: "disableLabelHighlight", static: false, private: false, access: { has: (obj) => "disableLabelHighlight" in obj, get: (obj) => obj.disableLabelHighlight, set: (obj, value) => {
322
+ obj.disableLabelHighlight = value;
323
+ } }, metadata: _metadata }, _disableLabelHighlight_initializers, _disableLabelHighlight_extraInitializers);
324
+ __esDecorate(_a, null, __highlightString_decorators, { kind: "accessor", name: "_highlightString", static: false, private: false, access: { has: (obj) => "_highlightString" in obj, get: (obj) => obj._highlightString, set: (obj, value) => {
325
+ obj._highlightString = value;
326
+ } }, metadata: _metadata }, __highlightString_initializers, __highlightString_extraInitializers);
327
+ __esDecorate(_a, null, __inertAriaGroups_decorators, { kind: "accessor", name: "_inertAriaGroups", static: false, private: false, access: { has: (obj) => "_inertAriaGroups" in obj, get: (obj) => obj._inertAriaGroups, set: (obj, value) => {
328
+ obj._inertAriaGroups = value;
329
+ } }, metadata: _metadata }, __inertAriaGroups_initializers, __inertAriaGroups_extraInitializers);
330
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
331
+ _classThis = _classDescriptor.value;
332
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
333
+ __runInitializers(_classThis, _classExtraInitializers);
334
+ })(), _a;
335
+ return _classThis;
336
+ })();
233
337
  const style = css`*,
234
338
  ::before,
235
339
  ::after {
@@ -369,96 +473,89 @@ const style = css`*,
369
473
  .sbb-option__label {
370
474
  white-space: initial;
371
475
  }`;
372
- var __defProp = Object.defineProperty;
373
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
374
- var __decorateClass = (decorators, target, key, kind) => {
375
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
376
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
377
- if (decorator = decorators[i])
378
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
379
- if (kind && result) __defProp(target, key, result);
380
- return result;
381
- };
382
- let SbbOptionElement = class extends SbbOptionBaseElement {
383
- constructor() {
384
- super(...arguments);
385
- this.optionId = `sbb-option`;
386
- this.selectionChange = new EventEmitter(
387
- this,
388
- SbbOptionElement.events.selectionChange
389
- );
390
- this.optionSelected = new EventEmitter(
391
- this,
392
- SbbOptionElement.events.optionSelected
393
- );
394
- }
395
- set _variant(state2) {
396
- if (state2) {
397
- this.setAttribute("data-variant", state2);
476
+ let SbbOptionElement = (() => {
477
+ var _a;
478
+ let _classDecorators = [customElement("sbb-option"), hostAttributes({
479
+ role: "option"
480
+ })];
481
+ let _classDescriptor;
482
+ let _classExtraInitializers = [];
483
+ let _classThis;
484
+ let _classSuper = SbbOptionBaseElement;
485
+ var SbbOptionElement2 = (_a = class extends _classSuper {
486
+ constructor() {
487
+ super(...arguments);
488
+ this.optionId = `sbb-option`;
489
+ this.selectionChange = new EventEmitter(this, SbbOptionElement2.events.selectionChange);
490
+ this.optionSelected = new EventEmitter(this, SbbOptionElement2.events.optionSelected);
398
491
  }
399
- }
400
- get _variant() {
401
- return this.getAttribute("data-variant");
402
- }
403
- set _isMultiple(isMultiple) {
404
- this.toggleAttribute("data-multiple", isMultiple);
405
- }
406
- get _isMultiple() {
407
- return !this.hydrationRequired && this.hasAttribute("data-multiple");
408
- }
409
- setAttributeFromParent() {
410
- var _a, _b;
411
- const parentGroup = (_a = this.closest) == null ? void 0 : _a.call(this, "sbb-optgroup");
412
- if (parentGroup) {
413
- this.disabledFromGroup = parentGroup.disabled;
414
- this.updateAriaDisabled();
415
- }
416
- this.negative = !!((_b = this.closest) == null ? void 0 : _b.call(
417
- this,
418
- // :is() selector not possible due to test environment
419
- `sbb-autocomplete[negative],sbb-form-field[negative]`
420
- ));
421
- this.toggleAttribute("data-negative", this.negative);
422
- this.toggleAttribute("data-multiple", this._isMultiple);
423
- }
424
- selectByClick(event) {
425
- if (this.disabled || this.disabledFromGroup) {
426
- event.stopPropagation();
427
- return;
492
+ set _variant(state2) {
493
+ if (state2) {
494
+ this.setAttribute("data-variant", state2);
495
+ }
428
496
  }
429
- if (this._isMultiple) {
430
- event.stopPropagation();
431
- this.setSelectedViaUserInteraction(!this.selected);
432
- } else {
433
- this.setSelectedViaUserInteraction(true);
497
+ get _variant() {
498
+ return this.getAttribute("data-variant");
434
499
  }
435
- }
436
- connectedCallback() {
437
- super.connectedCallback();
438
- }
439
- init() {
440
- super.init();
441
- this._setVariantByContext();
442
- this.handleHighlightState();
443
- }
444
- _setVariantByContext() {
445
- var _a, _b, _c;
446
- if ((_a = this.closest) == null ? void 0 : _a.call(this, "sbb-autocomplete")) {
447
- this._variant = "autocomplete";
448
- } else if ((_b = this.closest) == null ? void 0 : _b.call(this, "sbb-select")) {
449
- this._variant = "select";
450
- }
451
- this._isMultiple = !!((_c = this.closest) == null ? void 0 : _c.call(this, "sbb-select[multiple]"));
452
- }
453
- handleHighlightState() {
454
- if (this._variant !== "autocomplete") {
455
- this.updateDisableHighlight(true);
456
- return;
500
+ set _isMultiple(isMultiple) {
501
+ this.toggleAttribute("data-multiple", isMultiple);
457
502
  }
458
- super.handleHighlightState();
459
- }
460
- renderIcon() {
461
- return html`
503
+ get _isMultiple() {
504
+ return !this.hydrationRequired && this.hasAttribute("data-multiple");
505
+ }
506
+ setAttributeFromParent() {
507
+ var _a2, _b;
508
+ const parentGroup = (_a2 = this.closest) == null ? void 0 : _a2.call(this, "sbb-optgroup");
509
+ if (parentGroup) {
510
+ this.disabledFromGroup = parentGroup.disabled;
511
+ this.updateAriaDisabled();
512
+ }
513
+ this.negative = !!((_b = this.closest) == null ? void 0 : _b.call(
514
+ this,
515
+ // :is() selector not possible due to test environment
516
+ `sbb-autocomplete[negative],sbb-form-field[negative]`
517
+ ));
518
+ this.toggleAttribute("data-negative", this.negative);
519
+ this.toggleAttribute("data-multiple", this._isMultiple);
520
+ }
521
+ selectByClick(event) {
522
+ if (this.disabled || this.disabledFromGroup) {
523
+ event.stopPropagation();
524
+ return;
525
+ }
526
+ if (this._isMultiple) {
527
+ event.stopPropagation();
528
+ this.setSelectedViaUserInteraction(!this.selected);
529
+ } else {
530
+ this.setSelectedViaUserInteraction(true);
531
+ }
532
+ }
533
+ connectedCallback() {
534
+ super.connectedCallback();
535
+ }
536
+ init() {
537
+ super.init();
538
+ this._setVariantByContext();
539
+ this.handleHighlightState();
540
+ }
541
+ _setVariantByContext() {
542
+ var _a2, _b, _c;
543
+ if ((_a2 = this.closest) == null ? void 0 : _a2.call(this, "sbb-autocomplete")) {
544
+ this._variant = "autocomplete";
545
+ } else if ((_b = this.closest) == null ? void 0 : _b.call(this, "sbb-select")) {
546
+ this._variant = "select";
547
+ }
548
+ this._isMultiple = !!((_c = this.closest) == null ? void 0 : _c.call(this, "sbb-select[multiple]"));
549
+ }
550
+ handleHighlightState() {
551
+ if (this._variant !== "autocomplete") {
552
+ this.updateDisableHighlight(true);
553
+ return;
554
+ }
555
+ super.handleHighlightState();
556
+ }
557
+ renderIcon() {
558
+ return html`
462
559
  <!-- Icon -->
463
560
  ${!this._isMultiple ? html` <span class="sbb-option__icon"> ${this.renderIconSlot()} </span>` : nothing}
464
561
 
@@ -471,27 +568,26 @@ let SbbOptionElement = class extends SbbOptionBaseElement {
471
568
  ></sbb-visual-checkbox>
472
569
  ` : nothing}
473
570
  `;
474
- }
475
- renderLabel() {
476
- return this._variant === "autocomplete" && this.label && !this.disableLabelHighlight ? this.getHighlightedLabel() : nothing;
477
- }
478
- renderTick() {
479
- return this._variant === "select" && !this._isMultiple && this.selected ? html`<sbb-icon name="tick-small"></sbb-icon>` : nothing;
480
- }
481
- };
482
- SbbOptionElement.styles = style;
483
- SbbOptionElement.events = {
484
- selectionChange: "optionSelectionChange",
485
- optionSelected: "optionSelected"
486
- };
487
- SbbOptionElement = __decorateClass([
488
- customElement("sbb-option"),
489
- hostAttributes({
490
- role: "option"
491
- })
492
- ], SbbOptionElement);
571
+ }
572
+ renderLabel() {
573
+ return this._variant === "autocomplete" && this.label && !this.disableLabelHighlight ? this.getHighlightedLabel() : nothing;
574
+ }
575
+ renderTick() {
576
+ return this._variant === "select" && !this._isMultiple && this.selected ? html`<sbb-icon name="tick-small"></sbb-icon>` : nothing;
577
+ }
578
+ }, _classThis = _a, (() => {
579
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
580
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
581
+ SbbOptionElement2 = _classThis = _classDescriptor.value;
582
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
583
+ })(), _a.styles = style, _a.events = {
584
+ selectionChange: "optionSelectionChange",
585
+ optionSelected: "optionSelected"
586
+ }, __runInitializers(_classThis, _classExtraInitializers), _a);
587
+ return SbbOptionElement2 = _classThis;
588
+ })();
493
589
  export {
494
590
  SbbOptionBaseElement,
495
591
  SbbOptionElement
496
592
  };
497
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvb3B0aW9uL29wdGlvbi9vcHRpb24tYmFzZS1lbGVtZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL29wdGlvbi9vcHRpb24vb3B0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE11dGF0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvbXV0YXRpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50LCBub3RoaW5nLCB0eXBlIFByb3BlcnR5VmFsdWVzLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBzbG90U3RhdGUgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaXNBbmRyb2lkLCBpc1NhZmFyaSwgc2V0T3JSZW1vdmVBdHRyaWJ1dGUgfSBmcm9tICcuLi8uLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgdHlwZSB7IEV2ZW50RW1pdHRlciB9IGZyb20gJy4uLy4uL2NvcmUvZXZlbnRpbmcuanMnO1xuaW1wb3J0IHsgU2JiRGlzYWJsZWRNaXhpbiwgU2JiSHlkcmF0aW9uTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgeyBTYmJJY29uTmFtZU1peGluIH0gZnJvbSAnLi4vLi4vaWNvbi5qcyc7XG5cbmltcG9ydCAnLi4vLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogT24gU2FmYXJpLCB0aGUgZ3JvdXBzIGxhYmVscyBhcmUgbm90IHJlYWQgYnkgVm9pY2VPdmVyLlxuICogVG8gc29sdmUgdGhlIHByb2JsZW0sIHdlIHJlbW92ZSB0aGUgcm9sZT1cImdyb3VwXCIgYW5kIGFkZCBhbiBoaWRkZW4gc3BhbiBjb250YWluaW5nIHRoZSBncm91cCBuYW1lXG4gKiBUT0RPOiBXZSBzaG91bGQgcGVyaW9kaWNhbGx5IGNoZWNrIGlmIGl0IGhhcyBiZWVuIHNvbHZlZCBhbmQsIGlmIHNvLCByZW1vdmUgdGhlIHByb3BlcnR5LlxuICovXG5jb25zdCBpbmVydEFyaWFHcm91cHMgPSBpc1NhZmFyaTtcblxuLyoqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBhdHRyaWJ1dGUgdG8gbG9vayBhdCBpZiBjb21wb25lbnQgaXMgbmVzdGVkIGluIGFuIG9wdGlvbiBncm91cCAqL1xuY29uc3Qgb3B0aW9uT2JzZXJ2ZXJDb25maWc6IE11dGF0aW9uT2JzZXJ2ZXJJbml0ID0ge1xuICBhdHRyaWJ1dGVGaWx0ZXI6IFsnZGF0YS1ncm91cC1kaXNhYmxlZCcsICdkYXRhLW5lZ2F0aXZlJ10sXG59O1xuXG5Ac2xvdFN0YXRlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJPcHRpb25CYXNlRWxlbWVudCBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oXG4gIFNiYkljb25OYW1lTWl4aW4oU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCkpLFxuKSB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvcHRpb25JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWYWx1ZSBvZiB0aGUgb3B0aW9uLlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gRGV2ZWxvcGVyIG5vdGU6IEluIHRoaXMgY2FzZSB1cGRhdGluZyB0aGUgYXR0cmlidXRlIG11c3QgYmUgc3luY2hyb25vdXMuXG4gICAqIER1ZSB0byB0aGlzLCBpdCBpcyBpbXBsZW1lbnRlZCBhcyBhIGdldHRlci9zZXR0ZXIgYW5kIHRoZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soKSBoYW5kbGVzIHRoZSBkaWZmIGNoZWNrLlxuICAgKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgYCR7dmFsdWV9YCk7XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgndmFsdWUnKSA/PyAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvcHRpb24gaXMgY3VycmVudGx5IGFjdGl2ZS5cbiAgICogVE9ETzogcmVtb3ZlIHdpdGggbmV4dCBtYWpvciB2ZXJzaW9uLlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIGFjdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG9wdGlvbiBpcyBzZWxlY3RlZC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ3NlbGVjdGVkJywgdmFsdWUpO1xuICAgIHRoaXMuX3VwZGF0ZUFyaWFTZWxlY3RlZCgpO1xuICB9XG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzQXR0cmlidXRlKCdzZWxlY3RlZCcpO1xuICB9XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhlIG9wdGlvbiBzZWxlY3Rpb24gc3RhdHVzIGNoYW5nZXMuICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjtcblxuICAvKiogRW1pdHMgd2hlbiBhbiBvcHRpb24gd2FzIHNlbGVjdGVkIGJ5IHVzZXIuICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvcHRpb25TZWxlY3RlZDogRXZlbnRFbWl0dGVyO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGFwcGx5IHRoZSBuZWdhdGl2ZSBzdHlsaW5nICovXG4gIEBzdGF0ZSgpIHByb3RlY3RlZCBuZWdhdGl2ZSA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgbXVzdCBiZSBzZXQgZGlzYWJsZWQgZHVlIGRpc2FibGVkIGF0dHJpYnV0ZSBvbiBzYmItb3B0Z3JvdXAuICovXG4gIEBzdGF0ZSgpIHByb3RlY3RlZCBkaXNhYmxlZEZyb21Hcm91cCA9IGZhbHNlO1xuXG4gIEBzdGF0ZSgpIHByb3RlY3RlZCBsYWJlbD86IHN0cmluZztcblxuICAvKiogRGlzYWJsZSB0aGUgaGlnaGxpZ2h0IG9mIHRoZSBsYWJlbC4gKi9cbiAgQHN0YXRlKCkgcHJvdGVjdGVkIGRpc2FibGVMYWJlbEhpZ2hsaWdodDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBUaGUgcG9ydGlvbiBvZiB0aGUgaGlnaGxpZ2h0ZWQgbGFiZWwuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgX2hpZ2hsaWdodFN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBfaW5lcnRBcmlhR3JvdXBzID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfYWJvcnQgPSBuZXcgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyKHRoaXMpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgbmV3IE11dGF0aW9uQ29udHJvbGxlcih0aGlzLCB7XG4gICAgICBjb25maWc6IG9wdGlvbk9ic2VydmVyQ29uZmlnLFxuICAgICAgY2FsbGJhY2s6IChtdXRhdGlvbnNMaXN0KSA9PiB0aGlzLm9uT3B0aW9uQXR0cmlidXRlc0NoYW5nZShtdXRhdGlvbnNMaXN0KSxcbiAgICB9KTtcblxuICAgIGlmIChpbmVydEFyaWFHcm91cHMpIHtcbiAgICAgIGlmICh0aGlzLmh5ZHJhdGlvblJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuaHlkcmF0aW9uQ29tcGxldGUudGhlbigoKSA9PiAodGhpcy5faW5lcnRBcmlhR3JvdXBzID0gaW5lcnRBcmlhR3JvdXBzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pbmVydEFyaWFHcm91cHMgPSBpbmVydEFyaWFHcm91cHM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgb2xkOiBzdHJpbmcgfCBudWxsLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBudWxsLFxuICApOiB2b2lkIHtcbiAgICBpZiAobmFtZSAhPT0gJ3ZhbHVlJyB8fCBvbGQgIT09IHZhbHVlKSB7XG4gICAgICBzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgb2xkLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhpZ2hsaWdodCB0aGUgbGFiZWwgb2YgdGhlIG9wdGlvblxuICAgKiBAcGFyYW0gdmFsdWUgdGhlIGhpZ2hsaWdodGVkIHBvcnRpb24gb2YgdGhlIGxhYmVsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGhpZ2hsaWdodCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5faGlnaGxpZ2h0U3RyaW5nID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc2V0U2VsZWN0ZWRWaWFVc2VySW50ZXJhY3Rpb24oc2VsZWN0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCgpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7XG4gICAgICB0aGlzLm9wdGlvblNlbGVjdGVkLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLmlkIHx8PSBgJHt0aGlzLm9wdGlvbklkfS0ke25leHRJZCsrfWA7XG4gICAgaWYgKHRoaXMuaHlkcmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMuaHlkcmF0aW9uQ29tcGxldGUudGhlbigoKSA9PiB0aGlzLmluaXQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGlzYWJsZWQnKSkge1xuICAgICAgc2V0T3JSZW1vdmVBdHRyaWJ1dGUodGhpcywgJ3RhYmluZGV4JywgaXNBbmRyb2lkICYmICF0aGlzLmRpc2FibGVkICYmIDApO1xuICAgICAgdGhpcy51cGRhdGVBcmlhRGlzYWJsZWQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICAvLyBJbml0IGZpcnN0IHNlbGVjdCBzdGF0ZSBiZWNhdXNlIGZhbHNlIHdvdWxkIG5vdCBjYWxsIHNldHRlciBvZiBzZWxlY3RlZCBwcm9wZXJ0eS5cbiAgICB0aGlzLl91cGRhdGVBcmlhU2VsZWN0ZWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZWxlY3RCeUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldEF0dHJpYnV0ZUZyb21QYXJlbnQoKTogdm9pZDtcblxuICBwcm90ZWN0ZWQgdXBkYXRlRGlzYWJsZUhpZ2hsaWdodChkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZUxhYmVsSGlnaGxpZ2h0ID0gZGlzYWJsZWQ7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZGlzYWJsZS1oaWdobGlnaHQnLCBkaXNhYmxlZCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgb3B0aW9uIGlzIGN1cnJlbnRseSBhY3RpdmUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHNldEFjdGl2ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWFjdGl2ZScsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlRnJvbVBhcmVudCgpO1xuICAgIGNvbnN0IHNpZ25hbCA9IHRoaXMuX2Fib3J0LnNpZ25hbDtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGU6IE1vdXNlRXZlbnQpID0+IHRoaXMuc2VsZWN0QnlDbGljayhlKSwge1xuICAgICAgc2lnbmFsLFxuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVBcmlhRGlzYWJsZWQoKTogdm9pZCB7XG4gICAgc2V0T3JSZW1vdmVBdHRyaWJ1dGUoXG4gICAgICB0aGlzLFxuICAgICAgJ2FyaWEtZGlzYWJsZWQnLFxuICAgICAgdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkRnJvbUdyb3VwID8gJ3RydWUnIDogbnVsbCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQXJpYVNlbGVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgYCR7dGhpcy5zZWxlY3RlZH1gKTtcbiAgfVxuXG4gIC8qKiBPYnNlcnZlIGNoYW5nZXMgb24gZGF0YSBhdHRyaWJ1dGVzIGFuZCBzZXQgdGhlIGFwcHJvcHJpYXRlIHZhbHVlcy4gKi9cbiAgcHJvdGVjdGVkIG9uT3B0aW9uQXR0cmlidXRlc0NoYW5nZShtdXRhdGlvbnNMaXN0OiBNdXRhdGlvblJlY29yZFtdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnNMaXN0KSB7XG4gICAgICBpZiAobXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gJ2RhdGEtZ3JvdXAtZGlzYWJsZWQnKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWRGcm9tR3JvdXAgPSB0aGlzLmhhc0F0dHJpYnV0ZSgnZGF0YS1ncm91cC1kaXNhYmxlZCcpO1xuICAgICAgICB0aGlzLnVwZGF0ZUFyaWFEaXNhYmxlZCgpO1xuICAgICAgfSBlbHNlIGlmIChtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSAnZGF0YS1uZWdhdGl2ZScpIHtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IHRoaXMuaGFzQXR0cmlidXRlKCdkYXRhLW5lZ2F0aXZlJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUhpZ2hsaWdodFN0YXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHNsb3ROb2RlcyA9IEFycmF5LmZyb20odGhpcy5jaGlsZE5vZGVzID8/IFtdKS5maWx0ZXIoXG4gICAgICAobikgPT4gbi5ub2RlVHlwZSAhPT0gTm9kZS5DT01NRU5UX05PREUgJiYgKCEobiBpbnN0YW5jZW9mIEVsZW1lbnQpIHx8IG4uc2xvdCAhPT0gJ2ljb24nKSxcbiAgICApO1xuICAgIGNvbnN0IGxhYmVsTm9kZXMgPSBzbG90Tm9kZXMuZmlsdGVyKChlbCkgPT4gZWwubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSBhcyBUZXh0W107XG5cbiAgICAvLyBEaXNhYmxlIHRoZSBoaWdobGlnaHQgaWYgdGhlIHNsb3QgY29udGFpbiBtb3JlIHRoYW4ganVzdCB0ZXh0IG5vZGVzLlxuICAgIC8vIFdlIG5lZWQgdG8gaWdub3JlIHRlbXBsYXRlIGVsZW1lbnRzLCBhcyBTU1IgYWRkcyBhIGRlY2xhcmF0aXZlIHNoYWRvdyBET01cbiAgICAvLyBpbiB0aGUgZm9ybSBvZiBhIHRlbXBsYXRlIGVsZW1lbnQuXG4gICAgaWYgKFxuICAgICAgbGFiZWxOb2Rlcy5sZW5ndGggPT09IDAgfHxcbiAgICAgIHNsb3ROb2Rlcy5maWx0ZXIoKG4pID0+ICEobiBpbnN0YW5jZW9mIEVsZW1lbnQpIHx8IG4ubG9jYWxOYW1lICE9PSAndGVtcGxhdGUnKS5sZW5ndGggIT09XG4gICAgICAgIGxhYmVsTm9kZXMubGVuZ3RoXG4gICAgKSB7XG4gICAgICB0aGlzLnVwZGF0ZURpc2FibGVIaWdobGlnaHQodHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubGFiZWwgPSBsYWJlbE5vZGVzXG4gICAgICAubWFwKChsKSA9PiBsLndob2xlVGV4dClcbiAgICAgIC5maWx0ZXIoKGwpID0+IGwudHJpbSgpKVxuICAgICAgLmpvaW4oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRIaWdobGlnaHRlZExhYmVsKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBpZiAoIXRoaXMuX2hpZ2hsaWdodFN0cmluZyB8fCAhdGhpcy5faGlnaGxpZ2h0U3RyaW5nLnRyaW0oKSkge1xuICAgICAgcmV0dXJuIGh0bWxgJHt0aGlzLmxhYmVsfWA7XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hJbmRleCA9IHRoaXMubGFiZWwhLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLl9oaWdobGlnaHRTdHJpbmcudG9Mb3dlckNhc2UoKSk7XG5cbiAgICBpZiAobWF0Y2hJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBodG1sYCR7dGhpcy5sYWJlbH1gO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeCA9IHRoaXMubGFiZWwhLnN1YnN0cmluZygwLCBtYXRjaEluZGV4KTtcbiAgICBjb25zdCBoaWdobGlnaHRlZCA9IHRoaXMubGFiZWwhLnN1YnN0cmluZyhcbiAgICAgIG1hdGNoSW5kZXgsXG4gICAgICBtYXRjaEluZGV4ICsgdGhpcy5faGlnaGxpZ2h0U3RyaW5nLmxlbmd0aCxcbiAgICApO1xuICAgIGNvbnN0IHBvc3RmaXggPSB0aGlzLmxhYmVsIS5zdWJzdHJpbmcobWF0Y2hJbmRleCArIHRoaXMuX2hpZ2hsaWdodFN0cmluZy5sZW5ndGgpO1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c3BhbiBjbGFzcz1cInNiYi1vcHRpb25fX2xhYmVsLS1oaWdobGlnaHRcIj4ke3ByZWZpeH08L3NwYW4+PHNwYW4+JHtoaWdobGlnaHRlZH08L3NwYW5cbiAgICAgID48c3BhbiBjbGFzcz1cInNiYi1vcHRpb25fX2xhYmVsLS1oaWdobGlnaHRcIj4ke3Bvc3RmaXh9PC9zcGFuPlxuICAgIGA7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVuZGVySWNvbigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgIDxzcGFuIGNsYXNzPVwic2JiLW9wdGlvbl9faWNvblwiPiAke3RoaXMucmVuZGVySWNvblNsb3QoKX0gPC9zcGFuPmA7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVuZGVyTGFiZWwoKTogVGVtcGxhdGVSZXN1bHQgfCB0eXBlb2Ygbm90aGluZyB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWwgJiYgIXRoaXMuZGlzYWJsZUxhYmVsSGlnaGxpZ2h0ID8gdGhpcy5nZXRIaWdobGlnaHRlZExhYmVsKCkgOiBub3RoaW5nO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbmRlclRpY2soKTogVGVtcGxhdGVSZXN1bHQgfCB0eXBlb2Ygbm90aGluZyB7XG4gICAgcmV0dXJuIG5vdGhpbmc7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItb3B0aW9uX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1vcHRpb25cIj5cbiAgICAgICAgICAke3RoaXMucmVuZGVySWNvbigpfVxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLW9wdGlvbl9fbGFiZWxcIj5cbiAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5oYW5kbGVIaWdobGlnaHRTdGF0ZX0+PC9zbG90PlxuICAgICAgICAgICAgJHt0aGlzLnJlbmRlckxhYmVsKCl9XG4gICAgICAgICAgICAke3RoaXMuX2luZXJ0QXJpYUdyb3VwcyAmJiB0aGlzLmdldEF0dHJpYnV0ZSgnZGF0YS1ncm91cC1sYWJlbCcpXG4gICAgICAgICAgICAgID8gaHRtbGAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgICAgICAgICAgICAgICAoJHt0aGlzLmdldEF0dHJpYnV0ZSgnZGF0YS1ncm91cC1sYWJlbCcpfSk8L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHlcbiAgICAgICAgICAgICAgICA+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICR7dGhpcy5yZW5kZXJUaWNrKCl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLmpzJztcblxuaW1wb3J0IHsgU2JiT3B0aW9uQmFzZUVsZW1lbnQgfSBmcm9tICcuL29wdGlvbi1iYXNlLWVsZW1lbnQuanMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vb3B0aW9uLnNjc3M/bGl0JmlubGluZSc7XG5pbXBvcnQgJy4uLy4uL3Zpc3VhbC1jaGVja2JveC5qcyc7XG5cbmV4cG9ydCB0eXBlIFNiYk9wdGlvblZhcmlhbnQgPSAnYXV0b2NvbXBsZXRlJyB8ICdzZWxlY3QnIHwgbnVsbDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBvbiBvcHRpb24gaXRlbSB3aGljaCBjYW4gYmUgdXNlZCBpbiBgc2JiLXNlbGVjdGAgb3IgYHNiYi1hdXRvY29tcGxldGVgLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGNvbnRlbnQgdG8gdGhlIG9wdGlvbiBsYWJlbC5cbiAqIEBzbG90IGljb24gLSBVc2UgdGhpcyBzbG90IHRvIHByb3ZpZGUgYW4gaWNvbi4gSWYgYGljb24tbmFtZWAgaXMgc2V0LCBhIHNiYi1pY29uIHdpbGwgYmUgdXNlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IG9wdGlvblNlbGVjdGlvbkNoYW5nZSAtIEVtaXRzIHdoZW4gdGhlIG9wdGlvbiBzZWxlY3Rpb24gc3RhdHVzIGNoYW5nZXMuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBvcHRpb25TZWxlY3RlZCAtIEVtaXRzIHdoZW4gYW4gb3B0aW9uIHdhcyBzZWxlY3RlZCBieSB1c2VyLlxuICogQGNzc3Byb3AgWy0tc2JiLW9wdGlvbi1pY29uLWNvbnRhaW5lci1kaXNwbGF5PW5vbmVdIC0gQ2FuIGJlIHVzZWQgdG8gcmVzZXJ2ZSBzcGFjZSBldmVuXG4gKiB3aGVuIHByZXNlcnZlLWljb24tc3BhY2Ugb24gYXV0b2NvbXBsZXRlIGlzIG5vdCBzZXQgb3IgaWNvbk5hbWUgaXMgbm90IHNldC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1vcHRpb24nKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgcm9sZTogJ29wdGlvbicsXG59KVxuZXhwb3J0IGNsYXNzIFNiYk9wdGlvbkVsZW1lbnQgZXh0ZW5kcyBTYmJPcHRpb25CYXNlRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBzZWxlY3Rpb25DaGFuZ2U6ICdvcHRpb25TZWxlY3Rpb25DaGFuZ2UnLFxuICAgIG9wdGlvblNlbGVjdGVkOiAnb3B0aW9uU2VsZWN0ZWQnLFxuICB9IGFzIGNvbnN0O1xuXG4gIHByb3RlY3RlZCBvcHRpb25JZCA9IGBzYmItb3B0aW9uYDtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgb3B0aW9uIHNlbGVjdGlvbiBzdGF0dXMgY2hhbmdlcy4gKi9cbiAgcHJvdGVjdGVkIHNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYk9wdGlvbkVsZW1lbnQuZXZlbnRzLnNlbGVjdGlvbkNoYW5nZSxcbiAgKTtcblxuICAvKiogRW1pdHMgd2hlbiBhbiBvcHRpb24gd2FzIHNlbGVjdGVkIGJ5IHVzZXIuICovXG4gIHByb3RlY3RlZCBvcHRpb25TZWxlY3RlZDogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYk9wdGlvbkVsZW1lbnQuZXZlbnRzLm9wdGlvblNlbGVjdGVkLFxuICApO1xuXG4gIHByaXZhdGUgc2V0IF92YXJpYW50KHN0YXRlOiBTYmJPcHRpb25WYXJpYW50KSB7XG4gICAgaWYgKHN0YXRlKSB7XG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZGF0YS12YXJpYW50Jywgc3RhdGUpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGdldCBfdmFyaWFudCgpOiBTYmJPcHRpb25WYXJpYW50IHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmFyaWFudCcpIGFzIFNiYk9wdGlvblZhcmlhbnQ7XG4gIH1cblxuICBwcml2YXRlIHNldCBfaXNNdWx0aXBsZShpc011bHRpcGxlOiBib29sZWFuKSB7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtbXVsdGlwbGUnLCBpc011bHRpcGxlKTtcbiAgfVxuICBwcml2YXRlIGdldCBfaXNNdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaHlkcmF0aW9uUmVxdWlyZWQgJiYgdGhpcy5oYXNBdHRyaWJ1dGUoJ2RhdGEtbXVsdGlwbGUnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRBdHRyaWJ1dGVGcm9tUGFyZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmVudEdyb3VwID0gdGhpcy5jbG9zZXN0Py4oJ3NiYi1vcHRncm91cCcpO1xuICAgIGlmIChwYXJlbnRHcm91cCkge1xuICAgICAgdGhpcy5kaXNhYmxlZEZyb21Hcm91cCA9IHBhcmVudEdyb3VwLmRpc2FibGVkO1xuICAgICAgdGhpcy51cGRhdGVBcmlhRGlzYWJsZWQoKTtcbiAgICB9XG5cbiAgICB0aGlzLm5lZ2F0aXZlID0gISF0aGlzLmNsb3Nlc3Q/LihcbiAgICAgIC8vIDppcygpIHNlbGVjdG9yIG5vdCBwb3NzaWJsZSBkdWUgdG8gdGVzdCBlbnZpcm9ubWVudFxuICAgICAgYHNiYi1hdXRvY29tcGxldGVbbmVnYXRpdmVdLHNiYi1mb3JtLWZpZWxkW25lZ2F0aXZlXWAsXG4gICAgKTtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1uZWdhdGl2ZScsIHRoaXMubmVnYXRpdmUpO1xuXG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtbXVsdGlwbGUnLCB0aGlzLl9pc011bHRpcGxlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RCeUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZEZyb21Hcm91cCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2lzTXVsdGlwbGUpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZFZpYVVzZXJJbnRlcmFjdGlvbighdGhpcy5zZWxlY3RlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWaWFVc2VySW50ZXJhY3Rpb24odHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5pbml0KCk7XG4gICAgdGhpcy5fc2V0VmFyaWFudEJ5Q29udGV4dCgpO1xuICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaGlnaGxpZ2h0IHN0YXRlIGJvdGggb24gc2xvdCBjaGFuZ2UsIGJ1dCBhbHNvIHdoZW4gY29ubmVjdGluZ1xuICAgIC8vIHRoZSBlbGVtZW50IHRvIHRoZSBET00uIFRoZSBzbG90IGNoYW5nZSBldmVudHMgbWlnaHQgYmUgc3dhbGxvd2VkIHdoZW4gdXNpbmcgZGVjbGFyYXRpdmVcbiAgICAvLyBzaGFkb3cgRE9NIHdpdGggU1NSIG9yIGlmIHRoZSBET00gaXMgY2hhbmdlZCB3aGVuIGRpc2Nvbm5lY3RlZC5cbiAgICB0aGlzLmhhbmRsZUhpZ2hsaWdodFN0YXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRWYXJpYW50QnlDb250ZXh0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsb3Nlc3Q/Lignc2JiLWF1dG9jb21wbGV0ZScpKSB7XG4gICAgICB0aGlzLl92YXJpYW50ID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNsb3Nlc3Q/Lignc2JiLXNlbGVjdCcpKSB7XG4gICAgICB0aGlzLl92YXJpYW50ID0gJ3NlbGVjdCc7XG4gICAgfVxuICAgIHRoaXMuX2lzTXVsdGlwbGUgPSAhIXRoaXMuY2xvc2VzdD8uKCdzYmItc2VsZWN0W211bHRpcGxlXScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGhhbmRsZUhpZ2hsaWdodFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl92YXJpYW50ICE9PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgdGhpcy51cGRhdGVEaXNhYmxlSGlnaGxpZ2h0KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1cGVyLmhhbmRsZUhpZ2hsaWdodFN0YXRlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVySWNvbigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8IS0tIEljb24gLS0+XG4gICAgICAkeyF0aGlzLl9pc011bHRpcGxlXG4gICAgICAgID8gaHRtbGAgPHNwYW4gY2xhc3M9XCJzYmItb3B0aW9uX19pY29uXCI+ICR7dGhpcy5yZW5kZXJJY29uU2xvdCgpfSA8L3NwYW4+YFxuICAgICAgICA6IG5vdGhpbmd9XG5cbiAgICAgIDwhLS0gQ2hlY2tib3ggLS0+XG4gICAgICAke3RoaXMuX2lzTXVsdGlwbGVcbiAgICAgICAgPyBodG1sYFxuICAgICAgICAgICAgPHNiYi12aXN1YWwtY2hlY2tib3hcbiAgICAgICAgICAgICAgP2NoZWNrZWQ9JHt0aGlzLnNlbGVjdGVkfVxuICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWRGcm9tR3JvdXB9XG4gICAgICAgICAgICAgID9uZWdhdGl2ZT0ke3RoaXMubmVnYXRpdmV9XG4gICAgICAgICAgICA+PC9zYmItdmlzdWFsLWNoZWNrYm94PlxuICAgICAgICAgIGBcbiAgICAgICAgOiBub3RoaW5nfVxuICAgIGA7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyTGFiZWwoKTogVGVtcGxhdGVSZXN1bHQgfCB0eXBlb2Ygbm90aGluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhcmlhbnQgPT09ICdhdXRvY29tcGxldGUnICYmIHRoaXMubGFiZWwgJiYgIXRoaXMuZGlzYWJsZUxhYmVsSGlnaGxpZ2h0XG4gICAgICA/IHRoaXMuZ2V0SGlnaGxpZ2h0ZWRMYWJlbCgpXG4gICAgICA6IG5vdGhpbmc7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyVGljaygpOiBUZW1wbGF0ZVJlc3VsdCB8IHR5cGVvZiBub3RoaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmFyaWFudCA9PT0gJ3NlbGVjdCcgJiYgIXRoaXMuX2lzTXVsdGlwbGUgJiYgdGhpcy5zZWxlY3RlZFxuICAgICAgPyBodG1sYDxzYmItaWNvbiBuYW1lPVwidGljay1zbWFsbFwiPjwvc2JiLWljb24+YFxuICAgICAgOiBub3RoaW5nO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItb3B0aW9uJzogU2JiT3B0aW9uRWxlbWVudDtcbiAgfVxuXG4gIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzRXZlbnRNYXAge1xuICAgIG9wdGlvblNlbGVjdGlvbkNoYW5nZTogQ3VzdG9tRXZlbnQ8dm9pZD47XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfX2RlY29yYXRlQ2xhc3MiLCJzdGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBYUEsSUFBSSxTQUFTO0FBT2IsTUFBTSxrQkFBa0I7QUFHeEIsTUFBTSx1QkFBNkM7QUFBQSxFQUNqRCxpQkFBaUIsQ0FBQyx1QkFBdUIsZUFBZTtBQUMxRDtBQUdPLElBQWUsdUJBQWYsY0FBNEM7QUFBQSxFQUNqRCxpQkFBaUIsa0JBQWtCLFVBQVUsQ0FBQztBQUNoRCxFQUFFO0FBQUEs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
593
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvb3B0aW9uL29wdGlvbi9vcHRpb24tYmFzZS1lbGVtZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL29wdGlvbi9vcHRpb24vb3B0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE11dGF0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvbXV0YXRpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50LCBub3RoaW5nLCB0eXBlIFByb3BlcnR5VmFsdWVzLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUsIHNsb3RTdGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpc0FuZHJvaWQsIGlzU2FmYXJpLCBzZXRPclJlbW92ZUF0dHJpYnV0ZSB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB0eXBlIHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBTYmJEaXNhYmxlZE1peGluLCBTYmJIeWRyYXRpb25NaXhpbiB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB7IFNiYkljb25OYW1lTWl4aW4gfSBmcm9tICcuLi8uLi9pY29uLmpzJztcblxuaW1wb3J0ICcuLi8uLi9zY3JlZW4tcmVhZGVyLW9ubHkuanMnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBncm91cHMgbGFiZWxzIGFyZSBub3QgcmVhZCBieSBWb2ljZU92ZXIuXG4gKiBUbyBzb2x2ZSB0aGUgcHJvYmxlbSwgd2UgcmVtb3ZlIHRoZSByb2xlPVwiZ3JvdXBcIiBhbmQgYWRkIGFuIGhpZGRlbiBzcGFuIGNvbnRhaW5pbmcgdGhlIGdyb3VwIG5hbWVcbiAqIFRPRE86IFdlIHNob3VsZCBwZXJpb2RpY2FsbHkgY2hlY2sgaWYgaXQgaGFzIGJlZW4gc29sdmVkIGFuZCwgaWYgc28sIHJlbW92ZSB0aGUgcHJvcGVydHkuXG4gKi9cbmNvbnN0IGluZXJ0QXJpYUdyb3VwcyA9IGlzU2FmYXJpO1xuXG4vKiogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGF0dHJpYnV0ZSB0byBsb29rIGF0IGlmIGNvbXBvbmVudCBpcyBuZXN0ZWQgaW4gYW4gb3B0aW9uIGdyb3VwICovXG5jb25zdCBvcHRpb25PYnNlcnZlckNvbmZpZzogTXV0YXRpb25PYnNlcnZlckluaXQgPSB7XG4gIGF0dHJpYnV0ZUZpbHRlcjogWydkYXRhLWdyb3VwLWRpc2FibGVkJywgJ2RhdGEtbmVnYXRpdmUnXSxcbn07XG5cbmV4cG9ydFxuQHNsb3RTdGF0ZSgpXG5hYnN0cmFjdCBjbGFzcyBTYmJPcHRpb25CYXNlRWxlbWVudCBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oXG4gIFNiYkljb25OYW1lTWl4aW4oU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCkpLFxuKSB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvcHRpb25JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWYWx1ZSBvZiB0aGUgb3B0aW9uLlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gRGV2ZWxvcGVyIG5vdGU6IEluIHRoaXMgY2FzZSB1cGRhdGluZyB0aGUgYXR0cmlidXRlIG11c3QgYmUgc3luY2hyb25vdXMuXG4gICAqIER1ZSB0byB0aGlzLCBpdCBpcyBpbXBsZW1lbnRlZCBhcyBhIGdldHRlci9zZXR0ZXIgYW5kIHRoZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soKSBoYW5kbGVzIHRoZSBkaWZmIGNoZWNrLlxuICAgKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgYCR7dmFsdWV9YCk7XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgndmFsdWUnKSA/PyAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvcHRpb24gaXMgY3VycmVudGx5IGFjdGl2ZS5cbiAgICogVE9ETzogcmVtb3ZlIHdpdGggbmV4dCBtYWpvciB2ZXJzaW9uLlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgb3B0aW9uIGlzIHNlbGVjdGVkLiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnc2VsZWN0ZWQnLCB2YWx1ZSk7XG4gICAgdGhpcy5fdXBkYXRlQXJpYVNlbGVjdGVkKCk7XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXNBdHRyaWJ1dGUoJ3NlbGVjdGVkJyk7XG4gIH1cblxuICAvKiogRW1pdHMgd2hlbiB0aGUgb3B0aW9uIHNlbGVjdGlvbiBzdGF0dXMgY2hhbmdlcy4gKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyO1xuXG4gIC8qKiBFbWl0cyB3aGVuIGFuIG9wdGlvbiB3YXMgc2VsZWN0ZWQgYnkgdXNlci4gKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IG9wdGlvblNlbGVjdGVkOiBFdmVudEVtaXR0ZXI7XG5cbiAgLyoqIFdoZXRoZXIgdG8gYXBwbHkgdGhlIG5lZ2F0aXZlIHN0eWxpbmcgKi9cbiAgQHN0YXRlKCkgcHJvdGVjdGVkIGFjY2Vzc29yIG5lZ2F0aXZlID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBtdXN0IGJlIHNldCBkaXNhYmxlZCBkdWUgZGlzYWJsZWQgYXR0cmlidXRlIG9uIHNiYi1vcHRncm91cC4gKi9cbiAgQHN0YXRlKCkgcHJvdGVjdGVkIGFjY2Vzc29yIGRpc2FibGVkRnJvbUdyb3VwID0gZmFsc2U7XG5cbiAgQHN0YXRlKCkgcHJvdGVjdGVkIGFjY2Vzc29yIGxhYmVsITogc3RyaW5nO1xuXG4gIC8qKiBEaXNhYmxlIHRoZSBoaWdobGlnaHQgb2YgdGhlIGxhYmVsLiAqL1xuICBAc3RhdGUoKSBwcm90ZWN0ZWQgYWNjZXNzb3IgZGlzYWJsZUxhYmVsSGlnaGxpZ2h0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFRoZSBwb3J0aW9uIG9mIHRoZSBoaWdobGlnaHRlZCBsYWJlbC4gKi9cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfaGlnaGxpZ2h0U3RyaW5nOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9pbmVydEFyaWFHcm91cHMgPSBmYWxzZTtcblxuICBwcml2YXRlIF9hYm9ydCA9IG5ldyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBuZXcgTXV0YXRpb25Db250cm9sbGVyKHRoaXMsIHtcbiAgICAgIGNvbmZpZzogb3B0aW9uT2JzZXJ2ZXJDb25maWcsXG4gICAgICBjYWxsYmFjazogKG11dGF0aW9uc0xpc3QpID0+IHRoaXMub25PcHRpb25BdHRyaWJ1dGVzQ2hhbmdlKG11dGF0aW9uc0xpc3QpLFxuICAgIH0pO1xuXG4gICAgaWYgKGluZXJ0QXJpYUdyb3Vwcykge1xuICAgICAgaWYgKHRoaXMuaHlkcmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgICAgdGhpcy5oeWRyYXRpb25Db21wbGV0ZS50aGVuKCgpID0+ICh0aGlzLl9pbmVydEFyaWFHcm91cHMgPSBpbmVydEFyaWFHcm91cHMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2luZXJ0QXJpYUdyb3VwcyA9IGluZXJ0QXJpYUdyb3VwcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBvbGQ6IHN0cmluZyB8IG51bGwsXG4gICAgdmFsdWU6IHN0cmluZyB8IG51bGwsXG4gICk6IHZvaWQge1xuICAgIGlmIChuYW1lICE9PSAndmFsdWUnIHx8IG9sZCAhPT0gdmFsdWUpIHtcbiAgICAgIHN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhuYW1lLCBvbGQsIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGlnaGxpZ2h0IHRoZSBsYWJlbCBvZiB0aGUgb3B0aW9uXG4gICAqIEBwYXJhbSB2YWx1ZSB0aGUgaGlnaGxpZ2h0ZWQgcG9ydGlvbiBvZiB0aGUgbGFiZWxcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgaGlnaGxpZ2h0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9oaWdobGlnaHRTdHJpbmcgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzZXRTZWxlY3RlZFZpYVVzZXJJbnRlcmFjdGlvbihzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KCk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMub3B0aW9uU2VsZWN0ZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuaWQgfHw9IGAke3RoaXMub3B0aW9uSWR9LSR7bmV4dElkKyt9YDtcbiAgICBpZiAodGhpcy5oeWRyYXRpb25SZXF1aXJlZCkge1xuICAgICAgdGhpcy5oeWRyYXRpb25Db21wbGV0ZS50aGVuKCgpID0+IHRoaXMuaW5pdCgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpKSB7XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZSh0aGlzLCAndGFiaW5kZXgnLCBpc0FuZHJvaWQgJiYgIXRoaXMuZGlzYWJsZWQgJiYgMCk7XG4gICAgICB0aGlzLnVwZGF0ZUFyaWFEaXNhYmxlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIC8vIEluaXQgZmlyc3Qgc2VsZWN0IHN0YXRlIGJlY2F1c2UgZmFsc2Ugd291bGQgbm90IGNhbGwgc2V0dGVyIG9mIHNlbGVjdGVkIHByb3BlcnR5LlxuICAgIHRoaXMuX3VwZGF0ZUFyaWFTZWxlY3RlZCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNlbGVjdEJ5Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0QXR0cmlidXRlRnJvbVBhcmVudCgpOiB2b2lkO1xuXG4gIHByb3RlY3RlZCB1cGRhdGVEaXNhYmxlSGlnaGxpZ2h0KGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlTGFiZWxIaWdobGlnaHQgPSBkaXNhYmxlZDtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1kaXNhYmxlLWhpZ2hsaWdodCcsIGRpc2FibGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvcHRpb24gaXMgY3VycmVudGx5IGFjdGl2ZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc2V0QWN0aXZlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtYWN0aXZlJywgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGVGcm9tUGFyZW50KCk7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5fYWJvcnQuc2lnbmFsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZTogTW91c2VFdmVudCkgPT4gdGhpcy5zZWxlY3RCeUNsaWNrKGUpLCB7XG4gICAgICBzaWduYWwsXG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUFyaWFEaXNhYmxlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkRnJvbUdyb3VwKSB7XG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQXJpYVNlbGVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgYCR7dGhpcy5zZWxlY3RlZH1gKTtcbiAgfVxuXG4gIC8qKiBPYnNlcnZlIGNoYW5nZXMgb24gZGF0YSBhdHRyaWJ1dGVzIGFuZCBzZXQgdGhlIGFwcHJvcHJpYXRlIHZhbHVlcy4gKi9cbiAgcHJvdGVjdGVkIG9uT3B0aW9uQXR0cmlidXRlc0NoYW5nZShtdXRhdGlvbnNMaXN0OiBNdXRhdGlvblJlY29yZFtdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnNMaXN0KSB7XG4gICAgICBpZiAobXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gJ2RhdGEtZ3JvdXAtZGlzYWJsZWQnKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWRGcm9tR3JvdXAgPSB0aGlzLmhhc0F0dHJpYnV0ZSgnZGF0YS1ncm91cC1kaXNhYmxlZCcpO1xuICAgICAgICB0aGlzLnVwZGF0ZUFyaWFEaXNhYmxlZCgpO1xuICAgICAgfSBlbHNlIGlmIChtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSAnZGF0YS1uZWdhdGl2ZScpIHtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IHRoaXMuaGFzQXR0cmlidXRlKCdkYXRhLW5lZ2F0aXZlJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUhpZ2hsaWdodFN0YXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHNsb3ROb2RlcyA9IEFycmF5LmZyb20odGhpcy5jaGlsZE5vZGVzID8/IFtdKS5maWx0ZXIoXG4gICAgICAobikgPT4gbi5ub2RlVHlwZSAhPT0gTm9kZS5DT01NRU5UX05PREUgJiYgKCEobiBpbnN0YW5jZW9mIEVsZW1lbnQpIHx8IG4uc2xvdCAhPT0gJ2ljb24nKSxcbiAgICApO1xuICAgIGNvbnN0IGxhYmVsTm9kZXMgPSBzbG90Tm9kZXMuZmlsdGVyKChlbCkgPT4gZWwubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSBhcyBUZXh0W107XG5cbiAgICAvLyBEaXNhYmxlIHRoZSBoaWdobGlnaHQgaWYgdGhlIHNsb3QgY29udGFpbiBtb3JlIHRoYW4ganVzdCB0ZXh0IG5vZGVzLlxuICAgIC8vIFdlIG5lZWQgdG8gaWdub3JlIHRlbXBsYXRlIGVsZW1lbnRzLCBhcyBTU1IgYWRkcyBhIGRlY2xhcmF0aXZlIHNoYWRvdyBET01cbiAgICAvLyBpbiB0aGUgZm9ybSBvZiBhIHRlbXBsYXRlIGVsZW1lbnQuXG4gICAgaWYgKFxuICAgICAgbGFiZWxOb2Rlcy5sZW5ndGggPT09IDAgfHxcbiAgICAgIHNsb3ROb2Rlcy5maWx0ZXIoKG4pID0+ICEobiBpbnN0YW5jZW9mIEVsZW1lbnQpIHx8IG4ubG9jYWxOYW1lICE9PSAndGVtcGxhdGUnKS5sZW5ndGggIT09XG4gICAgICAgIGxhYmVsTm9kZXMubGVuZ3RoXG4gICAgKSB7XG4gICAgICB0aGlzLnVwZGF0ZURpc2FibGVIaWdobGlnaHQodHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubGFiZWwgPSBsYWJlbE5vZGVzXG4gICAgICAubWFwKChsKSA9PiBsLndob2xlVGV4dClcbiAgICAgIC5maWx0ZXIoKGwpID0+IGwudHJpbSgpKVxuICAgICAgLmpvaW4oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRIaWdobGlnaHRlZExhYmVsKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBpZiAoIXRoaXMuX2hpZ2hsaWdodFN0cmluZyB8fCAhdGhpcy5faGlnaGxpZ2h0U3RyaW5nLnRyaW0oKSkge1xuICAgICAgcmV0dXJuIGh0bWxgJHt0aGlzLmxhYmVsfWA7XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hJbmRleCA9IHRoaXMubGFiZWwhLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLl9oaWdobGlnaHRTdHJpbmcudG9Mb3dlckNhc2UoKSk7XG5cbiAgICBpZiAobWF0Y2hJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBodG1sYCR7dGhpcy5sYWJlbH1gO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeCA9IHRoaXMubGFiZWwhLnN1YnN0cmluZygwLCBtYXRjaEluZGV4KTtcbiAgICBjb25zdCBoaWdobGlnaHRlZCA9IHRoaXMubGFiZWwhLnN1YnN0cmluZyhcbiAgICAgIG1hdGNoSW5kZXgsXG4gICAgICBtYXRjaEluZGV4ICsgdGhpcy5faGlnaGxpZ2h0U3RyaW5nLmxlbmd0aCxcbiAgICApO1xuICAgIGNvbnN0IHBvc3RmaXggPSB0aGlzLmxhYmVsIS5zdWJzdHJpbmcobWF0Y2hJbmRleCArIHRoaXMuX2hpZ2hsaWdodFN0cmluZy5sZW5ndGgpO1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c3BhbiBjbGFzcz1cInNiYi1vcHRpb25fX2xhYmVsLS1oaWdobGlnaHRcIj4ke3ByZWZpeH08L3NwYW4+PHNwYW4+JHtoaWdobGlnaHRlZH08L3NwYW5cbiAgICAgID48c3BhbiBjbGFzcz1cInNiYi1vcHRpb25fX2xhYmVsLS1oaWdobGlnaHRcIj4ke3Bvc3RmaXh9PC9zcGFuPlxuICAgIGA7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVuZGVySWNvbigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgIDxzcGFuIGNsYXNzPVwic2JiLW9wdGlvbl9faWNvblwiPiAke3RoaXMucmVuZGVySWNvblNsb3QoKX0gPC9zcGFuPmA7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVuZGVyTGFiZWwoKTogVGVtcGxhdGVSZXN1bHQgfCB0eXBlb2Ygbm90aGluZyB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWwgJiYgIXRoaXMuZGlzYWJsZUxhYmVsSGlnaGxpZ2h0ID8gdGhpcy5nZXRIaWdobGlnaHRlZExhYmVsKCkgOiBub3RoaW5nO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbmRlclRpY2soKTogVGVtcGxhdGVSZXN1bHQgfCB0eXBlb2Ygbm90aGluZyB7XG4gICAgcmV0dXJuIG5vdGhpbmc7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItb3B0aW9uX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1vcHRpb25cIj5cbiAgICAgICAgICAke3RoaXMucmVuZGVySWNvbigpfVxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLW9wdGlvbl9fbGFiZWxcIj5cbiAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5oYW5kbGVIaWdobGlnaHRTdGF0ZX0+PC9zbG90PlxuICAgICAgICAgICAgJHt0aGlzLnJlbmRlckxhYmVsKCl9XG4gICAgICAgICAgICAke3RoaXMuX2luZXJ0QXJpYUdyb3VwcyAmJiB0aGlzLmdldEF0dHJpYnV0ZSgnZGF0YS1ncm91cC1sYWJlbCcpXG4gICAgICAgICAgICAgID8gaHRtbGAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgICAgICAgICAgICAgICAoJHt0aGlzLmdldEF0dHJpYnV0ZSgnZGF0YS1ncm91cC1sYWJlbCcpfSk8L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHlcbiAgICAgICAgICAgICAgICA+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICR7dGhpcy5yZW5kZXJUaWNrKCl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLmpzJztcblxuaW1wb3J0IHsgU2JiT3B0aW9uQmFzZUVsZW1lbnQgfSBmcm9tICcuL29wdGlvbi1iYXNlLWVsZW1lbnQuanMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vb3B0aW9uLnNjc3M/bGl0JmlubGluZSc7XG5pbXBvcnQgJy4uLy4uL3Zpc3VhbC1jaGVja2JveC5qcyc7XG5cbmV4cG9ydCB0eXBlIFNiYk9wdGlvblZhcmlhbnQgPSAnYXV0b2NvbXBsZXRlJyB8ICdzZWxlY3QnIHwgbnVsbDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBvbiBvcHRpb24gaXRlbSB3aGljaCBjYW4gYmUgdXNlZCBpbiBgc2JiLXNlbGVjdGAgb3IgYHNiYi1hdXRvY29tcGxldGVgLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGNvbnRlbnQgdG8gdGhlIG9wdGlvbiBsYWJlbC5cbiAqIEBzbG90IGljb24gLSBVc2UgdGhpcyBzbG90IHRvIHByb3ZpZGUgYW4gaWNvbi4gSWYgYGljb24tbmFtZWAgaXMgc2V0LCBhIHNiYi1pY29uIHdpbGwgYmUgdXNlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IG9wdGlvblNlbGVjdGlvbkNoYW5nZSAtIEVtaXRzIHdoZW4gdGhlIG9wdGlvbiBzZWxlY3Rpb24gc3RhdHVzIGNoYW5nZXMuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBvcHRpb25TZWxlY3RlZCAtIEVtaXRzIHdoZW4gYW4gb3B0aW9uIHdhcyBzZWxlY3RlZCBieSB1c2VyLlxuICogQGNzc3Byb3AgWy0tc2JiLW9wdGlvbi1pY29uLWNvbnRhaW5lci1kaXNwbGF5PW5vbmVdIC0gQ2FuIGJlIHVzZWQgdG8gcmVzZXJ2ZSBzcGFjZSBldmVuXG4gKiB3aGVuIHByZXNlcnZlLWljb24tc3BhY2Ugb24gYXV0b2NvbXBsZXRlIGlzIG5vdCBzZXQgb3IgaWNvbk5hbWUgaXMgbm90IHNldC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLW9wdGlvbicpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICByb2xlOiAnb3B0aW9uJyxcbn0pXG5jbGFzcyBTYmJPcHRpb25FbGVtZW50IGV4dGVuZHMgU2JiT3B0aW9uQmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgc2VsZWN0aW9uQ2hhbmdlOiAnb3B0aW9uU2VsZWN0aW9uQ2hhbmdlJyxcbiAgICBvcHRpb25TZWxlY3RlZDogJ29wdGlvblNlbGVjdGVkJyxcbiAgfSBhcyBjb25zdDtcblxuICBwcm90ZWN0ZWQgb3B0aW9uSWQgPSBgc2JiLW9wdGlvbmA7XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhlIG9wdGlvbiBzZWxlY3Rpb24gc3RhdHVzIGNoYW5nZXMuICovXG4gIHByb3RlY3RlZCBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJPcHRpb25FbGVtZW50LmV2ZW50cy5zZWxlY3Rpb25DaGFuZ2UsXG4gICk7XG5cbiAgLyoqIEVtaXRzIHdoZW4gYW4gb3B0aW9uIHdhcyBzZWxlY3RlZCBieSB1c2VyLiAqL1xuICBwcm90ZWN0ZWQgb3B0aW9uU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJPcHRpb25FbGVtZW50LmV2ZW50cy5vcHRpb25TZWxlY3RlZCxcbiAgKTtcblxuICBwcml2YXRlIHNldCBfdmFyaWFudChzdGF0ZTogU2JiT3B0aW9uVmFyaWFudCkge1xuICAgIGlmIChzdGF0ZSkge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2RhdGEtdmFyaWFudCcsIHN0YXRlKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBnZXQgX3ZhcmlhbnQoKTogU2JiT3B0aW9uVmFyaWFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlKCdkYXRhLXZhcmlhbnQnKSBhcyBTYmJPcHRpb25WYXJpYW50O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgX2lzTXVsdGlwbGUoaXNNdWx0aXBsZTogYm9vbGVhbikge1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLW11bHRpcGxlJywgaXNNdWx0aXBsZSk7XG4gIH1cbiAgcHJpdmF0ZSBnZXQgX2lzTXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmh5ZHJhdGlvblJlcXVpcmVkICYmIHRoaXMuaGFzQXR0cmlidXRlKCdkYXRhLW11bHRpcGxlJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0QXR0cmlidXRlRnJvbVBhcmVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJlbnRHcm91cCA9IHRoaXMuY2xvc2VzdD8uKCdzYmItb3B0Z3JvdXAnKTtcbiAgICBpZiAocGFyZW50R3JvdXApIHtcbiAgICAgIHRoaXMuZGlzYWJsZWRGcm9tR3JvdXAgPSBwYXJlbnRHcm91cC5kaXNhYmxlZDtcbiAgICAgIHRoaXMudXBkYXRlQXJpYURpc2FibGVkKCk7XG4gICAgfVxuXG4gICAgdGhpcy5uZWdhdGl2ZSA9ICEhdGhpcy5jbG9zZXN0Py4oXG4gICAgICAvLyA6aXMoKSBzZWxlY3RvciBub3QgcG9zc2libGUgZHVlIHRvIHRlc3QgZW52aXJvbm1lbnRcbiAgICAgIGBzYmItYXV0b2NvbXBsZXRlW25lZ2F0aXZlXSxzYmItZm9ybS1maWVsZFtuZWdhdGl2ZV1gLFxuICAgICk7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtbmVnYXRpdmUnLCB0aGlzLm5lZ2F0aXZlKTtcblxuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLW11bHRpcGxlJywgdGhpcy5faXNNdWx0aXBsZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0QnlDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWRGcm9tR3JvdXApIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pc011bHRpcGxlKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWaWFVc2VySW50ZXJhY3Rpb24oIXRoaXMuc2VsZWN0ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFNlbGVjdGVkVmlhVXNlckludGVyYWN0aW9uKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdCgpO1xuICAgIHRoaXMuX3NldFZhcmlhbnRCeUNvbnRleHQoKTtcbiAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGhpZ2hsaWdodCBzdGF0ZSBib3RoIG9uIHNsb3QgY2hhbmdlLCBidXQgYWxzbyB3aGVuIGNvbm5lY3RpbmdcbiAgICAvLyB0aGUgZWxlbWVudCB0byB0aGUgRE9NLiBUaGUgc2xvdCBjaGFuZ2UgZXZlbnRzIG1pZ2h0IGJlIHN3YWxsb3dlZCB3aGVuIHVzaW5nIGRlY2xhcmF0aXZlXG4gICAgLy8gc2hhZG93IERPTSB3aXRoIFNTUiBvciBpZiB0aGUgRE9NIGlzIGNoYW5nZWQgd2hlbiBkaXNjb25uZWN0ZWQuXG4gICAgdGhpcy5oYW5kbGVIaWdobGlnaHRTdGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0VmFyaWFudEJ5Q29udGV4dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbG9zZXN0Py4oJ3NiYi1hdXRvY29tcGxldGUnKSkge1xuICAgICAgdGhpcy5fdmFyaWFudCA9ICdhdXRvY29tcGxldGUnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jbG9zZXN0Py4oJ3NiYi1zZWxlY3QnKSkge1xuICAgICAgdGhpcy5fdmFyaWFudCA9ICdzZWxlY3QnO1xuICAgIH1cbiAgICB0aGlzLl9pc011bHRpcGxlID0gISF0aGlzLmNsb3Nlc3Q/Lignc2JiLXNlbGVjdFttdWx0aXBsZV0nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBoYW5kbGVIaWdobGlnaHRTdGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmFyaWFudCAhPT0gJ2F1dG9jb21wbGV0ZScpIHtcbiAgICAgIHRoaXMudXBkYXRlRGlzYWJsZUhpZ2hsaWdodCh0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdXBlci5oYW5kbGVIaWdobGlnaHRTdGF0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlckljb24oKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPCEtLSBJY29uIC0tPlxuICAgICAgJHshdGhpcy5faXNNdWx0aXBsZVxuICAgICAgICA/IGh0bWxgIDxzcGFuIGNsYXNzPVwic2JiLW9wdGlvbl9faWNvblwiPiAke3RoaXMucmVuZGVySWNvblNsb3QoKX0gPC9zcGFuPmBcbiAgICAgICAgOiBub3RoaW5nfVxuXG4gICAgICA8IS0tIENoZWNrYm94IC0tPlxuICAgICAgJHt0aGlzLl9pc011bHRpcGxlXG4gICAgICAgID8gaHRtbGBcbiAgICAgICAgICAgIDxzYmItdmlzdWFsLWNoZWNrYm94XG4gICAgICAgICAgICAgID9jaGVja2VkPSR7dGhpcy5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgP2Rpc2FibGVkPSR7dGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkRnJvbUdyb3VwfVxuICAgICAgICAgICAgICA/bmVnYXRpdmU9JHt0aGlzLm5lZ2F0aXZlfVxuICAgICAgICAgICAgPjwvc2JiLXZpc3VhbC1jaGVja2JveD5cbiAgICAgICAgICBgXG4gICAgICAgIDogbm90aGluZ31cbiAgICBgO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlckxhYmVsKCk6IFRlbXBsYXRlUmVzdWx0IHwgdHlwZW9mIG5vdGhpbmcge1xuICAgIHJldHVybiB0aGlzLl92YXJpYW50ID09PSAnYXV0b2NvbXBsZXRlJyAmJiB0aGlzLmxhYmVsICYmICF0aGlzLmRpc2FibGVMYWJlbEhpZ2hsaWdodFxuICAgICAgPyB0aGlzLmdldEhpZ2hsaWdodGVkTGFiZWwoKVxuICAgICAgOiBub3RoaW5nO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlclRpY2soKTogVGVtcGxhdGVSZXN1bHQgfCB0eXBlb2Ygbm90aGluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhcmlhbnQgPT09ICdzZWxlY3QnICYmICF0aGlzLl9pc011bHRpcGxlICYmIHRoaXMuc2VsZWN0ZWRcbiAgICAgID8gaHRtbGA8c2JiLWljb24gbmFtZT1cInRpY2stc21hbGxcIj48L3NiYi1pY29uPmBcbiAgICAgIDogbm90aGluZztcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLW9wdGlvbic6IFNiYk9wdGlvbkVsZW1lbnQ7XG4gIH1cblxuICBpbnRlcmZhY2UgR2xvYmFsRXZlbnRIYW5kbGVyc0V2ZW50TWFwIHtcbiAgICBvcHRpb25TZWxlY3Rpb25DaGFuZ2U6IEN1c3RvbUV2ZW50PHZvaWQ+O1xuICB9XG59XG4iXSwibmFtZXMiOlsiU2JiT3B0aW9uRWxlbWVudCIsInN0YXRlIiwiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhQSxJQUFJLFNBQVM7QUFPYixNQUFN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